GNOME Bugzilla – Bug 673211
[0.10] playsink should push events on all its internal sinks
Last modified: 2012-04-23 21:21:00 UTC
Playsink overrides GstBin's send_event function to push events to its internal sinks until one successfully handles the event. This behaviour works for playbin2's use cases, but it won't work for scenarios where different demuxers have their branches linked to playsink, as it happens with GES. GES currently hacks around this in its gestimelinepipeline class.
Created attachment 210998 [details] [review] playsink: add send-event-mode property Adds a property for playsink to define how it should handle events sent in send_event function. The default is the same as GstBin's, sending events to all internal sinks. There is also mode-first, that will send to sinks until the one handles the event successfully.
Created attachment 210999 [details] [review] playbin2: Use new playsink send-event-mode property Set playsink's send-event-mode to MODE_FIRST as playbin2 only needs one event going to the demuxer for its operation
Created attachment 211000 [details] [review] ges: timeline-pipeline: Remove playsink send_event hack This is fixed now in upstream playsink, remove the hack
Review of attachment 210998 [details] [review]: Looks good in general. What should be the "preview" mode? Please push this to 0.10 and master (0.11) after addressing the comment below ::: gst/playback/gstplaysink.c @@ +80,3 @@ + "mode-default"}, + {MODE_FIRST, "Sends the event to sinks until the first one handles it", + "mode-first"}, The last fields of the GEnumValue struct can simple be "default" and "first". Less annoying to use :)
This is now fixed.