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 свойство, а количество каналов в двух макетах должно совпадать.

Я чувствую, что сделал все правильно, но я должен что-то упустить... У кого-нибудь есть идеи, как сделать эту работу?

0 ответов

Другие вопросы по тегам