Notify the OMX component that it's going to be used in "secure" mode.

Change-Id: Id87c4b295eb38f7d24045918e73df298d7b842f9
related-to-bug: 5137212
diff --git a/include/media/stagefright/HardwareAPI.h b/include/media/stagefright/HardwareAPI.h
index 32eed3f..d785c48 100644
--- a/include/media/stagefright/HardwareAPI.h
+++ b/include/media/stagefright/HardwareAPI.h
@@ -73,6 +73,16 @@
     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 2932744..2a1b3d8 100644
--- a/include/media/stagefright/OMXCodec.h
+++ b/include/media/stagefright/OMXCodec.h
@@ -319,6 +319,8 @@
     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 a4f3922..5327f3b 100755
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -720,9 +720,32 @@
         }
     }
 
+    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);