After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 706278 - different sinkpad's caps handling in Funnel
different sinkpad's caps handling in Funnel
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
git master
Other Linux
: Normal major
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
: Wonchul (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2013-08-19 00:37 UTC by Wonchul Lee
Modified: 2013-08-21 06:22 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
patch of funnel element (4.36 KB, patch)
2013-08-19 00:37 UTC, Wonchul Lee
rejected Details | Review

Description Wonchul Lee 2013-08-19 00:37:32 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
Comment 1 Wonchul Lee 2013-08-19 00:40:33 UTC
*** Bug 706189 has been marked as a duplicate of this bug. ***
Comment 2 Olivier Crête 2013-08-19 01:34:10 UTC
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.
Comment 3 Sebastian Dröge (slomo) 2013-08-19 08:24:39 UTC
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.
Comment 4 Wonchul Lee 2013-08-21 02:21:12 UTC
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.