summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Karasangabo <olivier@lineageos.org>2017-11-08 10:47:40 +0100
committerOlivier Karasangabo <olivier@lineageos.org>2017-11-08 10:47:40 +0100
commit75cd7e88ba66bf68baedc72e26edf68649963ef1 (patch)
treea15a389fe201d584cd06f23848c0555c5d759139
parent1afe59f2c64a8ada01cee675efe88d23a201956b (diff)
parent0ac114a146f7fd0e5366fb2864cc0933a6127392 (diff)
downloadandroid_hardware_qcom_media-lineage-15.0-caf-8994.tar.gz
android_hardware_qcom_media-lineage-15.0-caf-8994.tar.bz2
android_hardware_qcom_media-lineage-15.0-caf-8994.zip
Merge remote-tracking branch 'caf/LA.BF64.1.2.3_rb1.17' into HEADlineage-15.0-caf-8994
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp12
-rw-r--r--mm-video-v4l2/vidc/venc/src/omx_video_base.cpp5
-rw-r--r--mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp14
3 files changed, 22 insertions, 9 deletions
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
index 60aa2b0a..d1311f6c 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
@@ -6708,6 +6708,8 @@ OMX_ERRORTYPE omx_vdec::set_callbacks(OMX_IN OMX_HANDLETYPE hComp,
OMX_ERRORTYPE omx_vdec::component_deinit(OMX_IN OMX_HANDLETYPE hComp)
{
(void) hComp;
+ OMX_ERRORTYPE nRet = OMX_ErrorNone;
+ OMX_BUFFERHEADERTYPE *buffer;
#ifdef _ANDROID_
if (iDivXDrmDecrypt) {
delete iDivXDrmDecrypt;
@@ -6725,14 +6727,16 @@ OMX_ERRORTYPE omx_vdec::component_deinit(OMX_IN OMX_HANDLETYPE hComp)
}
/*Check if the output buffers have to be cleaned up*/
- if (m_out_mem_ptr) {
+ buffer = client_buffers.get_il_buf_hdr();
+ if (buffer) {
DEBUG_PRINT_LOW("Freeing the Output Memory");
for (i = 0; i < drv_ctx.op_buf.actualcount; i++ ) {
if (BITMASK_PRESENT(&m_out_bm_count, i)) {
BITMASK_CLEAR(&m_out_bm_count, i);
- client_buffers.free_output_buffer (&m_out_mem_ptr[i]);
+ nRet = client_buffers.free_output_buffer (buffer+i);
+ if (OMX_ErrorNone != nRet)
+ break;
}
-
if (release_output_done()) {
break;
}
@@ -10434,6 +10438,8 @@ OMX_ERRORTYPE omx_vdec::allocate_color_convert_buf::free_output_buffer(
if (enabled && omx->is_component_secure())
return OMX_ErrorNone;
if (!allocated_count || !bufhdr) {
+ for (unsigned i = 0; i < omx->drv_ctx.op_buf.actualcount; i++)
+ omx->free_output_buffer(&omx->m_out_mem_ptr[i]);
DEBUG_PRINT_ERROR("Color convert no buffer to be freed %p",bufhdr);
return OMX_ErrorBadParameter;
}
diff --git a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
index aef3387e..3d413bc3 100644
--- a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
+++ b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
@@ -1485,6 +1485,11 @@ OMX_ERRORTYPE omx_video::get_parameter(OMX_IN OMX_HANDLETYPE hComp,
(unsigned int)m_sOutPortDef.nBufferSize, (unsigned int)m_sOutPortDef.nBufferCountMin,
(unsigned int)m_sOutPortDef.nBufferCountActual);
memcpy(portDefn, &m_sOutPortDef, sizeof(m_sOutPortDef));
+
+ if (secure_session) {
+ portDefn->nBufferSize =
+ sizeof(native_handle_t) + (sizeof(int) * (1/*numFds*/ + 3/*numInts*/));
+ }
} else {
DEBUG_PRINT_ERROR("ERROR: GetParameter called on Bad Port Index");
eRet = OMX_ErrorBadPortIndex;
diff --git a/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp b/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp
index c25bc8ca..f59187ef 100644
--- a/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp
+++ b/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp
@@ -2027,16 +2027,18 @@ OMX_ERRORTYPE omx_venc::component_deinit(OMX_IN OMX_HANDLETYPE hComp)
}
/*Check if the input buffers have to be cleaned up*/
- if (m_inp_mem_ptr
+ OMX_BUFFERHEADERTYPE* ptr = m_inp_mem_ptr;
#ifdef _ANDROID_ICS_
- && !meta_mode_enable
+ if (meta_mode_enable) {
+ ptr = meta_buffer_hdr;
+ }
#endif
- ) {
+ if (ptr) {
DEBUG_PRINT_LOW("Freeing the Input Memory");
for (i=0; i<m_sInPortDef.nBufferCountActual; i++ ) {
if (BITMASK_PRESENT(&m_inp_bm_count, i)) {
BITMASK_CLEAR(&m_inp_bm_count, i);
- free_input_buffer (&m_inp_mem_ptr[i]);
+ free_input_buffer(ptr + i);
}
if (release_input_done()) {
@@ -2044,8 +2046,8 @@ OMX_ERRORTYPE omx_venc::component_deinit(OMX_IN OMX_HANDLETYPE hComp)
}
}
-
- free(m_inp_mem_ptr);
+ if (m_inp_mem_ptr != meta_buffer_hdr)
+ free(m_inp_mem_ptr);
m_inp_mem_ptr = NULL;
}