RK3399 android7.1 音频底层调试--tinyalsa及相关问题--已解决

tinyalsa简介:

在android中并没有使用linux主流的ALSA架构来进行音频调试,而是使用了它的简化版tinyalsa,控制管理所有模式的音频通路,我们使用tinyalsa提供的工具查看、调试。
tinyalsa源码位于android源码目录下/external/tinyalsa,目录下面使用mma进行编译之后会在/system/bin/中生成以下工具文件:tinymix,tinyplay,tinycap,tinymeminfo和一个.so库。
RK3399 android7.1 音频底层调试--tinyalsa及相关问题--已解决_第1张图片

/dev/snd/ 系统下control设备管理、pcm设备都在此目录下
/proc/asound/ 声卡相关信息可以在此目录下找到,命令:cat /proc/asound/cards可以查看系统下所有声卡及其ID
/sys/class/sound sys系统下声卡相关的文件结点在此目录下

下面首先介绍一下其工具的使用。

1、tinymix:查看配置混音器

window:win+R 输入cmd回车打开命令提示符窗口
adb shell 进入机器

RK3399 android7.1 音频底层调试--tinyalsa及相关问题--已解决_第2张图片
上图可以结合原理图来分析会比较简单易懂,由于公司机密文件不能公开所以没有将原理放出,通过过添加参数修改其中的配置,如希望提高 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的采样率,通道个数,采样点数等信息。
RK3399 android7.1 音频底层调试--tinyalsa及相关问题--已解决_第3张图片

tinypcminfo -D /proc/asound/cards

cat /proc/asound/cards查看当前声卡
在这里插入图片描述

你可能感兴趣的:(音频调试)