Определите точное время начала звучания в Portaudio

Я играю WAV-файл в Portaudio в C ++ через Qt и libsndfile. Это работает просто отлично. Мне нужно, чтобы звук воспроизводился с низкой задержкой, поэтому я пытаюсь оптимизировать свой код так, чтобы фактическое время воспроизведения файла было равно теоретической продолжительности файла.

Я заметил, что звук не сразу начинает играть после звонка Pa_StartStream(stream); но есть небольшая задержка. Я хотел бы знать точное время, когда звук начинает воспроизводиться, а не загружаться, в миллисекундах, потому что некоторые другие вещи зависят от этого времени.

Очевидным способом будет:

myTimer.start();
Pa_StartStream(stream);

Но я думаю, что Portaudio сначала вызовет мою функцию обратного вызова, загрузит буфер, а затем начнет играть, что сделает недействительным мое измеренное время, верно?

Как узнать точное время начала воспроизведения? И пока мы на этом, как я могу узнать, когда он закончился (я знаю, когда записываю свои последние данные в буфер, но я не знаю, когда они воспроизводятся …)

Спасибо

0

Решение

Я сомневаюсь, что вы можете точно знать, когда начинается аудиопоток. Вы, конечно, можете узнать, когда он закончится, используя Pa_SetStreamFinishedCallback.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]