【Audio】配置文档(三)audio_policy_conf.xml
文章目录 4 问题小结5 参考文章
1 文件路径
code:\qcom\\audio-hal\-hal\\XXXX(平台)
设备://etc/.xml
2 文件内容
<mixPort name="primary input" role="sink"><profile name="" format="AUDIO_FORMAT_PCM_16_BIT"samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
mixPort>
<devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source"><profile name="" format="AUDIO_FORMAT_PCM_16_BIT"samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
devicePort>
<route type="mix" sink="primary input"sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic,FM Tuner,USB Device In,USB Headset In"/>
route连接和
代表着应用场景
代表着硬件
3 加载流程及使用 3.1 解析
参见文章:.xml 解析
在创建的时候会加载配置文件,参见思维导图。
最终.xml文件中的三大节点,, , route会分别存放到
,,。
//1. mixer_port
Element mixPort = new IOProfile(String8(name.c_str()), portRole);//2. device_port
Element deviceDesc = new DeviceDescriptor(type, encodedFormats, String8(name.c_str()));//3. route
Element route = new AudioRoute(routeType);
3.2 使用
创建的时候会执行set函数,然后将java层设置的三个参数(,,)设置下去,最终交给::处理,重点查看该函数。
3.2.1 获取
java层除了三大参数外,还传下来了,常用的有mic和
这个决定了选择什么样的,也就是xml文件中定义的信息。
这里的type为""很关键。
可以分为输入和输出设备,加载xml文件的时候都存储为。
然后再实际使用的时候会区分为和tor。
其实中的会存放,两者的最关键的联系是把type交给了。
可以查看::open函数。
<devicePort tagName="Speaker" role="sink" type="AUDIO_DEVICE_OUT_SPEAKER" address=""><profile name="" format="AUDIO_FORMAT_PCM_16_BIT"samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
devicePort><devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source"><profile name="" format="AUDIO_FORMAT_PCM_16_BIT"samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
devicePort>
//根据传入的source选择audio_device
audio_devices_t deviceType = getDeviceForInputSource(attr.source);
3.2.2 获取
:: --> :: --> ::
在中可以看到传入的参数在这里选择了合适的(即xml中,下的)。
获取完合适的之后,会创建,将获取的作为入参传入,并打开。
::open最终会打开,执行到am。
3.2.3 小结 根据传入的,获取::根据传入的三大参数(,,),选择合适的创建,此时将作为入参传入将的三大参数存为打开,最终调用到am。
4 问题小结
1、 怎么选择 —— ok
::
根据传入的三大参数(,,),四种优先顺序,选择合适的
2、 和差异 —— ok
::open
其实中的会存放,两者的最关键的联系是把type交给了。
3、route如何关联两个port
::ces
5 参考文章
开发之音频配置文件.xml解析全过程
开发之音频配置文件.conf解析全过程