alsa buffer原理_Alsa中PCM参数设置

本文深入探讨了ALSA(Advanced Linux Sound Architecture)中的PCM参数设置,包括PCM设备句柄、方向选择、缓冲区大小、采样率和数据格式的设定。文章详细阐述了如何初始化PCM变量、分配和设置hwparams结构,以及如何检查硬件支持的设置选项。重点讲解了访问类型(如交错和非交错访问)、缓冲区尺寸和帧的概念,同时提到了如何处理不支持2的N次方缓冲区大小的情况。此外,还介绍了设备命名、声音缓存、数据传输、周期和帧的概念,以及如何避免Overrun和Under Run问题。
摘要由CSDN通过智能技术生成

1) PCM设备的句柄.

2) 指定同时可供回放或截获的PCM流的方向

3) 提供一些关于我们想要使用的设置选项的信息,比如缓冲区大小,采样率,PCM数据格式等

4) 检查硬件是否支持设置选项.

4.1) 初始化PCM变量

4.2) 分配hwparams结构

4.3) 打开PCM设备

4.4) 以声卡的全部设置选项空间来初始化hwparams结构

4.5) 指定访问类型,采样格式,采样率,声道号码,周期数目以及周期大小

a) 访问类型 :指定了哪一个多声道数据储存在缓冲区的方法.

*对于交错访问,缓冲区里的每一个帧为声道容纳连续的采样数据.

*对于非交错访问,每一个周期为第一个声道容纳所有采样数据接着是第二个声道的采样数据

b) 缓冲区尺寸的单元依赖于函数.一些时候是字节,一些时候是必须指定的帧的数目.

一个帧是对所有声道的采样数据数组.对于16位立体声数据,一个帧的长度是4个字节.

如果你的硬件不支持2的N次方的缓冲区大小,你可以使用snd_pcm_hw_params_set_buffer_size_near函数.这个函数工作起来与snd_pcm_hw_params_set_rate_near相似.

5) 为PCM设备申请由pcm_handle指向的设置选项

备注资料:

设备命名

API

库使用逻辑设备名而不是设备文件。设备名字可以是真实的硬件名字也可以是插件名字。硬件名字使用hw:i,j这样的格式。其中i是卡号,j是这块声卡上的

设备号。第一个声音设备是hw:0,0.这个别名默认引用第一块声音设备并且在本文示例中一真会被用到。插件使用另外的唯一名字。比如

plughw:,表示一个插件,这个插件不提供对硬件设备的访问,而是提供像采样率转换这样的软件特性,硬

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值