summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/media/stagefright/HardwareAPI.h10
-rw-r--r--include/media/stagefright/OMXCodec.h2
-rwxr-xr-xmedia/libstagefright/OMXCodec.cpp23
3 files changed, 35 insertions, 0 deletions
diff --git a/include/media/stagefright/HardwareAPI.h b/include/media/stagefright/HardwareAPI.h
index 32eed3f79c6c..d785c48708c9 100644
--- a/include/media/stagefright/HardwareAPI.h
+++ b/include/media/stagefright/HardwareAPI.h
@@ -73,6 +73,16 @@ struct StoreMetaDataInBuffersParams {
OMX_BOOL bStoreMetaData;
};
+// A pointer to this struct is passed to OMX_SetParameter() when the extension
+// index "OMX.google.android.index.enableSecureMode"
+// is given.
+//
+struct EnableSecureModeParams {
+ OMX_U32 nSize;
+ OMX_VERSIONTYPE nVersion;
+ OMX_BOOL bEnableSecureMode;
+};
+
// A pointer to this struct is passed to OMX_SetParameter when the extension
// index for the 'OMX.google.android.index.useAndroidNativeBuffer' extension is
// given. This call will only be performed if a prior call was made with the
diff --git a/include/media/stagefright/OMXCodec.h b/include/media/stagefright/OMXCodec.h
index 2932744f0e6b..2a1b3d814f41 100644
--- a/include/media/stagefright/OMXCodec.h
+++ b/include/media/stagefright/OMXCodec.h
@@ -319,6 +319,8 @@ private:
void initOutputFormat(const sp<MetaData> &inputFormat);
status_t initNativeWindow();
+ status_t enableSecureMode();
+
void dumpPortStatus(OMX_U32 portIndex);
status_t configureCodec(const sp<MetaData> &meta);
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index a4f3922ee0e6..5327f3bd7abd 100755
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -720,9 +720,32 @@ status_t OMXCodec::configureCodec(const sp<MetaData> &meta) {
}
}
+ if (mFlags & kUseSecureInputBuffers) {
+ (void)enableSecureMode();
+ }
+
return OK;
}
+status_t OMXCodec::enableSecureMode() {
+ OMX_INDEXTYPE index;
+
+ status_t err =
+ mOMX->getExtensionIndex(
+ mNode, "OMX.google.android.index.enableSecureMode", &index);
+
+ if (err != OK) {
+ return err;
+ }
+
+ EnableSecureModeParams params;
+ InitOMXParams(&params);
+
+ params.bEnableSecureMode = OMX_TRUE;
+
+ return mOMX->setConfig(mNode, index, &params, sizeof(params));
+}
+
void OMXCodec::setMinBufferSize(OMX_U32 portIndex, OMX_U32 size) {
OMX_PARAM_PORTDEFINITIONTYPE def;
InitOMXParams(&def);