WASAPI是否可以确定两个设备(一个输入和一个输出设备)是否都同步到相同的基础时钟源?
在所有示例中,我都看到输入和输出设备是分开处理的-通常,每个设备使用不同的线程或事件句柄,并且我还没有看到有关如何使两个设备保持同步(或处理不同步的设备。
对于我的应用程序,我基本上需要进行实时输入以进行输出处理,在每个音频周期中,我都会获得一定数量的传入采样,并发送相同数量的输出采样。即:对于音频设备,我需要一个触发事件,这对于两个设备都是正确的-不需要为每个设备单独设置事件。
我还需要了解它在互斥和共享模式下如何工作。排他性的,我想这将取决于发现设备是否具有通用时钟源。对于共享模式,有关Windows保证设备同步的一些信息将非常有用。
答案 0 :(得分:1)
您可以使用IAudioClock API来检测给定音频客户端相对于QPC的漂移;如果两个端点共享一个时钟,则它们相对于QPC的漂移将是相同的(也就是说,它们相对于QPC的漂移将为零)。
您可以使用IAudioClockAdjustment API来调整可以检测到的漂移。例如,您可以校正两侧相对于QPC的漂移。您可以校正任一侧相对于另一侧的漂移;或您可以将差异分开,然后将两边都校正为均值。