音频系统方案Word格式文档下载.docx
- 文档编号:14770526
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:26
- 大小:2.73MB
音频系统方案Word格式文档下载.docx
《音频系统方案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《音频系统方案Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
5Codec的部架构:
Codec中的增益放大器
所用到的codec通路
LEVANTE_AnaMIC1_TO_PCM_L
通话时,MIC通路
LEVANTE_AnaMIC1_LOUD_TO_PCM_L
通话免提时,MIC通路
LEVANTE_AnaMIC2_TO_PCM_L
通话插耳机时,MIC通路
LEVANTE_PCM_L_TO_EAR_VIA_DAC1
通话时,听筒通路
LEVANTE_PCM_L_TO_SPKR_VIA_DAC1
通话免提时,SPEAKER通路
LEVANTE_PCM_L_TO_HS
通话插耳机时,耳机通路
LEVANTE_I2S_TO_EAR_VIA_DAC1
用听筒放音频的通路
LEVANTE_I2S_TO_SPKR_VIA_DAC1
用SPERKER放音频的通路
LEVANTE_I2S_TO_HS
用耳机放音频的通路
LEVANTE_AnaMIC1_LOUD_TO_PCM_L_APPS
APPS录音时,MIC通路
LEVANTE_AnaMIC2_TO_PCM_L_APPS
插着耳机用APPS录音时,耳机上的MIC通路
LEVANTE_I2S_TO_SPKR_HS
插着耳机,来电铃音通路
二软件架构
1架构图
2控制流和数据流的路径
控制流:
APHiFi播放/录音
Androidaudiosystem→MarvelHAL→ALSALib→CtrlPlugin→AudioServer→AM→ACM→LevanteComponent→ALSALib→LevanteKernelDriver→LevanteAudioHWCodec
CPvoicecall通路/音量控制
Androidaudiosystem→MarvellHAL→ALSALib→CtrlPlugin→AudioServer→AM→ACM→LevanteComponent→ALSALib→LevanteKernelDriver→LevanteAudioHWCodec
Androidaudiosystem→MarvellHAL→ALSALib→CtrlPlugin→AudioServer→AM→ACM→audiostub→Communicationsubsystem
CPvoicecallMUTE控制
AndroidRIL→MarvellTelephony→AudioServer→AM→ACM→audiostub→Communicationsubsystem
数据流:
APHiFi播放
Androidaudiosystem→MarvellHAL→ALSALib→ALSAcore/ABUdriver→LevanteAudioHWCodec
APHiFi录音
LevanteAudioHWCodec→ALSAcore/ABUdriver→ALSALib→MarvellHAL→Androidaudiosystem
AP向CP发送数据进行播放
Androidaudiosystem→MarvellHAL→ALSALib→PCMPlugin→AudioServer→AM→ACM→audiostub→Communicationsubsystem
CP录音发送到AP
Communicationsubsystem→audiostub→ACM→AM→AudioServer→PCMPlugin→ALSALib→MarvellHAL→Androidaudiosystem
3软件各功能块描述
3.1MarvellHAL
3.1.1功能
通过ALSALib连接Androidaudiosystem和Marvell的硬件系统。
从Androidaudiosystem获取音频路由通知,发送到AudioServer
从AndroidaudioApps获取音频数据,通过ALSALib发送到codec或者Communicationsubsystem。
从ALSALib获取数据发送到AndroidaudioApps。
3.1.2代码位置
vendor/marvell/generic/libaudio/AudioHardware.cpp
vendor/marvell/saarbmg1/libaudiopath/AudioPath.c
3.1.3通路配置实例
通过以下函数来配置路由通知。
voidenable_audio_path_for_device(uint32_tdevices,unsignedcharleft,unsignedcharright)
voiddisable_audio_path_for_device(uint32_tdevices)
voidset_volume_for_device(uint32_tdevices,unsignedcharleft,unsignedcharright)
其中,enable_audio_path_for_device将参数device与结构数组audio_path_list[]中各个数组元素的device成员进行匹配,然后调用相匹配的数组元素的enable成员所指向的函数,比如enable_loud_speaker。
audio_path_list[]中支持的设备有:
AndroidDEVICE
HAL/AudioServer
numid
DEVICE
DEVICE_OUT_EARPIECE
8
DEVICE_OUT_SPEAKER
22
SPEAKER_DEVICE
DEVICE_OUT_WIRED_HEADSET
26
HEADSET_DEVICE
DEVICE_OUT_WIRED_HEADPHONE
28
HEADPHONE_DEVICE
DEVICE_OUT_BLUETOOTH_SCO
24
BLUETOOTH_DEVICE
DEVICE_OUT_BLUETOOTH_SCO_HEADSET
DEVICE_OUT_DEFAULT
36
SONIFICATION_DEVICE
DEVICE_IN_BUILTIN_MIC
32
RECORD_DEVICE
DEVICE_IN_WIRED_HEADSET
DEVICE_IN_COMMUNICATION
34
RECORD_LOFI_DEVICE
DEVICE_IN_VOICE_CALL
30
PHONE_DEVICE
enable_loud_speaker调用control_info_to_numid和send_amixer_control,函数control_info_to_numid将四个参数(intclient,intmethod_type,intmethod_id,intdevice)与一个numid对应,根据marvell\saarbmg1\libaudiopath\MarvellAmixer.h文件中的gItemCtlInfo来转换,numid为所匹配的gItemCtlInfo数组中的元素的下标加1。
函数send_amixer_control将通过调用ALSAlib接口和numid来使用CtrlPlugin。
3.2ALSALib
3.2.1功能
提供了全部的ALSA核的接口,给用户空间来使用:
控制接口(/dev/snd/controlCX)
混音器接口(/dev/snd/mixerCXDX)
PCM接口(/dev/snd/pcmCXDX)
RawMIDI接口(/dev/snd/midiCXDX)
音序接口(/dev/snd/seq)
定时器接口(/dev/snd/timer)
这些接口都是以文件的方式被提供。
3.2.2代码位置
external/alsa-lib/src/
3.3PCMPlugin/CtrlPlugin
3.3.1功能
PCMPlugin和CtrlPlugin都属于ALSALib的插件。
PCMPlugin将PCM数据流存储于一个文件,或者将一个已经存在的文件作为输入数据源。
可以用于通话录音。
CtrlPlugin传输Androidaudiosystem的控制请求至audioserver的IPC。
3.3.2代码位置
vendor/marvell/generic/telephony/Drivers/aud_sw/linux_audio/alsa_plugin/phone/pcm_phone.c
vendor/marvell/generic/telephony/Drivers/aud_sw/linux_audio/alsa_plugin/phone/ctl_phone.c
3.3.3通路配置实例
CtrlPlugin的代码结构按照ALSA规来实现,主要用来实现功能的函数为:
在send_amixer_control中调用了snd_ctl_elem_value_set_integer和snd_ctl_elem_write,再往下会调用上图结构体中的phone_write_integer,phone_write_integer中会将上面提到过的numid转换回(intclient,intmethod_type,intmethod_id,intdevice)四个参数,转换所根据的表是上面提到的gItemCtlInfo(marvell\saarbmg1\libaudiopath\MarvellAmixer.h)的一份拷贝marvell\generic\telephony\drivers\aud_sw\linux_audio\alsa_plugin\phone\MarvellAmixer.h。
然后将四个参数通过audioserver的ipc接口发送给audioserver处理。
3.4AudioServer
3.4.1功能
包含4部分
1IPC通信
为ALSALib和ACM提供了通信控制通道和数据通道
2ScenarioManager
有5种主要的音频场景
Voicecall
HIFIpl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音频系统 方案
![提示](https://static.bdocx.com/images/bang_tan.gif)