android 音频系统工作流程梳理
2014-10-20 15:49
330 查看
ALSA可以分为ALSA driver、ALSA lib、ALSA application三个层次。
soc可以分为4个域:
Codec domain ;
Platform/Machine domain;
Path domain -alsamixer, amixer;
sound/soc/codecs目录Stream domain - DACs and ADCs. aplay, arecord。
对codec内部的硬件构件抽象的部件包括:
Mixer - Mixes several analog signals into a single analog signal.混合多个模拟信号到单个模拟信号Mux - An analog switch that outputs only one of many inputs.多路模拟信号的选择开关PGA - A programmable gain amplifier or attenuation widget.ADC - Analog to Digital ConverterDAC - Digital to Analog ConverterSwitch - An analog switchInput - A codec input pinOutput - A codec output pinHeadphone - Headphone (and optional Jack)Mic - Mic (and optional Jack)Line - Line Input/Output (and optional Jack)Speaker - SpeakerPre - Special PRE widget (exec before all others)Post - Special POST widget (exec after all others)
path的头尾端点就是用SND_SOC_DAPM_INPUT或者SND_SOC_DAPM_OUTPUT定义这个部件。
Audio Codec中有许多部件,并且可以是任意的名字,ALSA怎么可能知道该如何操作这些部件来切换到你想要的路径,即时ALSA lib也不会关心这部分内容,这些细微的切换又ALSA application以上来完成,ALSA lib也最多提供各种操作mixer或者Mux的函数,如何切换是你应用的事情。
对部件的操作函数是snd_mixer_selem_set_enum_item(),alsamixer也是通过这个函数达到切换的目的
amixer-用户层
->snd_ctl_ioctl-系统调用
->snd_ctl_elem_write_user-内核钩子函数
->snd_ctl_elem_wirte
->snd_ctl_find_id-遍历kcontrol链表找到name字段匹配的kctl
->kctl->put()-调用kctl的成员函数put()
->snd_soc_put_volsw_2r
soc可以分为4个域:
Codec domain ;
Platform/Machine domain;
Path domain -alsamixer, amixer;
sound/soc/codecs目录Stream domain - DACs and ADCs. aplay, arecord。
对codec内部的硬件构件抽象的部件包括:
Mixer - Mixes several analog signals into a single analog signal.混合多个模拟信号到单个模拟信号Mux - An analog switch that outputs only one of many inputs.多路模拟信号的选择开关PGA - A programmable gain amplifier or attenuation widget.ADC - Analog to Digital ConverterDAC - Digital to Analog ConverterSwitch - An analog switchInput - A codec input pinOutput - A codec output pinHeadphone - Headphone (and optional Jack)Mic - Mic (and optional Jack)Line - Line Input/Output (and optional Jack)Speaker - SpeakerPre - Special PRE widget (exec before all others)Post - Special POST widget (exec after all others)
path的头尾端点就是用SND_SOC_DAPM_INPUT或者SND_SOC_DAPM_OUTPUT定义这个部件。
Audio Codec中有许多部件,并且可以是任意的名字,ALSA怎么可能知道该如何操作这些部件来切换到你想要的路径,即时ALSA lib也不会关心这部分内容,这些细微的切换又ALSA application以上来完成,ALSA lib也最多提供各种操作mixer或者Mux的函数,如何切换是你应用的事情。
对部件的操作函数是snd_mixer_selem_set_enum_item(),alsamixer也是通过这个函数达到切换的目的
amixer-用户层
->snd_ctl_ioctl-系统调用
->snd_ctl_elem_write_user-内核钩子函数
->snd_ctl_elem_wirte
->snd_ctl_find_id-遍历kcontrol链表找到name字段匹配的kctl
->kctl->put()-调用kctl的成员函数put()
->snd_soc_put_volsw_2r
相关文章推荐
- Android系统实际开发工作中的流程和必要技能
- Android 系统启动流程梳理
- android telephony 工作流程(一)--UICC概述及SIM卡文件系统
- Android系统内核引导流程梳理
- Android (6.0) 系统启动流程梳理
- ANDROID2.3音频系统HAL
- android 系统上做GC双模的--音频通路等相关设计分析
- android系统启动流程分析:
- 驰骋工作流程如何与您的系统进行耦合
- android 音频系统java部分代码阅读
- 一个SPS + K2 + InfoPath + Mobile + Exchange的工作流程演示系统
- android恢复出厂设置以及系统升级流程
- android 音频系统java部分代码阅读
- SSOLab轻量级单点登录系统_登录流程梳理
- Android 音频系统
- 一个SPS + K2 + InfoPath + Mobile + Exchange的工作流程演示系统
- android系统开发(九)-Audio部分准备工作alsa移植
- android系统关机流程
- 系统集成项目工作流程
- android系统开发(九)-Audio部分准备工作alsa移植