+ case ES_OUT_SET_TIMES:
+ {
+ double f_position = (double)va_arg( args, double );
+ mtime_t i_time = (mtime_t)va_arg( args, mtime_t );
+ mtime_t i_length = (mtime_t)va_arg( args, mtime_t );
+
+ input_SendEventLength( p_sys->p_input, i_length );
+
+ if( !p_sys->b_buffering )
+ {
+ /* Fix for buffering delay */
+ const mtime_t i_delay = EsOutGetBuffering( out );
+
+ i_time -= i_delay;
+ if( i_time < 0 )
+ i_time = 0;
+
+ if( i_length > 0 )
+ f_position -= (double)i_delay / i_length;
+ if( f_position < 0 )
+ f_position = 0;
+
+ input_SendEventPosition( p_sys->p_input, f_position, i_time );
+ }
+ return VLC_SUCCESS;
+ }
+ case ES_OUT_SET_JITTER:
+ {
+ mtime_t i_pts_delay = (mtime_t)va_arg( args, mtime_t );
+ int i_cr_average = (int)va_arg( args, int );
+
+ if( i_pts_delay == p_sys->i_pts_delay &&
+ i_cr_average == p_sys->i_cr_average )
+ return VLC_SUCCESS;
+
+ p_sys->i_pts_delay = i_pts_delay;
+ p_sys->i_cr_average = i_cr_average;
+
+ for( int i = 0; i < p_sys->i_pgrm; i++ )
+ input_clock_SetJitter( p_sys->pgrm[i]->p_clock,
+ i_pts_delay, i_cr_average );
+ return VLC_SUCCESS;
+ }
+