tinyalsa简介:
在android中并没有使用linux主流的ALSA架构来进行音频调试,而是使用了它的简化版tinyalsa,控制管理所有模式的音频通路,我们使用tinyalsa提供的工具查看、调试。
tinyalsa源码位于android源码目录下/external/tinyalsa,目录下面使用mma进行编译之后会在/system/bin/中生成以下工具文件:tinymix,tinyplay,tinycap,tinymeminfo和一个.so库。
/dev/snd/ 系统下control设备管理、pcm设备都在此目录下
/proc/asound/ 声卡相关信息可以在此目录下找到,命令:cat /proc/asound/cards可以查看系统下所有声卡及其ID
/sys/class/sound sys系统下声卡相关的文件结点在此目录下
下面首先介绍一下其工具的使用。
1、tinymix:查看配置混音器
window:win+R 输入cmd回车打开命令提示符窗口
adb shell 进入机器
上图可以结合原理图来分析会比较简单易懂,由于公司机密文件不能公开所以没有将原理放出,通过过添加参数修改其中的配置,如希望提高 ALC Capture Max PGA值,输入tinymix 17 20即可。
2、tinyplay:播放音频
tinyplay是一个简易的音乐播放器,一般用于播放测试。tinyplay只能播放wav原始格式的音乐,不能进行Mp3等格式的解码,支持44.1kHz,48kHz采样率的wav音乐。
rk3399_all:/ # tinyplay /sdcard/1.wav
Playing sample: 2 ch, 44100 hz, 16 bit
rk3399_all:/ #
3、tinycap:录音
使用命令前先用 tinymix 切换到音频通道。
tinycap /sdcard/test.pcm -D 0 -d 0 -c 4 -r 48000 -b 32 -p 768 -n 10
-D card 声卡
-d device 设备
-c channels 通道
-r rate 采样率
-b bits pcm 位宽
-p period_size 一次中断的帧数
-n n_periods 周期数
在这里遇到了一个问题:
Unable to open PCM device (cannot set hw params: Invalid argument)
Captured 0 frames
若是tinycap后面加上参数无法录音,而直接使用tinycap /sdcard/1.wav可以生成1.wav但是1.wav无声,录音失败。
tinycap /sdcard/rec.wav -D 0 -d 0 -c 4 -r 44100 -p 160 -n 4调整参数后可以录音,使用es8316则不需要别人的提供的源码。
4、tinypcminfo
tinypcminfo用于查看PCM通道的相关信息,如PCM的采样率,通道个数,采样点数等信息。
tinypcminfo -D /proc/asound/cards
cat /proc/asound/cards查看当前声卡