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

Commit 9ee321c3 authored by Wonsik Kim's avatar Wonsik Kim
Browse files

stagefright: fix premature change of buffer ownership

Bug: 34059849
Test: cts-tradefed run cts-dev -m CtsMediaTestCases -t android.media.cts.MediaCodecTest#testUnsupportedCrypto
Change-Id: Id6dbb212551bd086b76895fbc5f699c34a0dc524
parent dff26e5f
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -2623,14 +2623,7 @@ status_t MediaCodec::onQueueInputBuffer(const sp<AMessage> &msg) {
        info->mData->meta()->setInt32("csd", true);
    }

    // synchronization boundary for getBufferAndFormat
    sp<MediaCodecBuffer> buffer;
    {
        Mutex::Autolock al(mBufferLock);
        info->mOwnedByClient = false;
        buffer = info->mData;
        info->mData.clear();
    }
    sp<MediaCodecBuffer> buffer = info->mData;
    status_t err = OK;
    if (mCrypto != NULL) {
        AString *errorDetailMsg;
@@ -2650,6 +2643,13 @@ status_t MediaCodec::onQueueInputBuffer(const sp<AMessage> &msg) {
        err = mBufferChannel->queueInputBuffer(buffer);
    }

    if (err == OK) {
        // synchronization boundary for getBufferAndFormat
        Mutex::Autolock al(mBufferLock);
        info->mOwnedByClient = false;
        info->mData.clear();
    }

    return err;
}