[gst-devel] pipeline locked at the end of preroll

Sébastien Moutte sebastien at moutte.net
Wed Dec 14 00:54:04 CET 2005


Hi all,
i'm still working on directdraw sink for win32.
I've overwritten buffer_alloc to use directdraw surfaces as buffers, it 
works fine without queue element in the pipeline and the pipeline uses 
only 2 directdraw surfaces as buffers from the sink.
But when i'm using a queue just before the sink or before 
ffmpegcolorspace, i'm getting locked in gst_queue_chain by g_cond_wait 
(queue->item_del, queue->qlock); at line 690 of gstqueue.c.
The queue seems to be full and it waits for some space to push the 
buffer ...
It comes just after returning a buffer from the overwrite of 
buffer_alloc. The queue has already requested 17 buffers.

Any idea of what's wrong ?

Sebastien.

pipeline is >gst-launch-0.10 --gst-debug-level=5 -v filesrc 
location=/sample.ogg ! oggdemux ! theoradec ! ffmpegcolorspace ! queue ! 
directdrawsink
and here is a part lasts outputs i'm getting :
DEBUG (00D4CE58 - 0:00:10.625000000) ←[00;04m default←[00m(←[335m 
3784←[00m) ←[00;04m(0)::<ffmpegcolorspace0>←[00m input si
ze 262656, input unit size 262656
DEBUG (00D4CE58 - 0:00:10.625000000) ←[00;04m default←[00m(←[335m 
3784←[00m) ←[00;04m(0)::<ffmpegcolorspace0>←[00m get size
returned cached 2 700416
DEBUG (00D4CE58 - 0:00:10.625000000) ←[00;04m default←[00m(←[335m 
3784←[00m) ←[00;04m(0)::<ffmpegcolorspace0>←[00m transfor
med size to 700416
LOG (00D4CE58 - 0:00:10.625000000) ←[00;01;34m GST_CAPS←[00m(←[335m 
3784←[00m) ←[00;01;34m(0)::←[00m 020AA708 21->22
LOG (00D4CE58 - 0:00:10.625000000) ←[00;01;31;44m 
GST_REFCOUNTING←[00m(←[335m 3784←[00m) 
←[00;01;31;44m(0)::<queue0:sink>←[00m 00
D3C210 ref 1->2
DEBUG (00D4CE58 - 0:00:10.625000000) ←[00;01;37;41m GST_PADS←[00m(←[335m 
3784←[00m) ←[00;01;37;41m(0)::<ffmpegcolorspace0:sr
c>←[00m calling bufferallocfunc &gst_queue_bufferalloc (@018BF57C) of 
peer pad queue0:sink for size 700416 offset 16
LOG (00D4CE58 - 0:00:10.625000000) ←[00;01;31;44m 
GST_REFCOUNTING←[00m(←[335m 3784←[00m) 
←[00;01;31;44m(0)::<directdrawsink0:sink
 >←[00m 00D3D010 ref 2->3
DEBUG (00D4CE58 - 0:00:10.625000000) ←[00;01;37;41m GST_PADS←[00m(←[335m 
3784←[00m) ←[00;01;37;41m(0)::<queue0:src>←[00m cal
ling bufferallocfunc &gst_base_sink_pad_buffer_alloc (@018BF40C) of peer 
pad directdrawsink0:sink for size 700416 offset 16
LOG (00D4CE58 - 0:00:10.625000000) ←[00;01;31;44m 
GST_REFCOUNTING←[00m(←[335m 3784←[00m) 
←[00;01;31;44m(0)::<directdrawsink0>←[00
m 00D3CA18 ref 20->21
DEBUG (00D4CE58 - 0:00:10.625000000) ←[00;04m default←[00m(←[335m 
3784←[00m) ←[00;04m(0)::←[00m a buffer of 700416 bytes wa
s requested with caps 020AA708 and offset 16
LOG (00D4CE58 - 0:00:10.625000000) ←[00;01;34m GST_CAPS←[00m(←[335m 
3784←[00m) ←[00;01;34m(0)::←[00m 020AA708 22->23
LOG (00D4CE58 - 0:00:10.625000000) ←[00;01;34m GST_CAPS←[00m(←[335m 
3784←[00m) ←[00;01;34m(0)::←[00m 020AA708 23->22
breakpointLOG (00D4CE58 - 0:00:10.625000000) ←[00;01;31;44m 
GST_REFCOUNTING←[00m(←[335m 3784←[00m) ←[00;01;31;44m(0)::<directdraw
sink0>←[00m 00D3CA18 unref 21->20
LOG (00D4CE58 - 0:00:10.625000000) ←[00;01;31;44m 
GST_REFCOUNTING←[00m(←[335m 3784←[00m) 
←[00;01;31;44m(0)::<directdrawsink0:sink
 >←[00m 00D3D010 unref 3->2
LOG (00D4CE58 - 0:00:10.625000000) ←[00;01;31;44m 
GST_REFCOUNTING←[00m(←[335m 3784←[00m) 
←[00;01;31;44m(0)::<queue0:sink>←[00m 00
D3C210 unref 2->1
LOG (00D4CE58 - 0:00:10.625000000) ←[00;01;34m GST_CAPS←[00m(←[335m 
3784←[00m) ←[00;01;34m(0)::←[00m 020AA708 22->21
DEBUG (00D4CE58 - 0:00:10.625000000) ←[00;04m default←[00m(←[335m 
3784←[00m) ←[00;04m(0)::←[00m from 0 -> to 9
DEBUG (00D4CE58 - 0:00:10.640625000) ←[00;04m default←[00m(←[335m 
3784←[00m) ←[00;04m(0)::←[00m from 0 -> to 9 done
LOG (00D4CE58 - 0:00:10.640625000) ←[00;01;31;44m 
GST_REFCOUNTING←[00m(←[335m 3784←[00m) ←[00;01;31;44m(0)::←[00m 00D52FF8 
unref
1->0
LOG (00D4CE58 - 0:00:10.640625000) ←[00;01;42m GST_BUFFER←[00m(←[335m 
3784←[00m) ←[00;01;42m(0)::←[00m finalize 00D52FF8
LOG (00D4CE58 - 0:00:10.640625000) ←[00;01;34m GST_CAPS←[00m(←[335m 
3784←[00m) ←[00;01;34m(0)::←[00m 020A9558 4->3
LOG (00D4CE58 - 0:00:10.640625000) ←[00;01;31;44m 
GST_REFCOUNTING←[00m(←[335m 3784←[00m) 
←[00;01;31;44m(0)::<queue0:sink>←[00m 00
D3C210 ref 1->2
LOG (00D4CE58 - 0:00:10.640625000) ←[00;01;35m 
GST_SCHEDULING←[00m(←[335m 3784←[00m) ←[00;01;35m(0)::<queue0:sink>←[00m 
calling
chainfunction &gst_queue_chain of pad queue0:sink
LOG (00D4CE58 - 0:00:10.640625000) ←[00m queue_dataflow←[00m(←[335m 
3784←[00m) ←[00m(0)::<queue0>←[00m locking qlock from thread
00D4CE58
LOG (00D4CE58 - 0:00:10.640625000) ←[00m queue_dataflow←[00m(←[335m 
3784←[00m) ←[00m(0)::<queue0>←[00m locked qlock from thread
00D4CE58
LOG (00D4CE58 - 0:00:10.640625000) ←[00m queue_dataflow←[00m(←[335m 
3784←[00m) ←[00m(0)::<queue0>←[00m adding buffer 020A9938 of
size 700416
LOG (00D4CE58 - 0:00:10.640625000) ←[00m queue_dataflow←[00m(←[335m 
3784←[00m) ←[00m(0)::<queue0>←[00m unlocking qlock from thre
ad 00D4CE58
LOG (00D4CE58 - 0:00:10.640625000) ←[00m queue_dataflow←[00m(←[335m 
3784←[00m) ←[00m(0)::<queue0>←[00m locking qlock from thread
00D4CE58
LOG (00D4CE58 - 0:00:10.640625000) ←[00m queue_dataflow←[00m(←[335m 
3784←[00m) ←[00m(0)::<queue0>←[00m locked qlock from thread
00D4CE58
LOG (00D4CE58 - 0:00:10.640625000) ←[00m queue_dataflow←[00m(←[335m 
3784←[00m) ←[00m(0)::<queue0>←[00m (queue0:sink) pre-full wa
it: 15 of 0-200 buffers, 10506240 of 0-10485760 bytes, 600000000 of 
0-1000000000 ns, 15 elements
LOG (00D4CE58 - 0:00:10.640625000) ←[00m queue_dataflow←[00m(←[335m 
3784←[00m) ←[00m(0)::<queue0>←[00m (queue0:sink) waiting for
item_del signal from thread using qlock: 15 of 0-200 buffers, 10506240 
of 0-10485760 bytes, 600000000 of 0-1000000000 ns, 15 elements





More information about the gstreamer-devel mailing list