2016-12-05 4 views
1

У меня есть настройка RemoteIO, которая поступает с микрофона и воспроизводит его. Воспроизведение может быть включено или отключено в любое время нажатием кнопки. Мой вопрос заключается в том, что вызов для включения или отключения воспроизведения требует, чтобы аудиоустановка останавливалась, не инициализировалась, а затем настраивалась или останавливалась &. Неинициализация вообще не требуется? Это пример кода, который я использую для включения или отключения воспроизведения во время выполнения при запуске RIO.Конфигурация RemoteIO во время выполнения

/* Are these two lines required or not???*/ 
[self stopIOUnit]; 
AudioUnitUninitialize(mAudioUnit); 


int flag = enable? 1 : 0; 
// play on io on the output bus 
OSStatus status = AudioUnitSetProperty(mAudioUnit, 
           kAudioOutputUnitProperty_EnableIO, 
           kAudioUnitScope_Output, 
           0, /*output*/ 
           &flag, 
           sizeof(flag)); 
+0

Достаточно ли 'AudioOutputUnitStart' и' AudioOutputUnitStop'? –

+0

В этом вопрос, неинициализируется или останавливается, или оба необходимы или нет. –

ответ

0

Включен и отключить звуковой блок, достаточно позвонить AudioOutputUnitStop() и AudioOutputUnitStart(). Вам понадобятся только AudioUnitUninitialize() и AudioUnitInitialize(), если вы хотите изменить состояние устройства (и включен/отключен, кажется, не считается «состоянием»).

От AudioUnitUninitialize()documentation:

Как правило, состояние звукового блока (например, его форматов ввода/вывода и распределения памяти) не может быть изменен во время звуковой модуль инициализируется.

2

Остановка аудиоустройства не является абсолютно необходимой, хотя она снижает энергопотребление приложения и, следовательно, должна быть выполнена, если остановить воспроизведение в течение какого-то времени, чтобы сохранить время автономной работы пользователей. Не останавливать Audio Unit имеет то преимущество, что начало записи снова произойдет со многими миллисекундами с более низкой задержкой, что может быть важно в некоторых приложениях. Альтернативой остановке аудиоустройства является сброс выборок в обратном вызове записи и заполнение буфера тишиной (нулями) в обратном вызове воспроизведения.

Неинициализация должна выполняться только в том случае, если позднее вы переустановили аудиоустройство с другой конфигурацией.

Смежные вопросы