Skip to content
  • Havard Graff's avatar
    rtpjitterbuffer: fix lost-event using dts instead of pts · fb9c75db
    Havard Graff authored
    The lost-event was using a different time-domain (dts) than the outgoing
    buffers (pts). Given certain network-conditions these two would become
    sufficiently different and the lost-event contained timestamp/duration
    that was really wrong. As an example GstAudioDecoder could produce
    a stream that jumps back and forth in time after receiving a lost-event.
    
    The previous behavior calculated the pts (based on the rtptime) inside the
    rtp_jitter_buffer_insert function, but now this functionality has been
    refactored into a new function rtp_jitter_buffer_calculate_pts that is
    called much earlier in the _chain function to make pts available to
    various calculations that wrongly used dts previously
    (like the lost-event).
    
    There are however two calculations where using dts is the right thing to
    do: calculating the receive-jitter and the rtx-round-trip-time, where the
    arrival time of the buffer from the network is the right metric
    (and is what dts in fact is today).
    
    The patch also adds two tests regarding B-frames or the
    “rtptime-going-backwards”-scenario, as there were some concerns that this
    patch might break this behavior (which the tests shows it does not).
    fb9c75db