summaryrefslogtreecommitdiffstats
path: root/mm-video-v4l2/vidc/vdec
diff options
context:
space:
mode:
authorBalamurugan Alagarsamy <balaga@codeaurora.org>2014-10-31 23:27:44 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2014-11-07 07:34:44 -0800
commit5889621aa910af7addb97003e2355b2ed039fdc6 (patch)
treef38b737898967817c338c65db2603106e109d9bc /mm-video-v4l2/vidc/vdec
parent721ff44741b74736eead7fbad9c541506a700768 (diff)
downloadandroid_hardware_qcom_media-5889621aa910af7addb97003e2355b2ed039fdc6.tar.gz
android_hardware_qcom_media-5889621aa910af7addb97003e2355b2ed039fdc6.tar.bz2
android_hardware_qcom_media-5889621aa910af7addb97003e2355b2ed039fdc6.zip
mm-video: Release driver buffers correctly
Release driver buffers when all component buffers are released. This is needed as component may transition back to idle state from loaded state, and prepare_buf will fail if the buffers are not unregistered from driver. Change-Id: Ie25eaf7287ff05b5f403d0463eff83020716c9f9
Diffstat (limited to 'mm-video-v4l2/vidc/vdec')
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp4
1 files changed, 4 insertions, 0 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 e9f60e68..9dbe9de5 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
@@ -5746,6 +5746,8 @@ OMX_ERRORTYPE omx_vdec::free_buffer(OMX_IN OMX_HANDLETYPE hComp,
/*Free the Buffer Header*/
if (release_input_done())
{
+ if ((!m_pSwVdec) || (m_swvdec_mode == SWVDEC_MODE_DECODE_ONLY))
+ release_buffers(this, VDEC_BUFFER_TYPE_INPUT);
DEBUG_PRINT_HIGH("ALL input buffers are freed/released");
free_input_buffer_header();
}
@@ -5780,6 +5782,8 @@ OMX_ERRORTYPE omx_vdec::free_buffer(OMX_IN OMX_HANDLETYPE hComp,
if (release_output_done())
{
+ if ((!m_pSwVdec) || (m_swvdec_mode == SWVDEC_MODE_DECODE_ONLY))
+ release_buffers(this, VDEC_BUFFER_TYPE_OUTPUT);
free_output_buffer_header();
if (m_swvdec_mode == SWVDEC_MODE_DECODE_ONLY)
{