目录
2、所有强制设备输出的状态显示(Engine::setForceUse函数所设置)
3、(mTtsOutputAvailable/mMasterMono/mConfig.getSource())
4、所有可用输出设备(mAvailableOutputDevices)【DeviceVector】
4.3、mDeviceTypeAddr【AudioDeviceTypeAddr】
4.4、mEncapsulationModes、mEncapsulationMetadataTypes
4.5、mGains【AudioGains】、mProfiles【AudioProfileVector】
5、展示当前平台所有可用的输入设备(mAvailableInputDevices)
6、所有的Module(mHwModulesAll)【HwModuleCollection】
6.1、mName, mHandle, mHalVersion
6.2、mOutputProfiles【OutputProfileCollection】
6.2.1、mProfiles【AudioProfileVector】
6.2.2、mFlags、maxOpenCount、curOpenCount、maxActiveCount、curActiveCount
6.2.4、mSupportedDevices【DeviceVector】
6.3、mInputProfiles【InputProfileCollection】
6.4、Declared devices (mDeclaredDevices)【DeviceVector】
...6.5、Dynamic devices (mDynamicDevices)【DeviceVector】
6.6.1、mType【audio_route_type_t 】
6.6.3、mSources【PolicyAudioPortVector 】
7、所有的SwAudioOutputDescriptor (mOutputs)
8、所有的AudioInputDescriptor (mInputs)
9、所有的音效EffectDescriptor (mEffects)
10、所有AudioPatch (mAudioPatches)
11、所有AudioPolicyMix (mPolicyMixes)
12、所有SourceClientDescriptor (mAudioSources.dump)
命令:
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
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。
class IOProfile :