[gst-devel] staved loop function of leaky queue

ensonic ensonic at hora-obscura.de
Fri Jan 5 16:13:38 CET 2007


hi,

when I use a leaky queue, can a busy source starve the task that drives the
loop function (that in turn pushes to the sink?)

I run a pipeline like this:
GST_DEBUG="xvimagesink:3,queue*:4,task:4" gst-launch-0.10 -t v4l2src !
video/x-raw-yuv,width=176,height=144,framerate='(fraction)'15/1 ! queue
leaky=1 max-size-buffers=15 max-size-time=0 max-size-bytes=0 ! xvimagesink
sync=false qos=false

The problem is that under heavy load the v4l2src captures at a higher rate
than the the xvimagesink can render. When I run the above pipline,
xvimagesink is rendering nothing. The loop-function of the queue is run
just once. I added some logging to task.c and its only the v4l2src task
that is running continously.

Any ideas?

Stefan

Pipeline is live and does not need PREROLL ...
DEBUG (0x8fec0 - 0:00:01.923187000)                 task( 1437)
gsttask.c(154):gst_task_func: Entering task 0x8e450, thread 0x8fec0
DEBUG (0x85650 - 0:00:01.924377000)                queue( 1436)
gstqueue.c(870):gst_queue_loop:<queue0> done g_cond_wait using qlock from
thread 0x85650
DEBUG (0x85650 - 0:00:01.924774000)       queue_dataflow( 1436)
gstqueue.c(770):gst_queue_push_one:<queue0> retrieved data 0x26b50 from
queue
DEBUG (0x85650 - 0:00:01.925384000)                queue( 1436)
gstqueue.c(887):gst_queue_loop:<queue0> task 0x85650 interation done
DEBUG (0x85650 - 0:00:01.925965000)                queue( 1436)
gstqueue.c(847):gst_queue_loop:<queue0> task 0x85650 interation started

DEBUG (0x85650 - 0:00:01.926301000)                queue( 1436)
gstqueue.c(861):gst_queue_loop:<queue0> doing g_cond_wait using qlock from
thread 0x85650
Setting pipeline to PLAYING ...
New clock: GstSystemClock
DEBUG (0x85650 - 0:00:02.031433000)                queue( 1436)
gstqueue.c(870):gst_queue_loop:<queue0> done g_cond_wait using qlock from
thread 0x85650
DEBUG (0x85650 - 0:00:02.031830000)       queue_dataflow( 1436)
gstqueue.c(770):gst_queue_push_one:<queue0> retrieved data 0x59aa0 from
queue
INFO  (0x85650 - 0:00:02.148011000)          xvimagesink( 1436)
xvimagesink.c(2047):gst_xvimagesink_show_frame:<xvimagesink0> slow copy
into bufferpool buffer
INFO  (0x85650 - 0:00:02.158508000)          xvimagesink( 1436)
xvimagesink.c(2078):gst_xvimagesink_show_frame:<xvimagesink0> fimage
rendered
DEBUG (0x8fec0 - 0:00:03.189636000)       queue_dataflow( 1437)
gstqueue.c(645):gst_queue_chain:<queue0> queue is full, leaking buffer on
upstream end
DEBUG (0x8fec0 - 0:00:03.258088000)       queue_dataflow( 1437)
gstqueue.c(645):gst_queue_chain:<queue0> queue is full, leaking buffer on
upstream end
DEBUG (0x8fec0 - 0:00:03.326477000)       queue_dataflow( 1437)
gstqueue.c(645):gst_queue_chain:<queue0> queue is full, leaking buffer on
upstream end
DEBUG (0x8fec0 - 0:00:03.395081000)       queue_dataflow( 1437)
gstqueue.c(645):gst_queue_chain:<queue0> queue is full, leaking buffer on
upstream end
DEBUG (0x8fec0 - 0:00:03.463227000)       queue_dataflow( 1437)
gstqueue.c(645):gst_queue_chain:<queue0> queue is full, leaking buffer on
upstream end
DEBUG (0x8fec0 - 0:00:03.531616000)       queue_dataflow( 1437)
gstqueue.c(645):gst_queue_chain:<queue0> queue is full, leaking buffer on
upstream end
D





More information about the gstreamer-devel mailing list