summaryrefslogtreecommitdiffstats
path: root/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2014-12-12 23:04:33 -0800
committerSteve Kondik <steve@cyngn.com>2014-12-12 23:04:33 -0800
commit2abb33ec180a25b162eb06b7c32baa615ff49dbc (patch)
treeb7a03dafbdf3f9259a9ce97da0d2851e8abd8594 /mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp
parentb12418fcf3844e8b82c18f3a9ddf27f0ab4bb44c (diff)
parent4fb0150cb9bda76c99593290707d61d0b3de7da1 (diff)
downloadandroid_hardware_qcom_media-2abb33ec180a25b162eb06b7c32baa615ff49dbc.tar.gz
android_hardware_qcom_media-2abb33ec180a25b162eb06b7c32baa615ff49dbc.tar.bz2
android_hardware_qcom_media-2abb33ec180a25b162eb06b7c32baa615ff49dbc.zip
Merge branch 'LA.BF.1.1_rb1.14' of git://codeaurora.org/platform/hardware/qcom/media into cm-12.0
Diffstat (limited to 'mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp')
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp
index 58419f95..bb589859 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp
@@ -1013,6 +1013,7 @@ void omx_vdec::process_event_cb(void *ctxt, unsigned char id)
if (p2 == OMX_CORE_OUTPUT_PORT_INDEX && pThis->m_swvdec_mode == SWVDEC_MODE_DECODE_ONLY)
{
DEBUG_PRINT_LOW("send all interm buffers to dsp after port enabled");
+ pThis->m_fill_internal_bufers = OMX_TRUE;
pThis->fill_all_buffers_proxy_dsp(&pThis->m_cmp);
}
pThis->m_cb.EventHandler(&pThis->m_cmp, pThis->m_app_data,\
@@ -6233,6 +6234,7 @@ true/false
OMX_ERRORTYPE omx_vdec::fill_this_buffer(OMX_IN OMX_HANDLETYPE hComp,
OMX_IN OMX_BUFFERHEADERTYPE* buffer)
{
+ unsigned int nPortIndex = (unsigned int)(buffer - client_buffers.get_il_buf_hdr());
if(m_state == OMX_StateInvalid)
{
DEBUG_PRINT_ERROR("FTB in Invalid State");
@@ -6245,7 +6247,6 @@ OMX_ERRORTYPE omx_vdec::fill_this_buffer(OMX_IN OMX_HANDLETYPE hComp,
return OMX_ErrorIncorrectStateOperation;
}
- unsigned int nPortIndex = (unsigned int)(buffer - client_buffers.get_il_buf_hdr());
if (!buffer || !buffer->pBuffer || nPortIndex >= drv_ctx.op_buf.actualcount)
{
DEBUG_PRINT_ERROR("ERROR:FTB invalid bufHdr %p, nPortIndex %u", buffer, nPortIndex);
@@ -9904,6 +9905,7 @@ OMX_ERRORTYPE omx_vdec::fill_all_buffers_proxy_dsp(OMX_HANDLETYPE hComp)
{
DEBUG_PRINT_ERROR("fill_this_buffer_proxy_dsp failed for buff %d bufHdr %p pBuffer %p",
idx, bufHdr, bufHdr->pBuffer);
+ pthread_mutex_unlock(&m_lock);
break;
}
}
@@ -9948,8 +9950,11 @@ OMX_ERRORTYPE omx_vdec::fill_this_buffer_proxy_dsp(
nPortIndex = buffer-((OMX_BUFFERHEADERTYPE *)m_interm_mem_ptr);
- if (bufferAdd == NULL || nPortIndex > drv_ctx.interm_op_buf.actualcount)
+ if (bufferAdd == NULL || nPortIndex > drv_ctx.interm_op_buf.actualcount) {
+ DEBUG_PRINT_ERROR("FTBProxyDSP: bufhdr = %p, nPortIndex %u bufCount %u",
+ bufferAdd, nPortIndex, drv_ctx.interm_op_buf.actualcount);
return OMX_ErrorBadParameter;
+ }
DEBUG_PRINT_LOW("fill_this_buffer_proxy_dsp: bufhdr = %p,pBuffer = %p, idx %d, state %d",
bufferAdd, bufferAdd->pBuffer, nPortIndex, m_interm_buf_state[nPortIndex]);
@@ -10569,7 +10574,8 @@ bool omx_vdec::execute_output_flush_dsp()
}
}
m_interm_flush_dsp_progress = false;
- m_fill_internal_bufers = OMX_TRUE;
+ if (!in_reconfig)
+ m_fill_internal_bufers = OMX_TRUE;
pthread_mutex_unlock(&m_lock);
for (idx = 0; idx < (int)drv_ctx.interm_op_buf.actualcount; idx++)