GNOME Bugzilla – Bug 706278
different sinkpad's caps handling in Funnel
Last modified: 2013-08-21 06:22:27 UTC
Created attachment 252169 [details] [review] patch of funnel element Overview: In case of funnel has multiple sinkpads and each of them has a different caps. Downstream element did not aware of the difference of the caps information. Thus I push GST_EVENT_CAPS before push the buffer data. Then, downstream element can aware of the actual caps information. Besides, It can turn on/off by setting 'RENEW_CAPS' property value. please refer this. http://gstreamer-devel.966125.n4.nabble.com/Need-advice-with-using-funnel-on-multi-subtitle-stream-td4661542.html Actual Results: Downstream element can get actual caps information Expected Results: Downstream element can get actual caps information Build Date & Platform: Build 2013-08-17 on Linux
*** Bug 706189 has been marked as a duplicate of this bug. ***
Review of attachment 252169 [details] [review]: ::: plugins/elements/gstfunnel.c @@ +286,3 @@ if (funnel->last_sinkpad != pad) { gst_object_replace ((GstObject **) & funnel->last_sinkpad, GST_OBJECT (pad)); These lines here and the one below should already do what you want. If the buffer comes from a pad different than the last, it should push out the sticky event from this pad, including the caps. Anyway, having a property for this is just wrong, the sticky events (including the caps, stream-start, segment, tags, etc) should always match the buffer being pushed out.
Can you provide a testcase that reproduces the broken behaviour you observe? funnel should in theory already do the right thing, whenever the active pad switches it will forward all sticky events from the new pad... which would make sure that the correct caps are set.
Olivier Crete is right. I tested latest version of funnel and It works well. Sticky event handle it in correct way. I fount that I had been using little old version of gstreamer (1.0.6). I am sorry to confuse you.