Задержка при использовании AudioQueueStart()

Я использую службы Audio Queue для записи звука на iPhone. У меня проблема с задержкой при запуске записи. Вот код (приблизительно):

OSStatus status = AudioQueueNewInput(
     &recordState.dataFormat, // 1
     AudioInputCallback, // 2
     &recordState,  // 3
     CFRunLoopGetCurrent(),  // 4
     kCFRunLoopCommonModes, // 5
     0,  // 6
     &recordState.queue);  // 7

// create buffers
for(int i = 0; i < NUM_BUFFERS; i++)
{
    if (status == 0)
        status = AudioQueueAllocateBuffer(recordState.queue, BUFFER_SIZE, &recordState.buffers[i]);
}

DebugLog(@"Starting recording\n");
OSStatus status = 0;
for(int i = 0; i < NUM_BUFFERS; i++)
{
    if (status == 0)
        status = AudioQueueEnqueueBuffer(recordState.queue, recordState.buffers[i], 0, NULL);
}
DebugLog(@"Queued buffers\n");
if (status == 0)
{
    // start audio queue
    status = AudioQueueStart(recordState.queue, NULL);
}
DebugLog(@"Started recording, status = %d\n", status);

Вывод журнала выглядит следующим образом:

2009-06-30 19:18:59.631 app[24887:20b] Starting recording
2009-06-30 19:18:59.828 app[24887:20b] Queued buffers
2009-06-30 19:19:00.849 app[24887:20b] Started recording, status = 0

Обратите внимание на 1-секундную задержку между сообщением «Очередь буферов» и вторым сообщением «Начало записи». Любые идеи, как я могу избавиться от этого, кроме начала записи, как только я запускаю свое приложение?

Кстати, 1-секунда довольно постоянна в симуляторе и устройстве и, похоже, не зависит от количества или размера буферов. Используя старый добрый моно 16-битный PCM.


person sehugg    schedule 30.06.2009    source источник


Ответы (1)


Майк Тайсон рассказывает об этом в своей < href="http://michael.tyson.id.au" rel="nofollow noreferrer">блог.

Однако, если вы хотите быстро начать запись, лучше использовать удаленное аудиоустройство или AVAudioEngine.

person Rhythmic Fistman    schedule 01.07.2009
comment
Спасибо, эта страница тоже полезна: michael .tyson.id.au/2009/02/15/ - person sehugg; 01.07.2009
comment
Можете ли вы сказать мне, что вы сделали, чтобы заставить эту работу? У меня такая же проблема, и я не могу найти нужную информацию в этом блоге. вы говорите о kAudioSessionProperty_PreferredHardwareIOBufferDuration? - person madmik3; 31.12.2010