linux_sound_alsa_ALSA体系SOC子系统中hw_params逻辑
来源:互联网 发布:网络小祖宗是什么意思 编辑:程序博客网 时间:2024/04/28 13:12
linux_sound_alsa_ALSA体系SOC子系统中hw_params逻辑
linux/sound目录下ALSA体系SOC子系统中hw_params逻辑
链接分析:
core/pcm_native.c文件中snd_pcm_hw_params()函数调用err = substream->ops->hw_params(substream, params)。根据soc/soc-core.c文件中snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &soc_pcm_ops)和soc_pcm_ops定义中.hw_params = soc_pcm_hw_params提供的关联,可知soc/soc-core.c文件中soc_pcm_hw_params()函数被调用。此函数依次调用4个分支。
(1).ret = machine->ops->hw_params(substream, params);根据soc/soc-core.c文件中soc_new_pcm()函数中rtd->dai = dai_link;和/soc/pxa/littleton.c文件中snd_soc_machine_littleton定义.dai_link = littleton_dai的关联,以及littleton_dai和littleton_machine_ops的定义可知,没有关联项,此函数为空。
(2).ret = codec_dai->ops.hw_params(substream, params);根据soc/pxa/littleton.c文件中.codec_dai = &wm9713_dai[WM9713_DAI_AC97_HIFI],和wm9713_dai定义中提供的关联,可知,没有关联。
(3).ret = cpu_dai->ops.hw_params(substream, params);根据soc/pxa/littleton.c文件中.cpu_dai = &pxa_ac97_dai[PXA3XX_DAI_AC97_HIFI],和pxa_ac97_dai定义,可知/soc/pxa/pxa3xx-ac97.c文件中pxa3xx_ac97_hw_params()函数将被调用。待续1。
(4).ret = platform->pcm_ops->hw_params(substream, params);根据pxa3xx_soc_platform和pxa3xx_pcm_ops定义,可知,/soc/pxa/pxa3xx-pcm.c文件中pxa3xx_pcm_hw_params()被调用。待续2。
执行分析:
待续1中保存dma信息cpu_dai->dma_data = &pxa3xx_ac97_pcm_stereo_out;待续2中将其关联到dma指针*dma = rtd->dai->cpu_dai->dma_data;并进一步存储到prtd->params中prtd->params = dma;最后,根据这些信息,在预先申请的内存中按照pxa_dma_desc结构组织一张链表。dma能根据链表自动传输数据,所以,由待续1提供dma设置,再由待续2根据设置组织链表,就完成了dma的所有配置。这也是hw_params的核心功能。ALSA用户层中播放、停止等操作只需要简单的触发dma启动、停止就行了。
后记:
下次根据dma分析录音/放音数据流。
- linux_sound_alsa_ALSA体系SOC子系统中hw_params逻辑
- linux_sound_alsa_ALSA体系SOC子系统中hw_params逻辑
- linux_sound_alsa_ALSA体系SOC子系统中hw_params逻辑
- linux_sound_alsa_ALSA体系SOC子系统中数据流分析
- linux_sound_alsa_ALSA体系SOC子系统中数据流分析
- linux_sound_alsa_ALSA体系SOC子系统中数据流分析
- linux_sound_alsa_ALSA体系SOC子系统中数据流分析
- V4L2 soc-camera 子系统
- soc-camera 子系统
- V4L2 soc-camera 子系统
- soc camera 子系统简介
- V4L2的soc-camera子系统
- soc camera 子系统之soc camera device初始化
- soc camera子系统之初始化i2c client
- 工作流子系统逻辑结构
- 体系编程、SOC编程那些事儿
- soc camera 子系统之soc camera host 与soc camera device 注册
- 四大基本逻辑体系
- poj 2709 贪心
- linux_sound_alsa_Android+alsa音频系统中的几个问题
- 系统调用的理解
- linux_sound_alsa_ALSA体系SOC子系统中数据流分析
- opengl中局部坐标和全局坐标之我的理解
- linux_sound_alsa_ALSA体系SOC子系统中hw_params逻辑
- 黑马程序员——交通灯项目思路
- 关于javap的研究
- 创业者都在纠结和困惑些啥?
- 黑马程序员——银行业务调度系统逻辑
- Tomcat启动过程原理详解
- Android SDK 升级方法
- UIButton扩大响应区域 点击高亮光晕效果
- KMP算法:字符串匹配