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

Commit 7c06b863 authored by Praveen Chavan's avatar Praveen Chavan Committed by Steve Kondik
Browse files

stagefright: Enable GraphicBuffer usage to decoder before querying formats

This lets the decoder publish appropriate color format based on surface
OR non-surface mode.

Change-Id: I567ae53d4d0dfa2abbf29e8196637a1da3e89969
parent 12fa017c
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -3914,19 +3914,6 @@ bool ACodec::LoadedState::onConfigureComponent(

    CHECK(mCodec->mNode != NULL);

    AString mime;
    CHECK(msg->findString("mime", &mime));

    status_t err = mCodec->configureCodec(mime.c_str(), msg);

    if (err != OK) {
        ALOGE("[%s] configureCodec returning error %d",
              mCodec->mComponentName.c_str(), err);

        mCodec->signalError(OMX_ErrorUndefined, err);
        return false;
    }

    sp<RefBase> obj;
    if (msg->findObject("native-window", &obj)
            && strncmp("OMX.google.", mCodec->mComponentName.c_str(), 11)) {
@@ -3941,6 +3928,19 @@ bool ACodec::LoadedState::onConfigureComponent(
    }
    CHECK_EQ((status_t)OK, mCodec->initNativeWindow());

    AString mime;
    CHECK(msg->findString("mime", &mime));

    status_t err = mCodec->configureCodec(mime.c_str(), msg);

    if (err != OK) {
        ALOGE("[%s] configureCodec returning error %d",
              mCodec->mComponentName.c_str(), err);

        mCodec->signalError(OMX_ErrorUndefined, err);
        return false;
    }

    {
        sp<AMessage> notify = mCodec->mNotify->dup();
        notify->setInt32("what", ACodec::kWhatComponentConfigured);
+9 −10
Original line number Diff line number Diff line
@@ -760,6 +760,15 @@ status_t OMXCodec::configureCodec(const sp<MetaData> &meta) {
                return err;
            }
        } else {

            if (mNativeWindow != NULL
                && !strncmp(mComponentName, "OMX.", 4)) {
                status_t err = initNativeWindow();
                if (err != OK) {
                    return err;
                }
            }

#ifdef QCOM_HARDWARE
            ExtendedCodec::configureVideoDecoder(
                    meta, mMIME, mOMX, mFlags, mNode, mComponentName);
@@ -816,16 +825,6 @@ status_t OMXCodec::configureCodec(const sp<MetaData> &meta) {
        mQuirks &= ~kOutputBuffersAreUnreadable;
    }

    if (mNativeWindow != NULL
        && !mIsEncoder
        && !strncasecmp(mMIME, "video/", 6)
        && !strncmp(mComponentName, "OMX.", 4)) {
        status_t err = initNativeWindow();
        if (err != OK) {
            return err;
        }
    }

    return OK;
}