diff options
author | Surajit Podder <spodder@codeaurora.org> | 2016-08-12 19:58:38 +0530 |
---|---|---|
committer | Adrian DC <radian.dc@gmail.com> | 2016-12-04 15:56:16 +0100 |
commit | 428198693f188780a54b4081344d7592c60b897a (patch) | |
tree | 5df95df77bfc95d7066ad31efefaac2b6db73f3b | |
parent | f90479dd1394148538fa9d8c00192d53898ec932 (diff) | |
download | android_hardware_qcom_media-428198693f188780a54b4081344d7592c60b897a.tar.gz android_hardware_qcom_media-428198693f188780a54b4081344d7592c60b897a.tar.bz2 android_hardware_qcom_media-428198693f188780a54b4081344d7592c60b897a.zip |
mm-video-v4l2: Add separate lock for buffers
Add buf_lock to to protect buffers rather than
m_lock.
RM-290
Change-Id: I0152746ea912afd28213364a2267f38b54577b53
-rw-r--r-- | mm-video-v4l2/vidc/vdec/inc/omx_vdec.h | 1 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp | 6 |
2 files changed, 5 insertions, 2 deletions
diff --git a/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h b/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h index dd114020..a692fd79 100644 --- a/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h +++ b/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h @@ -811,6 +811,7 @@ class omx_vdec: public qc_omx_component //************************************************************* pthread_mutex_t m_lock; pthread_mutex_t c_lock; + pthread_mutex_t buf_lock; //sem to handle the minimum procesing of commands sem_t m_cmd_lock; sem_t m_safe_flush; diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp index 60bc154c..b8cf9ddd 100644 --- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp +++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp @@ -772,6 +772,7 @@ omx_vdec::omx_vdec(): m_error_propogated(false), m_vendor_config.pData = NULL; pthread_mutex_init(&m_lock, NULL); pthread_mutex_init(&c_lock, NULL); + pthread_mutex_init(&buf_lock, NULL); sem_init(&m_cmd_lock,0,0); sem_init(&m_safe_flush, 0, 0); streaming[CAPTURE_PORT] = @@ -911,6 +912,7 @@ omx_vdec::~omx_vdec() close(drv_ctx.video_driver_fd); pthread_mutex_destroy(&m_lock); pthread_mutex_destroy(&c_lock); + pthread_mutex_destroy(&buf_lock); sem_destroy(&m_cmd_lock); if (perf_flag) { DEBUG_PRINT_HIGH("--> TOTAL PROCESSING TIME"); @@ -6024,7 +6026,7 @@ OMX_ERRORTYPE omx_vdec::free_input_buffer(OMX_BUFFERHEADERTYPE *bufferHdr) index = bufferHdr - m_inp_mem_ptr; DEBUG_PRINT_LOW("Free Input Buffer index = %d",index); - auto_lock l(&m_lock); + auto_lock l(&buf_lock); bufferHdr->pInputPortPrivate = NULL; if (index < drv_ctx.ip_buf.actualcount && drv_ctx.ptr_inputbuffer) { @@ -7105,7 +7107,7 @@ OMX_ERRORTYPE omx_vdec::empty_this_buffer_proxy(OMX_IN OMX_HANDLETYPE hComp, return OMX_ErrorNone; } - auto_lock l(&m_lock); + auto_lock l(&buf_lock); temp_buffer = (struct vdec_bufferpayload *)buffer->pInputPortPrivate; if (!temp_buffer || (temp_buffer - drv_ctx.ptr_inputbuffer) > (int)drv_ctx.ip_buf.actualcount) { |