diff options
| author | Jack W. Lix <Jackx.w.lix@intel.com> | 2014-04-04 15:47:52 -0700 |
|---|---|---|
| committer | Patrick Tjin <pattjin@google.com> | 2014-07-21 22:02:58 -0700 |
| commit | 57cb3a01a71aa5fa60c3e6ebd377a5242b2d8998 (patch) | |
| tree | e22a7462f0b45a27e5514c4f1f92398f7b4cc863 /videocodec | |
| parent | 92d8196604e8dca16fb6cc73e4b6660db7ec3731 (diff) | |
| download | android_hardware_intel_common_omx-components-57cb3a01a71aa5fa60c3e6ebd377a5242b2d8998.tar.gz android_hardware_intel_common_omx-components-57cb3a01a71aa5fa60c3e6ebd377a5242b2d8998.tar.bz2 android_hardware_intel_common_omx-components-57cb3a01a71aa5fa60c3e6ebd377a5242b2d8998.zip | |
Port DRM patches from Merrifield to Moorfield
BZ: 184811
Includes the following patches
Increased the buffer size and fix the Klocwork issues patch 175806
new flag for drmScheme and stop playback during cleanup patch 177481
Change-Id: Ib00338c9956afa3e89b5c8a62669a6fc917e2b65
Signed-off-by: Jack W. Lix <Jackx.w.lix@intel.com>
Diffstat (limited to 'videocodec')
| -rw-r--r-- | videocodec/securevideo/moorefield/OMXVideoDecoderAVCSecure.cpp | 38 | ||||
| -rw-r--r-- | videocodec/securevideo/moorefield/OMXVideoDecoderAVCSecure.h | 3 |
2 files changed, 28 insertions, 13 deletions
diff --git a/videocodec/securevideo/moorefield/OMXVideoDecoderAVCSecure.cpp b/videocodec/securevideo/moorefield/OMXVideoDecoderAVCSecure.cpp index c391e42..cf477c4 100644 --- a/videocodec/securevideo/moorefield/OMXVideoDecoderAVCSecure.cpp +++ b/videocodec/securevideo/moorefield/OMXVideoDecoderAVCSecure.cpp @@ -114,9 +114,17 @@ OMX_ERRORTYPE OMXVideoDecoderAVCSecure::ProcessorDeinit(void) { // Session should be torn down in ProcessorStop, delayed to ProcessorDeinit // to allow remaining frames completely rendered. LOGI("Calling Drm_DestroySession."); - uint32_t sepres = drm_destroy_session(WV_SESSION_ID); - if (sepres != 0) { - LOGW("Drm_DestroySession returns %#x", sepres); + if (mDrmScheme == DRM_SCHEME_WV_CLASSIC) { + uint32_t sepres = drm_destroy_session(WV_SESSION_ID); + if (sepres != 0) { + LOGW("Drm_DestroySession returns %#x", sepres); + } + } + else if(mDrmScheme == DRM_SCHEME_WV_MODULAR) { + uint32_t ret = drm_wv_mod_stop_playback(WV_SESSION_ID); + if (ret != DRM_WV_MOD_SUCCESS) { + LOGW("Modular WV - drm_wv_mod_stop_playback returns %#x", ret); + } } return OMXVideoDecoderBase::ProcessorDeinit(); } @@ -226,15 +234,10 @@ OMX_ERRORTYPE OMXVideoDecoderAVCSecure::PrepareConfigBuffer(VideoConfigBuffer *p } OMX_ERRORTYPE OMXVideoDecoderAVCSecure::PrepareClassicWVDecodeBuffer(OMX_BUFFERHEADERTYPE *buffer, buffer_retain_t *retain, VideoDecodeBuffer *p){ - OMX_ERRORTYPE ret; - // OMX_BUFFERFLAG_CODECCONFIG is an optional flag - // if flag is set, buffer will only contain codec data. + OMX_ERRORTYPE ret = OMX_ErrorNone; + - if (buffer->nFlags & OMX_BUFFERFLAG_CODECCONFIG) { - LOGV("Received AVC codec data."); - return ret; - } p->flag |= HAS_COMPLETE_FRAME; if (buffer->nOffset != 0) { @@ -333,10 +336,21 @@ OMX_ERRORTYPE OMXVideoDecoderAVCSecure::PrepareDecodeBuffer(OMX_BUFFERHEADERTYPE } DataBuffer *dataBuffer = (DataBuffer *)buffer->pBuffer; - if(dataBuffer->drmScheme == DRM_SCHEME_WV_CLASSIC) + if(dataBuffer->drmScheme == DRM_SCHEME_WV_CLASSIC){ + + // OMX_BUFFERFLAG_CODECCONFIG is an optional flag + // if flag is set, buffer will only contain codec data. + mDrmScheme = DRM_SCHEME_WV_CLASSIC; + if (buffer->nFlags & OMX_BUFFERFLAG_CODECCONFIG) { + LOGV("Received AVC codec data."); + return ret; + } return PrepareClassicWVDecodeBuffer(buffer, retain, p); - else if(dataBuffer->drmScheme == DRM_SCHEME_WV_MODULAR) + } + else if(dataBuffer->drmScheme == DRM_SCHEME_WV_MODULAR) { + mDrmScheme = DRM_SCHEME_WV_MODULAR; return PrepareModularWVDecodeBuffer(buffer, retain, p); + } return ret; } diff --git a/videocodec/securevideo/moorefield/OMXVideoDecoderAVCSecure.h b/videocodec/securevideo/moorefield/OMXVideoDecoderAVCSecure.h index 0d8d028..f9eaa8c 100644 --- a/videocodec/securevideo/moorefield/OMXVideoDecoderAVCSecure.h +++ b/videocodec/securevideo/moorefield/OMXVideoDecoderAVCSecure.h @@ -62,7 +62,7 @@ private: // OMX_PARAM_PORTDEFINITIONTYPE INPORT_MIN_BUFFER_COUNT = 1, INPORT_ACTUAL_BUFFER_COUNT = 5, - INPORT_BUFFER_SIZE = 1382400, + INPORT_BUFFER_SIZE = 1572864, // for OMX_VIDEO_PARAM_INTEL_AVC_DECODE_SETTINGS // default number of reference frame @@ -73,6 +73,7 @@ private: }; OMX_VIDEO_PARAM_AVCTYPE mParamAvc; + uint32_t mDrmScheme; struct IMRSlot { uint32_t offset; |
