Audio 是什么导致音频输出口吃?

Audio 是什么导致音频输出口吃?,audio,kernel,driver,signal-processing,Audio,Kernel,Driver,Signal Processing,有一个非常常见的软件缺陷,导致大约1秒的音频连续播放几次,造成一种口吃。我在玩电子游戏时经常注意到这一点。我知道这不是特定于体系结构的,我曾在控制台、旧PC上看到过这种情况,而这只是5分钟前我启动Windows7时发生的 我的问题是,这种不一致的根本原因是什么?这种类型的不一致性会影响计算的其他部分吗?例如,如果调制解调器出现断续,那么传输将被破坏。作为猜测,我怀疑这是因为音频缓冲区更新不够快,因此它只是在重放缓冲区中的陈旧数据 也就是说,我想这里的某个人将能够进行更深入的研究。:-) 声音通常

有一个非常常见的软件缺陷,导致大约1秒的音频连续播放几次,造成一种口吃。我在玩电子游戏时经常注意到这一点。我知道这不是特定于体系结构的,我曾在控制台、旧PC上看到过这种情况,而这只是5分钟前我启动Windows7时发生的


我的问题是,这种不一致的根本原因是什么?这种类型的不一致性会影响计算的其他部分吗?例如,如果调制解调器出现断续,那么传输将被破坏。

作为猜测,我怀疑这是因为音频缓冲区更新不够快,因此它只是在重放缓冲区中的陈旧数据


也就是说,我想这里的某个人将能够进行更深入的研究。:-)

声音通常使用a输出,然后由硬件和驱动程序处理。这样,您不必每隔0,02毫秒左右输出一个样本,但可以一次完成更多工作。这也意味着游戏可以花更多的时间运行游戏逻辑,而无需不断中断自身来解码新样本。当游戏完成在游戏逻辑中运行迭代,游戏状态更新,图形被重新绘制时,游戏可以解码更多样本


如果没有足够快地完成,问题就会出现——这可能是因为突然需要做更多的工作,或者是因为其他进程占用了太多的CPU时间。如果缓冲区没有填满,那么声卡将继续从缓冲区读取数据——当它读取了所有缓冲样本后,下一个样本就是它已经播放的样本。这导致了您看到的小循环。

恰恰是:缓冲区不足。很可能操作系统有比更新内部声音缓冲区更重要的事情要做。