Improve AudioPolicyManager dump, Part 3
More compact and consistent representation of AudioTrack/Record
clients and effects.
This allows unified searching of devices and port instances.
Bug: 205884982
Test: Run the command below while playing audio:
adb shell dumpsys media.audio_policy
Change-Id: Ia5abebad1991942afe1d7fa90da15adb7f95cc8a
diff --git a/media/libaudiofoundation/AudioProfile.cpp b/media/libaudiofoundation/AudioProfile.cpp
index ec10bc9..9a67bb7 100644
--- a/media/libaudiofoundation/AudioProfile.cpp
+++ b/media/libaudiofoundation/AudioProfile.cpp
@@ -319,7 +319,7 @@
{
dst->append(base::StringPrintf("%*s- Profiles (%zu):\n", spaces - 2, "", size()));
for (size_t i = 0; i < size(); i++) {
- const std::string prefix = base::StringPrintf("%*s%zu. ", spaces + 1, "", i + 1);
+ const std::string prefix = base::StringPrintf("%*s %zu. ", spaces, "", i + 1);
dst->append(prefix);
std::string profileStr;
at(i)->dump(&profileStr, prefix.size());
diff --git a/media/libaudiofoundation/DeviceDescriptorBase.cpp b/media/libaudiofoundation/DeviceDescriptorBase.cpp
index d3d7259..ec02d59 100644
--- a/media/libaudiofoundation/DeviceDescriptorBase.cpp
+++ b/media/libaudiofoundation/DeviceDescriptorBase.cpp
@@ -110,11 +110,9 @@
return NO_ERROR;
}
-void DeviceDescriptorBase::dump(std::string *dst, int spaces, int index,
+void DeviceDescriptorBase::dump(std::string *dst, int spaces,
const char* extraInfo, bool verbose) const
{
- const std::string prefix = base::StringPrintf("%*s %d. ", spaces, "", index + 1);
- dst->append(prefix);
if (mId != 0) {
dst->append(base::StringPrintf("Port ID: %d; ", mId));
}
@@ -125,11 +123,10 @@
mDeviceTypeAddr.toString(true /*includeSensitiveInfo*/).c_str()));
dst->append(base::StringPrintf(
- "%*sEncapsulation modes: %u, metadata types: %u\n",
- static_cast<int>(prefix.size()), "",
+ "%*sEncapsulation modes: %u, metadata types: %u\n", spaces, "",
mEncapsulationModes, mEncapsulationMetadataTypes));
- AudioPort::dump(dst, prefix.size(), nullptr, verbose);
+ AudioPort::dump(dst, spaces, nullptr, verbose);
}
std::string DeviceDescriptorBase::toString(bool includeSensitiveInfo) const
diff --git a/media/libaudiofoundation/include/media/DeviceDescriptorBase.h b/media/libaudiofoundation/include/media/DeviceDescriptorBase.h
index b70da8a..1f0c768 100644
--- a/media/libaudiofoundation/include/media/DeviceDescriptorBase.h
+++ b/media/libaudiofoundation/include/media/DeviceDescriptorBase.h
@@ -65,7 +65,7 @@
status_t setEncapsulationModes(uint32_t encapsulationModes);
status_t setEncapsulationMetadataTypes(uint32_t encapsulationMetadataTypes);
- void dump(std::string *dst, int spaces, int index,
+ void dump(std::string *dst, int spaces,
const char* extraInfo = nullptr, bool verbose = true) const;
void log() const;
diff --git a/services/audiopolicy/common/managerdefinitions/include/ClientDescriptor.h b/services/audiopolicy/common/managerdefinitions/include/ClientDescriptor.h
index e421c94..dc2403c 100644
--- a/services/audiopolicy/common/managerdefinitions/include/ClientDescriptor.h
+++ b/services/audiopolicy/common/managerdefinitions/include/ClientDescriptor.h
@@ -16,19 +16,21 @@
#pragma once
-#include <vector>
-#include <map>
-#include <unistd.h>
#include <sys/types.h>
+#include <unistd.h>
-#include <system/audio.h>
+#include <map>
+#include <vector>
+
+#include <android-base/stringprintf.h>
#include <audiomanager/AudioManager.h>
#include <media/AudioProductStrategy.h>
+#include <policy.h>
+#include <system/audio.h>
#include <utils/Errors.h>
#include <utils/KeyedVector.h>
#include <utils/RefBase.h>
#include <utils/String8.h>
-#include <policy.h>
#include <Volume.h>
#include "AudioPatch.h"
#include "EffectDescriptor.h"
@@ -52,7 +54,7 @@
mPreferredDeviceForExclusiveUse(isPreferredDeviceForExclusiveUse){}
~ClientDescriptor() override = default;
- virtual void dump(String8 *dst, int spaces, int index) const;
+ virtual void dump(String8 *dst, int spaces) const;
virtual std::string toShortString() const;
audio_port_handle_t portId() const { return mPortId; }
@@ -100,7 +102,7 @@
~TrackClientDescriptor() override = default;
using ClientDescriptor::dump;
- void dump(String8 *dst, int spaces, int index) const override;
+ void dump(String8 *dst, int spaces) const override;
std::string toShortString() const override;
audio_output_flags_t flags() const { return mFlags; }
@@ -168,7 +170,7 @@
~RecordClientDescriptor() override = default;
using ClientDescriptor::dump;
- void dump(String8 *dst, int spaces, int index) const override;
+ void dump(String8 *dst, int spaces) const override;
audio_unique_id_t riid() const { return mRIId; }
audio_source_t source() const { return mSource; }
@@ -219,7 +221,7 @@
void setHwOutput(const sp<HwAudioOutputDescriptor>& hwOutput);
using ClientDescriptor::dump;
- void dump(String8 *dst, int spaces, int index) const override;
+ void dump(String8 *dst, int spaces) const override;
private:
audio_patch_handle_t mPatchHandle = AUDIO_PATCH_HANDLE_NONE;
@@ -273,7 +275,9 @@
(void)extraInfo;
size_t index = 0;
for (const auto& client: getClientIterable()) {
- client->dump(dst, spaces, index++);
+ const std::string prefix = base::StringPrintf("%*s %zu. ", spaces, "", ++index);
+ dst->appendFormat("%s", prefix.c_str());
+ client->dump(dst, prefix.size());
}
}
diff --git a/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h b/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h
index b444fd7..4adc920 100644
--- a/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h
+++ b/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h
@@ -91,7 +91,7 @@
void setEncapsulationInfoFromHal(AudioPolicyClientInterface *clientInterface);
- void dump(String8 *dst, int spaces, int index, bool verbose = true) const;
+ void dump(String8 *dst, int spaces, bool verbose = true) const;
private:
template <typename T, std::enable_if_t<std::is_same<T, struct audio_port>::value
diff --git a/services/audiopolicy/common/managerdefinitions/src/AudioCollections.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioCollections.cpp
index 0fe5c16..580938e 100644
--- a/services/audiopolicy/common/managerdefinitions/src/AudioCollections.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioCollections.cpp
@@ -44,7 +44,7 @@
}
dst->appendFormat("%*s- Audio Routes (%zu):\n", spaces - 2, "", audioRouteVector.size());
for (size_t i = 0; i < audioRouteVector.size(); i++) {
- const std::string prefix = base::StringPrintf("%*s%zu. ", spaces + 1, "", i + 1);
+ const std::string prefix = base::StringPrintf("%*s %zu. ", spaces, "", i + 1);
dst->append(prefix.c_str());
audioRouteVector.itemAt(i)->dump(dst, prefix.size());
}
diff --git a/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp
index 1ae66de..235e4aa 100644
--- a/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp
@@ -255,32 +255,35 @@
devices().toString(true /*includeSensitiveInfo*/).c_str());
dst->appendFormat("%*sGlobal active count: %u\n", spaces, "", mGlobalActiveCount);
if (!mRoutingActivities.empty()) {
- dst->appendFormat("%*sProduct Strategies (%zu):\n", spaces, "", mRoutingActivities.size());
+ dst->appendFormat("%*s- Product Strategies (%zu):\n", spaces - 2, "",
+ mRoutingActivities.size());
for (const auto &iter : mRoutingActivities) {
dst->appendFormat("%*sid %d: ", spaces + 1, "", iter.first);
iter.second.dump(dst, 0);
}
}
if (!mVolumeActivities.empty()) {
- dst->appendFormat("%*sVolume Activities (%zu):\n", spaces, "", mVolumeActivities.size());
+ dst->appendFormat("%*s- Volume Activities (%zu):\n", spaces - 2, "",
+ mVolumeActivities.size());
for (const auto &iter : mVolumeActivities) {
dst->appendFormat("%*sid %d: ", spaces + 1, "", iter.first);
iter.second.dump(dst, 0);
}
}
if (getClientCount() != 0) {
- dst->appendFormat("%*sAudioTrack Clients (%zu):\n", spaces, "", getClientCount());
+ dst->appendFormat("%*s- AudioTrack clients (%zu):\n", spaces - 2, "", getClientCount());
ClientMapHandler<TrackClientDescriptor>::dump(dst, spaces);
- dst->append("\n");
}
if (!mActiveClients.empty()) {
- dst->appendFormat("%*sAudioTrack active (stream) clients (%zu):\n", spaces, "",
+ dst->appendFormat("%*s- AudioTrack active (stream) clients (%zu):\n", spaces - 2, "",
mActiveClients.size());
size_t index = 0;
for (const auto& client : mActiveClients) {
- client->dump(dst, spaces, index++);
+ const std::string prefix = base::StringPrintf(
+ "%*sid %zu: ", spaces + 1, "", index + 1);
+ dst->appendFormat("%s", prefix.c_str());
+ client->dump(dst, prefix.size());
}
- dst->append("\n");
}
}
@@ -708,7 +711,7 @@
{
AudioOutputDescriptor::dump(dst, spaces, extraInfo);
dst->appendFormat("%*sSource:\n", spaces, "");
- mSource->dump(dst, spaces, 0);
+ mSource->dump(dst, spaces);
}
void HwAudioOutputDescriptor::toAudioPortConfig(
diff --git a/services/audiopolicy/common/managerdefinitions/src/AudioPatch.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioPatch.cpp
index a3fdc39..4f03db9 100644
--- a/services/audiopolicy/common/managerdefinitions/src/AudioPatch.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioPatch.cpp
@@ -39,7 +39,7 @@
{
for (int i = 0; i < count; ++i) {
const audio_port_config &cfg = cfgs[i];
- dst->appendFormat("%*s [%s %d] ", spaces, "", prefix, i + 1);
+ dst->appendFormat("%*s[%s %d] ", spaces, "", prefix, i + 1);
if (cfg.type == AUDIO_PORT_TYPE_DEVICE) {
AudioDeviceTypeAddr device(cfg.ext.device.type, cfg.ext.device.address);
dst->appendFormat("Device Port ID: %d; {%s}",
@@ -138,9 +138,9 @@
void AudioPatchCollection::dump(String8 *dst) const
{
- dst->appendFormat("\nAudio Patches (%zu):\n", size());
+ dst->appendFormat("\n Audio Patches (%zu):\n", size());
for (size_t i = 0; i < size(); i++) {
- const std::string prefix = base::StringPrintf(" %zu. ", i + 1);
+ const std::string prefix = base::StringPrintf(" %zu. ", i + 1);
dst->appendFormat("%s", prefix.c_str());
valueAt(i)->dump(dst, prefix.size());
}
diff --git a/services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp
index b209a88..546f56b 100644
--- a/services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp
@@ -675,7 +675,7 @@
void AudioPolicyMixCollection::dump(String8 *dst) const
{
- dst->append("\nAudio Policy Mix:\n");
+ dst->append("\n Audio Policy Mix:\n");
for (size_t i = 0; i < size(); i++) {
itemAt(i)->dump(dst, 2, i);
}
diff --git a/services/audiopolicy/common/managerdefinitions/src/ClientDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/ClientDescriptor.cpp
index afc4d01..035bef2 100644
--- a/services/audiopolicy/common/managerdefinitions/src/ClientDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/ClientDescriptor.cpp
@@ -18,9 +18,12 @@
//#define LOG_NDEBUG 0
#include <sstream>
+
+#include <android-base/stringprintf.h>
+#include <TypeConverter.h>
#include <utils/Log.h>
#include <utils/String8.h>
-#include <TypeConverter.h>
+
#include "AudioOutputDescriptor.h"
#include "AudioPatch.h"
#include "AudioPolicyMix.h"
@@ -39,35 +42,36 @@
return ss.str();
}
-void ClientDescriptor::dump(String8 *dst, int spaces, int index) const
+void ClientDescriptor::dump(String8 *dst, int spaces) const
{
- dst->appendFormat("%*sClient %d:\n", spaces, "", index+1);
- dst->appendFormat("%*s- Port Id: %d Session Id: %d UID: %d\n", spaces, "",
- mPortId, mSessionId, mUid);
- dst->appendFormat("%*s- Format: %08x Sampling rate: %d Channels: %08x\n", spaces, "",
- mConfig.format, mConfig.sample_rate, mConfig.channel_mask);
- dst->appendFormat("%*s- Attributes: %s\n", spaces, "", toString(mAttributes).c_str());
- dst->appendFormat("%*s- Preferred Device Id: %08x\n", spaces, "", mPreferredDeviceId);
- dst->appendFormat("%*s- State: %s\n", spaces, "", mActive ? "Active" : "Inactive");
+ dst->appendFormat("Port ID: %d; Session ID: %d; uid %d; State: %s\n",
+ mPortId, mSessionId, mUid, mActive ? "Active" : "Inactive");
+ dst->appendFormat("%*s%s; %d; Channel mask: 0x%x\n", spaces, "",
+ audio_format_to_string(mConfig.format), mConfig.sample_rate, mConfig.channel_mask);
+ dst->appendFormat("%*sAttributes: %s\n", spaces, "", toString(mAttributes).c_str());
+ if (mPreferredDeviceId != AUDIO_PORT_HANDLE_NONE) {
+ dst->appendFormat("%*sPreferred Device Port ID: %d;\n", spaces, "", mPreferredDeviceId);
+ }
}
-void TrackClientDescriptor::dump(String8 *dst, int spaces, int index) const
+void TrackClientDescriptor::dump(String8 *dst, int spaces) const
{
- ClientDescriptor::dump(dst, spaces, index);
- dst->appendFormat("%*s- Stream: %d flags: %08x\n", spaces, "", mStream, mFlags);
- dst->appendFormat("%*s- Refcount: %d\n", spaces, "", mActivityCount);
- dst->appendFormat("%*s- DAP Primary Mix: %p\n", spaces, "", mPrimaryMix.promote().get());
- dst->appendFormat("%*s- DAP Secondary Outputs:\n", spaces, "");
- for (auto desc : mSecondaryOutputs) {
- dst->appendFormat("%*s - %d\n", spaces, "",
- desc.promote() == nullptr ? 0 : desc.promote()->mIoHandle);
+ ClientDescriptor::dump(dst, spaces);
+ dst->appendFormat("%*sStream: %d; Flags: %08x; Refcount: %d\n", spaces, "",
+ mStream, mFlags, mActivityCount);
+ dst->appendFormat("%*sDAP Primary Mix: %p\n", spaces, "", mPrimaryMix.promote().get());
+ if (!mSecondaryOutputs.empty()) {
+ dst->appendFormat("%*sDAP Secondary Outputs: ", spaces - 2, "");
+ for (auto desc : mSecondaryOutputs) {
+ dst->appendFormat("%d, ", desc.promote() == nullptr ? 0 : desc.promote()->mIoHandle);
+ }
+ dst->append("\n");
}
}
std::string TrackClientDescriptor::toShortString() const
{
std::stringstream ss;
-
ss << ClientDescriptor::toShortString() << " Stream: " << mStream;
return ss.str();
}
@@ -81,10 +85,10 @@
}
}
-void RecordClientDescriptor::dump(String8 *dst, int spaces, int index) const
+void RecordClientDescriptor::dump(String8 *dst, int spaces) const
{
- ClientDescriptor::dump(dst, spaces, index);
- dst->appendFormat("%*s- Source: %d flags: %08x\n", spaces, "", mSource, mFlags);
+ ClientDescriptor::dump(dst, spaces);
+ dst->appendFormat("%*sSource: %d; Flags: %08x\n", spaces, "", mSource, mFlags);
mEnabledEffects.dump(dst, spaces + 2 /*spaces*/, false /*verbose*/);
}
@@ -109,18 +113,21 @@
mHwOutput = hwOutput;
}
-void SourceClientDescriptor::dump(String8 *dst, int spaces, int index) const
+void SourceClientDescriptor::dump(String8 *dst, int spaces) const
{
- TrackClientDescriptor::dump(dst, spaces, index);
- dst->appendFormat("%*s- Device:\n", spaces, "");
- mSrcDevice->dump(dst, 2, 0);
+ TrackClientDescriptor::dump(dst, spaces);
+ const std::string prefix = base::StringPrintf("%*sDevice: ", spaces, "");
+ dst->appendFormat("%s", prefix.c_str());
+ mSrcDevice->dump(dst, prefix.size());
}
void SourceClientCollection::dump(String8 *dst) const
{
- dst->append("\nAudio sources:\n");
+ dst->append("\n Audio sources (%zu):\n", size());
for (size_t i = 0; i < size(); i++) {
- valueAt(i)->dump(dst, 2, i);
+ const std::string prefix = base::StringPrintf(" %zu. ", i + 1);
+ dst->appendFormat("%s", prefix.c_str());
+ valueAt(i)->dump(dst, prefix.size());
}
}
diff --git a/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
index d76d0c2..a909331 100644
--- a/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
@@ -19,10 +19,11 @@
#include <set>
-#include <AudioPolicyInterface.h>
+#include <android-base/stringprintf.h>
#include <audio_utils/string.h>
#include <media/AudioParameter.h>
#include <media/TypeConverter.h>
+#include <AudioPolicyInterface.h>
#include "DeviceDescriptor.h"
#include "TypeConverter.h"
#include "HwModule.h"
@@ -176,7 +177,7 @@
}
}
-void DeviceDescriptor::dump(String8 *dst, int spaces, int index, bool verbose) const
+void DeviceDescriptor::dump(String8 *dst, int spaces, bool verbose) const
{
String8 extraInfo;
if (!mTagName.empty()) {
@@ -184,7 +185,7 @@
}
std::string descBaseDumpStr;
- DeviceDescriptorBase::dump(&descBaseDumpStr, spaces, index, extraInfo.string(), verbose);
+ DeviceDescriptorBase::dump(&descBaseDumpStr, spaces, extraInfo.string(), verbose);
dst->append(descBaseDumpStr.c_str());
}
@@ -449,7 +450,9 @@
}
dst->appendFormat("%*s%s devices (%zu):\n", spaces, "", tag.string(), size());
for (size_t i = 0; i < size(); i++) {
- itemAt(i)->dump(dst, spaces + 2, i, verbose);
+ const std::string prefix = base::StringPrintf("%*s %zu. ", spaces, "", i + 1);
+ dst->appendFormat("%s", prefix.c_str());
+ itemAt(i)->dump(dst, prefix.size(), verbose);
}
}
diff --git a/services/audiopolicy/common/managerdefinitions/src/EffectDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/EffectDescriptor.cpp
index 843f5da..3f9c8b0 100644
--- a/services/audiopolicy/common/managerdefinitions/src/EffectDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/EffectDescriptor.cpp
@@ -17,6 +17,7 @@
#define LOG_TAG "APM::EffectDescriptor"
//#define LOG_NDEBUG 0
+#include <android-base/stringprintf.h>
#include "EffectDescriptor.h"
#include <utils/String8.h>
@@ -24,13 +25,11 @@
void EffectDescriptor::dump(String8 *dst, int spaces) const
{
- dst->appendFormat("%*sID: %d\n", spaces, "", mId);
- dst->appendFormat("%*sI/O: %d\n", spaces, "", mIo);
- dst->appendFormat("%*sMusic Effect: %s\n", spaces, "", isMusicEffect()? "yes" : "no");
- dst->appendFormat("%*sSession: %d\n", spaces, "", mSession);
- dst->appendFormat("%*sName: %s\n", spaces, "", mDesc.name);
- dst->appendFormat("%*s%s\n", spaces, "", mEnabled ? "Enabled" : "Disabled");
- dst->appendFormat("%*s%s\n", spaces, "", mSuspended ? "Suspended" : "Active");
+ dst->appendFormat("Effect ID: %d; Attached to I/O handle: %d; Session: %d;\n",
+ mId, mIo, mSession);
+ dst->appendFormat("%*sMusic Effect? %s; \"%s\"; %s; %s\n", spaces, "",
+ isMusicEffect()? "yes" : "no", mDesc.name,
+ mEnabled ? "Enabled" : "Disabled", mSuspended ? "Suspended" : "Active");
}
EffectDescriptorCollection::EffectDescriptorCollection() :
@@ -237,10 +236,14 @@
mTotalEffectsMemory,
mTotalEffectsMemoryMaxUsed);
}
- dst->appendFormat("%*sEffects:\n", spaces, "");
- for (size_t i = 0; i < size(); i++) {
- dst->appendFormat("%*s- Effect %d:\n", spaces, "", keyAt(i));
- valueAt(i)->dump(dst, spaces + 2);
+ if (size() > 0) {
+ if (spaces > 1) spaces -= 2;
+ dst->appendFormat("%*s- Effects (%zu):\n", spaces, "", size());
+ for (size_t i = 0; i < size(); i++) {
+ const std::string prefix = base::StringPrintf("%*s %zu. ", spaces, "", i + 1);
+ dst->appendFormat("%s", prefix.c_str());
+ valueAt(i)->dump(dst, prefix.size());
+ }
}
}
diff --git a/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp b/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
index 2977f38..418b7eb 100644
--- a/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
@@ -255,7 +255,7 @@
if (mOutputProfiles.size()) {
dst->appendFormat("%*s- Output MixPorts (%zu):\n", spaces - 2, "", mOutputProfiles.size());
for (size_t i = 0; i < mOutputProfiles.size(); i++) {
- const std::string prefix = base::StringPrintf("%*s%zu. ", spaces, "", i + 1);
+ const std::string prefix = base::StringPrintf("%*s %zu. ", spaces, "", i + 1);
dst->append(prefix.c_str());
mOutputProfiles[i]->dump(dst, prefix.size());
}
@@ -263,7 +263,7 @@
if (mInputProfiles.size()) {
dst->appendFormat("%*s- Input MixPorts (%zu):\n", spaces - 2, "", mInputProfiles.size());
for (size_t i = 0; i < mInputProfiles.size(); i++) {
- const std::string prefix = base::StringPrintf("%*s%zu. ", spaces, "", i + 1);
+ const std::string prefix = base::StringPrintf("%*s %zu. ", spaces, "", i + 1);
dst->append(prefix.c_str());
mInputProfiles[i]->dump(dst, prefix.size());
}
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index 22eeadd..9fda079 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -3608,12 +3608,14 @@
dst->appendFormat(" Communnication Strategy: %d\n", mCommunnicationStrategy);
dst->appendFormat(" Config source: %s\n", mConfig.getSource().c_str()); // getConfig not const
- mAvailableOutputDevices.dump(dst, String8("\n Available output"));
- mAvailableInputDevices.dump(dst, String8("\n Available input"));
+ dst->append("\n");
+ mAvailableOutputDevices.dump(dst, String8("Available output"), 1);
+ dst->append("\n");
+ mAvailableInputDevices.dump(dst, String8("Available input"), 1);
mHwModulesAll.dump(dst);
mOutputs.dump(dst);
mInputs.dump(dst);
- mEffects.dump(dst);
+ mEffects.dump(dst, 1);
mAudioPatches.dump(dst);
mPolicyMixes.dump(dst);
mAudioSources.dump(dst);