[Bug 750402] tsdemux: pads are removed before new ones are added

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Dec 2 08:07:59 PST 2015


https://bugzilla.gnome.org/show_bug.cgi?id=750402

Edward Hervey <bilboed at bilboed.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bilboed at bilboed.com
         Resolution|---                         |FIXED

--- Comment #11 from Edward Hervey <bilboed at bilboed.com> ---
commit 531117b7df1002f816f2a4e3259fdcdfa470cb72
Author: Edward Hervey <edward at centricular.com>
Date:   Tue Oct 20 17:22:23 2015 +0200

    tsdemux: Push GAP events *after* deactivating old programs

    The order in which program switch must happen is:
    1) drain all data on old pads (but don't push EOS)
    2) add new pads (but don't push any data on them)
    3) Push EOS and remove old pads
    4) Start pushing data on new pads

    There was one caveat in this implementation, which is that when
    we activate a sparse pad (step 2) we would push a GAP event. The problem
    is that, while being an event, it is actually *data*.

    We therefore need to make sure pushing those GAP event is done at the step
    we start pushing data.

    https://bugzilla.gnome.org/show_bug.cgi?id=750402

commit 7336294635d6066c812ca918e799a5ed21f177bb
Author: Edward Hervey <edward at centricular.com>
Date:   Tue Sep 15 18:20:38 2015 +0200

    tsdemux: Make sure old streams are drained before switching

    Before we add any streams, make sure we drain all streams. This ensures
    there's consistency that only "new" data will be pushed on buffers once
    the new pads are added

    https://bugzilla.gnome.org/show_bug.cgi?id=750402

commit 14e6d2d42736a66cd83b08113f4a067943443b11
Author: Edward Hervey <bilboed at bilboed.com>
Date:   Thu Sep 10 14:55:05 2015 +0200

    mpegtsdemux: Allow deactivation of programs to be delayed

    When changing programs, the order of events needs to be the following:
    * add pads from new program
    * send EOS on old pads
    * remove old pads
    * emit 'no-more-pads'

    Previously tsdemux was not doing that, and was first deactivating and
    removing old pads before adding new ones.

    We fix this by allowing subclasses of mpegtsbase to be able to handle
    themselves the deactivation of programs. In this case tsdemux will
    properly deactivate it once it has activated the new program.

    https://bugzilla.gnome.org/show_bug.cgi?id=750402

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list