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

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

Merge "Track graphic buffer mode in OMXNodeInstance" into oc-mr1-dev

parents c75d97f2 77d00ee0
Loading
Loading
Loading
Loading
+21 −0
Original line number Original line Diff line number Diff line
@@ -372,6 +372,8 @@ OMXNodeInstance::OMXNodeInstance(
    mPortMode[1] = IOMX::kPortModePresetByteBuffer;
    mPortMode[1] = IOMX::kPortModePresetByteBuffer;
    mSecureBufferType[0] = kSecureBufferTypeUnknown;
    mSecureBufferType[0] = kSecureBufferTypeUnknown;
    mSecureBufferType[1] = kSecureBufferTypeUnknown;
    mSecureBufferType[1] = kSecureBufferTypeUnknown;
    mGraphicBufferEnabled[0] = false;
    mGraphicBufferEnabled[1] = false;
    mIsSecure = AString(name).endsWith(".secure");
    mIsSecure = AString(name).endsWith(".secure");
    mLegacyAdaptiveExperiment = ADebug::isExperimentEnabled("legacy-adaptive");
    mLegacyAdaptiveExperiment = ADebug::isExperimentEnabled("legacy-adaptive");
}
}
@@ -808,6 +810,12 @@ status_t OMXNodeInstance::enableNativeBuffers_l(
            } else if (mSecureBufferType[portIndex] == kSecureBufferTypeUnknown) {
            } else if (mSecureBufferType[portIndex] == kSecureBufferTypeUnknown) {
                mSecureBufferType[portIndex] = kSecureBufferTypeOpaque;
                mSecureBufferType[portIndex] = kSecureBufferTypeOpaque;
            }
            }
        } else {
            if (err == OMX_ErrorNone) {
                mGraphicBufferEnabled[portIndex] = enable;
            } else if (enable) {
                mGraphicBufferEnabled[portIndex] = false;
            }
        }
        }
    } else {
    } else {
        CLOG_ERROR_IF(enable, getExtensionIndex, err, "%s", name);
        CLOG_ERROR_IF(enable, getExtensionIndex, err, "%s", name);
@@ -1076,6 +1084,12 @@ status_t OMXNodeInstance::useBuffer_l(
    OMX_ERRORTYPE err = OMX_ErrorNone;
    OMX_ERRORTYPE err = OMX_ErrorNone;
    bool isMetadata = mMetadataType[portIndex] != kMetadataBufferTypeInvalid;
    bool isMetadata = mMetadataType[portIndex] != kMetadataBufferTypeInvalid;


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

    size_t paramsSize;
    size_t paramsSize;
    void* paramsPointer;
    void* paramsPointer;
    if (params != NULL && hParams != NULL) {
    if (params != NULL && hParams != NULL) {
@@ -1261,6 +1275,13 @@ status_t OMXNodeInstance::useGraphicBuffer_l(
                portIndex, graphicBuffer, buffer);
                portIndex, graphicBuffer, buffer);
    }
    }


    if (!mGraphicBufferEnabled[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.
    // See if the newer version of the extension is present.
    OMX_INDEXTYPE index;
    OMX_INDEXTYPE index;
    if (OMX_GetExtensionIndex(
    if (OMX_GetExtensionIndex(
+2 −1
Original line number Original line Diff line number Diff line
@@ -152,7 +152,7 @@ private:


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


    // Following are OMX parameters managed by us (instead of the component)
    // Following are OMX parameters managed by us (instead of the component)
    // OMX_IndexParamMaxFrameDurationForBitrateControl
    // OMX_IndexParamMaxFrameDurationForBitrateControl