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

Commit 5f2136e6 authored by Kevin Rocard's avatar Kevin Rocard
Browse files

AudioFlinger: Log audio attributes in dumpsys



Test: adb shell dumpsys media.audio_flinger|grep FrmRdy -A1
Change-Id: I47d402133ab30d0f2276577d2b51c30956f873c6
Signed-off-by: default avatarKevin Rocard <krocard@google.com>
parent 70b576df
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@ public:
                            audio_format_t format,
                            audio_format_t format,
                            audio_channel_mask_t channelMask,
                            audio_channel_mask_t channelMask,
                            audio_session_t sessionId,
                            audio_session_t sessionId,
                            bool isOut,
                            uid_t uid,
                            uid_t uid,
                            pid_t pid,
                            pid_t pid,
                            audio_port_handle_t portId = AUDIO_PORT_HANDLE_NONE);
                            audio_port_handle_t portId = AUDIO_PORT_HANDLE_NONE);
@@ -40,7 +41,7 @@ public:
    virtual void        stop();
    virtual void        stop();
    virtual bool        isFastTrack() const { return false; }
    virtual bool        isFastTrack() const { return false; }


     static void        appendDumpHeader(String8& result);
            void        appendDumpHeader(String8& result);
            void        appendDump(String8& result, bool active);
            void        appendDump(String8& result, bool active);


                        // protected by MMapThread::mLock
                        // protected by MMapThread::mLock
+2 −2
Original line number Original line Diff line number Diff line
@@ -8151,7 +8151,7 @@ status_t AudioFlinger::MmapThread::start(const AudioClient& client,


    // Given that MmapThread::mAttr is mutable, should a MmapTrack have attributes ?
    // Given that MmapThread::mAttr is mutable, should a MmapTrack have attributes ?
    sp<MmapTrack> track = new MmapTrack(this, mAttr, mSampleRate, mFormat, mChannelMask, mSessionId,
    sp<MmapTrack> track = new MmapTrack(this, mAttr, mSampleRate, mFormat, mChannelMask, mSessionId,
                                        client.clientUid, client.clientPid, portId);
                                        isOutput(), client.clientUid, client.clientPid, portId);


    track->setSilenced_l(silenced);
    track->setSilenced_l(silenced);
    mActiveTracks.add(track);
    mActiveTracks.add(track);
@@ -8677,7 +8677,7 @@ void AudioFlinger::MmapThread::dumpTracks(int fd, const Vector<String16>& args _
    const char *prefix = "    ";
    const char *prefix = "    ";
    if (numtracks) {
    if (numtracks) {
        result.append(prefix);
        result.append(prefix);
        MmapTrack::appendDumpHeader(result);
        mActiveTracks[0]->appendDumpHeader(result);
        for (size_t i = 0; i < numtracks ; ++i) {
        for (size_t i = 0; i < numtracks ; ++i) {
            sp<MmapTrack> track = mActiveTracks[i];
            sp<MmapTrack> track = mActiveTracks[i];
            result.append(prefix);
            result.append(prefix);
+37 −19
Original line number Original line Diff line number Diff line
@@ -494,7 +494,8 @@ void AudioFlinger::PlaybackThread::Track::appendDumpHeader(String8& result)
{
{
    result.appendFormat("T Name Active Client Session S  Flags "
    result.appendFormat("T Name Active Client Session S  Flags "
                        "  Format Chn mask  SRate "
                        "  Format Chn mask  SRate "
                  "ST  L dB  R dB  VS dB "
                        "ST Usg CT "
                        " G db  L dB  R dB  VS dB "
                        "  Server FrmCnt  FrmRdy F Underruns  Flushed"
                        "  Server FrmCnt  FrmRdy F Underruns  Flushed"
                        "%s\n",
                        "%s\n",
                        isServerLatencySupported() ? "   Latency" : "");
                        isServerLatencySupported() ? "   Latency" : "");
@@ -583,7 +584,8 @@ void AudioFlinger::PlaybackThread::Track::appendDump(String8& result, bool activ


    result.appendFormat("%7s %6u %7u %2s 0x%03X "
    result.appendFormat("%7s %6u %7u %2s 0x%03X "
                        "%08X %08X %6u "
                        "%08X %08X %6u "
                           "%2u %5.2g %5.2g %5.2g%c "
                        "%2u %3x %2x "
                        "%5.2g %5.2g %5.2g %5.2g%c "
                        "%08X %6zu%c %6zu %c %9u%c %7u",
                        "%08X %6zu%c %6zu %c %9u%c %7u",
            active ? "yes" : "no",
            active ? "yes" : "no",
            (mClient == 0) ? getpid() : mClient->pid(),
            (mClient == 0) ? getpid() : mClient->pid(),
@@ -596,6 +598,10 @@ void AudioFlinger::PlaybackThread::Track::appendDump(String8& result, bool activ
            sampleRate(),
            sampleRate(),


            mStreamType,
            mStreamType,
            mAttr.usage,
            mAttr.content_type,

            20.0 * log10(mFinalVolume),
            20.0 * log10(float_from_gain(gain_minifloat_unpack_left(vlr))),
            20.0 * log10(float_from_gain(gain_minifloat_unpack_left(vlr))),
            20.0 * log10(float_from_gain(gain_minifloat_unpack_right(vlr))),
            20.0 * log10(float_from_gain(gain_minifloat_unpack_right(vlr))),
            20.0 * log10(vsVolume.first), // VolumeShaper(s) total volume
            20.0 * log10(vsVolume.first), // VolumeShaper(s) total volume
@@ -1805,14 +1811,16 @@ void AudioFlinger::RecordThread::RecordTrack::invalidate()


void AudioFlinger::RecordThread::RecordTrack::appendDumpHeader(String8& result)
void AudioFlinger::RecordThread::RecordTrack::appendDumpHeader(String8& result)
{
{
    result.appendFormat("Active Client Session S  Flags   Format Chn mask  SRate   Server"
    result.appendFormat("Active Client Session S  Flags  "
            " FrmCnt FrmRdy Sil%s\n", isServerLatencySupported() ? "   Latency" : "");
                        " Format Chn mask  SRate Source "
                        " Server FrmCnt FrmRdy Sil%s\n",
                        isServerLatencySupported() ? "   Latency" : "");
}
}


void AudioFlinger::RecordThread::RecordTrack::appendDump(String8& result, bool active)
void AudioFlinger::RecordThread::RecordTrack::appendDump(String8& result, bool active)
{
{
    result.appendFormat("%c%5s %6u %7u %2s 0x%03X "
    result.appendFormat("%c%5s %6u %7u %2s 0x%03X "
            "%08X %08X %6u "
            "%08X %08X %6u %6X "
            "%08X %6zu %6zu %3c",
            "%08X %6zu %6zu %3c",
            isFastTrack() ? 'F' : ' ',
            isFastTrack() ? 'F' : ' ',
            active ? "yes" : "no",
            active ? "yes" : "no",
@@ -1824,6 +1832,7 @@ void AudioFlinger::RecordThread::RecordTrack::appendDump(String8& result, bool a
            mFormat,
            mFormat,
            mChannelMask,
            mChannelMask,
            mSampleRate,
            mSampleRate,
            mAttr.source,


            mCblk->mServer,
            mCblk->mServer,
            mFrameCount,
            mFrameCount,
@@ -1984,13 +1993,14 @@ AudioFlinger::MmapThread::MmapTrack::MmapTrack(ThreadBase *thread,
        audio_format_t format,
        audio_format_t format,
        audio_channel_mask_t channelMask,
        audio_channel_mask_t channelMask,
        audio_session_t sessionId,
        audio_session_t sessionId,
        bool isOut,
        uid_t uid,
        uid_t uid,
        pid_t pid,
        pid_t pid,
        audio_port_handle_t portId)
        audio_port_handle_t portId)
    :   TrackBase(thread, NULL, attr, sampleRate, format,
    :   TrackBase(thread, NULL, attr, sampleRate, format,
                  channelMask, (size_t)0 /* frameCount */,
                  channelMask, (size_t)0 /* frameCount */,
                  nullptr /* buffer */, (size_t)0 /* bufferSize */,
                  nullptr /* buffer */, (size_t)0 /* bufferSize */,
                  sessionId, uid, false /* isOut */,
                  sessionId, uid, isOut,
                  ALLOC_NONE,
                  ALLOC_NONE,
                  TYPE_DEFAULT, portId),
                  TYPE_DEFAULT, portId),
        mPid(pid), mSilenced(false), mSilencedNotified(false)
        mPid(pid), mSilenced(false), mSilencedNotified(false)
@@ -2038,19 +2048,27 @@ void AudioFlinger::MmapThread::MmapTrack::onTimestamp(const ExtendedTimestamp &t
{
{
}
}


/*static*/ void AudioFlinger::MmapThread::MmapTrack::appendDumpHeader(String8& result)
void AudioFlinger::MmapThread::MmapTrack::appendDumpHeader(String8& result)
{
{
    result.append("Client Session   Format Chn mask  SRate\n");
    result.appendFormat("Client Session   Format Chn mask  SRate Flags %s\n",
                        isOut() ? "Usg CT": "Source");
}
}


void AudioFlinger::MmapThread::MmapTrack::appendDump(String8& result, bool active __unused)
void AudioFlinger::MmapThread::MmapTrack::appendDump(String8& result, bool active __unused)
{
{
    result.appendFormat("%6u %7u %08X %08X %6u\n",
    result.appendFormat("%6u %7u %08X %08X %6u 0x%03X ",
            mPid,
            mPid,
            mSessionId,
            mSessionId,
            mFormat,
            mFormat,
            mChannelMask,
            mChannelMask,
            mSampleRate);
            mSampleRate,
            mAttr.flags);
    if (isOut()) {
        result.appendFormat("%3x %2x", mAttr.usage, mAttr.content_type);
    } else {
        result.appendFormat("%6x", mAttr.source);
    }
    result.append("\n");
}
}


} // namespace android
} // namespace android