/* We do not have a wake up date if the input cannot have its speed
* controlled or sout is imposing its own or while buffering
*
- * FIXME for !p_input->p->b_can_pace_control a wkeup time is still needed to avoid too strong buffering */
+ * FIXME for !p_input->p->b_can_pace_control a wake-up time is still needed
+ * to avoid too heavy buffering */
if( !p_input->p->b_can_pace_control ||
p_input->p->b_out_pace_control ||
p_sys->b_buffering )
i_delay = p_sys->i_audio_delay;
else if( p_es->fmt.i_cat == SPU_ES )
i_delay = p_sys->i_spu_delay;
+ else
+ return;
- if( i_delay != 0 )
- {
- if( p_es->p_dec )
- input_DecoderChangeDelay( p_es->p_dec, i_delay );
- if( p_es->p_dec_record )
- input_DecoderChangeDelay( p_es->p_dec_record, i_delay );
- }
+ if( p_es->p_dec )
+ input_DecoderChangeDelay( p_es->p_dec, i_delay );
+ if( p_es->p_dec_record )
+ input_DecoderChangeDelay( p_es->p_dec_record, i_delay );
}
static void EsOutProgramsChangeRate( es_out_t *out )
{
return;
}
/* Find program */
+ if( !EsOutIsProgramVisible( out, i_group ) )
+ return;
p_pgrm = EsOutProgramFind( out, i_group );
if( !p_pgrm )
return;
}
/* ugly but it works */
- if( EsOutIsProgramVisible( out, i_group ) && psz_text )
+ if( psz_text )
{
input_SendEventProgramDel( p_input, i_group );
input_SendEventProgramAdd( p_input, i_group, psz_text );
char *psz_cat;
/* Find program */
+ if( !EsOutIsProgramVisible( out, i_group ) )
+ return;
p_pgrm = EsOutProgramFind( out, i_group );
if( !p_pgrm )
return;
p_block->i_flags |= BLOCK_FLAG_PREROLL;
}
- p_block->i_rate = 0;
-
if( !es->p_dec )
{
block_Release( p_block );
vlc_object_t **pp_decoder = va_arg( args, vlc_object_t ** );
vout_thread_t **pp_vout = va_arg( args, vout_thread_t ** );
- aout_instance_t **pp_aout = va_arg( args, aout_instance_t ** );
+ audio_output_t **pp_aout = va_arg( args, audio_output_t ** );
if( p_es->p_dec )
{
if( pp_decoder )
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);
+ }
+ return VLC_SUCCESS;
+ }
default:
msg_Err( p_sys->p_input, "unknown query in es_out_Control" );
info_category_AddInfo( p_cat, _("Frame rate"), "%"PRId64,
div.quot );
}
+ if( fmt->i_codec != p_fmt_es->i_codec )
+ {
+ const char *psz_chroma_description =
+ vlc_fourcc_GetDescription( VIDEO_ES, fmt->i_codec );
+ if( psz_chroma_description )
+ info_category_AddInfo( p_cat, _("Decoded format"), "%s",
+ psz_chroma_description );
+ }
+
break;
case SPU_ES:
/* */
input_Control( p_input, INPUT_REPLACE_INFOS, p_cat );
}
-