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

Commit de9f42ea authored by Dongwon Kang's avatar Dongwon Kang
Browse files

Track graphic buffer mode in OMXNodeInstance

Test: cts-tradefed run cts -p android.media & YT & Play Movies & Cast
Bug: 62948670
Merged-In: Icbd9b767f1aef005819e680f77f4a05041988f34
Change-Id: Icbd9b767f1aef005819e680f77f4a05041988f34
parent 2bebd9c7
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -157,8 +157,9 @@ private:
    KeyedVector<OMX::buffer_id, OMX_BUFFERHEADERTYPE *> mBufferIDToBufferHeader;
    KeyedVector<OMX_BUFFERHEADERTYPE *, OMX::buffer_id> mBufferHeaderToBufferID;

    // metadata mode tracking
    // metadata and graphic buffer mode tracking
    bool mUsingMetadata[2];
    bool mGraphicBufferEnabled[2];

    // For debug support
    char *mName;
+19 −0
Original line number Diff line number Diff line
@@ -206,6 +206,8 @@ OMXNodeInstance::OMXNodeInstance(
    mDebugLevelBumpPendingBuffers[1] = 0;
    mUsingMetadata[0] = false;
    mUsingMetadata[1] = false;
    mGraphicBufferEnabled[0] = false;
    mGraphicBufferEnabled[1] = false;
    mIsSecure = AString(name).endsWith(".secure");
}

@@ -542,6 +544,11 @@ status_t OMXNodeInstance::enableGraphicBuffers(
    err = OMX_SetParameter(mHandle, index, &params);
    CLOG_IF_ERROR(setParameter, err, "%s(%#x): %s:%u en=%d", name, index,
            portString(portIndex), portIndex, enable);
    if (err == OMX_ErrorNone) {
        mGraphicBufferEnabled[portIndex] = enable;
    } else if (enable) {
        mGraphicBufferEnabled[portIndex] = false;
    }
    return StatusFromOMXError(err);
}

@@ -746,6 +753,12 @@ status_t OMXNodeInstance::useBuffer(
        return BAD_VALUE;
    }

    if (!mUsingMetadata[portIndex] && mGraphicBufferEnabled[portIndex]) {
        ALOGE("b/62948670");
        android_errorWriteLog(0x534e4554, "62948670");
        return INVALID_OPERATION;
    }

    // metadata buffers are not connected cross process
    BufferMeta *buffer_meta;
    bool isMeta = mUsingMetadata[portIndex];
@@ -855,6 +868,12 @@ status_t OMXNodeInstance::useGraphicBuffer(
        OMX_U32 portIndex, const sp<GraphicBuffer>& graphicBuffer,
        OMX::buffer_id *buffer) {
    Mutex::Autolock autoLock(mLock);
    if (!mGraphicBufferEnabled[portIndex] || mUsingMetadata[portIndex]) {
        // Report error if this is not in graphic buffer mode.
        ALOGE("b/62948670");
        android_errorWriteLog(0x534e4554, "62948670");
        return INVALID_OPERATION;
    }

    // See if the newer version of the extension is present.
    OMX_INDEXTYPE index;