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 745366 - concat: Forward FLUSH_START / FLUSH_STOP events
concat: Forward FLUSH_START / FLUSH_STOP events
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
git master
Other Linux
: Normal normal
: 1.5.2
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-03-01 12:42 UTC by Carlos Rafael Giani
Modified: 2015-06-10 09:52 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Patch for flush events in concat (1.09 KB, patch)
2015-03-01 12:42 UTC, Carlos Rafael Giani
none Details | Review
Patch for flush events in concat, v2 (1.54 KB, patch)
2015-03-28 21:49 UTC, Carlos Rafael Giani
committed Details | Review

Description Carlos Rafael Giani 2015-03-01 12:42:28 UTC
Created attachment 298204 [details] [review]
Patch for flush events in concat

Currently, the concat element is not forwarding the FLUSH_START/FLUSH_STOP events in its sink event handler. This causes problems when seeking in PAUSED state (the pipeline deadlocks). By forwarding events, seeking while paused becomes possible again.
Comment 1 Sebastian Dröge (slomo) 2015-03-04 10:41:45 UTC
Comment on attachment 298204 [details] [review]
Patch for flush events in concat

I think it should only do that for the currently active pad, and also only forward seek events to the currently active pad.
Comment 2 Carlos Rafael Giani 2015-03-28 21:49:32 UTC
Created attachment 300525 [details] [review]
Patch for flush events in concat, v2

Added checks to see if the pad the flush events come from is the active one.
As for seek, I believe the check is there in the code already. From gstconcat.c:

      GstPad *sinkpad = NULL;

      g_mutex_lock (&self->lock);
      if ((sinkpad = self->current_sinkpad))
        gst_object_ref (sinkpad);
      g_mutex_unlock (&self->lock);
      if (sinkpad) {
        ret = gst_pad_push_event (sinkpad, event);
        gst_object_unref (sinkpad);
      } else {
        ....
Comment 3 Sebastian Dröge (slomo) 2015-06-10 09:51:01 UTC
Comment on attachment 300525 [details] [review]
Patch for flush events in concat, v2

Committed, and also fixed the event leak if not forwarding
Comment 4 Sebastian Dröge (slomo) 2015-06-10 09:52:06 UTC
commit 426a6ea6444e37422acb45b4b19e3165bf419b55
Author: Carlos Rafael Giani <dv@pseudoterminal.org>
Date:   Sat Mar 28 16:46:32 2015 +0100

    concat: Forward FLUSH_START and FLUSH_STOP events
    
    Without this, seeking deadlocks if performed while the pipeline is paused.
    Only flush events coming from the active pad are forwarded.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=745366