diff options
| -rw-r--r-- | include/media/stagefright/HardwareAPI.h | 10 | ||||
| -rw-r--r-- | include/media/stagefright/OMXCodec.h | 2 | ||||
| -rwxr-xr-x | media/libstagefright/OMXCodec.cpp | 23 |
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(¶ms); + + params.bEnableSecureMode = OMX_TRUE; + + return mOMX->setConfig(mNode, index, ¶ms, sizeof(params)); +} + void OMXCodec::setMinBufferSize(OMX_U32 portIndex, OMX_U32 size) { OMX_PARAM_PORTDEFINITIONTYPE def; InitOMXParams(&def); |