diff options
author | Santhosh Behara <santhoshbehara@codeaurora.org> | 2017-08-04 10:58:14 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-08-04 10:58:14 +0000 |
commit | 6f6c32203829ef34eadf942ed9036103e5ad7b66 (patch) | |
tree | 1c90acfea57bbd444fcca358c1ab82b7846e26fb /msm8998 | |
parent | ce6c63ac672340f897f527081a80c9cde0c8b3ed (diff) | |
parent | f317b501353b02968a8c38c79649a9eaa2e9d667 (diff) | |
download | media-6f6c32203829ef34eadf942ed9036103e5ad7b66.tar.gz |
Merge "mm-video-v4l2: vdec: change notify flush done to client" into oc-dr1-dev
am: f317b50135
Change-Id: I2034c234abc9606cf9c42439dfcf8c9dec260e1f
Diffstat (limited to 'msm8998')
-rw-r--r-- | msm8998/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h | 1 | ||||
-rw-r--r-- | msm8998/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp | 56 |
2 files changed, 41 insertions, 16 deletions
diff --git a/msm8998/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h b/msm8998/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h index 75cfa06..8ae35a4 100644 --- a/msm8998/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h +++ b/msm8998/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h @@ -674,6 +674,7 @@ class omx_vdec: public qc_omx_component bool execute_omx_flush(OMX_U32); bool execute_output_flush(); bool execute_input_flush(); + void notify_flush_done(void *ctxt); OMX_ERRORTYPE empty_buffer_done(OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE * buffer); diff --git a/msm8998/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/msm8998/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp index 13e8e36..52905d0 100644 --- a/msm8998/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp +++ b/msm8998/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp @@ -1584,14 +1584,8 @@ void omx_vdec::process_event_cb(void *ctxt, unsigned char id) pThis->omx_report_error (); } else { /*Check if we need generate event for Flush done*/ - if (BITMASK_PRESENT(&pThis->m_flags, - OMX_COMPONENT_INPUT_FLUSH_PENDING)) { - BITMASK_CLEAR (&pThis->m_flags,OMX_COMPONENT_INPUT_FLUSH_PENDING); - DEBUG_PRINT_LOW("Input Flush completed - Notify Client"); - pThis->m_cb.EventHandler(&pThis->m_cmp, pThis->m_app_data, - OMX_EventCmdComplete,OMX_CommandFlush, - OMX_CORE_INPUT_PORT_INDEX,NULL ); - } + pThis->notify_flush_done(ctxt); + if (BITMASK_PRESENT(&pThis->m_flags, OMX_COMPONENT_IDLE_PENDING)) { if (pThis->stream_off(OMX_CORE_INPUT_PORT_INDEX)) { @@ -1625,14 +1619,8 @@ void omx_vdec::process_event_cb(void *ctxt, unsigned char id) pThis->omx_report_error (); } else { /*Check if we need generate event for Flush done*/ - if (BITMASK_PRESENT(&pThis->m_flags, - OMX_COMPONENT_OUTPUT_FLUSH_PENDING)) { - DEBUG_PRINT_LOW("Notify Output Flush done"); - BITMASK_CLEAR (&pThis->m_flags,OMX_COMPONENT_OUTPUT_FLUSH_PENDING); - pThis->m_cb.EventHandler(&pThis->m_cmp, pThis->m_app_data, - OMX_EventCmdComplete,OMX_CommandFlush, - OMX_CORE_OUTPUT_PORT_INDEX,NULL ); - } + pThis->notify_flush_done(ctxt); + if (BITMASK_PRESENT(&pThis->m_flags, OMX_COMPONENT_OUTPUT_FLUSH_IN_DISABLE_PENDING)) { DEBUG_PRINT_LOW("Internal flush complete"); @@ -3504,6 +3492,42 @@ bool omx_vdec::execute_input_flush() return bRet; } +/*========================================================================= +FUNCTION : notify_flush_done + +DESCRIPTION +Notifies flush done to the OMX Client. + +PARAMETERS +ctxt -- Context information related to the self.. + +RETURN VALUE +NONE +==========================================================================*/ +void omx_vdec::notify_flush_done(void *ctxt) { + + omx_vdec *pThis = (omx_vdec *) ctxt; + + if (!pThis->input_flush_progress && !pThis->output_flush_progress) { + if (BITMASK_PRESENT(&pThis->m_flags, + OMX_COMPONENT_OUTPUT_FLUSH_PENDING)) { + DEBUG_PRINT_LOW("Notify Output Flush done"); + BITMASK_CLEAR (&pThis->m_flags,OMX_COMPONENT_OUTPUT_FLUSH_PENDING); + pThis->m_cb.EventHandler(&pThis->m_cmp, pThis->m_app_data, + OMX_EventCmdComplete,OMX_CommandFlush, + OMX_CORE_OUTPUT_PORT_INDEX,NULL ); + } + + if (BITMASK_PRESENT(&pThis->m_flags, + OMX_COMPONENT_INPUT_FLUSH_PENDING)) { + BITMASK_CLEAR (&pThis->m_flags,OMX_COMPONENT_INPUT_FLUSH_PENDING); + DEBUG_PRINT_LOW("Input Flush completed - Notify Client"); + pThis->m_cb.EventHandler(&pThis->m_cmp, pThis->m_app_data, + OMX_EventCmdComplete,OMX_CommandFlush, + OMX_CORE_INPUT_PORT_INDEX,NULL ); + } + } +} /* ====================================================================== FUNCTION |