我正在尝试使用ExtAudioFile's
自动频道布局映射,但它似乎无法按预期工作。
这就是我的所作所为:
我用ExtAudioFileOpenURL()
将客户端数据格式属性(kExtAudioFileProperty_ClientDataFormat
)设置为6声道PCM音频单元Canonical
出于好奇,请阅读文件的频道布局属性(kExtAudioFileProperty_FileChannelLayout
)
生成的AudioChannelLayout
结构具有正确的kAudioChannelLayoutTag_MPEG_5_1_A
(文件为L-R-C-LFE-LS-RS)
设置客户端通道布局属性(kExtAudioFileProperty_ClientChannelLayout
)
现在,我使用稍微不同的kAudioChannelLayoutTag_MPEG_5_1_C
,即L-C-R-LS-RS-LFE,这是我想在音频图中使用的
然后,使用ExtAudioFileRead()
将文件读入AudioBufferList
缓冲区列表由音频图表播放:预定声音播放器 - >矩阵混频器(将5.1信号下变频为立体声) - >默认输出
一切正常,但频道映射没有。矩阵混合器仍然接收L-R-C-LFE-LS-RS流。
我查看了kExtAudioFileProperty_ClientChannelLayout
的文档:
此属性的值指定缓冲区的通道布局 您传递给
AudioBufferList
和ExtAudioFileRead
的{{1}}列表ExtAudioFileWrite
功能。这种布局可能与 文件的通道布局,在这种情况下是扩展音频文件对象的 底层音频转换器执行重映射。这个属性必须是 设置thekExtAudioFileProperty_ClientDataFormat
属性后设置, 并且两个布局中的通道数必须匹配。
我觉得我做对了,但我一定错过了什么......有没有人知道怎么做这个工作?