Retardo al usar AudioQueueStart ()
-
21-08-2019 - |
Pregunta
Estoy utilizando los servicios de audio de cola para grabar audio en el iPhone. Estoy teniendo un problema de latencia, aunque cuando se inicia la grabación. Aquí está el código (aprox):
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);
La salida del registro es el siguiente:
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
Tenga en cuenta el retraso de 1 segundo entre el mensaje "en cola buffers" y segundo mensaje "Iniciando la grabación". Alguna idea de cómo puedo deshacerse de él, aparte de iniciar la grabación tan pronto como empiezo mi aplicación?
Por cierto, el 1-segundo es bastante consistente en el simulador y de dispositivos, y no parece ser afectada por número o tamaño de los buffers. Usando un buen mono PCM de 16 bits de edad.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow