1

我有一个使用 WASAPI 独占事件驱动模式的应用程序。Microsoft 的示例代码与我正在做的事情相去不远。我们有一个问题,如果 CPU 负担过重,我们会跳过我们应该写入的 3ms 缓冲区之一。在独占事件驱动模式下,似乎无法检查写入光标。在共享模式下,您会得到 GetCurrentPadding(),它对独占模式没有任何作用。没有办法知道我们是落后了还是跳过了或其他什么。我看到为了捕获,有 AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY 标志。IAudioRenderClient 有类似的东西吗?当我调用 GetBuffer() 时,我如何知道我返回的指针对应于哪个播放光标位置?在不知情的情况下简单地失去同步似乎非常容易。如果发生任何有趣的事情,我可以看时钟并出错,但我想要更具确定性的东西。我想确定在我向用户吐出之前我们错过了一个缓冲区。

4

0 回答 0