文章目录

  • 1 前言
  • 2 查看mixer_path配置
  • 3 常见的codec连接
  • 4 查看当前平台(msm8953作为参考)
    • 4.1 speaker
    • 4.2 handset
    • 4.3 rx分离左右声道
  • 5 配置speaker-handset
  • 6 补充
  • 7 sdm660平台测试acdb_id为spkr_mono

1 前言

基于坚果pro手机,设置扬声器播放右声道,听筒播放左声道。
暂时先忽略听筒功率因素,是否能达到左右声道响度相当情况。

2 查看mixer_path配置

mixer_path.xml文件一般存放在vendor/etc目录下,该目录下可能存放多个mixer_path.xml,例如:mixer_path.xml和mixer_path_mtp.xml。
mixer_path.xml是官方提供的示例,通常情况下使用的mixer_path文件是存在后缀的,开发时会根据平台配置不同的xml文件,代码中一般会根据声卡名字去选择对应的mixer_path文件。

坚果pro使用的mixer_path_mtp.xml(缩写推测是MTP: Modem Test Platform)。

查看常见的speaker、handset、headphones、mic配置。

    <path name="speaker"><ctl name="RX3 MIX1 INP1" value="RX1" /><ctl name="RX3 Digital Volume" value="84" /><ctl name="LINE_OUT" value="Switch" /></path><path name="handset"><ctl name="RX1 MIX1 INP1" value="RX1" /><ctl name="RDAC2 MUX" value="RX1" /><ctl name="RX1 Digital Volume" value="84" /><ctl name="EAR PA Gain" value="POS_6_DB" /><ctl name="EAR_S" value="Switch" /></path><path name="headphones"><ctl name="MI2S_RX Channels" value="Two" /><ctl name="RX1 MIX1 INP1" value="RX1" /><ctl name="RX2 MIX1 INP1" value="RX2" /><ctl name="RX HPH Mode" value="HD2" /><ctl name="COMP0 RX1" value="0" /><ctl name="COMP0 RX2" value="0" /><ctl name="RDAC2 MUX" value="RX2" /><ctl name="HPHL" value="Switch" /><ctl name="HPHR" value="Switch" /></path><path name="speaker-and-headphones"><ctl name="RX3 MIX1 INP1" value="RX1" /><ctl name="RX3 Digital Volume" value="80" /><ctl name="LINE_OUT" value="Switch" /><ctl name="MI2S_RX Channels" value="Two" /><ctl name="RX1 MIX1 INP1" value="RX1" /><ctl name="RX1 Digital Volume" value="60" /><ctl name="RX2 MIX1 INP1" value="RX2" /><ctl name="RX2 Digital Volume" value="60" /><ctl name="RX HPH Mode" value="HD2" /><ctl name="COMP0 RX1" value="0" /><ctl name="COMP0 RX2" value="0" /><ctl name="RDAC2 MUX" value="RX2" /><ctl name="HPHL" value="Switch" /><ctl name="HPHR" value="Switch" /></path><path name="speaker-mic"><path name="adc3" /><ctl name="IIR1 INP1 MUX" value="DEC1" /></path><path name="handset-mic"><path name="adc1" /><ctl name="ADC1 Volume" value="6" /><ctl name="IIR1 INP1 MUX" value="DEC1" /></path><path name="headset-mic"><path name="adc2" /><ctl name="ADC2 MUX" value="INP2" /><ctl name="IIR1 INP1 MUX" value="DEC1" /></path>

这个mixer_path建议结合对应的codec框图来查看。

或者执行如下命令,查看tinymix控件的值,可以推测出来codec内部各模块之间信号如何传输。

adb shell tinymix -a > tinymix_value.txt

-a表示显示各控件的取值范围。

1746 ENUM    1   RX2 MIX2 INP1                            >ZERO IIR1 IIR2

">ZERO IIR1 IIR2"表示该控件可以选择这三种值,当前选择到ZERO
表示当前该控件无信号输入。

3 常见的codec连接

  1. PDM
    内部codec通过PDM连接到PMIC(powermanager IC),PMIC内部也有codec,然后接speaker扬声器,headphones耳机,earpiece听筒。

  2. soundwire
    内部codec也可以通过soundwire总线连接到wsa(speaker的功放),然后再接speaker

  3. slimbus
    主芯片连接wcd(音频编解码芯片),这个是外部codec,使用主芯片的LPI_GPIO进行连接,包含clk,data1,data2。
    和internal_codec是同级,注意区分。
    目前看到的框图中,PMIC只能提供电源或者时钟给wcd,无法传输data。
    wcd可以直接接speaker等设备,也可以通过soundwire接wsa再接speaker。

PDM包含clk和data两条线,data只传输0/1。

4 查看当前平台(msm8953作为参考)

抓取adb log,查看关键字“platform”。
adb logcat -b all > adb_log.txt

11-02 18:10:26.457  4297  4578 I msm8916_platform: platform_check_and_set_codec_backend_cfg:becf: afe: bitwidth 16, samplerate 48000 channels 2, backend_idx 0 usecase = 0 device (speaker)

其中msm8916就是当前手机使用的平台,高通网站中搜索msm8916相关文档。
PS:msm(moblie station modems),移动基带处理器。
参考文档:高通平台常用缩写

没有找到msm8916的内部codec框图,后续找到了再补充,根据参考文档Qualcomm 音频学习一,使用的msm8953的框图分析。

该文档就实现了将外部spkr作为右声道。

4.1 speaker

坚果pro使用的speaker通路主要三个mixer控件。

    <path name="speaker"><ctl name="RX3 MIX1 INP1" value="RX1" /><ctl name="RX3 Digital Volume" value="84" /><ctl name="LINE_OUT" value="Switch" /></path>

“RX3 MIX1 INP1”
对应的是下图红色方框内的内容,图片是msm8953的,查看RX MIX3这个节点,前面的+就是对输入的三个INP进行叠加,看起来有RX3 MIX1 INP1-3。
而坚果pro只有RX3 MIX1 INP1-2,推测+前应该只有2个箭头。
1748 ENUM 1 RX3 MIX1 INP2 >ZERO IIR1 IIR2 RX1 RX2 RX3
1749 ENUM 1 RX3 MIX1 INP1 >ZERO IIR1 IIR2 RX1 RX2 RX3

“RX3 Digital Volume”
在该通路的HPF(high pass filter高通滤波器)之后,有一个x,用于调整音量。,该值通常情况设为84,表示0db。数值范围为0-124。增加1则提高0.5db,设置到124则(124-84)/2=20db。最高该值只能提高20db。
33 INT 1 RX3 Digital Volume 90 (dsrange 0->124)

“LINE_OUT”
不在内部codec(黄色背景框图部分),要查看对应的pmic,下图为msm8953的,仅供参考。

4.2 handset

听筒通路使用的是RX1,前面两个和上述类似,重点看下"RDAC2 MUX"。

    <path name="handset"><ctl name="RX1 MIX1 INP1" value="RX1" /><ctl name="RX1 Digital Volume" value="84" /><ctl name="RDAC2 MUX" value="RX1" /><ctl name="EAR PA Gain" value="POS_6_DB" /><ctl name="EAR_S" value="Switch" /></path>

“RDAC2 MUX”
参考msm8953的框图

查看取值,可以看到该控件可以选择RX1/2,设置RDAC1 MUX及RDAC2 MUX可以设置左声道和右声道。
根据坚果pro的tinymix值来看,没有发现RDAC1 MUX控件,这是因为DAC1传入RX1,所以如果想要earpiece只有一个声道,则只能配置RDAC2 MUX为RX1,否则如果设置为RX2,则听筒会混合左右声道。

1740 ENUM 1 RDAC2 MUX >ZERO RX2 RX1

“EAR PA Gain”
这是听筒功放增益值,目前只有两个选项,我没有测试过,应该可以从外接的听筒文档中找到对应的配置,待验证。
24 ENUM 1 EAR PA Gain POS_1P5_DB >POS_6_DB

“EAR_S”
为止,推测配置为switch是使用听筒。
1761 ENUM 1 EAR_S >ZERO Switch

4.3 rx分离左右声道

“MI2S_RX Channels”
在msm8916中我没有看到PRI_MI2S_RX Channels的选择,只有MI2S_RX.
不过根据headphones的配置来看,通过该值可以分离出来左右声道。
==存疑:PRI_MI2S_RX 和MI2S_RX之间的关系 ==
2061 ENUM 1 MI2S_RX Channels >One Two

5 配置speaker-handset

    <path name="speaker-handset"><ctl name="MI2S_RX Channels" value="Two" /><!-- speaker --><ctl name="RX3 MIX1 INP1" value="RX2" /><ctl name="RX3 Digital Volume" value="84" /><ctl name="LINE_OUT" value="Switch" /><ctl name="SpkrMono WSA_RDAC" value="Switch" /><!-- handset --><ctl name="RX1 MIX1 INP1" value="RX1" /><ctl name="RDAC2 MUX" value="RX1" /><ctl name="RX1 Digital Volume" value="84" /><ctl name="EAR PA Gain" value="POS_6_DB" /><ctl name="EAR_S" value="Switch" /></path>

这是目前我尝试的第一版参数。不确定是否生效。

6 补充

测试发现还是无法分离,不清楚原因,不过看log默认播放使用的acdb_id为14(SPKR_PHONE_SPKR_MONO),不确定是不是这个原因,尝试修改为15(SPKR_PHONE_SPKR_STEREO).待再次测试.

7 sdm660平台测试acdb_id为spkr_mono

播放音频为左声道男声,右声道女声。

在sdm660上测试dsp使用mono,但是mixer_path定义为双声道配置。

acdb_id原本为124(SPKR_PHONE_SPKR_STEREO_RX_FB_PROT),强制在audio_platform_info.xml文件中修改SND_DEVICE_OUT_SPEAKER_PROTECTED为101(SPKR_PHONE_SPKR_MONO_RX_FB_PROT)。
经过测试发现无法合并左右声道。不知道原因。
根据qxdmlog来看,最终1586输出两个rx,分离出来左右了。

【audio】坚果Pro配置双扬声器相关推荐

  1. android 7.1 支持哪些 cpu,锤子新机坚果Pro配置放出:骁龙626处理器、Android 7.1.1系统...

    拼 命 加 载 中 ... 锤子科技刚在今天上午宣布将在5月9日举行春季新品发布会,下午便有了锤子新机的配置信息被放出,被大家称为坚果Pro搭载高通骁龙626处理器,运行基于Android 7.1.1 ...

  2. 锤子android 7,锤子新机坚果Pro配置放出:骁龙626处理器、Android 7.1.1系统

    锤子科技刚在今天上午宣布将在5月9日举行春季新品发布会,下午便有了锤子新机的配置信息被放出,被大家称为坚果Pro搭载高通骁龙626处理器,运行基于Android 7.1.1底层的系统. 锤子现款M1 ...

  3. 魅族16s Pro最新预热海报公布:将配备双扬声器

    魅族将在8月28日推出无数魅友期待已久的今年的第三款,也是下半年的首款新机--魅族16s Pro.随着发布时间的临近,虽然没有了以往黄章的亲自上阵,不过关于该机的外观配置的爆料还是逐渐多了起来,该机的 ...

  4. 锤子Android几版本,锤子坚果Pro三大版本配置参数介绍

    锤子坚果Pro分为三大版本,主要是处理器.存储.前置摄像头.配色不同,顶配版还支持NFC. - 低配版: 骁龙625 2.0GHz八核处理器(Adreno 506 650MHz).4GB内存.32GB ...

  5. 华为p40论坛_花粉俱乐部网友:华为P40千万别上双扬声器,小米10方向错了

    随着科技的进步,目前国产手机是越来越先进了.自从华为走向世界之后,目前其它国产手机也在跟风走同样的套路.所以我们看到,小米.OPPO.vivo等几乎都有自己的子品牌.在这个时候,产品的竞争就变得十分残 ...

  6. 2999元起!Redmi K40系列不止骁龙888:还将标配双扬声器

    根据Redmi品牌总经理卢伟冰此前公布的消息,全新的Redmi K40系列将于下月与大家见面,售价仅为2999元起.而随着发布时间的日益临近,关于该机的爆料也越来越密集,除了搭载高通骁龙888旗舰平台 ...

  7. 一年仅一款!坚果Pro 3终于要来了,会有人支持吗?

    在这个手机市场异常热闹的气候下,有一家厂商却过得不是很好,它就是锤子手机,自去年陷入破产危机以来,整个2019年没有发布一款手机,曾经那个在发布会上说单口相声的老罗也不见了,开始在微博上与网友互怼了起 ...

  8. 坚果pro android版本,坚果Pro有几个版本 哪个版本好?坚果Pro各版本的区别

    坚果Pro作为一款高颜值双摄中端主流手机,加之售价并不算贵,因此虏获了不少锤粉的心.对于打算入手坚果Pro的同学来说,首先建议大家先了解下坚果Pro各版本的区别,以便更好的选择适合自己的版本.事不宜迟 ...

  9. 请问有没有一款外放音质较好的手机?真双扬声器、环绕立体声,横屏时扬声器左右对称?

    题主问题的核心是有没有一款的外放音质比较好的手机?真正的双扬声器,环绕立体声,对称扬声器?实际在今年的手机市场,真正的双扬声器确实已经成为了标配,所以选择起来相对来说并不是很困难,当然不同的价格,音质 ...

最新文章

  1. 运用面向对象原则,设计一款音乐点唱机
  2. hmr webpack 不编译_webpack HMR未加载更改
  3. 中国中小微企业云服务市场专题分析2020
  4. Java内存不足之PermGen space错误探究
  5. C#LeetCode刷题之#448-找到所有数组中消失的数字(Find All Numbers Disappeared in an Array)
  6. java程序计时器_求完整简单java计时器小程序代码,急!!
  7. Tomcat内存设置方法(转载并实践)
  8. MySQL的Grant命令[转]
  9. c语言科学计数法 10的负8次方,3*10的负8次方等于多少?为什么计算
  10. 使用FFmpeg 编解码 FLV的HEVC(H265)格式的视频
  11. ACM/ICPC 大赛常见英语词汇
  12. http上传文件服务器限制大小,修改Nginx与Apache配置参数解决http状态码:413上传文件大小限制问题...
  13. 人工神经网络的优缺点
  14. soul从入门到进阶01——soul网关初体验
  15. Sentry 开发者贡献指南 - SDK 开发(事件负载)
  16. HMM预测算法——Viterbi算法
  17. Python 调用 Outlook 发送邮件
  18. UVA 1533 - Moving Pegs 状态压缩 + bfs
  19. java如何获取手机号码_微信小程序+Java获取用户授权手机号码
  20. 计算机专业中并行运算如何,并行计算-结构·算法·编程

热门文章

  1. AIO-3588SJD4八核8K人工智能主板
  2. 数据结构课程设计--立体停车场管理系统(改)
  3. TinkPHP5(tp5)解决could not find driver错误
  4. 2019pro与air怎么选_2019MacBookPro和MacBookAir的区别是很么以及怎么选?
  5. 解密阿里前端技术体系
  6. 创建一个10行5列HTML,网页设计与制作上机试卷.doc
  7. 吸顶灯怎么固定天花板_嵌入式吸顶灯怎么安装 嵌入式吸顶灯安装注意事项【详解】...
  8. 《分析服务从入门到精通读书笔记》第二章、分析服务工具篇
  9. PHP数组转字符串(属性加单(双)引号,逗号分隔)
  10. lwrp聚光灯实现方式