高通音频驱动录音流程(五)
高通音频驱动录音流程(五)
mixer path 设置过程分析
snd_soc_register_card
- 录音通路配置
- 调用tinycap命令时的音频播放流程
网上关于音频驱动的文章,大多是进行框架性的介绍,关于音频驱动控件的配置及录音播放介绍的很少,下面就已高通sm6350的mic通路配置及录音的配置,进行音频驱动流程的介绍。
录音通路配置
/* 下面这三个是对swr侧进行配置 */
tinymix "TX DEC1 MUX" "SWR_MIC"
tinymix "TX SMIC MUX1" "ADC0"
tinymix "TX_AIF1_CAP Mixer DEC1" "1"
/* Enables soundwire slave device data path */
tinymix "ADC1_MIXER Switch" "1"
/* 配置DMA的channel及bolero的音量增益 */
tinymix "TX_CDC_DMA_TX_3 Channels" "One"
tinymix "TX_DEC1 Volume" "80"
/* 将fe与be连接,其中MultiMedia1对应的时deep buffer playback */
tinymix "MultiMedia1 Mixer TX_CDC_DMA_TX_3" "1"
调用tinycap命令时的音频播放流程
tinycap /sdcard/Music/test.wav -c 1 -r 48000 -b 16 -T 10
pcm->fd = open(fn, O_RDWR|O_NONBLOCK);snd_opensnd_pcm_capture_opensnd_pcm_opensnd_pcm_open_filesnd_pcm_open_substreamsubstream->ops->open(substream))dpcm_fe_dai_opendpcm_fe_dai_startupdpcm_be_dai_startupsoc_pcm_opencpu_dai->driver->ops->startup(substream, cpu_dai)component->driver->ops->open(substream)codec_dai->driver->ops->startup(substream, codec_dai)rtd->dai_link->ops->startup(substream);
ioctl(pcm->fd, SNDRV_PCM_IOCTL_INFO, &info))snd_pcm_ioctlsnd_pcm_common_ioctlsnd_pcm_info_usersnd_pcm_info
ioctl(pcm->fd, SNDRV_PCM_IOCTL_HW_PARAMS, ¶ms)snd_pcm_ioctlsnd_pcm_common_ioctlsnd_pcm_hw_params_usersnd_pcm_hw_paramssubstream->ops->hw_params(substream, params);dpcm_fe_dai_hw_paramsdpcm_be_dai_hw_paramsrtd->dai_link->be_hw_params_fixup(rtd, params)rtd->dai_link->ops->hw_params(substream, params)soc_dai_hw_params(substream, &codec_params, codec_dai)soc_dai_hw_params(substream, params, cpu_dai)rtd->dai_link->be_hw_params_fixup(rtd, params)dai->driver->ops->hw_params(substream, params, dai)component->driver->ops->hw_params(substream, params)ioctl(pcm->fd, SNDRV_PCM_IOCTL_SW_PARAMS, &sparams)snd_pcm_ioctlsnd_pcm_common_ioctlsnd_pcm_sw_params_usersnd_pcm_sw_params
ioctl(pcm->fd, SNDRV_PCM_IOCTL_PREPARE)snd_pcm_ioctlsnd_pcm_common_ioctlsnd_pcm_preparesnd_pcm_action_nonatomicsnd_pcm_action_preparesubstream->ops->prepare(substream)dpcm_fe_dai_preparedpcm_be_dai_preparesoc_pcm_preparertd->dai_link->ops->prepare(substream)component->driver->ops->prepare(substream)codec_dai->driver->ops->prepare(substream, codec_dai)cpu_dai->driver->ops->prepare(substream, cpu_dai)dai->driver->ops->mute_stream(dai, mute, direction)
ioctl(pcm->fd, SNDRV_PCM_IOCTL_START)snd_pcm_ioctlsnd_pcm_common_ioctlsnd_pcm_start_lock_irqsnd_pcm_action_lock_irqsnd_pcm_action_startsubstream->ops->trigger(substream, SNDRV_PCM_TRIGGER_START)dpcm_fe_dai_triggerdpcm_fe_dai_do_triggerdpcm_dai_trigger_fe_bedpcm_be_dai_triggersoc_pcm_triggercodec_dai->driver->ops->trigger(substream, cmd, codec_dai) cmponent->driver->ops->trigger(substream, cmd)cpu_dai->driver->ops->trigger(substream, cmd, cpu_dai)rtd->dai_link->ops->trigger(substream, cmd)ioctl(pcm->fd, SNDRV_PCM_IOCTL_READI_FRAMES, &x)snd_pcm_ioctlsnd_pcm_common_ioctlsnd_pcm_xferi_frames_ioctlsnd_pcm_lib_read__snd_pcm_lib_xfer
高通音频驱动录音流程(五)相关推荐
- 高通音频驱动录音流程(二)
高通音频驱动录音流程(二) 目录 高通音频驱动录音流程(二) Front End CPU的注册 Front End Codec注册 Front End PCM的注册 Front End CPU的注册 ...
- 高通音频驱动录音流程(三)
高通音频驱动录音流程(三) 目录 高通音频驱动录音流程(三) Back End CPU的注册 Back End Codec注册 Back End PCM的注册 Back End CPU的注册 vend ...
- 高通音频驱动调试(十七)
android audio 生产者与消费者 简介 全面接触生产者/消费者问题是在操作系统原理中,并发性原理讨论的问题 生产者/消费者问题.最近的工作偏向音频,接着上一篇文章,用生产者,消费者模型来理解 ...
- 【Android驱动】高通Camera代码probe流程
参看博客: Android camera架构: 基于qualcomm平台的camera 驱动详解_Winston-CSDN博客_高通camera驱动架构 Android Camera MSM HAL: ...
- 高通平台RF配置流程
高通平台RF配置流程 **注:**本文参考项目路径和代码为SIM7600 LE20分支 1 准备工作 需要的资料: 各个器件的datasheet 原理图 逻辑表(内容包含支持哪些制式.band,各个b ...
- 高通msm-V4L2-Camera驱动浅析5-buffer
##系列文章 高通msm-V4L2-Camera驱动浅析1-初识 高通msm-V4L2-Camera驱动浅析2-框架详解 高通msm-V4L2-Camera驱动浅析3-session 上一篇文章讲到传 ...
- 高通msm-V4L2-Camera驱动浅析1-初识
##系列文章 ##系列文章 高通msm-V4L2-Camera驱动浅析1-初识 高通msm-V4L2-Camera驱动浅析2-框架详解 高通msm-V4L2-Camera驱动浅析3-session 前 ...
- 高通LCD bring up流程
高通LCD bring up流程 前言 kernel 添加LCD的dtsi 将屏的dtsi放到平台的dtsi中 电压配置 lk 添加屏的.h文件 Panel configuration Panel r ...
- 高通Camera 驱动调试要点(一)
高通Camera 驱动调试要点(一)_bobuddy的博客-CSDN博客_camera 驱动调试
最新文章
- python图片旋转脚本_Python+OpenCV 实现图片无损旋转90°且无黑边
- 图解Java的substring()方法底层干了啥?
- python 基础学习 正则表达式1(规则)
- 一文读懂JDK7,8,JD9的HashMap,HashTable,ConcurrentHashMap及他们的区别
- 行业谈实践,客户送祝福
- 美链BEC合约漏洞技术分析
- 数字调制2ASK误码率分析matlab实现
- 大数据教你实现预测未来,这不是梦
- SpringBoot+拦截器+自定义异常+自定义注解+全局异常处理简单实现接口权限管理...
- python如何计算个人gpa_【Python】计算GPA | 学步园
- Windows自动关机命令脚本
- 直接选择排序算法时间 / 空间复杂度
- MetaMask账号注册
- 解决fegin post requestbody 400报错问题
- 用C语言编程验证 “ 哥德巴赫猜想 ”
- IKAnalyzer 配置文件介绍
- GLES2.0中文API-glGet
- mysql 开源入门_入门教程:安装配置新版MySQL 8开源数据库
- 阿里云 幸运券 分享 2017 10
- 惠普HP Deskjet F378 多功能一体机驱动