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,做音量放大处理。
|
开发工具 Windows
Windows平台RTMP推送|轻量级RTSP服务实现本地摄像头|屏幕|叠加数据预览
大家在做Windows平台RTMP推送或轻量级RTSP服务的时候,不管是采集屏幕还是采集摄像头,亦或屏幕摄像头的叠加模式,总会有这样的诉求,采集到的数据,希望能本地看看具体采集的数据或者图像实际效果,也就是本次介绍的“预览”功能。
236 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平台外部编码数据实时预览播放模块。
148 0
|
2月前
|
编解码 开发工具 Android开发
Android平台实现屏幕录制(屏幕投影)|音频播放采集|麦克风采集并推送RTMP或轻量级RTSP服务
Android平台屏幕采集、音频播放声音采集、麦克风采集编码打包推送到RTMP和轻量级RTSP服务的相关技术实现,做成高稳定低延迟的同屏系统,还需要有配套好的RTMP、RTSP直播播放器
|
12月前
|
存储 Cloud Native Linux
音视频 ffplay播放控制
音视频 ffplay播放控制
|
编解码 Android开发 C语言
【Android 高性能音频】AAudio 音频库 简介 ( AAudio 音频库简介 | 音频流 | 音频设备 | 共享模式 | 数据模式 )
【Android 高性能音频】AAudio 音频库 简介 ( AAudio 音频库简介 | 音频流 | 音频设备 | 共享模式 | 数据模式 )
749 0
|
API Android开发 内存技术
android 采集PCM音频数据并播放(支持USB摄像头MIC)
android 采集PCM音频数据并播放(支持USB摄像头MIC)
554 0
|
算法
【音频处理】Melodyne 导入音频 ( 使用 Adobe Audition 录制音频 | 在 Melodyne 中打开录制的音频 | Melodyne 对音频素材的操作 | 音频分析算法 )
【音频处理】Melodyne 导入音频 ( 使用 Adobe Audition 录制音频 | 在 Melodyne 中打开录制的音频 | Melodyne 对音频素材的操作 | 音频分析算法 )
862 0
【音频处理】Melodyne 导入音频 ( 使用 Adobe Audition 录制音频 | 在 Melodyne 中打开录制的音频 | Melodyne 对音频素材的操作 | 音频分析算法 )
|
Java API Android开发
【Android 高性能音频】Oboe 音频流打开后 耳机 / 音箱 插拔事件处理 ( 设置 Oboe 音频设备 ID | setDeviceId 函数原型 | AudioStream 音频流 )
【Android 高性能音频】Oboe 音频流打开后 耳机 / 音箱 插拔事件处理 ( 设置 Oboe 音频设备 ID | setDeviceId 函数原型 | AudioStream 音频流 )
313 0
【Android 高性能音频】Oboe 音频流打开后 耳机 / 音箱 插拔事件处理 ( 设置 Oboe 音频设备 ID | setDeviceId 函数原型 | AudioStream 音频流 )