Skip to content

videodecoder: Various new API for handling decoding corruption and missing keyframes

Sebastian Dröge requested to merge slomo/gst-plugins-base:decoder-fku into master

This is all for 1.20.

TODO:

commit f25430f5458a2c276ce56a4b4a490ec741844883
Author: Stian Selnes <stian@pexip.com>
Date:   Fri Aug 18 17:01:02 2017 +0200

    videodecoder: Bump log level of marking a sync point
    
    Sync points are often important when debugging and deserves DEBUG
    level.

commit 2f20df76e967185411b2b4e692d2cdf773c553f2
Author: Sebastian Dröge <sebastian@centricular.com>
Date:   Wed Jul 1 18:19:09 2020 +0300

    videodecoder: Add API for subclasses to request a new sync point
    
    This allows subclasses that notice missing reference frames to request a
    new sync point to allow seamless decoding again. While doing so the
    subclass can also signal whether it wants a) all following input frames
    until the sync point to be discarded or b) all output frames until the
    sync point to be marked as corrupt.
    
    Sending of force-keyunit events for this can be throttled by the
    application via the "min-force-keyunit-interval" property.
    
    This replaces custom behaviour for the same in various decoders, for
    example openh264dec.
    
    Based on patches by Haakon Sporsheim <haakon@pexip.com> and
    Stian Selnes <stian@pexip.com>.

commit e04b7006cb0789a5ff8dc10681f16eaa9ffb889e
Author: Sebastian Dröge <sebastian@centricular.com>
Date:   Wed Jul 1 18:14:40 2020 +0300

    videodecoder: Add API for subclasses to signal that they need the stream to start with a sync point
    
    If the first frame(s) at the very beginning or after a flush are not a
    sync point then the base class would discard them before passing them to
    the subclass.
    
    This also fixes the previously broken distance_from_sync handling: it
    was never reset at sync points.

commit 2495daeb5d6274d736c8a631e076f63153f0d0ae
Author: Sebastian Dröge <sebastian@centricular.com>
Date:   Wed Jul 1 18:11:25 2020 +0300

    videodecoder: Add "discard-corrupted-frames" property
    
    This can be used by applications to configure decoders so that corrupted
    frames are directly discarded instead of being forwarded inside the
    pipeline. It is a replacement for the "output-corrupt" property of the
    ffmpeg decoders.

commit 435ff088461e39b1cf49b0c61dc2c9319419a606
Author: Sebastian Dröge <sebastian@centricular.com>
Date:   Wed Jul 1 18:09:22 2020 +0300

    videodecoder: Add API for marking output frames as corrupted
    
    This can be used by subclasses to mark output frames as known to be
    corrupted, for example if reference frames were missing. ffmpeg's
    decoders can signal this.
    
    In addition this flag is propagated downstream if the input frame had it
    set.

commit aaf590ac2006a43dcea15e1f87d7cee7ae4878af
Author: Sebastian Dröge <sebastian@centricular.com>
Date:   Tue Jun 23 18:40:07 2020 +0300

    videodecoder: Remove unused reorder_depth variable
Edited by Mathieu Duponchelle

Merge request reports