+ i_pts_delay + i_pts_jitter, i_cr_average );
+ return VLC_SUCCESS;
+ }
+
+ case ES_OUT_GET_PCR_SYSTEM:
+ {
+ if( p_sys->b_buffering )
+ return VLC_EGENERIC;
+
+ es_out_pgrm_t *p_pgrm = p_sys->p_pgrm;
+ if( !p_pgrm )
+ return VLC_EGENERIC;
+
+ mtime_t *pi_system = va_arg( args, mtime_t *);
+ mtime_t *pi_delay = va_arg( args, mtime_t *);
+ input_clock_GetSystemOrigin( p_pgrm->p_clock, pi_system, pi_delay );
+ return VLC_SUCCESS;
+ }
+
+ case ES_OUT_MODIFY_PCR_SYSTEM:
+ {
+ if( p_sys->b_buffering )
+ return VLC_EGENERIC;
+
+ es_out_pgrm_t *p_pgrm = p_sys->p_pgrm;
+ if( !p_pgrm )
+ return VLC_EGENERIC;
+
+ const bool b_absolute = va_arg( args, int );
+ const mtime_t i_system = va_arg( args, mtime_t );
+ input_clock_ChangeSystemOrigin( p_pgrm->p_clock, b_absolute, i_system );
+ return VLC_SUCCESS;
+ }
+ case ES_OUT_SET_EOS:
+ {
+ for (int i = 0; i < p_sys->i_es; i++) {
+ es_out_id_t *id = p_sys->es[i];
+ decoder_t *p_dec = id->p_dec;
+ if (!p_dec)
+ continue;
+ block_t *p_block = block_Alloc(0);
+ if( !p_block )
+ break;
+
+ p_block->i_flags |= BLOCK_FLAG_CORE_EOS;
+ input_DecoderDecode(p_dec, p_block, false);
+ }