Improve AudioPolicyManager dump
Make the dump more concise and clear. Condense lists
of ports, profiles and devices to simplify viewing.
Hide headers for empty lists.
Bug: 205884982
Test: adb shell dumpsys media.audio_policy
Change-Id: I2f5155710fa5c6f1ef027811ef2336b63ba4f038
diff --git a/media/libaudiofoundation/AudioPort.cpp b/media/libaudiofoundation/AudioPort.cpp
index 634b2e1..4513323 100644
--- a/media/libaudiofoundation/AudioPort.cpp
+++ b/media/libaudiofoundation/AudioPort.cpp
@@ -162,9 +162,16 @@
}
}
-void AudioPort::dump(std::string *dst, int spaces, bool verbose) const {
+void AudioPort::dump(std::string *dst, int spaces, const char* extraInfo, bool verbose) const {
if (!mName.empty()) {
- dst->append(base::StringPrintf("%*s- name: %s\n", spaces, "", mName.c_str()));
+ dst->append(base::StringPrintf("\"%s\"%s", mName.c_str(),
+ extraInfo != nullptr ? "; " : ""));
+ }
+ if (extraInfo != nullptr) {
+ dst->append(base::StringPrintf("%s", extraInfo));
+ }
+ if (!mName.empty() || extraInfo != nullptr) {
+ dst->append("\n");
}
if (verbose) {
std::string profilesStr;
diff --git a/media/libaudiofoundation/AudioProfile.cpp b/media/libaudiofoundation/AudioProfile.cpp
index 15f2d68..ec10bc9 100644
--- a/media/libaudiofoundation/AudioProfile.cpp
+++ b/media/libaudiofoundation/AudioProfile.cpp
@@ -99,18 +99,14 @@
void AudioProfile::dump(std::string *dst, int spaces) const
{
- dst->append(base::StringPrintf("%s%s%s\n", mIsDynamicFormat ? "[dynamic format]" : "",
+ dst->append(base::StringPrintf("\"%s\"; ", mName.c_str()));
+ dst->append(base::StringPrintf("%s%s%s%s", mIsDynamicFormat ? "[dynamic format]" : "",
mIsDynamicChannels ? "[dynamic channels]" : "",
- mIsDynamicRate ? "[dynamic rates]" : ""));
- if (mName.length() != 0) {
- dst->append(base::StringPrintf("%*s- name: %s\n", spaces, "", mName.c_str()));
- }
- std::string formatLiteral;
- if (FormatConverter::toString(mFormat, formatLiteral)) {
- dst->append(base::StringPrintf("%*s- format: %s\n", spaces, "", formatLiteral.c_str()));
- }
+ mIsDynamicRate ? "[dynamic rates]" : "", isDynamic() ? "; " : ""));
+ dst->append(base::StringPrintf("%s (0x%x)\n", audio_format_to_string(mFormat), mFormat));
+
if (!mSamplingRates.empty()) {
- dst->append(base::StringPrintf("%*s- sampling rates:", spaces, ""));
+ dst->append(base::StringPrintf("%*ssampling rates: ", spaces, ""));
for (auto it = mSamplingRates.begin(); it != mSamplingRates.end();) {
dst->append(base::StringPrintf("%d", *it));
dst->append(++it == mSamplingRates.end() ? "" : ", ");
@@ -119,7 +115,7 @@
}
if (!mChannelMasks.empty()) {
- dst->append(base::StringPrintf("%*s- channel masks:", spaces, ""));
+ dst->append(base::StringPrintf("%*schannel masks: ", spaces, ""));
for (auto it = mChannelMasks.begin(); it != mChannelMasks.end();) {
dst->append(base::StringPrintf("0x%04x", *it));
dst->append(++it == mChannelMasks.end() ? "" : ", ");
@@ -128,7 +124,7 @@
}
dst->append(base::StringPrintf(
- "%*s- encapsulation type: %#x\n", spaces, "", mEncapsulationType));
+ "%*s%s\n", spaces, "", audio_encapsulation_type_to_string(mEncapsulationType)));
}
bool AudioProfile::equals(const sp<AudioProfile>& other) const
@@ -321,11 +317,12 @@
void AudioProfileVector::dump(std::string *dst, int spaces) const
{
- dst->append(base::StringPrintf("%*s- Profiles:\n", spaces, ""));
+ dst->append(base::StringPrintf("%*s- Profiles (%zu):\n", spaces - 2, "", size()));
for (size_t i = 0; i < size(); i++) {
- dst->append(base::StringPrintf("%*sProfile %zu:", spaces + 4, "", i));
+ const std::string prefix = base::StringPrintf("%*s%zu. ", spaces + 1, "", i + 1);
+ dst->append(prefix);
std::string profileStr;
- at(i)->dump(&profileStr, spaces + 8);
+ at(i)->dump(&profileStr, prefix.size());
dst->append(profileStr);
}
}
diff --git a/media/libaudiofoundation/DeviceDescriptorBase.cpp b/media/libaudiofoundation/DeviceDescriptorBase.cpp
index c8222e7..88ba544 100644
--- a/media/libaudiofoundation/DeviceDescriptorBase.cpp
+++ b/media/libaudiofoundation/DeviceDescriptorBase.cpp
@@ -113,29 +113,24 @@
void DeviceDescriptorBase::dump(std::string *dst, int spaces, int index,
const char* extraInfo, bool verbose) const
{
- dst->append(base::StringPrintf("%*sDevice %d:\n", spaces, "", index + 1));
+ const std::string prefix = base::StringPrintf("%*s %d. ", spaces, "", index + 1);
+ dst->append(prefix);
if (mId != 0) {
- dst->append(base::StringPrintf("%*s- id: %2d\n", spaces, "", mId));
+ dst->append(base::StringPrintf("Port ID: %d; ", mId));
}
-
if (extraInfo != nullptr) {
- dst->append(extraInfo);
+ dst->append(base::StringPrintf("%s; ", extraInfo));
}
-
- dst->append(base::StringPrintf("%*s- type: %-48s\n",
- spaces, "", ::android::toString(mDeviceTypeAddr.mType).c_str()));
+ dst->append(base::StringPrintf("%s (%s)\n",
+ audio_device_to_string(mDeviceTypeAddr.mType),
+ mDeviceTypeAddr.toString(true /*includeSensitiveInfo*/).c_str()));
dst->append(base::StringPrintf(
- "%*s- supported encapsulation modes: %u\n", spaces, "", mEncapsulationModes));
- dst->append(base::StringPrintf(
- "%*s- supported encapsulation metadata types: %u\n",
- spaces, "", mEncapsulationMetadataTypes));
+ "%*sEncapsulation modes: %u, metadata types: %u\n",
+ static_cast<int>(prefix.size()), "",
+ mEncapsulationModes, mEncapsulationMetadataTypes));
- if (mDeviceTypeAddr.address().size() != 0) {
- dst->append(base::StringPrintf(
- "%*s- address: %-32s\n", spaces, "", mDeviceTypeAddr.getAddress()));
- }
- AudioPort::dump(dst, spaces, verbose);
+ AudioPort::dump(dst, prefix.size(), nullptr, verbose);
}
std::string DeviceDescriptorBase::toString(bool includeSensitiveInfo) const
diff --git a/media/libaudiofoundation/include/media/AudioPort.h b/media/libaudiofoundation/include/media/AudioPort.h
index 985e05e..d6a098f 100644
--- a/media/libaudiofoundation/include/media/AudioPort.h
+++ b/media/libaudiofoundation/include/media/AudioPort.h
@@ -111,7 +111,8 @@
((mFlags.input & AUDIO_INPUT_FLAG_MMAP_NOIRQ) != 0)));
}
- void dump(std::string *dst, int spaces, bool verbose = true) const;
+ void dump(std::string *dst, int spaces,
+ const char* extraInfo = nullptr, bool verbose = true) const;
void log(const char* indent) const;
diff --git a/media/libaudiofoundation/include/media/AudioProfile.h b/media/libaudiofoundation/include/media/AudioProfile.h
index 62670e4..d7cddb7 100644
--- a/media/libaudiofoundation/include/media/AudioProfile.h
+++ b/media/libaudiofoundation/include/media/AudioProfile.h
@@ -69,7 +69,7 @@
void setDynamicFormat(bool dynamic) { mIsDynamicFormat = dynamic; }
bool isDynamicFormat() const { return mIsDynamicFormat; }
- bool isDynamic() { return mIsDynamicFormat || mIsDynamicChannels || mIsDynamicRate; }
+ bool isDynamic() const { return mIsDynamicFormat || mIsDynamicChannels || mIsDynamicRate; }
audio_encapsulation_type_t getEncapsulationType() const { return mEncapsulationType; }
void setEncapsulationType(audio_encapsulation_type_t encapsulationType) {