二、PCM设备

二、PCM设备1 PCM 设备的命名 ALSA 的 API 库使用的是逻辑设备名 而不是具体的设备文件 因此设备名字可以是真实的硬件名字也可以是插件名字 1 硬件名字 使用 hw i j 这样的格式 其中 i 是声卡的卡号 j 是这块声卡上的设备号 2 插件名字 唯一性 例如 plughw 0 0 不提供对硬件设备的访问 仅提供如采样率这样的软件特性 2 声音缓存和数据传输 2 1 传输原理每个声卡都有一个硬件缓存区来保存记录下来的样本 当缓存区足够满时 声卡将产生一个中断 内核声卡驱动然后使用直接内存 DMA 访问通道

1、PCM设备的命名

ALSA的API 库使用的是逻辑设备名,而不是具体的设备文件。因此设备名字可以是真实的硬件名字也可以是插件名字

1. 硬件名字:使用 hw:i,j 这样的格式。其中i是声卡的卡号,j是这块声卡上的设备号。 2. 插件名字:唯一性。例如 plughw:0,0 ,不提供对硬件设备的访问,仅提供如采样率这样的软件特性 

2、声音缓存和数据传输

2.1 传输原理

每个声卡都有一个硬件缓存区来保存记录下来的样本。当缓存区足够满时,声卡将产生一个中断。内核声卡驱动然后使用直接内存 DMA 访问通道将样本传送到内存中的应用程序缓存区。

也就是说应用程序使用DMA将应用程序缓存区的数据传送到声卡的硬件缓存区中

2.2 缓存区

1.硬件缓存区:是一种环形缓存区。当数据到达缓存区末尾时将重新回到缓存区的起始位置。ALSA框架中有一个指针来指向硬件缓存区中数据的当前位置 2.应用程序缓存区:其大小可以通过ALSA库函数调用来控制。缓存区可以很大,但是很有可能会出现延时。ALSA将缓存区拆分成一系列周期 period(OSS中称作fragments),以period为单元来传送数据 3.周期:硬件中断的间隔时间,表示输入延时 

2.3 异常处理 Over and Under Run

在音频处理的过程中,数据连续地在硬件缓存区和应用程序缓存区之间传输。如果应用程序读取数据不够快,循环缓存区将会被新的数据覆盖,这种数据丢失的现象称为over run;如果应用程序写入数据到缓存区中的速度不够快,缓存区将会”饿死”,这样的错误称为under run。这两种情形统称为XRUN,可以调用snd_pcm_prepare()接口重新准备设备,开始下一次读写

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202695.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午11:31
下一篇 2026年3月19日 下午11:31


相关推荐

  • C++矩阵运算

    C++矩阵运算

    2021年11月19日
    59
  • IDEA激活成功教程后一直提示JetbrainsAgent 相关的弹框问题

    IDEA激活成功教程后一直提示JetbrainsAgent 相关的弹框问题激活成功教程后打开IDEA就弹框,关闭之后会自动打开浏览器,隔一会也会弹出来 也是一样的问题一开始是说把txt 和 jar 文件放一个路径下之类的方法,几经波折,发现没任何用处~最后各种搜索排查,在设置下更改配置就不弹啦~settings设置下搜索agent 取消”Instrumenting agent(requires debugger restart)”在 Reload classes after compilation:选择第一个 Always…

    2022年8月20日
    10
  • Android视频编码_安卓视频解码器

    Android视频编码_安卓视频解码器SVideoRecorder(https://github.com/yellowcath/SVideoRecorder)使用Android原生的MediaCodec进行视频录制,对比大量使用FFmpeg进行录制的库优点如下:体积小 :编译后的aar只有187K,ffmpeg一个so就7、8M,精简之后也差不多还有一半大小 速度快 :在huaweiP9上,720P的一帧:  FFmpeg编码…

    2022年8月31日
    4
  • Blender UV贴图

    Blender UV贴图uv 贴图 1 进入 uvediting 2 选择贴图的物体 进入 编辑模式 3 按 a 键全选物体的顶点 按 U 键 选择 块面投影 在 uv 视图中 4 在 uv 编辑中 点击 UV 根据块面投影的形状导出 UV 布局图 5 根据 UV 布局图设计要贴图的图像 6 选择 着色编辑器 建立一个 原理化 BSDF 再点击 添加 选择 纹理 图像纹理 建立一个图像纹理的节点 7 点击 图像纹理 节点中的上传文件 可选事先做好的贴图文件 8 将 颜色 与 原理化 BSDF 的基础色

    2026年3月20日
    2
  • .net2.0线程使用参数

    .net2.0线程使用参数

    2021年7月25日
    64
  • 蓝牙键盘鼠标连接手提电脑无响应/罗技K380/雷柏鼠标「建议收藏」

    蓝牙键盘鼠标连接手提电脑无响应/罗技K380/雷柏鼠标「建议收藏」最近买了罗技的K380蓝牙键盘,支持连接三种设备,可以通过按键切换。另外也入手了雷柏的一款鼠标,同样也是支持三种设备切换。今天拿到办公室,连接手提的时候,第一次连接显示匹配错误,然后再搜索一直搜索不到了。经过排查以后,发现是蓝牙设备已经配对,但是没有连接成功,在蓝牙选项里的已配对设备里,把设备删除,重新搜索连接就可以了!转载于:https://www.cnblogs.com/miketian/…

    2025年11月11日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号