【问题标题】:What causes Audio output to stutter?是什么导致音频输出口吃?
【发布时间】:2011-01-05 21:43:50
【问题描述】:

有一个非常常见的软件错误会导致大约 1 秒的音频连续播放几次,造成一种卡顿。我在玩电子游戏时最常注意到这一点。我知道这不是特定于架构的,我已经看到它发生在控制台、旧 PC 中,并且它发生在 5 分钟前,当我启动 Windows 7 时。

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

【问题讨论】:

    标签: audio kernel driver signal-processing


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      作为一种猜测,我怀疑这是因为音频缓冲区没有足够快地更新,因此它只是重播缓冲区中的陈旧数据。

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

      【讨论】:

      • 就是这样:缓冲区不足。操作系统很可能有比更新内部声音缓冲区更重要的事情要做。
      猜你喜欢
      • 2013-03-04
      • 2020-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 2017-12-01
      • 1970-01-01
      • 2020-11-25
      相关资源
      最近更新 更多