Core Audio ExtAudioFile с использованием клиентского макета канала
Я пытаюсь использовать ExtAudioFile's
автоматическое отображение схемы канала, но, похоже, оно не работает так, как я ожидал.
Вот что я делаю:
Я открываю 6-канальный файл WAVE с
ExtAudioFileOpenURL()
установить свойство формата данных клиента (
kExtAudioFileProperty_ClientDataFormat
) к 6-канальному PCM аудиоустройству 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
а такжеExtAudioFileWrite
функции. Эта компоновка может отличаться от компоновки канала файла, и в этом случае преобразователь аудиосигнала объекта расширенного аудиофайла выполняет переназначение. Это свойство должно быть установлено после установкиthekExtAudioFileProperty_ClientDataFormat
свойство, а количество каналов в двух макетах должно совпадать.
Я чувствую, что сделал все правильно, но я должен что-то упустить... У кого-нибудь есть идеи, как сделать эту работу?