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

Commit 48161d36 authored by Andy Hung's avatar Andy Hung Committed by Android (Google) Code Review
Browse files

Merge "AudioFlinger: Fix incorrect underrun count on track pause"

parents 3668d6bb e2e830fd
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -3616,7 +3616,13 @@ bool AudioFlinger::PlaybackThread::threadLoop()

                    // Tally underrun frames as we are inserting 0s here.
                    for (const auto& track : activeTracks) {
                        if (track->mFillingUpStatus == Track::FS_ACTIVE) {
                        if (track->mFillingUpStatus == Track::FS_ACTIVE
                                && !track->isStopped()
                                && !track->isPaused()
                                && !track->isTerminated()) {
                            ALOGV("%s: track(%d) %s underrun due to thread sleep of %zu frames",
                                    __func__, track->id(), track->getTrackStateAsString(),
                                    mNormalFrameCount);
                            track->mAudioTrackServerProxy->tallyUnderrunFrames(mNormalFrameCount);
                        }
                    }
+33 −1
Original line number Diff line number Diff line
@@ -202,6 +202,38 @@ public:
           audio_format_t format() const { return mFormat; }
           int id() const { return mId; }

    const char *getTrackStateAsString() const {
        if (isTerminated()) {
            return "TERMINATED";
        }
        switch (mState) {
        case IDLE:
            return "IDLE";
        case STOPPING_1: // for Fast and Offload
            return "STOPPING_1";
        case STOPPING_2: // for Fast and Offload
            return "STOPPING_2";
        case STOPPED:
            return "STOPPED";
        case RESUMING:
            return "RESUMING";
        case ACTIVE:
            return "ACTIVE";
        case PAUSING:
            return "PAUSING";
        case PAUSED:
            return "PAUSED";
        case FLUSHED:
            return "FLUSHED";
        case STARTING_1: // for RecordTrack
            return "STARTING_1";
        case STARTING_2: // for RecordTrack
            return "STARTING_2";
        default:
            return "UNKNOWN";
        }
    }

protected:
    DISALLOW_COPY_AND_ASSIGN(TrackBase);

@@ -248,7 +280,7 @@ protected:

    // Upper case characters are final states.
    // Lower case characters are transitory.
    const char *getTrackStateString() const {
    const char *getTrackStateAsCodedString() const {
        if (isTerminated()) {
            return "T ";
        }
+2 −2
Original line number Diff line number Diff line
@@ -743,7 +743,7 @@ void AudioFlinger::PlaybackThread::Track::appendDump(String8& result, bool activ
            (mClient == 0) ? getpid() : mClient->pid(),
            mSessionId,
            mPortId,
            getTrackStateString(),
            getTrackStateAsCodedString(),
            mCblk->mFlags,

            mFormat,
@@ -2241,7 +2241,7 @@ void AudioFlinger::RecordThread::RecordTrack::appendDump(String8& result, bool a
            (mClient == 0) ? getpid() : mClient->pid(),
            mSessionId,
            mPortId,
            getTrackStateString(),
            getTrackStateAsCodedString(),
            mCblk->mFlags,

            mFormat,