GNOME Bugzilla – Bug 335863
collectpads loops when pads are blocked
Last modified: 2006-08-29 15:01:49 UTC
This appears in the log forever DEBUG (0x80500a8 - 0:00:03.750757000) collectpads(24354) gstcollectpads.c(644):gst_collect_pads_is_collected: All active pads (2) have data, calling gst_adder_collected DEBUG (0x80500a8 - 0:00:03.750926000) collectpads(24354) gstcollectpads.c(644):gst_collect_pads_is_collected: All active pads (2) have data, calling gst_adder_collected There are two audiotestsrc elements connected to the adder. One has its pad blocked. Shoudn't collectpads check for blocked pads?
Created attachment 61926 [details] example showing the problem run as: GST_DEBUG="*:2,coll*:4" ./states1b and wait a couple of second, until it blocks the src-pad of one sine-generator.
to looping happens if I set the element with the blocked-pad to STATE_READY, if it is STATE_PAUSED the above does not happen. Still this blocks the whole pipeline. Adder (or more specifically CollectPads) does not ignore blocked-pads and thus blocks itself.
Created attachment 62282 [details] another variant still not be able to silence one source and keep the pipeline running
Adder blocks as long as no data is received on all pads. Deliberatly blocking dataflow on one pad by using a pad block somewhere upstream is one way of not feeding data to adder. Adder can and should not check if some upstream element happens to be pad-blocked. If part of the upstream pipeline should not be mixed, the adder sinkpad should be released.