• Mathieu Duponchelle's avatar
    ulpfecdec: output perfect seqnums · 90f5ae8f
    Mathieu Duponchelle authored
    ULP FEC, as defined in RFC 5109, has the protected and protection
    packets sharing the same ssrc, and a different payload type, and
    implies rewriting the seqnums of the protected stream when encoding
    the protection packets. This has the unfortunate drawback of not
    being able to tell whether a lost packet was a protection packet.
    
    rtpbasedepayload relies on gaps in the seqnums to set the DISCONT
    flag on buffers it outputs. Before that commit, this created two
    problems:
    
    * The protection packets don't make it as far as the depayloader,
      which means it will mark buffers as DISCONT every time the previous
      packets were protected
    
    * While we could work around the previous issue by looking at
      the protection packets ignored and dropped in rtpptdemux, we
      would still mark buffers as DISCONT when a FEC packet was lost,
      as we cannot know that it was indeed a FEC packet, even though
      this should have no impact on the decoding of the stream
    
    With this commit, we consider that when using ULPFEC, gaps in
    the seqnums are not a reliable indicator of whether buffers should
    be marked as DISCONT or not, and thus rewrite the seqnums on
    the decoding side as well to form a perfect sequence, this
    obviously doesn't prevent the jitterbuffer from doing its job
    as the ulpfec decoder is downstream from it.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=794909
    90f5ae8f
Name
Last commit
Last update
common @ ed78bee4 Loading commit data...
docs Loading commit data...
ext Loading commit data...
gst Loading commit data...
gst-libs/gst Loading commit data...
hooks Loading commit data...
m4 Loading commit data...
pkgconfig Loading commit data...
po Loading commit data...
sys Loading commit data...
tests Loading commit data...
.gitignore Loading commit data...
.gitmodules Loading commit data...
AUTHORS Loading commit data...
COPYING Loading commit data...
ChangeLog Loading commit data...
MAINTAINERS Loading commit data...
Makefile.am Loading commit data...
NEWS Loading commit data...
README Loading commit data...
README.static-linking Loading commit data...
RELEASE Loading commit data...
REQUIREMENTS Loading commit data...
autogen.sh Loading commit data...
configure.ac Loading commit data...
gst-plugins-good.doap Loading commit data...
meson.build Loading commit data...
meson_options.txt Loading commit data...