Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0dbe87b4 authored by Mikhail Naganov's avatar Mikhail Naganov
Browse files

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
parent 05083be0
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -162,9 +162,16 @@ void AudioPort::toAudioPort(struct audio_port_v7 *port) const {
    }
}

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;
+12 −15
Original line number Diff line number Diff line
@@ -99,18 +99,14 @@ void AudioProfile::clear()

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 @@ void AudioProfile::dump(std::string *dst, int spaces) const
    }

    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 @@ void AudioProfile::dump(std::string *dst, int spaces) const
    }

    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 @@ bool AudioProfileVector::contains(const sp<AudioProfile>& profile) const

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);
    }
}
+11 −16
Original line number Diff line number Diff line
@@ -113,29 +113,24 @@ status_t DeviceDescriptorBase::setEncapsulationMetadataTypes(uint32_t encapsulat
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 (%s)\n",
                    audio_device_to_string(mDeviceTypeAddr.mType),
                    mDeviceTypeAddr.toString(true /*includeSensitiveInfo*/).c_str()));

    dst->append(base::StringPrintf("%*s- type: %-48s\n",
            spaces, "", ::android::toString(mDeviceTypeAddr.mType).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
+2 −1
Original line number Diff line number Diff line
@@ -111,7 +111,8 @@ public:
                        ((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;

+1 −1
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ public:
    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) {
Loading