aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack W. Lix <Jackx.w.lix@intel.com>2014-04-04 15:47:52 -0700
committerPatrick Tjin <pattjin@google.com>2014-07-21 22:02:58 -0700
commit57cb3a01a71aa5fa60c3e6ebd377a5242b2d8998 (patch)
treee22a7462f0b45a27e5514c4f1f92398f7b4cc863
parent92d8196604e8dca16fb6cc73e4b6660db7ec3731 (diff)
downloadandroid_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>
-rw-r--r--videocodec/securevideo/moorefield/OMXVideoDecoderAVCSecure.cpp38
-rw-r--r--videocodec/securevideo/moorefield/OMXVideoDecoderAVCSecure.h3
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;