您所在位置: 网站首页 / ALSA框架介绍音频通路.docx / 文档详情
ALSA框架介绍音频通路.docx 立即下载
2024-11-07
约1万字
约19页
0
286KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

ALSA框架介绍音频通路.docx

ALSA框架介绍音频通路.docx

预览

免费试读已结束,剩余 14 页请下载文档后查看

20 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

ALSA框架介绍——音频通路
陈金泉2011-3-3
内容:
1、简单介绍android音频状态与音频通路、codec。
2、通过ALSA的controls控制codec实现通路切换。
2.1、control
2.2、widget
2.3、audio_map
2.4、通路切换
2.5、alsa_amixer
1、简单介绍android音频状态与音频通路、codec、声卡注册
1.1、android音频状态与音频通路
Android的音频通路管理主要是在AudioPolicyManager中完成的,包括音量管理,音频策略(strategy)管理,输入输出设备管理。

Android音频模式状态图:

Android的音频模式状态包括:NORMAL、IN_CALL、RINGTONE。
AudioPolicyManager的mPhoneState成员变量记录了当前音频模式状态,在音频通路切换时的设备选择时会使用到。
在这3种音频模式状态下一共有10种音频数据流,定义如下:
VOICE_CALL=0,
SYSTEM=1,
RING=2,
MUSIC=3,
ALARM=4,
NOTIFICATION=5,
BLUETOOTH_SCO=6,
ENFORCED_AUDIBLE=7,
DTMF=8,
TTS=9,

Android把10种streamtype归纳为4种路由策略,getStrategy(stream_type)根据stream_type,返回对应的routing_strategy值,也就是返回stream_type对应的路由策略。
AudioPolicyManager中有两个成员变量:mAvailableOutputDevices和mAvailableInputDevices,他们记录了当前可用的输入和输出设备。
getDeviceForStrategy()则结合routing_strategy、mPhoneState以及mAvailableOutputDevices或mAvailableInputDevices,返回可用的device。
所以android设置音频通路时会先根据getStrategy(stream_type)和getDeviceForStrategy()函数获取相应的输出、输入设备,然后通过setOutputDevice(mHardwareOutput,newDevice)函数调用到alsa_default.cpp中的s_route、s_open函数控制到底层。
s_open函数用会调用deviceName(handle,devices,mode),这个函数会根据Devices的值来组合成字符串。然后通过snd_pcm_open获取asound.conf中相应的pcm配置里面的controls,并对调用到codec驱动当中对codec进行配置。
例子:
Music(NORMAL)->STRATEGY_MEDIA->DEVICE_OUT_WIRED_HEADSET
->AndroidPlayback_Headset_normal

Ring(RINGTONE)->SONIFICATION->DEVICE_OUT_SPEAKER和DEVICE_OUT_WIRED_HEADSET
->AndroidPlayback_Speaker_Headset_ringtone

1.2、codec
Codec中文译名是编译码器,由英文编码器(coder)和译码器(decoder)两词的词头组成的缩略语。指的是数字通信中具有编码、译码功能的器件。
Wm8900芯片内部框图:


Wm8900内部包括有:ADC、DAC、OutputMixer、InputMixer、InputPGA、LINEOUT2、HPOUT等

音频输入口:INPUT1、INPUT2、INPUT3、I2S_DAC
音频输入口:HPOUT、LINEOUT1、LINEOUT2、I2S_ADC

Codec输入输出选择、音量控制、各个部分的power会都会通过control、widgets注册到不同的list中供ALSA和用户使用。

2、通过ALSA的controls控制codec实现通路切换。
2.1、control
Codec中会把一部分功能的设置信息,以control的形式通过snd_soc_add_controls函数添加到声卡中,我们可以通过asound.conf去控制这些control。
如:
SOC_SINGLE("LeftInputPGASwitch",WM8900_REG_LINVOL,6,1,1),

#defineSOC_SINGLE(xname,reg,shift,max,invert)\
{	.iface=SNDRV_CTL_ELEM_IF
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

ALSA框架介绍音频通路

文档大小:286KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用