欢迎来到天天文库
浏览记录
ID:14887896
大小:403.50 KB
页数:19页
时间:2018-07-30
《alsa框架介绍-音频通路》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、手机事业部ALSA框架介绍——音频通路陈金泉2011-3-3内容:1、简单介绍android音频状态与音频通路、codec。2、通过ALSA的controls控制codec实现通路切换。2.1、control2.2、widget2.3、audio_map2.4、通路切换2.5、alsa_amixer本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。19手机事业部1、简单介绍android音频状态与音频通路、codec、声卡注册1.1、android音频状态与音频通路Andro
2、id的音频通路管理主要是在AudioPolicyManager中完成的,包括音量管理,音频策略(strategy)管理,输入输出设备管理。Android音频模式状态图:Android的音频模式状态包括:NORMAL、IN_CALL、RINGTONE。AudioPolicyManager的mPhoneState成员变量记录了当前音频模式状态,在音频通路切换时的设备选择时会使用到。在这3种音频模式状态下一共有10种音频数据流,定义如下:VOICE_CALL=0,SYSTEM=1,RING=2,MUSIC
3、=3,ALARM=4,NOTIFICATION=5,BLUETOOTH_SCO=6,本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。19手机事业部ENFORCED_AUDIBLE=7,DTMF=8,TTS=9, Android把10种streamtype归纳为4种路由策略,getStrategy(stream_type)根据stream_type,返回对应的routing_strategy值,也就是返回stream_type对应的路由策略。AudioPolicyManage
4、r中有两个成员变量:mAvailableOutputDevices和mAvailableInputDevices,他们记录了当前可用的输入和输出设备。getDeviceForStrategy()则结合routing_strategy、mPhoneState以及mAvailableOutputDevices或mAvailableInputDevices,返回可用的device。所以android设置音频通路时会先根据getStrategy(stream_type)和getDeviceForStrate
5、gy()函数获取相应的输出、输入设备,然后通过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进行配
6、置。本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。19手机事业部例子:Music(NORMAL)->STRATEGY_MEDIA->DEVICE_OUT_WIRED_HEADSET->AndroidPlayback_Headset_normalRing(RINGTONE)->SONIFICATION->DEVICE_OUT_SPEAKER和DEVICE_OUT_WIRED_HEADSET->AndroidPlayback_Speaker_Headset_ringtone本
7、文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。19手机事业部1.2、codecCodec中文译名是编译码器,由英文编码器(coder)和译码器(decoder)两词的词头组成的缩略语。指的是数字通信中具有编码、译码功能的器件。Wm8900芯片内部框图:Wm8900内部包括有:ADC、DAC、OutputMixer、InputMixer、InputPGA、LINEOUT2、HPOUT等音频输入口:INPUT1、INPUT2、INPUT3、I2S_DAC音频输入口:HPOUT、
8、LINEOUT1、LINEOUT2、I2S_ADCCodec输入输出选择、音量控制、各个部分的power会都会通过control、widgets注册到不同的list中供ALSA和用户使用。本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。19手机事业部2、通过ALSA的controls控制codec实现通路切换。2.1、controlCodec中会把一部分功能的设置信息,以control的形式通过snd_soc_add_controls函数添加
此文档下载收益归作者所有