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

Commit d1de9bb3 authored by Wei Jia's avatar Wei Jia Committed by Android (Google) Code Review
Browse files

Merge "ACodec: handle errors related to native window." into lmp-dev

parents 7992a5d0 3fb9f68d
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -478,10 +478,13 @@ void NuPlayer::Decoder::onShutdown() {

        if (mNativeWindow != NULL) {
            // reconnect to surface as MediaCodec disconnected from it
            CHECK_EQ((int)NO_ERROR,
            status_t error =
                    native_window_api_connect(
                            mNativeWindow->getNativeWindow().get(),
                            NATIVE_WINDOW_API_MEDIA));
                            NATIVE_WINDOW_API_MEDIA);
            ALOGW_IF(error != NO_ERROR,
                    "[%s] failed to connect to native window, error=%d",
                    mComponentName.c_str(), error);
        }
        mComponentName = "decoder";
    }
+8 −4
Original line number Diff line number Diff line
@@ -813,7 +813,10 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() {

    for (OMX_U32 i = cancelStart; i < cancelEnd; i++) {
        BufferInfo *info = &mBuffers[kPortIndexOutput].editItemAt(i);
        cancelBufferToNativeWindow(info);
        status_t error = cancelBufferToNativeWindow(info);
        if (err == 0) {
            err = error;
        }
    }

    return err;
@@ -888,11 +891,12 @@ status_t ACodec::cancelBufferToNativeWindow(BufferInfo *info) {
    int err = mNativeWindow->cancelBuffer(
        mNativeWindow.get(), info->mGraphicBuffer.get(), -1);

    CHECK_EQ(err, 0);
    ALOGW_IF(err != 0, "[%s] can not return buffer %u to native window",
            mComponentName.c_str(), info->mBufferID);

    info->mStatus = BufferInfo::OWNED_BY_NATIVE_WINDOW;

    return OK;
    return err;
}

ACodec::BufferInfo *ACodec::dequeueBufferFromNativeWindow() {
@@ -992,7 +996,7 @@ status_t ACodec::freeBuffer(OMX_U32 portIndex, size_t i) {

    if (portIndex == kPortIndexOutput && mNativeWindow != NULL
            && info->mStatus == BufferInfo::OWNED_BY_US) {
        CHECK_EQ((status_t)OK, cancelBufferToNativeWindow(info));
        cancelBufferToNativeWindow(info);
    }

    CHECK_EQ(mOMX->freeBuffer(