alsa记录
alsa记录
何凯峰 发表于2年前
alsa记录
  • 发表于 2年前
  • 阅读 18
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 需要在OpenWrt里面进行音频的播放。原先是是使用oss,但为了实现混音,所以使用alsa。 下面是对alsa一些基本概念的理解。

周期,period,相当于底层的一个缓冲区窗口的大小,不过其单位不是字节,而是frame_size,双声道就是2.,单声道就是1.

这里不对,应该还和量化位数相关,8位量化对于单声道frame_size就是1,但是16位的话变为2了


设置了周期后,还需要设置底层lib的缓冲区大小,其大小应该是周期*frame_size

设置完了后,需要再去读取一次周期的大小

然后,得到周期大小后,可以设置应用层的读写缓冲区大小,比如可以设置一下子读取的PCM文件大小非周期*frame_size 字节大小

读写出以后,可以直接调用PCM写入函数写入,写入大小为周期代大小,注意不是字节单位,而是frame_size单位

对于libmad解码出的PCM流,从其lib可知,PCM的缓冲区大小为 每个声道1152字节

所以,对应到alsa,16位量化的话

相当于一个周期为1152*2*2(双声道)字节,也就是周期为1152个frame_size

相当于一个周期为1152*1*2(但声道)字节,也就是周期为1152个frame_size

此文有介绍

http://blog.chinaunix.net/uid-10995602-id-2918643.html


共有 人打赏支持
粉丝 2
博文 12
码字总数 3798
×
何凯峰
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: