Merge "EffectBundle: Check parameter and value size" into lmp-dev
diff --git a/media/libstagefright/include/OMXNodeInstance.h b/media/libstagefright/include/OMXNodeInstance.h
index d5bd046..fceaa5a 100644
--- a/media/libstagefright/include/OMXNodeInstance.h
+++ b/media/libstagefright/include/OMXNodeInstance.h
@@ -157,8 +157,9 @@
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];
~OMXNodeInstance();
diff --git a/media/libstagefright/omx/OMXNodeInstance.cpp b/media/libstagefright/omx/OMXNodeInstance.cpp
index 7345ced..a331ffa 100644
--- a/media/libstagefright/omx/OMXNodeInstance.cpp
+++ b/media/libstagefright/omx/OMXNodeInstance.cpp
@@ -127,6 +127,8 @@
{
mUsingMetadata[0] = false;
mUsingMetadata[1] = false;
+ mGraphicBufferEnabled[0] = false;
+ mGraphicBufferEnabled[1] = false;
mIsSecure = AString(name).endsWith(".secure");
}
@@ -441,10 +443,12 @@
if (err != OMX_ErrorNone) {
ALOGE("OMX_EnableAndroidNativeBuffers failed with error %d (0x%08x)",
err, err);
-
+ if (enable) {
+ mGraphicBufferEnabled[portIndex] = false;
+ }
return UNKNOWN_ERROR;
}
-
+ mGraphicBufferEnabled[portIndex] = enable;
return OK;
}
@@ -657,6 +661,12 @@
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];
@@ -766,6 +776,12 @@
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;
@@ -927,6 +943,13 @@
return BAD_VALUE;
}
+ if (!mIsSecure) {
+ // This method is used only with secure codecs in this release.
+ ALOGE("b/63522818");
+ android_errorWriteLog(0x534e4554, "63522818");
+ return ERROR_UNSUPPORTED;
+ }
+
BufferMeta *buffer_meta = new BufferMeta(size, portIndex);
OMX_BUFFERHEADERTYPE *header;