android 系统音频tinyalsa,调节音频方法

目前linux中主流的音频体系结构是ALSA(Advanced Linux Sound Architecture),ALSA在内核驱动层提供了alsa-driver,在应用层提供了alsa-lib,应用程序只需要调用alsa-lib提供的API就可以完成对底层硬件的操作。说的这么好,但是Android中没有使用标准的ALSA,而是一个ALSA的简化版叫做tinyalsa。Android中使用tinyalsa控制管理所有模式的音频通路,使用tinyalsa提供的工具进行查看、调试。

android编译make 默认是没有tinyplay,tinycap,tinymix,tinypcminfo,需要手动局部编译

编译命令:

[objc] view plain commm external/tinyalsa/  

编译出来文件,可以push到系统system/bin/.

使用linux自带的tinyalsa后生成四个小工具说明

    tinymix 可以得到音频通路相关的各项配置参数。也可以通过添加参数修改其中的配置

 tinypcminfo 用于查看pcm通道相关的信息 (tinypcminfo -D /proc/asound/cards)  

 tinyplay是一个简易的音乐播放器,一般用于播放测试。

 tinycap是一个简易的录音软件,一般用于录音测试。

demo:

root@rk3288:/ # tinymix
tinymix
Mixer name: 'RK_ES8316'
Number of controls: 35
ctl type num name value
0 INT 2 HP Playback Volume 0 0
1 INT 2 HPMixer Gain 0 0
2 INT 2 DAC Playback Volume 176 176
3 BOOL 1 Enable DAC Soft Ramp Off
4 INT 1 DAC Soft Ramp Rate 4
5 ENUM 1 Playback Polarity Normal
6 BOOL 1 DAC Notch Filter Off
7 BOOL 1 DAC Double Fs Mode Off
8 INT 1 DAC Volume Control-LeR 0
9 INT 1 DAC Stereo Enhancement 0
10 BOOL 1 MIC Boost On
11 INT 1 Input PGA 3
12 INT 1 ADC Capture Volume 192
13 BOOL 1 ADC Soft Ramp On
14 ENUM 1 Capture Polarity Normal
15 BOOL 1 ADC Double FS Mode Off
16 INT 1 ALC Capture Target Volume 10
17 INT 1 ALC Capture Max PGA 8
18 INT 1 ALC Capture Min PGA 8
19 ENUM 1 ALC Capture Function On
20 INT 1 ALC Capture Hold Time 0
21 INT 1 ALC Capture Decay Time 0
22 INT 1 ALC Capture Attack Time 5
23 INT 1 ALC Capture NG Threshold 1
24 ENUM 1 ALC Capture NG Type Mute ADC Output
25 BOOL 1 ALC Capture NG Switch On
26 BOOL 1 RLIN Switch Off
27 BOOL 1 Right DAC Switch Off
28 BOOL 1 LLIN Switch Off
29 BOOL 1 Left DAC Switch Off
30 ENUM 1 Right Hp mux lin1-rin1
31 ENUM 1 Left Hp mux lin1-rin1
32 ENUM 1 DAC SRC Mux LDATA TO LDAC, RDATA TO RDAC
33 ENUM 1 Digital Mic Mux dmic disable
34 ENUM 1 Differential Mux lin1-rin1
DAC Playback Volume 参数是音频控制最大值,找到相应的寄存器,写入一定值,对最大值修改即可修改音频最大音量输出电压:
/* DAC Digital controls */
SOC_DOUBLE_R_TLV("DAC Playback Volume", ES8316_DAC_VOLL_REG33,
ES8316_DAC_VOLR_REG34, 0, 0xC0, 1, dac_vol_tlv),
找到相对于的寄存器地址左右声道:ES8316_DAC_VOLL_REG33,ES8316_DAC_VOLR_REG34

snd_soc_write(codec, ES8316_DAC_VOLL_REG33, 0x10);//0x00
snd_soc_write(codec, ES8316_DAC_VOLR_REG34, 0x10);//0x00


详细可以参考:https://blog.csdn.net/radianceblau/article/details/64125411

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

android 系统音频tinyalsa,调节音频方法

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭