summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (from parent 1: cc42ba9)
raw | patch | inline | side by side (from parent 1: cc42ba9)
author | Pradeep Venkatasubbarao <pradeepv@ti.com> | |
Tue, 11 Mar 2014 12:45:41 +0000 (18:15 +0530) | ||
committer | Pradeep Venkatasubbarao <pradeepv@ti.com> | |
Tue, 11 Mar 2014 12:45:41 +0000 (18:15 +0530) |
Fix for issue OMAPS00301600.
The output buffers need to be locked (pinned to tiler) before calling
VIDDEC3_process.
Earlier this call, dce_buf_lock, was getting called much earlier.
So, in case of an error scenario, the buffers were not being unlocked
as dce_buf_unlock was not getting called.
This patch fixes the issue by defering the locking call till
before calling VIDDEC3_process.
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
The output buffers need to be locked (pinned to tiler) before calling
VIDDEC3_process.
Earlier this call, dce_buf_lock, was getting called much earlier.
So, in case of an error scenario, the buffers were not being unlocked
as dce_buf_unlock was not getting called.
This patch fixes the issue by defering the locking call till
before calling VIDDEC3_process.
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
src/gstducatividdec.c | patch | blob | history |
diff --git a/src/gstducatividdec.c b/src/gstducatividdec.c
index 687b0e54cbc134b1a1e56cf876c4f98704e03df4..3b3c9db48bad7fccea6db791ad17990508872935 100644 (file)
--- a/src/gstducatividdec.c
+++ b/src/gstducatividdec.c
GstClockTime t;
GstBuffer *outbuf = NULL;
gint i;
+ SizeT fd;
GstDucatiVidDecClass *klass = GST_DUCATIVIDDEC_GET_CLASS (self);
GstFlowReturn ret = GST_FLOW_OK;
if (flow_ret)
memset (&self->outArgs->outputID, 0, sizeof (self->outArgs->outputID));
memset (&self->outArgs->freeBufID, 0, sizeof (self->outArgs->freeBufID));
+ /* Get dmabuf fd of the buffer to lock it*/
+ fd = gst_dma_buf_get_fd(gst_buffer_get_dma_buf((GstBuffer *) self->inArgs->inputID));
+ /* Must lock all the buffer passed to ducati */
+ dce_buf_lock(1,&fd);
+
GST_DEBUG ("Calling VIDDEC3_process");
t = gst_util_get_timestamp ();
err = VIDDEC3_process (self->codec,
* things in case we need to renegotiate */
self->inArgs->inputID =
codec_prepare_outbuf (self, &outbuf, self->first_out_buffer);
- /* Get dmabuf fd of the buffer to lock it*/
- fd = gst_dma_buf_get_fd(gst_buffer_get_dma_buf((GstBuffer *) self->inArgs->inputID));
- /* Must lock all the buffer passed to ducati */
- dce_buf_lock(1,&fd);
if (!self->inArgs->inputID) {
GST_ERROR_OBJECT (self, "could not prepare output buffer");
gst_buffer_unref (buf);