Qt と libsndfile を介して C++ の Portaudio で wav ファイルを再生しています。これはうまく機能しています。サウンドを低レイテンシーで再生する必要があるため、ファイルの実際の再生時間がファイルの理論上の持続時間と等しくなるようにコードを最適化しようとしています。
電話をかけた後、すぐに音が再生されないことに気付きPa_StartStream(stream);
ましたが、わずかな遅延があります。その時間に応じて他のことが起こっているので、ロードではなくサウンドの再生が開始される正確な時間をミリ秒単位で知りたいです。
明らかな方法は次のとおりです。
myTimer.start();
Pa_StartStream(stream);
しかし、Portaudio は最初にコールバック関数を呼び出し、バッファをロードしてから再生を開始すると思います。これにより、測定された時間が無効になりますよね?
再生が開始された正確な時刻を知るにはどうすればよいですか? そして、私たちがそれをしている間、それがいつ終了したかをどうやって知ることができますか (最後のデータをいつバッファに書き込んだかは知っていますが、いつ再生されているかはわかりません..)
ありがとう