alsa buffer原理_【关于alsa buffer】ALSA编程细节分析

本文深入探讨了ALSA编程中的缓冲区原理,包括设备层次(如hw:0,0, plughw:0,0等的区别)、硬件参数(采样率、格式、声道数等)和软件参数的设置。重点讨论了硬件缓冲区大小、中断间隔和软件参数如何影响实时效果,以及如何处理可能出现的xrun问题。建议在保证实时性的前提下,合理选择设备层次和设置参数。" 117108061,8566053,微博广告用户数据集获取实战,"['数据爬取', 'Python编程', '网络爬虫', '数据处理', '社交媒体分析']
摘要由CSDN通过智能技术生成

二. 编程细节

按照上面的流程,其中有许多细节我们可以加以控制,这里仅仅指出应用程序需要关心的:

1.1 设备层次

在alsa驱动这一层,目前为止,抽象出了4层设备:

一是hw:0,0;

二是plughw:0,0;

三是default:0;

四是default。

至于一是清楚了,二和二以上可以做数据转换,以支持一个动态的范围,比如你要播放7000hz的东西,那么就可以用二和二以上的。而你用7000hz作为参数,去设置一,就会报错。三和四,支持软件混音。我觉得default:0表示对第一个声卡软件混音,default表示对整个系统软件混音。

这里提出两点:

1.1.1 一般为了让所有的程序都可以发音,为使用更多的默认策略,我们选用三和四,这样少一些控制权,多一些方便。

1.1.2 对不同的层次的设备,相同的函数,结果可能是不一样的。比如,设置Hardware Parameters里的period和buffer size,这个是对硬件的设置,所以,default和default:0这两种设备是不能设置的。

如果直接操作hw:0,0,那么snd_pcm_writei只能写如8的倍数的frame,比如16、24等,否则就会剩下一点不写入而退回,而 default,就可以想写多少就写多少,我们也不必要关心里面具体的策略。

[Loong]:之前都是使用了default,还真没留意过这些

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值