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

Commit 111333ea authored by Marco Nelissen's avatar Marco Nelissen Committed by Android (Google) Code Review
Browse files

Merge "handle error during flush in MediaPlayer.reset()" into lmp-dev

parents 4deb606b 9e2b7918
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -803,6 +803,14 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) {
                    err = UNKNOWN_ERROR;
                }
                mRenderer->queueEOS(audio, err);
                if (audio && mFlushingAudio != NONE) {
                    mAudioDecoder.clear();
                    mFlushingAudio = SHUT_DOWN;
                } else if (!audio && mFlushingVideo != NONE){
                    mVideoDecoder.clear();
                    mFlushingVideo = SHUT_DOWN;
                }
                finishFlushIfPossible();
            } else if (what == Decoder::kWhatDrainThisBuffer) {
                renderBuffer(audio, msg);
            } else {
+2 −2
Original line number Diff line number Diff line
@@ -44,11 +44,11 @@ NuPlayer::Decoder::Decoder(
    // Every decoder has its own looper because MediaCodec operations
    // are blocking, but NuPlayer needs asynchronous operations.
    mDecoderLooper = new ALooper;
    mDecoderLooper->setName("NuPlayerDecoder");
    mDecoderLooper->setName("NPDecoder");
    mDecoderLooper->start(false, false, ANDROID_PRIORITY_AUDIO);

    mCodecLooper = new ALooper;
    mCodecLooper->setName("NuPlayerDecoder-MC");
    mCodecLooper->setName("NPDecoder-CL");
    mCodecLooper->start(false, false, ANDROID_PRIORITY_AUDIO);
}

+8 −3
Original line number Diff line number Diff line
@@ -716,7 +716,8 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
                    CHECK(msg->findInt32("err", &err));
                    CHECK(msg->findInt32("actionCode", &actionCode));

                    ALOGE("Codec reported err %#x, actionCode %d", err, actionCode);
                    ALOGE("Codec reported err %#x, actionCode %d, while in state %d",
                            err, actionCode, mState);
                    if (err == DEAD_OBJECT) {
                        mFlags |= kFlagSawMediaServerDie;
                    }
@@ -767,8 +768,12 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {

                        case FLUSHING:
                        {
                            if (actionCode == ACTION_CODE_FATAL) {
                                setState(UNINITIALIZED);
                            } else {
                                setState(
                                        (mFlags & kFlagIsAsync) ? FLUSHED : STARTED);
                            }
                            break;
                        }