summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSurajit Podder <spodder@codeaurora.org>2016-08-12 19:58:38 +0530
committerAdrian DC <radian.dc@gmail.com>2016-12-04 15:56:16 +0100
commit428198693f188780a54b4081344d7592c60b897a (patch)
tree5df95df77bfc95d7066ad31efefaac2b6db73f3b
parentf90479dd1394148538fa9d8c00192d53898ec932 (diff)
downloadandroid_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.h1
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp6
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) {