Технические вопросы и ответы QA1777

Удаленное Аудиоустройство I/O - Обрабатывающие изменения в inNumberOfFrames оценивают когда выведенный рендеринг

Q: Число значения кадров (inNumberFrames) переданный моему Удаленному обратному вызову рендеринга I/O, кажется, иногда изменяются от предыдущих вызовов рендеринга, когда новое аудиоустройство включается при выполнении, как мое приложение должно обработать это?

A: Потоковые Форматы могут измениться, когда новое аудиоустройство подключается, и Преобразование Частоты дискретизации может быть представлено, когда происходит это Потоковое Изменение формата. В присутствии Преобразования Частоты дискретизации максимальный размер кадра будет увеличенным масштаб, и любой ранее согласованный максимальный размер кадра (когда используется вычислить буферные размеры) больше может не быть достаточным.

Приложения должны, чтобы знать об этой возможности и обработать эти изменения соответственно. Это может быть сделано при помощи AudioUnitAddPropertyListener и прислушивание к двум свойствам в зависимости от Ваших определенных требований.

kAudioUnitProperty_MaximumFramesPerSlice

AudioUnitAddPropertyListener(theRemoteIOAU, kAudioUnitProperty_MaximumFramesPerSlice, myAudioUnitPropertyListenerProc, NULL)

Прислушайтесь к этому свойству, когда Вы не заботитесь о том, что аппаратная частота дискретизации, и Вы хотите сохранить свою обработку аудиоданных в той же частоте дискретизации приложения, таким образом оставляя работу соответствия Вашей частоты дискретизации приложений к аппаратной частоте дискретизации к Аудиоустройству AURemoteIO.

Аудиоустройство отправит Вам уведомление, которое изменили Максимальные Кадры На значение Части, если это получает изменение настроек оборудования, это должно было обработать. Новые Максимальные Кадры На Часть тогда укажут то, для чего модуль может вытянуть Ваше приложение. Ваше приложение должно будет прекратить представлять, реконфигурировать любую обработку, сделанную, чтобы иметь дело с этим новым Максимумом Кадры На значение Части, затем начать представлять снова.

Вы могли также кэшировать предыдущее значение и затем conditionalize Остановить/Реконфигурировать/Начать образец на новых Максимальных Кадрах На значение Части, являющееся больше, чем предыдущее.

kAudioUnitProperty_SampleRate

AudioUnitAddPropertyListener(theRemoteIOAU, kAudioUnitProperty_SampleRate, myAudioUnitPropertyListenerProc, NULL)

Прислушайтесь к этому свойству, когда Вы действительно заботитесь о том, что аппаратная частота дискретизации, и Вы хотите соответствовать свою обработку аудиоданных к аппаратной частоте дискретизации (это - типичный случай).

Когда аппаратная частота дискретизации изменится, Аудиоустройство отправит Вам уведомление. Ваше приложение должно будет прекратить представлять, реконфигурировать любую обработку, сделанную для новой частоты дискретизации, затем начать представлять снова. Изменение частоты дискретизации будет идти Output scope из Bus 0.

Когда новый уровень отличается от действующего курса, Ваше приложение должно проверить уровень, когда вызвано и только делает любое реконфигурирование. Когда частоты дискретизации будут отличаться, прекратите представлять, реконфигурировав Вашу обработку аудиоданных к новой частоте дискретизации и затем перезапустите.



История версии документа


ДатаПримечания
07.02.2013

Новый документ, обсуждающий, как обработать изменения в значении inNumberOfFrames когда вывод рендеринга