【问题标题】:Directsound stream synchronisationDirectsound流同步
【发布时间】:2013-02-18 23:14:48
【问题描述】:

我对 2 个 Directsound 流的同步有疑问。

为了录制和播放声音,我目前使用 Portaudio 打开 2 个 Directsound 流。 每次输入缓冲区被填满并且输出缓冲区需要数据时,都会调用2个回调函数。

现在这是我的问题...

输入流以 48kHz 采样率运行(@1024 个样本)。输出流以 192kHz 采样率运行(@4096 个样本)。每次输入缓冲区被填满并调用回调时,我都会做一些 DSP,然后将结果转换为 192kHz。输出流获取结果并输出数据。现在 2 个流完全不同步了。

我查看了整个 Portaudio API,但找不到将 2 个流锁定在一起的同步选项。

有什么方法可以锁定 2 个 Directsound 流吗?我真的需要 48kHz 输入和 192kHz 输出。

兄弟,

文森特·布鲁尼克。

【问题讨论】:

  • 可能在使用 Directsound 以外的其他 API 时运气更好。
  • 了解,但 Directsound 和 ASIO 是唯一支持 192kHz 采样率的。 ASIO 只能立即打开一个流。

标签: stream directsound portaudio synchronisation


【解决方案1】:

问题是您不能真正“同时”打开两个流,也不能打开两个设备(甚至一个设备以两种不同的采样率)并期望它们真正保持同步,即使他们一度是同步的。要了解原因,您可能需要阅读有关 how audio works on a computer 的内容。您可能还想阅读 this document,它是 PortAudio 特有的。

作为替代方案,您可能需要考虑在单个流中打开单个设备并使用软件采样率转换。

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多