2013-11-14 3 views
0

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

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

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

myTimer.start(); 
Pa_StartStream(stream); 

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

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

Thanks

ответ

1

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

+0

Спасибо Маты, что мне очень помогает :) – jens108

 Смежные вопросы

  • Нет связанных вопросов^_^