我正在使用该ExtAudioFile
接口来解码音频,并且想知道它是否曾经使用过硬件辅助音频解码。
该kExtAudioFileProperty_CodecManufacturer
物业的文档说:
通过指定 kAppleHardwareAudioCodecManufacturer 或 kAppleSoftwareAudioCodecManufacturer,在 iOS 中使用此属性在硬件或软件编码器之间进行选择。
这似乎表明ExtAudioFile
确实可以利用解码硬件。
在其他地方,在音频格式服务文档中,我发现:
基于硬件的编解码器只能在使用音频队列服务或使用接口(如使用音频队列服务的 AV Foundation)播放或录制时使用。特别是,您不能将基于硬件的音频编解码器与 OpenAL 一起使用或在使用 I/O 音频单元时使用。
...这并不完全清楚;如果ExtAudioFile
在其实现中使用音频队列服务,那么它也许可以利用硬件,但我们实际上并不知道它是如何实现的。
我试图在运行时测试是否正在使用硬件,但这本身就很困难。音频格式服务参考中给出的一种方法是用于AudioFormatGetProperty
测试kAudioFormatProperty_HardwareCodecCapabilities
属性。但是示例代码不起作用,总是返回kAudioFormatUnsupportedPropertyError
. (在网上搜索后,我发现有这个问题的人提出了一些其他问题,但没有成功使用它的报告。)
所以......我想知道是否有人知道任何方法来测试硬件解码器当前是否处于活动状态(在这种情况下,我可以自己测试是否ExtAudioFile
正在使用它)。或者,如果有人对是否ExtAudioFile
使用硬件有任何明确的了解(不仅仅是基于 Apple 文档中的模糊提及)。