gpt4 book ai didi

c++ - 核心音频(WASAPI)缓冲区事件计时

转载 作者:行者123 更新时间:2023-12-03 02:14:09 26 4
gpt4 key购买 nike

按照排他模式流中的示例,我使用Windows核心音频功能(主要是WASAPI)来呈现排他流。

这将创建两个交替播放并交替填充的缓冲区。有一个与缓冲区完成有关的事件会唤醒线程,以便它可以重新填充刚刚完成的缓冲区。 GETPOSITION显示,当当前缓冲区位于160帧缓冲区的第147帧时,线程被唤醒。这给我留下了13/160的缓冲时间来获取新的缓冲,填充并释放它。我有很多计算要做,这还不够。我想我可以保持处理器的控制权,而不是在缓冲区已满时就休眠,但这似乎不是正确的解决方案。

此外,即使我的进程是“PRO AUDIO”,并且优先级为25,有时缓冲区完成事件还会延迟得更久,因此系统开始重播未填充的缓冲区。我还没有找到有关此计时应该如何工作或如何控制的任何讨论。我希望缓冲区完成事件会在少数帧内到达下一个缓冲区。有人熟悉这个东西吗?有解决方案或关于在哪里寻找的线索?

最佳答案

您应该有两个线程。在主线程中,进行所有音频处理和计算,然后将结果传递到辅助线程。辅助线程的工作仅是等待WASAPI事件并将主线程的乘积写出到声卡。写出音频的线程应该不进行音频处理。

关于c++ - 核心音频(WASAPI)缓冲区事件计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21370780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com