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

Commit 392730f7 authored by Lajos Molnar's avatar Lajos Molnar Committed by Android Git Automerger
Browse files

am 6f559515: am a4c3d8f0: Merge "MediaCodec: fix onError and onInputBufferAvailable" into lmp-dev

* commit '6f559515':
  MediaCodec: fix onError and onInputBufferAvailable
parents d7635618 6f559515
Loading
Loading
Loading
Loading
+15 −9
Original line number Diff line number Diff line
@@ -780,7 +780,9 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
                                // STOPPING->UNINITIALIZED, instead of the
                                // usual STOPPING->INITIALIZED state.
                                setState(UNINITIALIZED);

                                if (mState == RELEASING) {
                                    mComponentName.clear();
                                }
                                (new AMessage)->postReply(mReplyID);
                            }
                            break;
@@ -1046,7 +1048,9 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
                    }

                    if (mFlags & kFlagIsAsync) {
                        if (!mHaveInputSurface) {
                            onInputBufferAvailable();
                        }
                    } else if (mFlags & kFlagDequeueInputPending) {
                        CHECK(handleDequeueInputBuffer(mDequeueInputReplyID));

@@ -1130,6 +1134,7 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
                    } else {
                        CHECK_EQ(mState, RELEASING);
                        setState(UNINITIALIZED);
                        mComponentName.clear();
                    }

                    (new AMessage)->postReply(mReplyID);
@@ -1339,12 +1344,12 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
                // after stop() returned, it would be safe to call release()
                // and it should be in this case, no harm to allow a release()
                // if we're already uninitialized.
                // Similarly stopping a stopped MediaCodec should be benign.
                sp<AMessage> response = new AMessage;
                response->setInt32(
                        "err",
                        mState == targetState ? OK : INVALID_OPERATION);

                status_t err = mState == targetState ? OK : INVALID_OPERATION;
                response->setInt32("err", err);
                if (err == OK && targetState == UNINITIALIZED) {
                    mComponentName.clear();
                }
                response->postReply(replyID);
                break;
            }
@@ -1353,6 +1358,9 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
                // It's dead, Jim. Don't expect initiateShutdown to yield
                // any useful results now...
                setState(UNINITIALIZED);
                if (targetState == UNINITIALIZED) {
                    mComponentName.clear();
                }
                (new AMessage)->postReply(replyID);
                break;
            }
@@ -1745,8 +1753,6 @@ void MediaCodec::setState(State newState) {
        // return any straggling buffers, e.g. if we got here on an error
        returnBuffersToCodec();

        mComponentName.clear();

        // The component is gone, mediaserver's probably back up already
        // but should definitely be back up should we try to instantiate
        // another component.. and the cycle continues.