我使用ExtAudioFile
接口來解碼音頻,並想知道它是否曾使用硬件輔助的音頻解碼。ExtAudioFile API是否使用硬件來解碼音頻?
爲kExtAudioFileProperty_CodecManufacturer
屬性的文件說:
使用該屬性的iOS中通過指定kAppleHardwareAudioCodecManufacturer或kAppleSoftwareAudioCodecManufacturer硬件或軟件編碼器之間進行選擇。
這似乎表明ExtAudioFile
確實可以利用解碼硬件。
在其他地方,在音頻格式服務的文檔,我發現:在播放時或錄製使用音頻隊列服務或使用的接口,如AV Foundation,它使用音頻
基於硬件的編解碼器只能使用隊列服務。特別是,您不能在OpenAL或使用I/O音頻單元時使用基於硬件的音頻編解碼器。
......這不完全清楚;如果ExtAudioFile
在其實現中使用音頻隊列服務,那麼它可以使用硬件,但我們實際上並不知道它是如何實現的。
我試着在運行時測試硬件是否正在使用,但這本身證明很困難。音頻格式服務參考中給出的一種方法是使用AudioFormatGetProperty
來測試kAudioFormatProperty_HardwareCodecCapabilities
屬性。但示例代碼不起作用,總是返回kAudioFormatUnsupportedPropertyError
。 (網上搜索後,我發現從誰擁有這個問題的人一些其他的問題,但沒有使用它曾經成功的報道。)
所以...我想知道如果任何人以任何方式來測試一定知道無論硬件解碼器當前是否處於活動狀態(在這種情況下,我可以自己測試ExtAudioFile
是否正在使用它)。或者,如果有人對ExtAudioFile
是否使用硬件有任何明確的瞭解(不完全基於Apple文檔中的模糊提及)。
性能更糟糕的是可能因爲硬件解碼器的電池優化節省,而不是解碼速度。 –