我有一个C ++应用程序,它接收带时间戳的音频流,并尝试尽可能接近指定的时间戳播放音频样本。为此,我需要知道从将音频样本放入输出缓冲区直到实际听到音频时的延迟(具有合理的准确性)。
关于音频输出延迟的讨论很多,但我发现的一切都是关于最小化延迟。这与我无关,我只需要(在运行时)已知的延迟。
在Linux上,我使用snd_pcm_delay()
解决了这个问题并取得了非常好的结果,但我正在寻找适合Windows的解决方案。
我看过以下内容:
GetStreamLatency()
这听起来像真正的交易,但这显然只是一些线程轮询间隔或其他东西,所以它也没用。我的机器上仍然有30ms无法计算的延迟。编辑以回应Brad的评论: