2014-01-23 4 views
0

ExtAudioFile 인터페이스를 사용하여 오디오를 디코딩하고 하드웨어 지원 오디오 디코딩을 사용하는지 여부를 알고 싶습니다. kExtAudioFileProperty_CodecManufacturer 속성에 대한ExtAudioFile API가 하드웨어를 사용하여 오디오를 디코딩합니까?

워드 프로세서 말 :

를 사용하여 아이폰 OS에서이 속성은 kAppleHardwareAudioCodecManufacturer 또는 kAppleSoftwareAudioCodecManufacturer를 지정하여, 하드웨어 또는 소프트웨어 인코더를 선택할 수 있습니다.

이것은 ExtAudioFile이 실제로 디코딩 하드웨어를 사용할 수 있음을 나타냅니다.

한편, 오디오 형식의 서비스 문서에서, 나는 찾을 : 오디오를 사용하는 AV 재단으로, 오디오 큐 서비스를 사용하거나 인터페이스를 사용하여 재생하거나 기록 할 때

하드웨어 기반 코덱 만 사용할 수 있습니다 대기열 서비스. 특히 OpenAL에서 하드웨어 기반 오디오 코덱을 사용할 수 없거나 I/O 오디오 장치를 사용할 때 사용할 수 없습니다.

... 완전히 명확하지는 않습니다. ExtAudioFile이 구현시 Audio Queue Services를 사용하는 경우 하드웨어를 사용할 수는 있지만 구현 방법을 실제로 알 수는 없습니다.

하드웨어를 사용하고 있는지 여부를 런타임에 테스트하려고 시도했지만이 자체가 어렵다는 것이 입증되었습니다. Audio Format Services 레퍼런스에서 제공되는 한 가지 방법은 AudioFormatGetProperty을 사용하여 kAudioFormatProperty_HardwareCodecCapabilities 속성을 테스트하는 것입니다. 그러나 샘플 코드는 작동하지 않으며 항상 kAudioFormatUnsupportedPropertyError을 반환합니다. (온라인으로 검색 한 후이 문제가있는 사람들로부터 몇 가지 다른 질문을 찾았지만 성공적으로 사용하고 있다는보고는 없습니다.)

그래서 ... 누군가가 어떤 방법 으로든 테스트를 할 수 있는지 알고 있는지 궁금합니다. 하드웨어 디코더가 현재 활성화되어 있는지 여부 (ExtAudioFile이 사용 중인지 직접 테스트 할 수 있음). 또는 누군가가 ExtAudioFile이 하드웨어를 사용하는지 여부에 대한 확실한 지식이있는 경우 (Apple 문서의 모호한 언급에만 근거하지 않음). ExtAudioFileSetProperty()으로 kAppleHardwareAudioCodecManufacturer 지정

답변

0

kAudioConverterErr_HardwareInUse 실패 때문에 이미 코덱 세트로 하나 개의 오디오 파일이 열려있을 때, 하드웨어 디코딩을 가능하게 표시하고, 음성 분류가되지 않는다 하나로 설정된다 kAudioQueueErr_InvalidCodecAccess로 (받는있어서 문서) 하드웨어 디코딩을 가능하게합니다.

그러나, 인스트루먼트 프로파일 링 후, 나는 하드웨어 디코더가 배터리에 최적화되어 있기 때문에

+0

실적 악화 아마도 ... 그 성능이 약간 악화 하드웨어 디코딩 난 아직도 설명 할 수있는 활성화했다 발견 절약, 디코딩 속도가 아닙니다. –