导航

ALSA 用户空间params配置

Posted on 2016-02-17 17:34  思禽  阅读(473)  评论(0)    收藏  举报

frame_bits:一帧数据共有多少bit,等于channels * sample_bits

period_size:一次中断处理多少帧数据,值越小,时越小,cpu占用就越高。

period_count:处理完一个buffer所需的中断次数

buffer_size:buffer大小,buffer越大,发生xrun的机会就越少

start_threshold:缓冲区的数据超过该值时,硬件开始启动数据传输。如果太大,从开始播放到声音出来时延太长,甚至可导致太短促的声音根本播不出来;如果太小,又可能容易导致xrun。

stop_threshold:缓冲区里的空闲区域大于该值时,硬件停止传输。默认情况下,这个数为整个缓冲区的大小,即整个缓冲区空了,就停止传输。但偶尔的原因导致缓冲区空, 如CPU忙,增大该值,继续播放缓冲区的历史数据,而不关闭再启动硬件传输(一般 时有明显的声音卡顿),可以达到更好的体验。

silence_threshold:这个值本来是配合stop_threshold用,往缓冲区填充静音数据,这样就不会重播历史数据了。但如果没有设定silence_size,这个值会生效吗?

avail_min:缓冲区空闲区大于该值时,pcm_mmap_write(),往缓冲写数据。这个值越大,往缓冲区写入数据的次数就越少,面临XRUN的机会就越大。Android samsung tuna 设备在screen_off时增大该值以减小功耗,在screen_on时减小该 值以减小XRUN的机会。在不同的场景下,合理的参数就是在性能、时延、功耗等之间达到较好的平衡。