diff options
| author | Andy Qiu <junhai.qiu@intel.com> | 2013-07-16 15:09:21 -0700 |
|---|---|---|
| committer | Patrick Tjin <pattjin@google.com> | 2014-07-21 22:02:52 -0700 |
| commit | 27b6ed6d5d3a9b3f19ab1b10aa308a7dedb7cb83 (patch) | |
| tree | ae7009358b5d9197163de314c2ee0fe447ba45b0 /videocodec/securevideo | |
| parent | aaefabb42927db20baba7e55bf7e16e607e581e2 (diff) | |
| download | android_hardware_intel_common_omx-components-27b6ed6d5d3a9b3f19ab1b10aa308a7dedb7cb83.tar.gz android_hardware_intel_common_omx-components-27b6ed6d5d3a9b3f19ab1b10aa308a7dedb7cb83.tar.bz2 android_hardware_intel_common_omx-components-27b6ed6d5d3a9b3f19ab1b10aa308a7dedb7cb83.zip | |
Don't disable display IED after protected session is created
BZ: 106070
In CTP display iED was disabled to address RGB overlay issue. This approach is no longer needed
with MDS/Stagefright/HWC workaround - when video is being prepared overlay will be
disabled temporarily.
This patch also cleans up code formatting issue.
Change-Id: I691353feca60ab2f3d1f2ed59e8d1458b5dd647a
Signed-off-by: Andy Qiu <junhai.qiu@intel.com>
Reviewed-on: http://android.intel.com:8080/119103
Tested-by: Post, DavidX J <davidx.j.post@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'videocodec/securevideo')
| -rw-r--r-- | videocodec/securevideo/merrifield/OMXVideoDecoderAVCSecure.cpp | 73 |
1 files changed, 36 insertions, 37 deletions
diff --git a/videocodec/securevideo/merrifield/OMXVideoDecoderAVCSecure.cpp b/videocodec/securevideo/merrifield/OMXVideoDecoderAVCSecure.cpp index 82ae149..b6a96d4 100644 --- a/videocodec/securevideo/merrifield/OMXVideoDecoderAVCSecure.cpp +++ b/videocodec/securevideo/merrifield/OMXVideoDecoderAVCSecure.cpp @@ -144,7 +144,7 @@ OMX_ERRORTYPE OMXVideoDecoderAVCSecure::ProcessorStart(void) { } LOGI("drm_wv_create_session: sessionID = %#x", sessionID); - drmCommandNone(mDrmDevFd, DRM_PSB_HDCP_DISPLAY_IED_OFF); + //drmCommandNone(mDrmDevFd, DRM_PSB_HDCP_DISPLAY_IED_OFF); int ret; struct sigevent sev; @@ -270,7 +270,7 @@ OMX_ERRORTYPE OMXVideoDecoderAVCSecure::PrepareDecodeBuffer(OMX_BUFFERHEADERTYPE p->flag |= HAS_COMPLETE_FRAME; if (buffer->nOffset != 0) { - LOGW("buffer offset %d is not zero!!!", buffer->nOffset); + LOGW("buffer offset %lu is not zero!!!", buffer->nOffset); } IMRDataBuffer *imrBuffer = (IMRDataBuffer *)buffer->pBuffer; @@ -278,41 +278,40 @@ OMX_ERRORTYPE OMXVideoDecoderAVCSecure::PrepareDecodeBuffer(OMX_BUFFERHEADERTYPE p->data = imrBuffer->data + buffer->nOffset; p->size = buffer->nFilledLen; } else { - imrBuffer->size = NALU_BUFFER_SIZE; - struct drm_wv_nalu_headers nalu_headers; - nalu_headers.p_enc_ciphertext = imrBuffer->data; - - // TODO: NALU Buffer is supposed to be 4k but using 1k, fix it once chaabi fix is there - - nalu_headers.hdrs_buf_len = 1024; - nalu_headers.frame_size = buffer->nFilledLen; - // Make sure that NALU header frame size is 16 bytes aligned - nalu_headers.frame_size = (nalu_headers.frame_size + 0xF) & (~0xF); - // Use same video buffer to fill NALU headers returned by chaabi, - // Adding 4 because the first 4 bytes after databuffer will be used to store length of NALU headers - nalu_headers.p_hdrs_buf = (uint8_t *)(imrBuffer->data + nalu_headers.frame_size + 4); - nalu_headers.parse_size = buffer->nFilledLen; - - uint32_t res = drm_wv_return_naluheaders(WV_SESSION_ID, &nalu_headers); - if (res == DRM_FAIL_FW_SESSION || !nalu_headers.hdrs_buf_len) { - LOGW("Drm_WV_ReturnNALUHeaders failed. Session is disabled."); - mSessionPaused = true; - ret = OMX_ErrorNotReady; - } else if (res != 0) { - mSessionPaused = false; - LOGE("Drm_WV_ReturnNALUHeaders failed. Error = %#x, frame_size: %d, len = %d", res, nalu_headers.frame_size, buffer->nFilledLen); - ret = OMX_ErrorHardware; - } else { - mSessionPaused = false; - LOGE("Drm_WV_ReturnNALUHeaders Succeeded. ret = %#x, NALU HDR Len: %d, Input frame_size: %#x ", res, nalu_headers.hdrs_buf_len, nalu_headers.frame_size); - // NALU headers are appended to encrypted video bitstream - // |...encrypted video bitstream (16 bytes aligned)...| 4 bytes of header size |...NALU headers..| - uint32_t *ptr = (uint32_t*)(imrBuffer->data + nalu_headers.frame_size); - *ptr = nalu_headers.hdrs_buf_len; - p->data = imrBuffer->data; - p->size = nalu_headers.frame_size; - p->flag |= IS_SECURE_DATA; - } + imrBuffer->size = NALU_BUFFER_SIZE; + struct drm_wv_nalu_headers nalu_headers; + nalu_headers.p_enc_ciphertext = imrBuffer->data; + + // TODO: NALU Buffer is supposed to be 4k but using 1k, fix it once chaabi fix is there + + nalu_headers.hdrs_buf_len = 1024; + nalu_headers.frame_size = buffer->nFilledLen; + // Make sure that NALU header frame size is 16 bytes aligned + nalu_headers.frame_size = (nalu_headers.frame_size + 0xF) & (~0xF); + // Use same video buffer to fill NALU headers returned by chaabi, + // Adding 4 because the first 4 bytes after databuffer will be used to store length of NALU headers + nalu_headers.p_hdrs_buf = (uint8_t *)(imrBuffer->data + nalu_headers.frame_size + 4); + nalu_headers.parse_size = buffer->nFilledLen; + + uint32_t res = drm_wv_return_naluheaders(WV_SESSION_ID, &nalu_headers); + if (res == DRM_FAIL_FW_SESSION || !nalu_headers.hdrs_buf_len) { + LOGW("Drm_WV_ReturnNALUHeaders failed. Session is disabled."); + mSessionPaused = true; + ret = OMX_ErrorNotReady; + } else if (res != 0) { + mSessionPaused = false; + LOGE("Drm_WV_ReturnNALUHeaders failed. Error = %#x, frame_size: %d, len = %lu", res, nalu_headers.frame_size, buffer->nFilledLen); + ret = OMX_ErrorHardware; + } else { + mSessionPaused = false; + // NALU headers are appended to encrypted video bitstream + // |...encrypted video bitstream (16 bytes aligned)...| 4 bytes of header size |...NALU headers..| + uint32_t *ptr = (uint32_t*)(imrBuffer->data + nalu_headers.frame_size); + *ptr = nalu_headers.hdrs_buf_len; + p->data = imrBuffer->data; + p->size = nalu_headers.frame_size; + p->flag |= IS_SECURE_DATA; + } } // reset IMR size |
