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

Commit df11b20f authored by Dongwon Kang's avatar Dongwon Kang Committed by Android (Google) Code Review
Browse files

Merge "Track graphic buffer mode in OMXNodeInstance" into nyc-dev

parents 528c7dd7 cb8c0cbe
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -175,7 +175,7 @@ private:
    KeyedVector<OMX::buffer_id, OMX_BUFFERHEADERTYPE *> mBufferIDToBufferHeader;
    KeyedVector<OMX_BUFFERHEADERTYPE *, OMX::buffer_id> mBufferHeaderToBufferID;

    // metadata and secure buffer type tracking
    // metadata and secure buffer types and graphic buffer mode tracking
    MetadataBufferType mMetadataType[2];
    enum SecureBufferType {
        kSecureBufferTypeUnknown,
@@ -183,6 +183,7 @@ private:
        kSecureBufferTypeNativeHandle,
    };
    SecureBufferType mSecureBufferType[2];
    bool mGraphicBufferEnabled[2];

    // For debug support
    char *mName;
+22 −0
Original line number Diff line number Diff line
@@ -226,6 +226,8 @@ OMXNodeInstance::OMXNodeInstance(
    mMetadataType[1] = kMetadataBufferTypeInvalid;
    mSecureBufferType[0] = kSecureBufferTypeUnknown;
    mSecureBufferType[1] = kSecureBufferTypeUnknown;
    mGraphicBufferEnabled[0] = false;
    mGraphicBufferEnabled[1] = false;
    mIsSecure = AString(name).endsWith(".secure");
}

@@ -562,6 +564,12 @@ status_t OMXNodeInstance::enableNativeBuffers(
            } else if (mSecureBufferType[portIndex] == kSecureBufferTypeUnknown) {
                mSecureBufferType[portIndex] = kSecureBufferTypeOpaque;
            }
        } else {
            if (err == OMX_ErrorNone) {
                mGraphicBufferEnabled[portIndex] = enable;
            } else if (enable) {
                mGraphicBufferEnabled[portIndex] = false;
            }
        }
    } else {
        CLOG_ERROR_IF(enable, getExtensionIndex, err, "%s", name);
@@ -798,6 +806,13 @@ status_t OMXNodeInstance::useBuffer(
        return BAD_VALUE;
    }

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

    // metadata buffers are not connected cross process
    // use a backup buffer instead of the actual buffer
    BufferMeta *buffer_meta;
@@ -916,6 +931,13 @@ status_t OMXNodeInstance::useGraphicBuffer(
        return BAD_VALUE;
    }
    Mutex::Autolock autoLock(mLock);
    if (!mGraphicBufferEnabled[portIndex]
            || mMetadataType[portIndex] != kMetadataBufferTypeInvalid) {
        // 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;