В момента разработвам приложение, което възпроизвежда аудио файл (mp3, но може да се промени на WAV, за да се намали времето за декодиране) и записва аудио едновременно.
За целите на синхронизирането искам да изчисля точното време, когато звукът започна да играе.
Използвайки AudioQueue за управление на всеки буфер, мога да изчисля времето, когато първият буфер е бил източен. Въпросите ми са:
- Какво е хардуерното забавяне между източването на буферите на AudioQueue и действителното им възпроизвеждане?
- Има ли API от по-ниско ниво (по-специално AudioUnit), който има по-добра производителност (в мерките за латентност на хардуера)?
- Възможно ли е да се постави горна граница на латентността на хардуера с помощта на AudioQueue, без или без декодиране на буфера? 5ms изглежда нещо, с което мога да работя, повече от това ще изисква различен подход.
Благодаря!