audio - 是什么导致音频输出断断续续?

标签 audio kernel driver signal-processing

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

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

最佳答案

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

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

关于audio - 是什么导致音频输出断断续续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2078318/

相关文章:

windows - Minifilter 驱动程序、内存映射和记事本

linux - 读/写字符设备时如何避免高CPU使用率?

c - 如何在 Windows 的文件系统驱动程序中查找 PNP 设备 ID

matlab - 停止在 MATLAB GUI 中播放 wav 文件

linux - CentOS 6.5 编译内核源代码看到 "LINUX_VERSION_CODE"未设置

c - 使用 gstreamer 插件检测音频峰值

linux - 驱动程序打开中的 inode 参数

c - qemu 的奇怪 C 数组行为

java - 音频编程、声音处理和 DSP

javascript - 在树莓派上使用 node.js 进行和弦音频播放