Есть много интригующих функций, которые используют AudioTimeStamp
в файле заголовка AudioQueue
.
В частности, AudioQueueStart
имеет параметр AudioTimeStamp
под названием inStartTime
. Возможно, вы можете использовать поле mHostTime
, чтобы указать временную базу хоста, mach_absolute_time
, которую вы должны использовать для синхронизации нескольких очередей аудио.
Тогда, я думаю, вы использовали бы аргумент inStartTime
в AudioQueueEnqueueBufferWithParameters
, чтобы поставить очередь буферов в нужное время. Не знаете, как бы вы синхронизировали стоп ...
Лично я нашел AudioQueues
, чтобы генерировать больше сердечной боли, чем LPCM, поэтому я сам смешивал и выводил три аудиопотока с помощью удаленного io аудиоустройства (или современный эквивалент), потому что вы получаете синхронизированную игру, возобновление/остановку, паузу бесплатно.