使用alsa-utils调试ALSA驱动

2011-06-24 17:35:58

 

android下面的alsa utils提供三个工具,分别是:
alsa_amixer : 配置
alsa_aplay : 播放 录制
alsa_ctl: : store/restore 配置文件,与asound.conf有关

可以通过alsa_XXX --help 查看详细参数

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
【alsa_amixer】
 

【使用方法】

alsa_amixer controls :列出alsa驱动里面注册的所有控制接口。
这些controls是在驱动里面通过struct snd_kcontrol_new twl4030_snd_controls[] 定义,函数static int twl4030_add_controls(struct snd_soc_codec *codec)来添加的接口。
格式如下:
numid=19,iface=MIXER,name='Analog Capture Volume'

alsa_amixer contents : 列出以上接口的详细内容,格式如下:
numid=19,iface=MIXER,name='Analog Capture Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=5,step=0
: values=5,5
| dBscale-min=0.00dB,step=6.00dB,mute=0

以上,numid是在注册的时候顺序分配的,其他信息查看驱动里面的数据结构来了解。

我们可以通过两个命令来读取和设置相关参数:
cset cID P set control contents for one control
cget cID get control contents for one control
例如:
alsa_amixer cget numid=19,iface=MIXER,name='Analog Capture Volume'
alsa_amixer cset numid=19,iface=MIXER,name='Analog Capture Volume' 5
其实,如果通过alsa_amixer controls获取到这些controls的numid后,可以直接使用numid来操作,结果一样:
/ $ alsa_amixer cget numid=19
numid=19,iface=MIXER,name='Analog Capture Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=5,step=0
: values=5,5
| dBscale-min=0.00dB,step=6.00dB,mute=0

/ $ alsa_amixer cset numid=19 4
###reg_0x48 ==TWL4030_REG_ANAMIC_GAIN : 0x24
numid=19,iface=MIXER,name='Analog Capture Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=5,step=0
: values=4,4
| dBscale-min=0.00dB,step=6.00dB,mute=0

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
【alsa_aplay】
 

录音参数 S8 U8 S16_LE S16_BE U16_LE U16_B 的详细解释:
S是有符号 U是无符号
BE是大端
LE是小端
这都是PCM的一种表示范围的方法,所以表示方法中最小值等价,最大值等价,中间的数据级别就是对应的进度了,可以都映射到-1~1范围。
S8: signed 8 bits,有符号字符 = char, 表示范围 -128~127
U8: unsigned 8 bits,无符号字符 = unsigned char,表示范围 0~255
S16_LE: little endian signed 16 bits,小端有符号字 = short,表示范围 -32768~32767
S16_BE: big endian signed 16 bits,大端有符号字 = short倒序(PPC),表示范围 -32768~32767
U16_LE: little endian unsigned 16 bits,小端无符号字 = unsigned short,表示范围 0~65535
U16_BE: big endian unsigned signed 16 bits,大端无符号字 = unsigned short倒序(PPC),表示范围 0~65535

还有S24_LE,S32_LE等,都可以表示数字的方法,PCM都可以用这些表示。
上面这些值中,所有最小值-128, 0, -32768, -32768, 0, 0对应PCM描叙来说都是一个值,表示最小值,可以量化到浮点-1。所有最大值也是一个值,可以量化到浮点1,其他值可以等比例转换。

 

example:
alsa_aplay -C -t wav -c 2 -r 44100 -f S16_LE -d 10 -v record.wav
alsa_aplay record.wav
-C: record
-t, --file-type TYPE file type (voc, wav, raw or au)
-c, --channels=# channels
-f, --format=FORMAT sample format (case insensitive)
-r, --rate=# sample rate
-d, --duration=# interrupt after # seconds
-v, --verbose show PCM structure and setup (accumulative)

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
【alsa_ctl】
 

主要用到两个命令:
alsa_ctl store : 将当前音频配置参数设置导出到文件 /system/etc/asound.conf

我们可以直接修改此文件进行系统初始化配置,当然别忘了在init.rc里面添加一个命令:

#####add to init.rc 
service asound_conf /system/bin/alsa_ctl restore
        oneshot

alsa_ctl restore : 将文件 /system/etc/asound.conf里的配置重新加载

 

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值