【Android Audio】dumpsys media.audio_policy分析【不定期更新文章】

dumpsys media.audio_policy

命令:
dumpsys media.audio_policy

AudioPolicyManager: 0xf1e5a000
Command Thread: 0xf1ff3300 
Supported System Usages:
AudioCommandThread 0xf1ff3300 Dump
- Commands:
   Command Time        Wait pParam
  Last Command
   01      014581.648  0    0xf19e5440

AudioPolicyManager Dump: 0xf1e5a000
 Primary Output: 13

1、mEngine->getPhoneState()

 Phone state: AUDIO_MODE_NORMAL

2、所有强制设备输出的状态显示(Engine::setForceUse函数所设置)

 Force use for communications: 0
 Force use for media: 0
 Force use for record: 0
 Force use for dock: 8
 Force use for system: 0
 Force use for HDMI system audio: 12
 Force use for encoded surround output: 0
 Force use for vibrate ringing: 0

Google code地址

在这里插入图片描述

3、(mTtsOutputAvailable/mMasterMono/mConfig.getSource())

TTS output not available
 Master mono: off
 Config source: /vendor/etc/audio_policy_configuration.xml

4、所有可用输出设备(mAvailableOutputDevices)【DeviceVector】

mAvailableOutputDevices为DeviceVector类型,其包含了多个sp<DeviceDescriptor>实例。

class DeviceDescriptor : public DeviceDescriptorBase,
                         public PolicyAudioPort, public PolicyAudioPortConfig {
   
...
    std::string mTagName; // Unique human readable identifier for a device port found in conf file.
    FormatVector        mEncodedFormats;
    audio_format_t      mCurrentEncodedFormat;
};
class DeviceDescriptorBase : public AudioPort, public AudioPortConfig {
   ...};
class AudioPort : public virtual RefBase, public virtual Parcelable {
   
...
    AudioGains mGains; // gain controllers
    std::string  mName;
    audio_port_type_t mType;
    audio_port_role_t mRole;
    AudioProfileVector mProfiles; // AudioProfiles supported by this port (format, Rates, Channels)
};
class PolicyAudioPort : public virtual RefBase, private HandleGenerator<audio_port_handle_t> {
   
...
    uint32_t mFlags; // attribute flags mask (e.g primary output, direct output...).
    sp<HwModule> mModule;     // audio HW module exposing this I/O stream
    AudioRouteVector mRoutes; // Routes involving this port
};

4.1、mId

  - id:  2

4.2、mTagName

tagName="Speaker"
  - tag name: Speaker

4.3、mDeviceTypeAddr【AudioDeviceTypeAddr】

mDeviceTypeAddr.mType

  - type: AUDIO_DEVICE_OUT_SPEAKER

4.4、mEncapsulationModes、mEncapsulationMetadataTypes

  - supported encapsulation modes: 0  
  - supported encapsulation metadata types: 0

4.5、mGains【AudioGains】、mProfiles【AudioProfileVector】

mGains对应的xml配置为

 <devicePort tagName="Speaker" role="sink" type="AUDIO_DEVICE_OUT_SPEAKER">
     <gains>
         <gain name="gain_1" mode="AUDIO_GAIN_MODE_JOINT"
               minValueMB="-10000"
               maxValueMB="0"
               defaultValueMB="-6000"
               stepValueMB="100"/>
     </gains>
 </devicePort>

mProfiles对应xml配置

AudioPort::dump(dst, spaces, verbose);
- Available output devices:
  Device 1:
  - id:  2
  - tag name: Speaker
  - type: AUDIO_DEVICE_OUT_SPEAKER
  - supported encapsulation modes: 0  - supported encapsulation metadata types: 0  - Profiles:
      Profile 0:[dynamic format][dynamic channels][dynamic rates]
  - gains:
    Gain 1:
    - mode: 00000001
    - channel_mask: 00000000
    - min_value: -10000 mB
    - max_value: 0 mB
    - default_value: -6000 mB
    - step_value: 100 mB
    - min_ramp_ms: 0 ms
    - max_ramp_ms: 0 ms

5、展示当前平台所有可用的输入设备(mAvailableInputDevices)

- Available input devices:
  Device 1:
  - id: 46
  - tag name: USB-Audio - USB Audio Device
  - type: AUDIO_DEVICE_IN_USB_HEADSET
  - supported encapsulation modes: 0  - supported encapsulation metadata types: 0  - address: card=1;device=0;
  - name: USB-Audio - USB Audio Device
  - Profiles:
      Profile 0:[dynamic format]
          - format: AUDIO_FORMAT_PCM_16_BIT
          - sampling rates:44100, 48000
          - channel masks:0x000c, 0x0010, 0x80000001
  Device 2:
  - id: 12
  - tag name: HDMI In
  - type: AUDIO_DEVICE_IN_AUX_DIGITAL|AUDIO_DEVICE_IN_HDMI
  - supported encapsulation modes: 0  - supported encapsulation metadata types: 0  - Profiles:
      Profile 0:[dynamic format][dynamic channels][dynamic rates]
      Profile 1:
          - format: AUDIO_FORMAT_PCM_16_BIT
          - sampling rates:8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000
          - channel masks:0x000c, 0x0010
  - gains:
    Gain 1:
    - mode: 00000001
    - channel_mask: 00000000
    - min_value: -10000 mB
    - max_value: 0 mB
    - default_value: -6000 mB
    - step_value: 100 mB
    - min_ramp_ms: 0 ms
    - max_ramp_ms: 0 ms
  Device 3:
  - id: 17
  - tag name: Built-In Mic
  - type: AUDIO_DEVICE_IN_BUILTIN_MIC
  - supported encapsulation modes: 0  - supported encapsulation metadata types: 0  - address: top
  - Profiles:
      Profile 0:
          - format: AUDIO_FORMAT_PCM_32_BIT
          - sampling rates:8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000
          - channel masks:0x000c, 0x0010, 0x0030
      Profile 1:
          - format: AUDIO_FORMAT_PCM_32_BIT
          - sampling rates:16000
          - channel masks:0x000c, 0x0010

6、所有的Module(mHwModulesAll)【HwModuleCollection】

mHwModulesAll为HwModuleCollection类型,其包含了多个sp<HwModule>实例。
所有xml中配置的module模块 contains all modules declared in the config
/vendor/etc/audio_policy_configuration.xml
a2dp_audio_policy_configuration.xml
usb_audio_policy_configuration.xml
r_submix_audio_policy_configuration.xml
hearing_aid_audio_policy_configuration.xml

在这里插入图片描述在这里插入图片描述

HW Modules dump:

以Module 1 primary为例,其他module相同

class HwModule : public RefBase {
   
    const String8 mName; // base name of the audio HW module (primary, a2dp ...)
    audio_module_handle_t mHandle;
    OutputProfileCollection mOutputProfiles; // output profiles exposed by this module
    InputProfileCollection mInputProfiles;  // input profiles exposed by this module
    uint32_t mHalVersion; // audio HAL API version
    DeviceVector mDeclaredDevices; // devices declared in audio_policy configuration file.
    DeviceVector mDynamicDevices; /**< devices that can be added/removed at runtime (e.g. rsbumix)*/
    AudioRouteVector mRoutes;
    PolicyAudioPortVector mPorts;
};
void HwModule::dump(String8 *dst) const

6.1、mName, mHandle, mHalVersion

- HW Module 1:
  - name: primary (mName)
  - handle: 10  (mHandle)
  - version: 3.0  (mHalVersion)

6.2、mOutputProfiles【OutputProfileCollection】

mOutputProfiles为OutputProfileCollection类型,其包含了多个sp<IOProfile>实例。

  - outputs:

这里以HDMI OUT设备获取profile为例,HDMI OUT当前支持了compress offload,direct output,mmap_no_irq_out_dynamic 3种典型类别的profile。


                
  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值