我正在尝试使用ExtAudioFile's
自动频道布局映射,但它似乎没有像我预期的那样工作。
这就是我所做的:
我打开一个 6 通道 WAVE 文件
ExtAudioFileOpenURL()
将客户端数据格式属性 (
kExtAudioFileProperty_ClientDataFormat
) 设置为 6-Channel PCM Audio Unit Canonical只是出于好奇阅读文件的通道布局属性 (
kExtAudioFileProperty_FileChannelLayout
) 生成的AudioChannelLayout
结构有一个kAudioChannelLayoutTag_MPEG_5_1_A
正确的(文件是 LRC-LFE-LS-RS)现在设置客户端通道布局属性 (
kExtAudioFileProperty_ClientChannelLayout
),我使用稍微不同的kAudioChannelLayoutTag_MPEG_5_1_C
,即 LCR-LS-RS-LFE,这是我想在音频图中使用的然后,将文件读
ExtAudioFileRead()
入AudioBufferList
缓冲区列表由音频图播放:预定的声音播放器 -> 矩阵混音器(将 5.1 信号下转换为立体声) -> 默认输出
一切正常,除了通道映射没有。矩阵混频器仍接收 LRC-LFE-LS-RS 流。
我检查了文档kExtAudioFileProperty_ClientChannelLayout
:
此属性的值指定
AudioBufferList
您传递给ExtAudioFileRead
andExtAudioFileWrite
函数的列表中缓冲区的通道布局。此布局可能与文件的通道布局不同,在这种情况下,扩展音频文件对象的底层音频转换器执行重新映射。该属性必须在设置thekExtAudioFileProperty_ClientDataFormat
属性后设置,并且两个布局中的通道数必须匹配。
我觉得我做对了,但我一定遗漏了一些东西……有没有人知道如何使这项工作发挥作用?