GNOME Bugzilla – Bug 312901
Random linking/unlinking doesn't work
Last modified: 2006-03-10 16:43:22 UTC
Attached is a testcase that does random links/unlinks. The goal is to toggle visualizations of an audio track in runtime, I can't get the testcase much simpler than this. When playing, the toggle works, and pausing works, also. Now, the problem comes when doing either together: (start) - toggle off - play - toggle on: hangs, with: (gdb) thread apply all bt
+ Trace 62293
or (start) - play - pause - toggle off - play - pause - toggle on - play: ERROR (0x9496330 - 0:00:23.524412000) basesink( 3126) gstbasesink.c(518):gst_base_sink_handle_object:<xvimagesink0> received buffer without a discont
Created attachment 50397 [details] testcase Compile using: gcc -o vis vis.c $(pkg-config --cflags --libs gtk+-2.0 gstreamer-0.9) Run using: ./vis /path/to/vorbis-file.ogg
linking/unlinking at runtime breaks streaming. The proper way to dynamically relink is to block the pad so no dataflow happens, then relink. Also newsegments get lost when pushed on an unlinked pad, this could be fixed by resending the newsegment when the pad is linked.
fine, can you update my example to reflect that? I have no idea what you mean and will most likely produce another non-working example, either because of my ignorance or because of core bugs.
see playbin in 0.10.4 to do on-the-fly switching of vis-plugins, can't update example since goom is so broken :(.