9820E平台 Audio音频通路常用设置

简介: 笔记

由于我司项目特殊性,使用非标准的音频通路及设备,现做笔记。

  1. 由于平台建议,惯例使用Speaker通路对应Receiver设备,Receiver设备对应Speaker通路。而安卓原生的是Speaker通路对应Speaker设备,Receiver通路对应Receiver设备
  2. 有的项目同时具体Speaker设备和Receiver设备,例如功能较全的FT06。而有的项目产品只有Speaker设备,对应Receiver通路。但是无论哪种,都要进行音频通路和设备的设定 device/sprd/sharkle/sp9820e_2h10_c35/rootdir/system/etc/audio_params/tiny_hw.xml
    详见最底部
  3. 修改使用哪种音频策略可以修改AudioPolicyManagerBase.cpp
  4. 修改使用哪种通路,Speaker和Receiver,可以通过AudioManager.setSpeakerPhoneOn()

修改文件tiny_hw.xml

<!-- TinyHAL configuration file for GOD -->
<tinyalsa-audio device="SC8830 audio">
   <!-- We are able to have most of our routing static so do that -->
   <path>
     <!-- DAC->Headphone -->
     <ctl name="HPL Playback Volume" val="6" />
     <ctl name="HPR Playback Volume" val="6" />
     <ctl name="DAC Playback Volume" val="2" />
     <!-- DAC->Speaker -->
     <ctl name="SPKL Playback Volume" val="2" />
     <ctl name="DAC Playback Volume" val="2" />
     <!-- DAC->Earpiece -->
     <ctl name="EAR Playback Volume" val="6" />
     <ctl name="DAC Playback Volume" val="2" />
     <!-- ADC ->(main mic)  -->
     <ctl name="ADCL Capture Volume" val="5" />
     <ctl name="ADCR Capture Volume" val="5" />
   </path>
<!-- MUST NOT modify private field directly -->
<private name="vb control">
   <func name="VBC Switch" val="arm" />
</private>
<private name="eq update">
  <func name="VBC EQ Update" val="0" />
</private>
<private name="da eq switch">
  <func name="VBC DA EQ Switch" val="0" />
</private>
<private name="ad01 eq switch">
  <func name="VBC AD01 EQ Switch" val="0" />
</private>
<private name="da eq profile">
  <func name="VBC DA EQ Profile Select" val="0" />
</private>
<private name="ad01 eq profile">
  <func name="VBC AD01 EQ Profile Select" val="0" />
</private>
<private name="internal PA">
  <func name="Inter PA Config" val="304" />
</private>
<private name="spk mute">
  <func name="Speaker Mute" val="0" />
</private>
<private name="spk2 mute">
  <func name="Speaker2 Mute" val="0" />
</private>
<private name="earpiece mute">
  <func name="Earpiece Mute" val="0" />
</private>
<private name="hp mute">
  <func name="HeadPhone Mute" val="0" />
</private>
<private name="Aud Codec Info">
  <func name="Aud Codec Info" val="0" />
</private>
<!--
1.for pike2 use substitute of FM mute fuction
for fm da0 mux unselect function, FM mute function
 effect the two channel,so remove name "fm da1 mux".
2. enable fm mux selected function when FM function
is enabled, and disable it when FM function disable.
-->
<private name="fm da0 mux">
  <func name="VBC_FM_UNMUTE_SMOOTH" val="0" />
</private>
<private name="vbc_ad01iis_to_dfm">
    <func name="AD IISMUX" val="0" />
</private>
<!-- END OF MUST NOT modify private field directly -->
<device name="builtin-mic">
  <path name="on">
     <ctl name="ADC LRCLK Select" val="invert"/>
     <ctl name="ADC1 LRCLK Select" val="invert"/>
     <ctl name="ADCL Mixer MainMICADCL Switch" val="1" />
     <ctl name="Mic Function" val="1" />
     <ctl name="ADCR Mixer MainMICADCR Switch" val="1" />
     <ctl name="Aux Mic Function" val="1" />
  </path>
  <path name="off">
     <ctl name="Mic Function" val="0" />
     <ctl name="ADCL Mixer MainMICADCL Switch" val="0" />
     <ctl name="ADC1 LRCLK Select" val="normal"/>
     <ctl name="ADC LRCLK Select" val="normal"/>
  </path>
</device>
<device name="back-mic">
  <path name="on">
     <ctl name="ADCR Mixer AuxMICADCR Switch" val="1" />
     <ctl name="Aux Mic Function" val="1" />
  </path>
  <path name="off">
     <ctl name="Aux Mic Function" val="0" />
     <ctl name="ADCR Mixer AuxMICADCR Switch" val="0" />
  </path>
</device>
<device name="headset-in">
  <path name="on">
     <ctl name="ADCR Mixer HPMICADCR Switch" val="1" />
     <ctl name="Aux Mic Function" val="1" />
  </path>
  <path name="off">
     <ctl name="Aux Mic Function" val="0" />
     <ctl name="ADCR Mixer HPMICADCR Switch" val="0" />
  </path>
</device>
<device name="line-speaker">
  <path name="on">
     <ctl name="SPKL Mixer ADCLSPKL Switch" val="1" />
     <ctl name="SPKL Mixer ADCRSPKL Switch" val="1" />
  </path>
  <path name="off">
     <ctl name="SPKL Mixer ADCLSPKL Switch" val="0" />
     <ctl name="SPKL Mixer ADCRSPKL Switch" val="0" />
  </path>
</device>
<device name="line-headphone">
  <path name="on">
     <ctl name="HPL Mixer ADCRHPL Switch" val="1" />
     <ctl name="HPR Mixer ADCLHPR Switch" val="1" />
  </path>
  <path name="off">
     <ctl name="HPL Mixer ADCRHPL Switch" val="0" />
     <ctl name="HPR Mixer ADCLHPR Switch" val="0" />
  </path>
</device>
<device name="line">
  <path name="on">
     <ctl name="HeadPhone Mute" val="1" />
     <ctl name="ADCL Mixer AILADCL Switch" val="1" />
     <ctl name="ADCR Mixer AIRADCR Switch" val="1" />
     <ctl name="Line Function" val="1" />
     <ctl name="HeadPhone Mute" val="0" />
  </path>
  <path name="off">
     <ctl name="Line Function" val="0" />
     <ctl name="ADCL Mixer AILADCL Switch" val="0" />
     <ctl name="ADCR Mixer AIRADCR Switch" val="0" />
  </path>
</device>
<device name="digital-fm">
  <path name="on">
     <ctl name="Digital FM Function" val="1" />
     <ctl name="DA0 ADDFM MUX" val="1" />
     <ctl name="DA1 ADDFM MUX" val="1" />
     <ctl name="DA0 ADDST MUX" val="0" />
     <ctl name="DA1 ADDST MUX" val="0" />
  </path>
  <path name="off">
     <ctl name="Digital FM Function" val="0" />
     <ctl name="DA0 ADDST MUX" val="0" />
     <ctl name="DA1 ADDST MUX" val="0" />
     <ctl name="DA0 ADDFM MUX" val="0" />
     <ctl name="DA1 ADDFM MUX" val="0" />
  </path>
</device>
<device name="speaker">
   <path name="on">
     <ctl name="EAR Mixer DACLEAR Switch" val="1"/>
     <ctl name="Speaker Function" val="1" />
   </path>
   <path name="off">
     <ctl name="Speaker Function" val="0" />
     <ctl name="EAR Mixer DACLEAR Switch" val="0"/>
   </path>
</device>
<device name="headphone">
   <path name="on">
     <ctl name="HPL EAR Sel" val="HPL" />
     <ctl name="HPL Mixer DACLHPL Switch" val="1" />
     <ctl name="HPR Mixer DACRHPR Switch" val="1" />
     <ctl name="HeadPhone Function" val="1" />
   </path>
   <path name="off">
     <ctl name="HeadPhone Function" val="0" />
     <ctl name="HPL Mixer DACLHPL Switch" val="0" />
     <ctl name="HPR Mixer DACRHPR Switch" val="0" />
     <ctl name="HPL EAR Sel" val="EAR" />
   </path>
</device>
<device name="earpiece">
   <path name="on">
     <ctl name="SPKL Mixer DACLSPKL Switch" val="1"/>
     <ctl name="Earpiece Function" val="1" />
   </path>
   <path name="off">
     <ctl name="Earpiece Function" val="0" />
     <ctl name="SPKL Mixer DACLSPKL Switch" val="0"/>
   </path>
</device>
<device name="dual-mic-voice">
   <path name="on">
   </path>
   <path name="off">
   </path>
</device>
</tinyalsa-audio>


目录
相关文章
|
数据采集 前端开发 Android开发
Android平台RTMP推送或GB28181设备接入端如何实现采集audio音量放大?
我们在做Android平台RTMP推送和GB28181设备对接的时候,遇到这样的问题,有的设备,麦克风采集出来的audio,音量过高或过低,特别是有些设备,采集到的麦克风声音过低,导致播放端听不清前端采集的audio,这时候,就需要针对采集到的audio,做音量放大处理。
105 0
|
编解码 开发工具 Android开发
Android平台RTSP轻量级服务|RTMP推送摄像头或屏幕之音频接口设计
好多开发者在做Android平台录像或者RTSP轻量级服务、RTMP推送相关模块时,对需要设计哪些常用接口会心存疑惑,本文主要以大牛直播SDK(官方)为例,简单介绍下Android平台直播推送SDK所有音频相关的接口,感兴趣的开发者可以看看。
125 0
|
编解码 Android开发 数据安全/隐私保护
Android平台外部编码数据(H264/H265/AAC/PCMA/PCMU)实时预览播放技术实现
好多开发者可能疑惑,外部数据实时预览播放,到底有什么用? 是的,一般场景是用不到的,我们在开发这块前几年已经开发了非常稳定的RTMP、RTSP直播播放模块,不过也遇到这样的场景,部分设备输出编码后(视频:H.264/H.265,音频:AAC/PCMA/PCMU)的数据,比如无人机或部分智能硬件设备,回调出来的H.264/H.265数据,除了想转推到RTMP、轻量级RTSP服务或GB28181外,还需要本地预览甚至对数据做二次处理(视频分析、实时水印字符叠加等,然后二次编码),基于这样的场景诉求,我们开发了Android平台外部编码数据实时预览播放模块。
172 0
|
6月前
|
编解码 开发工具 Android开发
Android平台实现屏幕录制(屏幕投影)|音频播放采集|麦克风采集并推送RTMP或轻量级RTSP服务
Android平台屏幕采集、音频播放声音采集、麦克风采集编码打包推送到RTMP和轻量级RTSP服务的相关技术实现,做成高稳定低延迟的同屏系统,还需要有配套好的RTMP、RTSP直播播放器
101 0
|
6月前
|
安全 API 开发工具
Android平台RTMP推送|轻量级RTSP服务如何实现麦克风|扬声器声音采集切换
Android平台扬声器播放声音的采集,在无纸化同屏等场景下,意义很大,早期低版本的Android设备,是没法直接采集扬声器audio的(从Android 10开始支持),所以,如果需要采集扬声器audio,需要先做系统版本判断,添加相应的权限。
139 0
|
7月前
|
编解码 网络协议 vr&ar
Android平台下VR头显如何低延迟播放4K以上超高分辨率RTSP|RTMP流
这段内容讲述了VR头显中实现高分辨率视频播放的技术背景与实现方法,并强调了其重要性。高分辨率对于提升VR体验至关重要,它能提供更清晰的画面、增强沉浸感、补偿透镜放大效应,并维持宽广视场角下的图像质量。文中提到的大牛直播SDK具备极低的延迟(200-400ms),支持多种协议与格式,并具有丰富的功能特性,如多实例播放、事件回调、视频及音频格式支持等。此外,提供了基于Unity的播放器示例代码,展示了如何配置播放参数并开始播放。最后,作者指出此类技术在远程控制、虚拟仿真等应用场景中的重要意义。
|
9月前
|
自然语言处理 程序员 Windows
[UE虚幻引擎] DTSpeechVoice 文字转语音播放 插件说明
这个插件用于在虚幻引擎(UE)中通过蓝图将文本转化为语音播放,利用Windows内置的语音引擎,支持Win10和Win11。确保电脑已安装语音系统,可能需要额外下载语言包以支持多语言播放。蓝图操作包括添加Speech Voice Component到Actor,使用Speak节点播放文本,Set Volume调整音量,Set Rate改变播放速度,Pause和Resume控制播放状态,Stop则停止播放且无法恢复。此外,Get Tokens和Set Token用于管理语音类型。更多详情可访问[80后程序员](https://dt.cq.cn/archives/1008?from=aliyun)
170 5
|
数据采集 编解码 图形学
Unity实现Camera和Audio数据的低延迟RTMP推送技术探讨
关于Unity实现RTMP直播推送技术方案,之前零散的写过几篇介绍,得到了好多开发者的关注。以Android平台为例,目前视频这块,我们demo实现的是Camera数据的采集,然后编码投递到底层,如果设备没有性能瓶颈,可达到高帧率(60帧)均匀的RTMP推送效果。
120 0
|
开发工具 Android开发 开发者
Android平台RTMP推流或轻量级RTSP服务(摄像头或同屏)编码前数据接入类型总结
很多开发者在做Android平台RTMP推流或轻量级RTSP服务(摄像头或同屏)时,总感觉接口不够用,以大牛直播SDK为例 (Github) 我们来总结下,我们常规需要支持的编码前音视频数据有哪些类型:
181 0