Skip to content
  • Vivia Nikolaidou's avatar
    segment: Correct stream_time calc for negative applied rate · 45f0f354
    Vivia Nikolaidou authored and Sebastian Dröge's avatar Sebastian Dröge committed
    Updated gst_segment_position_from_stream_time and gst_segment_to_stream_time to reflect correct calculations for the case when the applied rate is negative.
    
    Pasting from design docs:
    
    ===============================
    Stream time is calculated using the buffer times and the preceding SEGMENT
    event as follows:
    
        stream_time = (B.timestamp - S.start) * ABS (S.applied_rate) + S.time
    
    For negative rates, B.timestamp will go backwards from S.stop to S.start,
    making the stream time go backwards.
    ===============================
    
    Therefore, the calculation for applied_rate < 0 should be:
    
        stream_time = (S.stop - B.timestamp) * ABS (S.applied_rate) + S.time
    
    and the reverse:
    
        B.timestamp = S.stop - (stream_time - S.time) / ABS (S.applied_rate)
    
    https://bugzilla.gnome.org/show_bug.cgi?id=756810
    45f0f354