]> git.sesse.net Git - vlc/commitdiff
Improved late values after pts_delay changes in clock.c.
authorLaurent Aimar <fenrir@videolan.org>
Fri, 17 Jul 2009 16:47:01 +0000 (18:47 +0200)
committerLaurent Aimar <fenrir@videolan.org>
Fri, 17 Jul 2009 16:48:04 +0000 (18:48 +0200)
src/input/clock.c

index a7972994724600b0cfc5ca83e403e2f7d17462c3..811ec7a6449f84879bf6694ecf45cda1ea89b6af 100644 (file)
@@ -501,10 +501,20 @@ void input_clock_SetJitter( input_clock_t *cl,
 
     /* Update late observations */
     const mtime_t i_delay_delta = i_pts_delay - cl->i_pts_delay;
+    mtime_t pi_late[INPUT_CLOCK_LATE_COUNT];
+    for( int i = 0; i < INPUT_CLOCK_LATE_COUNT; i++ )
+        pi_late[i] = __MAX( cl->late.pi_value[(cl->late.i_index + 1 + i)%INPUT_CLOCK_LATE_COUNT] - i_delay_delta, 0 );
+
+    for( int i = 0; i < INPUT_CLOCK_LATE_COUNT; i++ )
+        cl->late.pi_value[i] = 0;
+    cl->late.i_index = 0;
+
     for( int i = 0; i < INPUT_CLOCK_LATE_COUNT; i++ )
     {
-        if( cl->late.pi_value[i] > 0 )
-            cl->late.pi_value[i] = __MAX( cl->late.pi_value[i] - i_delay_delta, 0 );
+        if( pi_late[i] <= 0 )
+            continue;
+        cl->late.pi_value[cl->late.i_index] = pi_late[i];
+        cl->late.i_index = ( cl->late.i_index + 1 ) % INPUT_CLOCK_LATE_COUNT;
     }
 
     /* TODO always save the value, and when rebuffering use the new one if smaller