sinc_mark 发表于 2018-7-17 19:41:47

关于linxu 下alsa 编程参数请教

alsa 下的参数,我需要做播放操作,播放的音频是48K 16Bit,单声道的数据,我不清楚相应的frame,period,period_time,buff_size,buff_time之类的,是那个决定了哪一个的,比如说,我现在的参数,1秒钟,应该是扔96KB(96000字节)数据进去alsa驱动中,如果我需要100MS 中断一次,我申请的buffer应该是9600字节,这个时候frame 应该是多少,period 又是多少,buff_time 之类应该是多少,alsa的API,对于参数的配置很不清晰,请知道的兄弟指导一下,谢谢!

WM_CH 发表于 2018-7-17 20:30:58

等你知道了告诉我,谢谢,我也想找相关的书看看

sinc_mark 发表于 2018-7-19 08:23:24

有知道的兄弟指导指导吗!

shell.albert 发表于 2018-7-19 09:04:12

period表示一秒中断的次数,若period=4,则中断时间为1s/4=250ms,则ALSA框架每隔250ms中断一次,告诉应用层向设备填充pcm数据。
frame表示中断一次至少要填充的数据量,
采样1秒的数据量是48kHz*16-bit*2channels=192000 bytes
那么每隔250ms需要填充的数据量至少要为192000/4=48000 bytes.

lyxer 发表于 2018-7-19 09:37:22

我也想知道

sinc_mark 发表于 2018-7-19 15:53:47

shell.albert 发表于 2018-7-19 09:04
period表示一秒中断的次数,若period=4,则中断时间为1s/4=250ms,则ALSA框架每隔250ms中断一次,告诉应用 ...

我的理解是,frame 是由硬件决定的,比如说,48K采样率,16Bit 单声道的情况下,这个frame 就应该是2,
然后period ,是由什么决定的?是可以自己随便定义吗?你说的period 应该就是period_time 吧?那么buffer 呢?

页: [1]
查看完整版本: 关于linxu 下alsa 编程参数请教