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 540645 - caps are renegotiated a lot
caps are renegotiated a lot
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
git master
Other Linux
: Normal normal
: NONE
Assigned To: Stefan Sauer (gstreamer, gtkdoc dev)
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2008-06-28 17:33 UTC by Stefan Sauer (gstreamer, gtkdoc dev)
Modified: 2010-07-16 08:25 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
test application (4.65 KB, text/plain)
2008-06-28 21:12 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
  Details
test application (5.32 KB, text/plain)
2008-06-29 09:55 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
  Details
seq chart for 48 getcaps calls (41.69 KB, image/png)
2008-06-29 10:00 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
  Details
seq chart for 144 getcaps calls (110.69 KB, image/png)
2008-06-29 10:03 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
  Details
cache _getcaps results for tee (5.63 KB, patch)
2008-06-29 13:04 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
none Details | Review
cache _getcaps results for adder (6.03 KB, patch)
2008-06-29 13:04 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
none Details | Review
cache _getcaps results for tee (6.55 KB, patch)
2008-06-29 13:49 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
none Details | Review
cache _getcaps results for tee (6.61 KB, patch)
2008-06-29 13:50 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
rejected Details | Review
cache _getcaps results for adder (5.71 KB, patch)
2008-08-01 13:26 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
none Details | Review
cache _getcaps results for tee (6.54 KB, patch)
2008-08-03 18:22 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
none Details | Review
cache _getcaps results for adder (5.73 KB, patch)
2008-08-07 07:37 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
needs-work Details | Review
cache _getcaps results for tee (6.63 KB, patch)
2008-08-07 17:44 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
needs-work Details | Review

Description Stefan Sauer (gstreamer, gtkdoc dev) 2008-06-28 17:33:51 UTC
As a sequel to Bug 316248. Linking works, but getting to playing takes ages.
Comment 1 Stefan Sauer (gstreamer, gtkdoc dev) 2008-06-28 17:34:07 UTC
Example:
  • #0 __kernel_vsyscall
  • #1 __lll_lock_wait
    from /lib/tls/i686/cmov/libpthread.so.0
  • #2 _L_lock_95
    from /lib/tls/i686/cmov/libpthread.so.0
  • #3 pthread_mutex_lock
    from /lib/tls/i686/cmov/libpthread.so.0
  • #4 gst_proxy_pad_get_target
    at gstghostpad.c line 367
  • #5 gst_proxy_pad_do_getcaps
    at gstghostpad.c line 224
  • #6 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #7 gst_pad_get_caps
    at gstpad.c line 2061
  • #8 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #9 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #10 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #11 gst_pad_get_caps
    at gstpad.c line 2061
  • #12 gst_proxy_pad_do_getcaps
    at gstghostpad.c line 230
  • #13 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #14 gst_pad_get_caps
    at gstpad.c line 2061
  • #15 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #16 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #17 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #18 gst_pad_get_caps
    at gstpad.c line 2061
  • #19 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #20 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #21 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #22 gst_pad_get_caps
    at gstpad.c line 2061
  • #23 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #24 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #25 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #26 gst_pad_get_caps
    at gstpad.c line 2061
  • #27 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #28 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #29 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #30 gst_pad_get_caps
    at gstpad.c line 2061
  • #31 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #32 ??
    from /usr/lib/gstreamer-0.10/libgstadder.so
  • #33 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #34 gst_pad_get_caps
    at gstpad.c line 2061
  • #35 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #36 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #37 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #38 gst_pad_get_caps
    at gstpad.c line 2061
  • #39 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #40 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #41 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #42 gst_pad_get_caps
    at gstpad.c line 2061
  • #43 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #44 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #45 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #46 gst_pad_get_caps
    at gstpad.c line 2061
  • #47 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #48 intersect_caps_func
    at gstutils.c line 2449
  • #49 gst_iterator_fold
    at gstiterator.c line 503
  • #50 gst_pad_proxy_getcaps
    at gstutils.c line 2497
  • #51 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #52 gst_pad_get_caps
    at gstpad.c line 2061
  • #53 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #54 gst_queue_getcaps
    at gstqueue.c line 446
  • #55 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #56 gst_pad_get_caps
    at gstpad.c line 2061
  • #57 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #58 intersect_caps_func
    at gstutils.c line 2449
  • #59 gst_iterator_fold
    at gstiterator.c line 503
  • #60 gst_pad_proxy_getcaps
    at gstutils.c line 2497
  • #61 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #62 gst_pad_get_caps
    at gstpad.c line 2061
  • #63 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #64 gst_queue_getcaps
    at gstqueue.c line 446
  • #65 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #66 gst_pad_get_caps
    at gstpad.c line 2061
  • #67 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #68 intersect_caps_func
    at gstutils.c line 2449
  • #69 gst_iterator_fold
    at gstiterator.c line 503
  • #70 gst_pad_proxy_getcaps
    at gstutils.c line 2497
  • #71 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #72 gst_pad_get_caps
    at gstpad.c line 2061
  • #73 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #74 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #75 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #76 gst_pad_get_caps
    at gstpad.c line 2061
  • #77 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #78 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #79 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #80 gst_pad_get_caps
    at gstpad.c line 2061
  • #81 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #82 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #83 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #84 gst_pad_get_caps
    at gstpad.c line 2061
  • #85 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #86 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #87 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #88 gst_pad_get_caps
    at gstpad.c line 2061
  • #89 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #90 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #91 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #92 gst_pad_get_caps
    at gstpad.c line 2061
  • #93 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #94 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #95 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #96 gst_pad_get_caps
    at gstpad.c line 2061
  • #97 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #98 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #99 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #100 gst_pad_get_caps
    at gstpad.c line 2061
  • #101 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #102 gst_queue_getcaps
    at gstqueue.c line 446
  • #103 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #104 gst_pad_get_caps
    at gstpad.c line 2061
  • #105 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #106 intersect_caps_func
    at gstutils.c line 2449
  • #107 gst_iterator_fold
    at gstiterator.c line 503
  • #108 gst_pad_proxy_getcaps
    at gstutils.c line 2497
  • #109 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #110 gst_pad_get_caps
    at gstpad.c line 2061
  • #111 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #112 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #113 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #114 gst_pad_get_caps
    at gstpad.c line 2061
  • #115 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #116 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #117 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #118 gst_pad_get_caps
    at gstpad.c line 2061
  • #119 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #120 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #121 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #122 gst_pad_get_caps
    at gstpad.c line 2061
  • #123 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #124 intersect_caps_func
    at gstutils.c line 2449
  • #125 gst_iterator_fold
    at gstiterator.c line 503
  • #126 gst_pad_proxy_getcaps
    at gstutils.c line 2497
  • #127 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #128 gst_pad_get_caps
    at gstpad.c line 2061
  • #129 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #130 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #131 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #132 gst_pad_get_caps
    at gstpad.c line 2061
  • #133 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #134 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #135 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #136 gst_pad_get_caps
    at gstpad.c line 2061
  • #137 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #138 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #139 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #140 gst_pad_get_caps
    at gstpad.c line 2061
  • #141 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #142 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #143 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #144 gst_pad_get_caps
    at gstpad.c line 2061
  • #145 gst_proxy_pad_do_getcaps
    at gstghostpad.c line 230
  • #146 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #147 gst_pad_get_caps
    at gstpad.c line 2061
  • #148 gst_pad_peer_get_caps
    at gstpad.c line 2101
  • #149 gst_base_transform_getcaps
    at gstbasetransform.c line 555
  • #150 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #151 gst_pad_get_caps
    at gstpad.c line 2061
  • #152 gst_proxy_pad_do_getcaps
    at gstghostpad.c line 230
  • #153 gst_pad_get_caps_unlocked
    at gstpad.c line 1977
  • #154 gst_pad_link
    at gstpad.c line 1647
  • #155 gst_ghost_pad_set_target
    at gstghostpad.c line 1066
  • #156 ??
    from /usr/lib/gstreamer-0.10/libgstautodetect.so
  • #157 ??
    from /usr/lib/gstreamer-0.10/libgstautodetect.so
  • #158 gst_element_change_state
    at gstelement.c line 2425
  • #159 gst_element_set_state_func
    at gstelement.c line 2375
  • #160 gst_element_set_state
    at gstelement.c line 2278
  • #161 gst_bin_change_state_func
    at gstbin.c line 1933
  • #162 gst_element_change_state
    at gstelement.c line 2425
  • #163 gst_element_set_state_func
    at gstelement.c line 2375
  • #164 gst_element_set_state
    at gstelement.c line 2278
  • #165 gst_bin_change_state_func
    at gstbin.c line 1933
  • #166 gst_pipeline_change_state
    at gstpipeline.c line 463
  • #167 gst_element_change_state
    at gstelement.c line 2425
  • #168 gst_element_set_state_func
    at gstelement.c line 2375
  • #169 gst_element_set_state
    at gstelement.c line 2278
  • #170 bt_song_stop
    at song.c line 784
  • #171 on_menu_stop_activate
    at main-menu.c line 420
  • #172 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #173 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #174 ??
    from /usr/lib/libgobject-2.0.so.0
  • #175 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #176 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #177 closure_accel_activate
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkwidget.c line 4091
  • #178 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #179 ??
    from /usr/lib/libgobject-2.0.so.0
  • #180 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #181 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #182 IA__gtk_accel_group_activate
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkaccelgroup.c line 739
  • #183 IA__gtk_accel_groups_activate
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkaccelgroup.c line 777
  • #184 IA__gtk_window_activate_key
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkwindow.c line 8006
  • #185 gtk_window_key_press_event
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkwindow.c line 4962
  • #186 _gtk_marshal_BOOLEAN__BOXED
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkmarshalers.c line 84
  • #187 ??
    from /usr/lib/libgobject-2.0.so.0
  • #188 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #189 ??
    from /usr/lib/libgobject-2.0.so.0
  • #190 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #191 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #192 gtk_widget_event_internal
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkwidget.c line 4678
  • #193 IA__gtk_propagate_event
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkmain.c line 2310
  • #194 IA__gtk_main_do_event
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkmain.c line 1556
  • #195 gdk_event_dispatch
    at /build/buildd/gtk+2.0-2.12.9/gdk/x11/gdkevents-x11.c line 2351
  • #196 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #197 ??
    from /usr/lib/libglib-2.0.so.0
  • #198 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #199 IA__gtk_main
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkmain.c line 1163
  • #200 bt_main_window_run
    at main-window.c line 389
  • #201 bt_edit_application_run_ui
    at edit-application.c line 193
  • #202 bt_edit_application_run
    at edit-application.c line 467
  • #203 main
    at bt-edit.c line 147

Comment 2 Stefan Sauer (gstreamer, gtkdoc dev) 2008-06-28 21:12:37 UTC
Created attachment 113582 [details]
test application

I tried adding gst_tee_src_getcaps() to tee. Similar to what Wim did in Bug #316248 for adder. It does not show obvious improvement though :/ I also tried to keep a copy of the peercaps and taking shortcuts it they have not changed. Unfortunaly I still need to request them that for and thsi triggers the machinery ...

I belive the main issue is that _getcaps() is called so many times:
5 x for tee:src0
8 x for tee:src1

I also wonder why gst_pad_proxy_getcaps runs 3 times for tee:sink.
Comment 3 Stefan Sauer (gstreamer, gtkdoc dev) 2008-06-29 09:55:09 UTC
Created attachment 113597 [details]
test application

I made the example a bit smaller. it now builds:
src ! tee ! queue1 ! adder
       t. ! queue2 ! a.
Comment 4 Stefan Sauer (gstreamer, gtkdoc dev) 2008-06-29 09:58:50 UTC
I have added some loggin to adder/tee/queue and gst-utils::gst_pad_proxy_getcaps(). Based on that I can capture a log of the negotiation process. I wrote a perl script that parses the log and translates it to a format understood by a java-sequence chart generator.

I also can easily grep for the number of _getcaps() calls. And this puzzles me - for the attached testapp, the number of getcaps() calls is 48, but sometimes its 144! I am attaching two images.

Comment 5 Stefan Sauer (gstreamer, gtkdoc dev) 2008-06-29 09:59:34 UTC
Comment on attachment 113582 [details]
test application

obsolete
Comment 6 Stefan Sauer (gstreamer, gtkdoc dev) 2008-06-29 10:00:36 UTC
Created attachment 113599 [details]
seq chart for 48 getcaps calls
Comment 7 Stefan Sauer (gstreamer, gtkdoc dev) 2008-06-29 10:03:04 UTC
Created attachment 113603 [details]
seq chart for 144 getcaps calls

both sequences start the same and they only differ when the short one ends.
Comment 8 Stefan Sauer (gstreamer, gtkdoc dev) 2008-06-29 13:04:21 UTC
Created attachment 113612 [details] [review]
cache _getcaps results for tee
Comment 9 Stefan Sauer (gstreamer, gtkdoc dev) 2008-06-29 13:04:56 UTC
Created attachment 113613 [details] [review]
cache _getcaps results for adder
Comment 10 Stefan Sauer (gstreamer, gtkdoc dev) 2008-06-29 13:49:54 UTC
Created attachment 113615 [details] [review]
cache _getcaps results for tee
Comment 11 Stefan Sauer (gstreamer, gtkdoc dev) 2008-06-29 13:50:19 UTC
Created attachment 113616 [details] [review]
cache _getcaps results for tee
Comment 12 Wim Taymans 2008-07-01 15:50:27 UTC
The idea is that getcaps always goes in one direction, I don't think proxy_getcaps does that correctly.
Comment 13 Stefan Sauer (gstreamer, gtkdoc dev) 2008-08-01 13:26:52 UTC
Created attachment 115680 [details] [review]
cache _getcaps results for adder

Update patch after formatting change. Only cache fixed caps.
Comment 14 Stefan Sauer (gstreamer, gtkdoc dev) 2008-08-01 13:30:31 UTC
Uploaded the wrong patch for tee. Will update the patch too and reupload.
Comment 15 Stefan Sauer (gstreamer, gtkdoc dev) 2008-08-03 18:22:56 UTC
Created attachment 115785 [details] [review]
cache _getcaps results for tee

Also here, only cache fixed caps.
Comment 16 Stefan Sauer (gstreamer, gtkdoc dev) 2008-08-07 07:37:19 UTC
Created attachment 116032 [details] [review]
cache _getcaps results for adder

fix double unlock
Comment 17 Stefan Sauer (gstreamer, gtkdoc dev) 2008-08-07 17:44:43 UTC
Created attachment 116084 [details] [review]
cache _getcaps results for tee
Comment 18 Stefan Sauer (gstreamer, gtkdoc dev) 2008-08-19 19:57:38 UTC
In answer to comment #12. Thats not the problem here.

      FX1
- T <     >  A -
      FX2

Problem is that when T -> FX1 is negotiated, it negotiates FX1 -> A, then A -> FX2  and FX2 -> T and then it locks.

We could explot some facts:
* tee and adder need to have the same format for all request pads
* if we have queried t.src to negotiate t.sink1 we can use the same to t.sink2 if t.src has not changed

What does the patch change:
* it caches caps to avoid calling _getcaps()
* it does not merge caps for all request pads as they must be the same anyway



Comment 19 Stefan Sauer (gstreamer, gtkdoc dev) 2008-08-31 18:09:28 UTC
I works for my usecase, but as people have commented on irc, it breaks reverse negotiation. This is a testcase. Making the window of ximagesink smaller should make reverse negotiate with videtestsrc, so that the video files ximagesink and the video in xvimagesink should become coarse.

gst-launch videotestsrc ! tee name=t ! queue ! xvimagesink t. ! queue ! ffmpegcolorspace ! ximagesink
Comment 20 Stefan Sauer (gstreamer, gtkdoc dev) 2008-10-11 14:56:39 UTC
Actually wims latest commit to core fixed it. So could we review this again?

Date:           Fri Oct 10 2008  15:27:52 UTC

Log message:
* gst/gstpad.c: (gst_pad_get_range), (gst_pad_pull_range):
Revert a patch from 21 months ago that broke caps negotiation in pull
mode. Basically, having a buffer pass over a pad will trigger the
setcaps function when caps change, just like in push mode.
Comment 21 Stefan Sauer (gstreamer, gtkdoc dev) 2008-10-12 18:54:41 UTC
False alarm. I had the patch deactivated :(.
Comment 22 Wim Taymans 2009-08-21 10:26:12 UTC
is this fixed with recent optimisations to caps negotiation?
Comment 23 Wim Taymans 2009-12-11 17:29:00 UTC
Is this fixed with the recent fix to proxy_getcaps() ?
Comment 24 Tobias Mueller 2010-03-18 23:03:41 UTC
Stefan, could you comment on Wims question? TIA!
Comment 25 Tobias Mueller 2010-05-03 23:48:50 UTC
Reopening as I can't see any open non developer question.
Comment 26 Stefan Sauer (gstreamer, gtkdoc dev) 2010-07-16 08:25:06 UTC
I mark this as fixed:
$ GST_DEBUG_NO_COLOR=1 GST_DEBUG="GST_PAD*:4" ./negotiate 2>debug.log
$ grep "proxying getcaps" debug.log  | wc -l
13

and the 13 is constant.