【audio】坚果Pro配置双扬声器
文章目录
- 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连接
PDM
内部codec通过PDM连接到PMIC(powermanager IC),PMIC内部也有codec,然后接speaker扬声器,headphones耳机,earpiece听筒。soundwire
内部codec也可以通过soundwire总线连接到wsa(speaker的功放),然后再接speakerslimbus
主芯片连接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配置双扬声器相关推荐
- android 7.1 支持哪些 cpu,锤子新机坚果Pro配置放出:骁龙626处理器、Android 7.1.1系统...
拼 命 加 载 中 ... 锤子科技刚在今天上午宣布将在5月9日举行春季新品发布会,下午便有了锤子新机的配置信息被放出,被大家称为坚果Pro搭载高通骁龙626处理器,运行基于Android 7.1.1 ...
- 锤子android 7,锤子新机坚果Pro配置放出:骁龙626处理器、Android 7.1.1系统
锤子科技刚在今天上午宣布将在5月9日举行春季新品发布会,下午便有了锤子新机的配置信息被放出,被大家称为坚果Pro搭载高通骁龙626处理器,运行基于Android 7.1.1底层的系统. 锤子现款M1 ...
- 魅族16s Pro最新预热海报公布:将配备双扬声器
魅族将在8月28日推出无数魅友期待已久的今年的第三款,也是下半年的首款新机--魅族16s Pro.随着发布时间的临近,虽然没有了以往黄章的亲自上阵,不过关于该机的外观配置的爆料还是逐渐多了起来,该机的 ...
- 锤子Android几版本,锤子坚果Pro三大版本配置参数介绍
锤子坚果Pro分为三大版本,主要是处理器.存储.前置摄像头.配色不同,顶配版还支持NFC. - 低配版: 骁龙625 2.0GHz八核处理器(Adreno 506 650MHz).4GB内存.32GB ...
- 华为p40论坛_花粉俱乐部网友:华为P40千万别上双扬声器,小米10方向错了
随着科技的进步,目前国产手机是越来越先进了.自从华为走向世界之后,目前其它国产手机也在跟风走同样的套路.所以我们看到,小米.OPPO.vivo等几乎都有自己的子品牌.在这个时候,产品的竞争就变得十分残 ...
- 2999元起!Redmi K40系列不止骁龙888:还将标配双扬声器
根据Redmi品牌总经理卢伟冰此前公布的消息,全新的Redmi K40系列将于下月与大家见面,售价仅为2999元起.而随着发布时间的日益临近,关于该机的爆料也越来越密集,除了搭载高通骁龙888旗舰平台 ...
- 一年仅一款!坚果Pro 3终于要来了,会有人支持吗?
在这个手机市场异常热闹的气候下,有一家厂商却过得不是很好,它就是锤子手机,自去年陷入破产危机以来,整个2019年没有发布一款手机,曾经那个在发布会上说单口相声的老罗也不见了,开始在微博上与网友互怼了起 ...
- 坚果pro android版本,坚果Pro有几个版本 哪个版本好?坚果Pro各版本的区别
坚果Pro作为一款高颜值双摄中端主流手机,加之售价并不算贵,因此虏获了不少锤粉的心.对于打算入手坚果Pro的同学来说,首先建议大家先了解下坚果Pro各版本的区别,以便更好的选择适合自己的版本.事不宜迟 ...
- 请问有没有一款外放音质较好的手机?真双扬声器、环绕立体声,横屏时扬声器左右对称?
题主问题的核心是有没有一款的外放音质比较好的手机?真正的双扬声器,环绕立体声,对称扬声器?实际在今年的手机市场,真正的双扬声器确实已经成为了标配,所以选择起来相对来说并不是很困难,当然不同的价格,音质 ...
最新文章
- 运用面向对象原则,设计一款音乐点唱机
- hmr webpack 不编译_webpack HMR未加载更改
- 中国中小微企业云服务市场专题分析2020
- Java内存不足之PermGen space错误探究
- C#LeetCode刷题之#448-找到所有数组中消失的数字(Find All Numbers Disappeared in an Array)
- java程序计时器_求完整简单java计时器小程序代码,急!!
- Tomcat内存设置方法(转载并实践)
- MySQL的Grant命令[转]
- c语言科学计数法 10的负8次方,3*10的负8次方等于多少?为什么计算
- 使用FFmpeg 编解码 FLV的HEVC(H265)格式的视频
- ACM/ICPC 大赛常见英语词汇
- http上传文件服务器限制大小,修改Nginx与Apache配置参数解决http状态码:413上传文件大小限制问题...
- 人工神经网络的优缺点
- soul从入门到进阶01——soul网关初体验
- Sentry 开发者贡献指南 - SDK 开发(事件负载)
- HMM预测算法——Viterbi算法
- Python 调用 Outlook 发送邮件
- UVA 1533 - Moving Pegs 状态压缩 + bfs
- java如何获取手机号码_微信小程序+Java获取用户授权手机号码
- 计算机专业中并行运算如何,并行计算-结构·算法·编程
热门文章
- AIO-3588SJD4八核8K人工智能主板
- 数据结构课程设计--立体停车场管理系统(改)
- TinkPHP5(tp5)解决could not find driver错误
- 2019pro与air怎么选_2019MacBookPro和MacBookAir的区别是很么以及怎么选?
- 解密阿里前端技术体系
- 创建一个10行5列HTML,网页设计与制作上机试卷.doc
- 吸顶灯怎么固定天花板_嵌入式吸顶灯怎么安装 嵌入式吸顶灯安装注意事项【详解】...
- 《分析服务从入门到精通读书笔记》第二章、分析服务工具篇
- PHP数组转字符串(属性加单(双)引号,逗号分隔)
- lwrp聚光灯实现方式