我正在使用ExtAudioFile
接口解码音频,并想知道它是否曾经使用硬件辅助音频解码。
kExtAudioFileProperty_CodecManufacturer
属性的文档显示:
在iOS中使用此属性可以通过指定kAppleHardwareAudioCodecManufacturer或kAppleSoftwareAudioCodecManufacturer在硬件或软件编码器之间进行选择。
这似乎表明ExtAudioFile
确实可以利用解码硬件。
在其他地方,在音频格式服务文档中,我发现:
基于硬件的编解码器只能在使用音频队列服务播放或录制或使用接口(如使用音频队列服务的AV Foundation )时使用。特别是,您不能使用基于硬件的音频编解码器与OpenAL或当使用I/O音频单元.
..。这还不完全清楚;如果ExtAudioFile
在其实现中使用了音频队列服务,那么也许它可以使用硬件,但我们实际上并不知道它是如何实现的。
我试着在运行时测试硬件是否被使用,但事实证明这本身很困难。音频格式服务引用中给出的一种方法是使用AudioFormatGetProperty
测试kAudioFormatProperty_HardwareCodecCapabilities
属性。但是示例代码不起作用,总是返回kAudioFormatUnsupportedPropertyError
。(在网上搜索后,我发现了一些来自有这个问题的人的其他问题,但没有关于成功使用它的报道。)
所以..。我想知道是否有人知道有什么方法可以确定硬件解码器当前是否处于活动状态(在这种情况下,我可以自己测试ExtAudioFile
是否在使用它)。或者,如果有人对ExtAudioFile
是否使用硬件有任何确切的了解(而不是仅仅基于苹果文档中含糊的提及)。
发布于 2014-01-30 17:42:50
使用kAppleHardwareAudioCodecManufacturer
指定ExtAudioFileSetProperty()
似乎启用了硬件解码,因为当已经有一个打开的音频文件打开该编解码集时,kAudioConverterErr_HardwareInUse
会失败,而当音频类别被设置为不启用硬件解码的音频类别时,它会失败。
然而,在对仪器进行分析之后,我发现如果启用硬件解码,性能会稍微差一些,但我仍然无法解释.
https://stackoverflow.com/questions/21321004
复制相似问题