• Mathieu Duponchelle's avatar
    rtpbasedepayload: condition the sending of gap events · 84679395
    Mathieu Duponchelle authored
    The default implementation for packet loss handling previously
    always sent a gap event.
    
    While this is correct as long as we know the packet that was
    lost was actually a media packet, with ULPFEC this becomes
    a bit more complicated, as we do not know whether the packet
    that was lost was a FEC packet, in which case it is better
    to not actually send any gap events in the default implementation.
    
    Some payloaders can be more clever about, for example VP8 can
    use the picture-id, and the M and S bits to determine whether
    the missing packet was inside an encoded frame or outside,
    and thus whether if it was a media packet or a FEC packet,
    which is why ulpfecdec still lets these lost events go through,
    though stripping them of their seqnum, and appending a new
    "might-have-been-fec" field to them.
    
    This is all a bit terrible, but necessary to have ULPFEC
    integrate properly with the rest of our RTP stack.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=794909
    84679395
rtpbasedepayload.c 38.5 KB