]> git.sesse.net Git - vlc/blobdiff - src/input/clock.c
backport [13191] and [13192] once again
[vlc] / src / input / clock.c
index 6afca87a61307c24013e64af7ef3894dde41abc4..3e5fd1bd968b0d0c221886fcce8de5b0a6686b0d 100644 (file)
@@ -133,6 +133,7 @@ void input_ClockInit( input_clock_t *cl, vlc_bool_t b_master, int i_cr_average )
 
     cl->last_cr = 0;
     cl->last_pts = 0;
+    cl->last_sysdate = 0;
     cl->cr_ref = 0;
     cl->sysdate_ref = 0;
     cl->delta_cr = 0;
@@ -264,6 +265,7 @@ void input_ClockSetPCR( input_thread_t *p_input,
         else
         {
             cl->last_cr = 0;
+            cl->last_sysdate = 0;
             cl->delta_cr = 0;
             cl->i_delta_cr_residue = 0;
         }
@@ -308,7 +310,7 @@ void input_ClockSetPCR( input_thread_t *p_input,
             input_ClockManageControl( p_input, cl, i_clock );
 #endif
         }
-        else
+        else if ( mdate() - cl->last_sysdate > 200000 )
         {
             /* Smooth clock reference variations. */
             mtime_t i_extrapoled_clock = ClockCurrent( p_input, cl );
@@ -324,6 +326,7 @@ void input_ClockSetPCR( input_thread_t *p_input,
                                        + cl->i_delta_cr_residue )
                                     % cl->i_cr_average;
             cl->delta_cr = delta_cr;
+            cl->last_sysdate = mdate();
         }
     }
 }