备注:来源于网络和高通文档,做个记录。

1.发送通路(TX)—表示本地到远端,即发送给对方的声音通路
声音一开始是从MIC 进入,这里有2个MIC ,默认MIC1用于手机(handset),MIC2用于耳机(headset)。之后声音进过2个可选增益的AP,注意第一个AP只能选择0db或+24db,而第二个AP的增益范围就大了很多,从-6db~+24db,步长1.5db。通过codec的寄存器,可以选择AP的增益,以及使用哪个AP(全选,全不选,或则只用一个,另一个bypass)。经过ADC之后,有两个滤波器HPF和SLOPE,HPF滤出120Hz以下信号,SLOPE会增强1kHz以上的高频信号。在进入QDSP前,有一个可编程增益CodecTxGain,范围-84dB~12dB。这里还有直连到RX后级的侧音增益控制side_tone_gain。进入QDSP后,首先经过EC(回声消除器),然后经过NS(噪声抑制器)和TX AGC,到这里声音信号已经达到最大信噪比。然后通过Tx PCM Filter,这是个FIR滤波器,根据自身的幅频和相频特性影响SFR(发送频响)。最后还有一级可编程增益TxVolume,也会影响到SLR(发送响度)。

2.接收通路(RX)—表示远端到本地,即本地听到声音的通路
与TX部分类似。需要补充一点,除图中所示外,SPEAKER还会在PMIC中进行最后一级放大,声音从MIC进来以后,流到CODEC,然后从AUXOP,AUXON输出,流到SPKR_IN_M,SPKR_IN_P, 即进入PMIC,这时可以通过PMIC的API pm_set_speaker_gain(PM_SPKR_GAIN_PLUS12DB)定义增益大小(在sndhw_init()中),放大增益范围为[-16,-12,-8,-4,0,4,8,12]dB ,最后通过SPKR_OUT_P,SPKR_OUT_M输出到喇叭。

3、如何理解 tinymix “MI2S_RX Channels” “One”
MI2S RX 线路上通道的个数:One or Two

如何理解 tinymix “RX2 MIX1 INP1” “RX1”
表示 SPK 以内部的 Rx Mix2 作为 mixer 作为输入,在 mixer 端又以 mixer的 Rx1 作为输入

如何理解 tinymix “RDAC2 MUX” “RX2”
表示音源右声道的前端数据来自 DAC2 模数转换器,而 DAC2 的又以 RDAC2 的 Rx2 作为输入

如何理解 tinymix “HPHR” “Switch”
表示右声道是打开还是关闭,其值为 Switch or Zero

如何理解 tinymix “Ext Spk Switch” “On”
表示打开外部 SPK,一般的,外部SPK都带有 PA 使能引脚,需要特别的打开,其值有 On or Off

则整个外部 SPK 的音频链路可以简化为:

Rx Mix2 –> DAC2 –> HPHR –> SPK

4、数字增益设置

"RXn Digital Volume"

"DECn Volume"

"IIRn INPx Volume"

以上增益按最小 0 阶到最大 124 阶设置, 步长 1 dB。 最小 0 阶代表-84 dB,第 84阶为 0 dB, 最大 124 阶为+40 dB

5、模拟增益

"ADCn Volume"

"LINEOUTn Volume"

"HPHL Volume"

"HPHR Volume"

"EAR PA Gain"

"SPK DRV Volume"

DECn Volume 的增益位置在Tx端:

6、对于Voice:voice的基本架构和数据流图如下所示,不同平台间略有差异,不尽相同,此处只给出例子。
Voice的处理大致如下:
TX方向:能量转换(mic)–> A/D转换(Codec)–> 音频前处理(DSP)–>混音器 –> 协议栈 –> RF
RX方向:RF –> 协议栈 –> 音频分离(Audio/Voice)–> 音频后处理 (DSP)–> D/A转换(Codec)–> 能量转换(Speaker/Headset)

7、

msm8996平台的stereo speaker链路的widgets路径就是:

CPU     :   "MultiMedia1 Playback"-->
DSP     :   "MM_DL1"-->"SLIMBUS_0_RX Audio Mixer("MultiMedia1")"-->"SLIMBUS_0_RX"-->
            "Slimbus Playback(dai)"-->
CODEC   :   "AIF Mix Playback(dai)"-->"AIF MIX1 PB"-->"SLIM RX0 MUX("AIF_MIX1_PB")"-->
            "SLIM RX0"-->"RX INT7_1 MIX1 INP0"("RX0")-->"RX INT7_1 MIX1"-->
            "RX INT7 SPLINE MIX"-->"RX INT7 SEC MIX"-->"RX INT7 MIX2"-->"RX INT7 INTERP"-->
            "RX INT7 CHAIN"-->"SPK1 OUT"-->
PA      :   "SpkrLeft IN"-->"SpkrLeft SWR DAC_Port Switch"-->"SpkrLeft RDAC"-->
            "SpkrLeft SPKR PGA"-->"SpkrLeft SPKR"

上面只写了left的,right是一样的,然后pa中的widgets的name是已经加上了prefix的,而pa driver中route定义的是没有加prefix的,这里有坑,需注意。

"MultiMedia1 Playback"-->"MM_DL1"是通过fe的cpu dai driver在probe时创建的一个dai-->aif的链接,为什么?因为fe的cpu dai链接的是一个dummy codec,是需要dynamic绑定的,所以没办法通过dai link进行链接,所以这里只能通过aif的方式,在cpu dai这边指定cpu dai的输出接口,在be的paltfom driver中把此aif作为输入,进行route。

"SLIMBUS_0_RX"-->"Slimbus Playback(dai)"链接则是通过be的cpu dai driver在probe时创建的一个aif-->dai的链接。

"Slimbus Playback(dai)"-->"AIF Mix Playback(dai)"则是通过dai link进行链接的,因为这里的两个dai是静态的link,在创建声卡时就链接好了的。

"SPK1 OUT"-->"SpkrLeft IN"的链接是在dts文件描述声卡时定义的。

其余的链接都是各dirver中的route,加上xml对mix或mux的配置进行的链接。

mixer_path.xml 研究相关推荐

  1. Android - Audio - Qcom平台 - hac器件bring up

    背景 正文 助听器构造 使用方式 HAC部分硬件原理图 硬件调试需求 软件平台及框架 a:mixer_path.xml中添加hac path b:alsa用户空间,tinyalsa中注册HAC控件 c ...

  2. 【Qualcomm高通音频】当内部Codec和外部Codec上都有麦克风输入,如何做到灵活切换内部外部Codec上的麦克风进行录音呢?

    最近遇到一个项目,既用到高通PMU芯片内置的Codec接了麦克风,也通过外部I2S总线外接了两个麦克风. 详细沟通后,了解到,在普通录音的使用场景中,客户要求可以通过安卓原生api任意切换内部Code ...

  3. 【audio】坚果Pro配置双扬声器

    文章目录 1 前言 2 查看mixer_path配置 3 常见的codec连接 4 查看当前平台(msm8953作为参考) 4.1 speaker 4.2 handset 4.3 rx分离左右声道 5 ...

  4. 利用python-docx批量处理Word文件—图片

    图片是Word的一种特殊内容,这篇文章主要内容是如何利用python-docx批量提取Word中的图片,以及如何在Word国插入图片. 1.提取Word中的图片并保护成指定格式 docx好像并没有直接 ...

  5. ROS Learning-032 (提高篇-010 Launch)Launch 深入研究 --- (启动文件编程)ROS 的 XML语法简介...

    ROS 提高篇 之 Launch 深入研究 - 01 - 启动文件的编程 - ROS 的 XML语法简介 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubu ...

  6. SpringMVC关于json、xml自动转换的原理研究[附带源码分析 --转

    SpringMVC关于json.xml自动转换的原理研究[附带源码分析] 原文地址:http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-c ...

  7. 继承ViewGroup研究(2)--在XML中使用ViewGroup初探

    这次研究的是XML中布局自定义ViewGroup,为什么要在XML中自定义ViewGroup,呵呵,其实这个东西吧,还真没法说,我个人的感觉是可以方便的使用Android中已经给出的各种组件,还有自己 ...

  8. 计算机应用 网络管理开发,基于XML的iBAC网络管理系统的研究与开发-计算机应用技术专业论文.docx...

    ⅢY ⅢY iii■l 洲8 mmj■I ㈣0 Ⅲ4 6 ㈣2 学位论文数据集 中图分类号TP311.1学科分类号520.3040 论文编号10010200705 12密级 学位授予单位代码10010 ...

  9. xml工具生成工具_研究当前的XML工具

    xml工具生成工具 常用缩略语 API:应用程序编程接口 DITA:达尔文信息键入体系结构 DTD:文档类型定义 HTML:超文本标记语言 IDE:集成开发环境 URL:统一资源定位符 W3C:万维网 ...

最新文章

  1. PTA数据结构与算法题目集(中文)7-39
  2. 1.23 Lambda表达式的使用
  3. 【NLP】图解GPT-2(完整版)
  4. 面试题—Mysql篇
  5. [转]使用DBX分析AIX 下的 CoreDump
  6. oracle rman 检查坏块,Oracle中使用RMAN来检验坏块
  7. APUE读书笔记-04文件和目录(1)
  8. django 中datetimefile 问题
  9. 阿里P6Java工程师的学习经历自述,希望新人少走弯路
  10. 机器视觉系统工作流程及优势分析
  11. 利用SQLite在android上实现增删改查
  12. mysql基础1-数据库安装配置及语句规范
  13. 什么是Web全栈工程师
  14. 怎么用计算机弹电脑病毒音乐,怎么制作电脑病毒?简单电脑病毒制作方法
  15. 零基础学Java,最开始应该学什么?
  16. 如何不打开excel文件搜索其中内容---在线绿色工具
  17. csv excel 对比
  18. 数字证书和SSL的学习
  19. 密歇根大学张阳团队开发全球首个蛋白质和RNA分子通用结构比对算法
  20. 贝叶斯公式/贝叶斯法则/贝叶斯定理

热门文章

  1. 怎样检测计算机硬件是否正常,怎么检查电脑硬件是否有問題
  2. 星云服务器装系统,装win10,装win10系统-总算知道
  3. 关于虚拟机镜像无法检测
  4. 英伟达帝国的一道裂缝
  5. 斯坦福大学《机器人学》-运动学Kinematics
  6. 浏览器内核Gecko与WebKit哪个性能更强大
  7. 前端实现炫酷动效_web前端入门到实战:使用CSS创建一个炫酷的球体动画效果
  8. 谁说抓包必须用root权限
  9. 面试时,没有谈薪资,叫回去等通知,还有机会吗
  10. HCIP笔记(18)