Commit 7ec35b11 authored by Edgard Gusmão Lima's avatar Edgard Gusmão Lima
Browse files

sys/v4l2/v4l2src_calls.c: Fixes "v4l2src ! queue ! xvimagesink". The queue ask...

sys/v4l2/v4l2src_calls.c: Fixes "v4l2src ! queue ! xvimagesink". The queue ask for buffer too early. It is temporary ...

Original commit message from CVS:

* sys/v4l2/v4l2src_calls.c: (gst_v4l2src_grab_frame):
Fixes "v4l2src ! queue ! xvimagesink". The queue ask for buffer too
early. It is temporary until we find something better.
parent 56e63b44
2007-10-22 Edgard Lima <edgard.lima@indt.org.br>
* sys/v4l2/v4l2src_calls.c: (gst_v4l2src_grab_frame):
Fixes "v4l2src ! queue ! xvimagesink". The queue ask for buffer too
early. It is temporary until we find something better.
2007-10-22 Wim Taymans <wim.taymans@gmail.com>
 
Patch by: Tommi Myöhänen <ext-tommi dot myohanen at nokia dot com>
......
......@@ -942,15 +942,26 @@ gst_v4l2src_grab_frame (GstV4l2Src * v4l2src, GstBuffer ** buf)
}
}
g_mutex_lock (v4l2src->pool->lock);
do {
index = buffer.index;
g_mutex_lock (v4l2src->pool->lock);
index = buffer.index;
/* get our GstBuffer with that index from the pool, if the buffer was
* outstanding we have a serious problem. */
pool_buffer = GST_BUFFER (v4l2src->pool->buffers[index]);
if (pool_buffer == NULL) {
g_mutex_unlock (v4l2src->pool->lock);
g_usleep (20000); /* wait 20 miliseconds */
/* FIXME: we need a exit condition here */
} else {
break;
}
} while (TRUE);
/* get our GstBuffer with that index from the pool, if the buffer was
* outstanding we have a serious problem. */
pool_buffer = GST_BUFFER (v4l2src->pool->buffers[index]);
if (pool_buffer == NULL)
goto no_buffer;
GST_LOG_OBJECT (v4l2src, "grabbed buffer %p at index %d", pool_buffer, index);
......@@ -1036,7 +1047,7 @@ too_many_trials:
NUM_TRIALS, v4l2src->v4l2object->videodev, g_strerror (errno)));
return GST_FLOW_ERROR;
}
no_buffer:
#if 0
{
GST_ELEMENT_ERROR (v4l2src, RESOURCE, FAILED,
(_("Failed trying to get video frames from device '%s'."),
......@@ -1045,6 +1056,7 @@ no_buffer:
g_mutex_unlock (v4l2src->pool->lock);
return GST_FLOW_ERROR;
}
#endif
/*
qbuf_failed:
{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment