X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Finput%2Fes_out.c;h=f25f545dafbf18c1cbc3ff21b82b07602b8b912f;hb=025d0a239f580936ee53685119daebbc9a09ed13;hp=c6de41f5bfc042f4a7de86540c205ca2cea0d1f4;hpb=c352d28ffd5381ee96ce7f3f77809ebd430311be;p=vlc diff --git a/src/input/es_out.c b/src/input/es_out.c index c6de41f5bf..f25f545daf 100644 --- a/src/input/es_out.c +++ b/src/input/es_out.c @@ -25,7 +25,11 @@ /***************************************************************************** * Preamble *****************************************************************************/ -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include #include @@ -36,8 +40,7 @@ #include "input_internal.h" -#include "vlc_playlist.h" -#include "iso_lang.h" +#include /* FIXME we should find a better way than including that */ #include "../text/iso-639_def.h" @@ -52,7 +55,7 @@ typedef struct /* Number of es for this pgrm */ int i_es; - vlc_bool_t b_selected; + bool b_selected; /* Clock for this program */ input_clock_t clock; @@ -82,7 +85,7 @@ struct es_out_id_t decoder_t *p_dec; /* Fields for Video with CC */ - vlc_bool_t pb_cc_present[4]; + bool pb_cc_present[4]; es_out_id_t *pp_cc_es[4]; /* Field for CC track from a master video */ @@ -105,7 +108,7 @@ struct es_out_sys_t es_out_id_t **es; /* mode gestion */ - vlc_bool_t b_active; + bool b_active; int i_mode; /* es count */ @@ -136,14 +139,14 @@ struct es_out_sys_t static es_out_id_t *EsOutAdd ( es_out_t *, es_format_t * ); static int EsOutSend ( es_out_t *, es_out_id_t *, block_t * ); static void EsOutDel ( es_out_t *, es_out_id_t * ); -static void EsOutSelect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_force ); +static void EsOutSelect( es_out_t *out, es_out_id_t *es, bool b_force ); static int EsOutControl( es_out_t *, int i_query, va_list ); static void EsOutAddInfo( es_out_t *, es_out_id_t *es ); -static vlc_bool_t EsIsSelected( es_out_t *out, es_out_id_t *es ); +static bool EsIsSelected( es_out_id_t *es ); static void EsSelect( es_out_t *out, es_out_id_t *es ); -static void EsUnselect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_update ); +static void EsUnselect( es_out_t *out, es_out_id_t *es, bool b_update ); static char *LanguageGetName( const char *psz_code ); static char *LanguageGetCode( const char *psz_lang ); static char **LanguageSplit( const char *psz_langs ); @@ -179,16 +182,23 @@ es_out_t *input_EsOutNew( input_thread_t *p_input, int i_rate ) vlc_value_t val; int i; + if( !out ) return NULL; + if( !p_sys ) + { + free( out ); + return NULL; + } + out->pf_add = EsOutAdd; out->pf_send = EsOutSend; out->pf_del = EsOutDel; out->pf_control = EsOutControl; out->p_sys = p_sys; - out->b_sout = (p_input->p->p_sout != NULL ? VLC_TRUE : VLC_FALSE); + out->b_sout = p_input->p->p_sout != NULL; p_sys->p_input = p_input; - p_sys->b_active = VLC_FALSE; + p_sys->b_active = false; p_sys->i_mode = ES_OUT_MODE_AUTO; @@ -222,7 +232,7 @@ es_out_t *input_EsOutNew( input_thread_t *p_input, int i_rate ) msg_Dbg( p_input, "selected audio language[%d] %s", i, p_sys->ppsz_audio_language[i] ); } - if( val.psz_string ) free( val.psz_string ); + free( val.psz_string ); var_Get( p_input, "sub-language", &val ); p_sys->ppsz_sub_language = LanguageSplit(val.psz_string); @@ -232,7 +242,7 @@ es_out_t *input_EsOutNew( input_thread_t *p_input, int i_rate ) msg_Dbg( p_input, "selected subtitle language[%d] %s", i, p_sys->ppsz_sub_language[i] ); } - if( val.psz_string ) free( val.psz_string ); + free( val.psz_string ); } else { @@ -272,10 +282,8 @@ void input_EsOutDelete( es_out_t *out ) { input_DecoderDelete( p_sys->es[i]->p_dec ); } - if( p_sys->es[i]->psz_language ) - free( p_sys->es[i]->psz_language ); - if( p_sys->es[i]->psz_language_code ) - free( p_sys->es[i]->psz_language_code ); + free( p_sys->es[i]->psz_language ); + free( p_sys->es[i]->psz_language_code ); es_format_Clean( &p_sys->es[i]->fmt ); free( p_sys->es[i] ); @@ -293,19 +301,15 @@ void input_EsOutDelete( es_out_t *out ) free( p_sys->ppsz_sub_language ); } - if( p_sys->es ) - free( p_sys->es ); + free( p_sys->es ); /* FIXME duplicate work EsOutProgramDel (but we cannot use it) add a EsOutProgramClean ? */ for( i = 0; i < p_sys->i_pgrm; i++ ) { es_out_pgrm_t *p_pgrm = p_sys->pgrm[i]; - if( p_pgrm->psz_now_playing ) - free( p_pgrm->psz_now_playing ); - if( p_pgrm->psz_publisher ) - free( p_pgrm->psz_publisher ); - if( p_pgrm->psz_name ) - free( p_pgrm->psz_name ); + free( p_pgrm->psz_now_playing ); + free( p_pgrm->psz_publisher ); + free( p_pgrm->psz_name ); if( p_pgrm->p_epg ) vlc_epg_Delete( p_pgrm->p_epg ); @@ -334,7 +338,7 @@ es_out_id_t *input_EsOutGetFromID( es_out_t *out, int i_id ) return NULL; } -static void EsOutDiscontinuity( es_out_t *out, vlc_bool_t b_flush, vlc_bool_t b_audio ) +static void EsOutDiscontinuity( es_out_t *out, bool b_flush, bool b_audio ) { es_out_sys_t *p_sys = out->p_sys; int i; @@ -355,10 +359,10 @@ void input_EsOutChangeRate( es_out_t *out, int i_rate ) int i; p_sys->i_rate = i_rate; - EsOutDiscontinuity( out, VLC_FALSE, VLC_FALSE ); + EsOutDiscontinuity( out, false, false ); for( i = 0; i < p_sys->i_pgrm; i++ ) - input_ClockSetRate( p_sys->p_input, &p_sys->pgrm[i]->clock, i_rate ); + input_ClockSetRate( &p_sys->pgrm[i]->clock, i_rate ); } void input_EsOutSetDelay( es_out_t *out, int i_cat, int64_t i_delay ) @@ -379,7 +383,7 @@ void input_EsOutChangeState( es_out_t *out ) { /* Send discontinuity to decoders (it will allow them to flush * * if implemented */ - EsOutDiscontinuity( out, VLC_FALSE, VLC_FALSE ); + EsOutDiscontinuity( out, false, false ); } else { @@ -392,10 +396,10 @@ void input_EsOutChangePosition( es_out_t *out ) //es_out_sys_t *p_sys = out->p_sys; es_out_Control( out, ES_OUT_RESET_PCR ); - EsOutDiscontinuity( out, VLC_TRUE, VLC_FALSE ); + EsOutDiscontinuity( out, true, false ); } -vlc_bool_t input_EsOutDecodersEmpty( es_out_t *out ) +bool input_EsOutDecodersEmpty( es_out_t *out ) { es_out_sys_t *p_sys = out->p_sys; int i; @@ -405,16 +409,16 @@ vlc_bool_t input_EsOutDecodersEmpty( es_out_t *out ) es_out_id_t *es = p_sys->es[i]; if( es->p_dec && !input_DecoderEmpty( es->p_dec ) ) - return VLC_FALSE; + return false; } - return VLC_TRUE; + return true; } /***************************************************************************** * *****************************************************************************/ static void EsOutESVarUpdateGeneric( es_out_t *out, int i_id, es_format_t *fmt, const char *psz_language, - vlc_bool_t b_delete ) + bool b_delete ) { es_out_sys_t *p_sys = out->p_sys; input_thread_t *p_input = p_sys->p_input; @@ -435,7 +439,7 @@ static void EsOutESVarUpdateGeneric( es_out_t *out, int i_id, es_format_t *fmt, { val.i_int = i_id; var_Change( p_input, psz_var, VLC_VAR_DELCHOICE, &val, NULL ); - var_SetBool( p_sys->p_input, "intf-change", VLC_TRUE ); + var_SetBool( p_sys->p_input, "intf-change", true ); return; } @@ -486,11 +490,11 @@ static void EsOutESVarUpdateGeneric( es_out_t *out, int i_id, es_format_t *fmt, free( text.psz_string ); - var_SetBool( p_sys->p_input, "intf-change", VLC_TRUE ); + var_SetBool( p_sys->p_input, "intf-change", true ); } static void EsOutESVarUpdate( es_out_t *out, es_out_id_t *es, - vlc_bool_t b_delete ) + bool b_delete ) { EsOutESVarUpdateGeneric( out, es->i_id, &es->fmt, es->psz_language, b_delete ); } @@ -515,9 +519,9 @@ static void EsOutProgramSelect( es_out_t *out, es_out_pgrm_t *p_pgrm ) for( i = 0; i < p_sys->i_es; i++ ) { - if( p_sys->es[i]->p_pgrm == old && EsIsSelected( out, p_sys->es[i] ) && + if( p_sys->es[i]->p_pgrm == old && EsIsSelected( p_sys->es[i] ) && p_sys->i_mode != ES_OUT_MODE_ALL ) - EsUnselect( out, p_sys->es[i], VLC_TRUE ); + EsUnselect( out, p_sys->es[i], true ); } p_sys->p_es_audio = NULL; @@ -528,14 +532,14 @@ static void EsOutProgramSelect( es_out_t *out, es_out_pgrm_t *p_pgrm ) msg_Dbg( p_input, "selecting program id=%d", p_pgrm->i_id ); /* Mark it selected */ - p_pgrm->b_selected = VLC_TRUE; + p_pgrm->b_selected = true; /* Switch master stream */ if( p_sys->p_pgrm && p_sys->p_pgrm->clock.b_master ) { - p_sys->p_pgrm->clock.b_master = VLC_FALSE; + p_sys->p_pgrm->clock.b_master = false; } - p_pgrm->clock.b_master = VLC_TRUE; + p_pgrm->clock.b_master = true; p_sys->p_pgrm = p_pgrm; /* Update "program" */ @@ -549,8 +553,8 @@ static void EsOutProgramSelect( es_out_t *out, es_out_pgrm_t *p_pgrm ) for( i = 0; i < p_sys->i_es; i++ ) { if( p_sys->es[i]->p_pgrm == p_sys->p_pgrm ) - EsOutESVarUpdate( out, p_sys->es[i], VLC_FALSE ); - EsOutSelect( out, p_sys->es[i], VLC_FALSE ); + EsOutESVarUpdate( out, p_sys->es[i], false ); + EsOutSelect( out, p_sys->es[i], false ); } /* Update now playing */ @@ -559,7 +563,7 @@ static void EsOutProgramSelect( es_out_t *out, es_out_pgrm_t *p_pgrm ) input_item_SetPublisher( p_input->p->input.p_item, p_pgrm->psz_publisher ); - var_SetBool( p_sys->p_input, "intf-change", VLC_TRUE ); + var_SetBool( p_sys->p_input, "intf-change", true ); } /* EsOutAddProgram: @@ -572,16 +576,17 @@ static es_out_pgrm_t *EsOutProgramAdd( es_out_t *out, int i_group ) vlc_value_t val; es_out_pgrm_t *p_pgrm = malloc( sizeof( es_out_pgrm_t ) ); + if( !p_pgrm ) return NULL; /* Init */ p_pgrm->i_id = i_group; p_pgrm->i_es = 0; - p_pgrm->b_selected = VLC_FALSE; + p_pgrm->b_selected = false; p_pgrm->psz_name = NULL; p_pgrm->psz_now_playing = NULL; p_pgrm->psz_publisher = NULL; p_pgrm->p_epg = NULL; - input_ClockInit( p_input, &p_pgrm->clock, VLC_FALSE, p_input->p->input.i_cr_average, p_sys->i_rate ); + input_ClockInit( &p_pgrm->clock, false, p_input->p->input.i_cr_average, p_sys->i_rate ); /* Append it */ TAB_APPEND( p_sys->i_pgrm, p_sys->pgrm, p_pgrm ); @@ -596,7 +601,7 @@ static es_out_pgrm_t *EsOutProgramAdd( es_out_t *out, int i_group ) } else { - var_SetBool( p_sys->p_input, "intf-change", VLC_TRUE ); + var_SetBool( p_sys->p_input, "intf-change", true ); } return p_pgrm; } @@ -636,9 +641,9 @@ static int EsOutProgramDel( es_out_t *out, int i_group ) /* If program is selected we need to unselect it */ if( p_sys->p_pgrm == p_pgrm ) p_sys->p_pgrm = NULL; - if( p_pgrm->psz_name ) free( p_pgrm->psz_name ); - if( p_pgrm->psz_now_playing ) free( p_pgrm->psz_now_playing ); - if( p_pgrm->psz_publisher ) free( p_pgrm->psz_publisher ); + free( p_pgrm->psz_name ); + free( p_pgrm->psz_now_playing ); + free( p_pgrm->psz_publisher ); if( p_pgrm->p_epg ) vlc_epg_Delete( p_pgrm->p_epg ); free( p_pgrm ); @@ -647,7 +652,7 @@ static int EsOutProgramDel( es_out_t *out, int i_group ) val.i_int = i_group; var_Change( p_input, "program", VLC_VAR_DELCHOICE, &val, NULL ); - var_SetBool( p_sys->p_input, "intf-change", VLC_TRUE ); + var_SetBool( p_sys->p_input, "intf-change", true ); return VLC_SUCCESS; } @@ -715,7 +720,7 @@ static void EsOutProgramMeta( es_out_t *out, int i_group, vlc_meta_t *p_meta ) /* TODO update epg name */ free( psz_cat ); } - if( p_pgrm->psz_name ) free( p_pgrm->psz_name ); + free( p_pgrm->psz_name ); p_pgrm->psz_name = strdup( psz_title ); /* ugly but it works */ @@ -762,14 +767,14 @@ static void vlc_epg_Merge( vlc_epg_t *p_dst, const vlc_epg_t *p_src ) for( i = 0; i < p_src->i_event; i++ ) { vlc_epg_event_t *p_evt = p_src->pp_event[i]; - vlc_bool_t b_add = VLC_TRUE; + bool b_add = true; int j; for( j = 0; j < p_dst->i_event; j++ ) { if( p_dst->pp_event[j]->i_start == p_evt->i_start && p_dst->pp_event[j]->i_duration == p_evt->i_duration ) { - b_add = VLC_FALSE; + b_add = false; break; } if( p_dst->pp_event[j]->i_start > p_evt->i_start ) @@ -856,8 +861,7 @@ static void EsOutProgramEpg( es_out_t *out, int i_group, vlc_epg_t *p_epg ) free( psz_epg ); #endif /* Update now playing */ - if( p_pgrm->psz_now_playing ) - free( p_pgrm->psz_now_playing ); + free( p_pgrm->psz_now_playing ); p_pgrm->psz_now_playing = NULL; if( p_epg->p_current && p_epg->p_current->psz_name && *p_epg->p_current->psz_name ) p_pgrm->psz_now_playing = strdup( p_epg->p_current->psz_name ); @@ -892,9 +896,12 @@ static es_out_id_t *EsOutAdd( es_out_t *out, es_format_t *fmt ) es_out_pgrm_t *p_pgrm = NULL; int i; + if( !es ) return NULL; + if( fmt->i_group < 0 ) { msg_Err( p_input, "invalid group number" ); + free( es ); return NULL; } @@ -974,14 +981,14 @@ static es_out_id_t *EsOutAdd( es_out_t *out, es_format_t *fmt ) es->psz_language_code = LanguageGetCode( fmt->psz_language ); es->p_dec = NULL; for( i = 0; i < 4; i++ ) - es->pb_cc_present[i] = VLC_FALSE; - es->p_master = VLC_FALSE; + es->pb_cc_present[i] = false; + es->p_master = false; if( es->p_pgrm == p_sys->p_pgrm ) - EsOutESVarUpdate( out, es, VLC_FALSE ); + EsOutESVarUpdate( out, es, false ); /* Select it if needed */ - EsOutSelect( out, es, VLC_FALSE ); + EsOutSelect( out, es, false ); TAB_APPEND( out->p_sys->i_es, out->p_sys->es, es ); @@ -1004,11 +1011,11 @@ static es_out_id_t *EsOutAdd( es_out_t *out, es_format_t *fmt ) return es; } -static vlc_bool_t EsIsSelected( es_out_t *out, es_out_id_t *es ) +static bool EsIsSelected( es_out_id_t *es ) { if( es->p_master ) { - vlc_bool_t b_decode = VLC_FALSE; + bool b_decode = false; if( es->p_master->p_dec ) { int i_channel = EsOutGetClosedCaptionsChannel( es->fmt.i_codec ); @@ -1029,7 +1036,7 @@ static void EsSelect( es_out_t *out, es_out_id_t *es ) vlc_value_t val; const char *psz_var; - if( EsIsSelected( out, es ) ) + if( EsIsSelected( es ) ) { msg_Warn( p_input, "ES 0x%x is already selected", es->i_id ); return; @@ -1042,15 +1049,14 @@ static void EsSelect( es_out_t *out, es_out_id_t *es ) return; i_channel = EsOutGetClosedCaptionsChannel( es->fmt.i_codec ); - if( i_channel == -1 || input_DecoderSetCcState( es->p_master->p_dec, VLC_TRUE, i_channel ) ) + if( i_channel == -1 || input_DecoderSetCcState( es->p_master->p_dec, true, i_channel ) ) return; } else { if( es->fmt.i_cat == VIDEO_ES || es->fmt.i_cat == SPU_ES ) { - if( !var_GetBool( p_input, "video" ) || - ( p_input->p->p_sout && !var_GetBool( p_input, "sout-video" ) ) ) + if( !var_GetBool( p_input, out->b_sout ? "sout-video" : "video" ) ) { msg_Dbg( p_input, "video is disabled, not selecting ES 0x%x", es->i_id ); @@ -1060,8 +1066,7 @@ static void EsSelect( es_out_t *out, es_out_id_t *es ) else if( es->fmt.i_cat == AUDIO_ES ) { var_Get( p_input, "audio", &val ); - if( !var_GetBool( p_input, "audio" ) || - ( p_input->p->p_sout && !var_GetBool( p_input, "sout-audio" ) ) ) + if( !var_GetBool( p_input, out->b_sout ? "sout-audio" : "audio" ) ) { msg_Dbg( p_input, "audio is disabled, not selecting ES 0x%x", es->i_id ); @@ -1071,8 +1076,7 @@ static void EsSelect( es_out_t *out, es_out_id_t *es ) if( es->fmt.i_cat == SPU_ES ) { var_Get( p_input, "spu", &val ); - if( !var_GetBool( p_input, "spu" ) || - ( p_input->p->p_sout && !var_GetBool( p_input, "sout-spu" ) ) ) + if( !var_GetBool( p_input, out->b_sout ? "sout-spu" : "spu" ) ) { msg_Dbg( p_input, "spu is disabled, not selecting ES 0x%x", es->i_id ); @@ -1081,7 +1085,7 @@ static void EsSelect( es_out_t *out, es_out_id_t *es ) } es->i_preroll_end = -1; - es->p_dec = input_DecoderNew( p_input, &es->fmt, VLC_FALSE ); + es->p_dec = input_DecoderNew( p_input, &es->fmt, false ); if( es->p_dec == NULL || es->p_pgrm != p_sys->p_pgrm ) return; } @@ -1099,17 +1103,17 @@ static void EsSelect( es_out_t *out, es_out_id_t *es ) val.i_int = es->i_id; var_Change( p_input, psz_var, VLC_VAR_SETVALUE, &val, NULL ); - var_SetBool( p_sys->p_input, "intf-change", VLC_TRUE ); + var_SetBool( p_sys->p_input, "intf-change", true ); } -static void EsUnselect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_update ) +static void EsUnselect( es_out_t *out, es_out_id_t *es, bool b_update ) { es_out_sys_t *p_sys = out->p_sys; input_thread_t *p_input = p_sys->p_input; vlc_value_t val; const char *psz_var; - if( !EsIsSelected( out, es ) ) + if( !EsIsSelected( es ) ) { msg_Warn( p_input, "ES 0x%x is already unselected", es->i_id ); return; @@ -1121,7 +1125,7 @@ static void EsUnselect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_update ) { int i_channel = EsOutGetClosedCaptionsChannel( es->fmt.i_codec ); if( i_channel != -1 ) - input_DecoderSetCcState( es->p_master->p_dec, VLC_FALSE, i_channel ); + input_DecoderSetCcState( es->p_master->p_dec, false, i_channel ); } } else @@ -1139,11 +1143,11 @@ static void EsUnselect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_update ) val.i_int = -1; var_Change( p_input, "spu-es", VLC_VAR_SETVALUE, &val, NULL ); if( !b_update ) - var_SetBool( p_sys->p_input, "intf-change", VLC_TRUE ); + var_SetBool( p_sys->p_input, "intf-change", true ); } EsOutDel( out, es->pp_cc_es[i] ); - es->pb_cc_present[i] = VLC_FALSE; + es->pb_cc_present[i] = false; } input_DecoderDelete( es->p_dec ); es->p_dec = NULL; @@ -1168,7 +1172,7 @@ static void EsUnselect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_update ) val.i_int = -1; var_Change( p_input, psz_var, VLC_VAR_SETVALUE, &val, NULL ); - var_SetBool( p_sys->p_input, "intf-change", VLC_TRUE ); + var_SetBool( p_sys->p_input, "intf-change", true ); } /** @@ -1180,7 +1184,7 @@ static void EsUnselect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_update ) * \param b_force ... * \return nothing */ -static void EsOutSelect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_force ) +static void EsOutSelect( es_out_t *out, es_out_id_t *es, bool b_force ) { es_out_sys_t *p_sys = out->p_sys; @@ -1194,7 +1198,7 @@ static void EsOutSelect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_force ) if( p_sys->i_mode == ES_OUT_MODE_ALL || b_force ) { - if( !EsIsSelected( out, es ) ) + if( !EsIsSelected( es ) ) EsSelect( out, es ); } else if( p_sys->i_mode == ES_OUT_MODE_PARTIAL ) @@ -1206,7 +1210,7 @@ static void EsOutSelect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_force ) { if ( val.p_list->p_values[i].i_int == es->p_pgrm->i_id || b_force ) { - if( !EsIsSelected( out, es ) ) + if( !EsIsSelected( es ) ) EsSelect( out, es ); break; } @@ -1307,21 +1311,21 @@ static void EsOutSelect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_force ) i_wanted = es->i_channel; } - if( i_wanted == es->i_channel && !EsIsSelected( out, es ) ) + if( i_wanted == es->i_channel && !EsIsSelected( es ) ) EsSelect( out, es ); } /* FIXME TODO handle priority here */ - if( EsIsSelected( out, es ) ) + if( EsIsSelected( es ) ) { if( i_cat == AUDIO_ES ) { if( p_sys->i_mode == ES_OUT_MODE_AUTO && p_sys->p_es_audio && p_sys->p_es_audio != es && - EsIsSelected( out, p_sys->p_es_audio ) ) + EsIsSelected( p_sys->p_es_audio ) ) { - EsUnselect( out, p_sys->p_es_audio, VLC_FALSE ); + EsUnselect( out, p_sys->p_es_audio, false ); } p_sys->p_es_audio = es; } @@ -1330,9 +1334,9 @@ static void EsOutSelect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_force ) if( p_sys->i_mode == ES_OUT_MODE_AUTO && p_sys->p_es_sub && p_sys->p_es_sub != es && - EsIsSelected( out, p_sys->p_es_sub ) ) + EsIsSelected( p_sys->p_es_sub ) ) { - EsUnselect( out, p_sys->p_es_sub, VLC_FALSE ); + EsUnselect( out, p_sys->p_es_sub, false ); } p_sys->p_es_sub = es; } @@ -1365,7 +1369,7 @@ static int EsOutSend( es_out_t *out, es_out_id_t *es, block_t *p_block ) else i_delay = 0; - if( p_input->p_libvlc->b_stats ) + if( libvlc_stats (p_input) ) { vlc_mutex_lock( &p_input->p->counters.counters_lock ); stats_UpdateInteger( p_input, p_input->p->counters.p_demux_read, @@ -1406,7 +1410,8 @@ static int EsOutSend( es_out_t *out, es_out_id_t *es, block_t *p_block ) p_block->i_pts = input_ClockGetTS( p_input, &p_pgrm->clock, p_block->i_pts ) + i_delay; } - if ( es->fmt.i_codec == VLC_FOURCC( 't', 'e', 'l', 'x' ) ) + if ( p_block->i_rate == INPUT_RATE_DEFAULT && + es->fmt.i_codec == VLC_FOURCC( 't', 'e', 'l', 'x' ) ) { mtime_t current_date = mdate(); if( !p_block->i_pts @@ -1428,8 +1433,8 @@ static int EsOutSend( es_out_t *out, es_out_id_t *es, block_t *p_block ) ( p_sys->i_rate >= INPUT_RATE_DEFAULT/AOUT_MAX_INPUT_RATE && p_sys->i_rate <= INPUT_RATE_DEFAULT*AOUT_MAX_INPUT_RATE ) ) ) { - vlc_bool_t pb_cc[4]; - vlc_bool_t b_cc_new = VLC_FALSE; + bool pb_cc[4]; + bool b_cc_new = false; int i; input_DecoderDecode( es->p_dec, p_block ); @@ -1443,7 +1448,7 @@ static int EsOutSend( es_out_t *out, es_out_id_t *es, block_t *p_block ) VLC_FOURCC('c', 'c', '3', ' '), VLC_FOURCC('c', 'c', '4', ' '), }; - static const char *ppsz_description[4] = { + static const char ppsz_description[4][18] = { N_("Closed captions 1"), N_("Closed captions 2"), N_("Closed captions 3"), @@ -1463,11 +1468,11 @@ static int EsOutSend( es_out_t *out, es_out_id_t *es, block_t *p_block ) es_format_Clean( &fmt ); /* */ - es->pb_cc_present[i] = VLC_TRUE; - b_cc_new = VLC_TRUE; + es->pb_cc_present[i] = true; + b_cc_new = true; } if( b_cc_new ) - var_SetBool( p_sys->p_input, "intf-change", VLC_TRUE ); + var_SetBool( p_sys->p_input, "intf-change", true ); } else { @@ -1483,7 +1488,7 @@ static int EsOutSend( es_out_t *out, es_out_id_t *es, block_t *p_block ) static void EsOutDel( es_out_t *out, es_out_id_t *es ) { es_out_sys_t *p_sys = out->p_sys; - vlc_bool_t b_reselect = VLC_FALSE; + bool b_reselect = false; int i; /* We don't try to reselect */ @@ -1499,7 +1504,7 @@ static void EsOutDel( es_out_t *out, es_out_id_t *es ) } if( es->p_pgrm == p_sys->p_pgrm ) - EsOutESVarUpdate( out, es, VLC_TRUE ); + EsOutESVarUpdate( out, es, true ); TAB_REMOVE( p_sys->i_es, p_sys->es, es ); @@ -1510,7 +1515,7 @@ static void EsOutDel( es_out_t *out, es_out_id_t *es ) } if( p_sys->p_es_audio == es || p_sys->p_es_video == es || - p_sys->p_es_sub == es ) b_reselect = VLC_TRUE; + p_sys->p_es_sub == es ) b_reselect = true; if( p_sys->p_es_audio == es ) p_sys->p_es_audio = NULL; if( p_sys->p_es_video == es ) p_sys->p_es_video = NULL; @@ -1534,13 +1539,11 @@ static void EsOutDel( es_out_t *out, es_out_id_t *es ) for( i = 0; i < p_sys->i_es; i++ ) { if( es->fmt.i_cat == p_sys->es[i]->fmt.i_cat ) - EsOutSelect( out, p_sys->es[i], VLC_FALSE ); + EsOutSelect( out, p_sys->es[i], false ); } - if( es->psz_language ) - free( es->psz_language ); - if( es->psz_language_code ) - free( es->psz_language_code ); + free( es->psz_language ); + free( es->psz_language_code ); es_format_Clean( &es->fmt ); @@ -1558,7 +1561,7 @@ static void EsOutDel( es_out_t *out, es_out_id_t *es ) static int EsOutControl( es_out_t *out, int i_query, va_list args ) { es_out_sys_t *p_sys = out->p_sys; - vlc_bool_t b, *pb; + bool b, *pb; int i, *pi; es_out_id_t *es; @@ -1567,13 +1570,13 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args ) { case ES_OUT_SET_ES_STATE: es = (es_out_id_t*) va_arg( args, es_out_id_t * ); - b = (vlc_bool_t) va_arg( args, vlc_bool_t ); - if( b && !EsIsSelected( out, es ) ) + b = (bool) va_arg( args, int ); + if( b && !EsIsSelected( es ) ) { EsSelect( out, es ); - return EsIsSelected( out, es ) ? VLC_SUCCESS : VLC_EGENERIC; + return EsIsSelected( es ) ? VLC_SUCCESS : VLC_EGENERIC; } - else if( !b && EsIsSelected( out, es ) ) + else if( !b && EsIsSelected( es ) ) { EsUnselect( out, es, es->p_pgrm == p_sys->p_pgrm ); return VLC_SUCCESS; @@ -1582,23 +1585,23 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args ) case ES_OUT_GET_ES_STATE: es = (es_out_id_t*) va_arg( args, es_out_id_t * ); - pb = (vlc_bool_t*) va_arg( args, vlc_bool_t * ); + pb = (bool*) va_arg( args, bool * ); - *pb = EsIsSelected( out, es ); + *pb = EsIsSelected( es ); return VLC_SUCCESS; case ES_OUT_SET_ACTIVE: { - b = (vlc_bool_t) va_arg( args, vlc_bool_t ); + b = (bool) va_arg( args, int ); p_sys->b_active = b; /* Needed ? */ if( b ) - var_SetBool( p_sys->p_input, "intf-change", VLC_TRUE ); + var_SetBool( p_sys->p_input, "intf-change", true ); return VLC_SUCCESS; } case ES_OUT_GET_ACTIVE: - pb = (vlc_bool_t*) va_arg( args, vlc_bool_t * ); + pb = (bool*) va_arg( args, bool * ); *pb = p_sys->b_active; return VLC_SUCCESS; @@ -1612,7 +1615,7 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args ) /* Reapply policy mode */ for( i = 0; i < p_sys->i_es; i++ ) { - if( EsIsSelected( out, p_sys->es[i] ) ) + if( EsIsSelected( p_sys->es[i] ) ) { EsUnselect( out, p_sys->es[i], p_sys->es[i]->p_pgrm == p_sys->p_pgrm ); @@ -1620,7 +1623,7 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args ) } for( i = 0; i < p_sys->i_es; i++ ) { - EsOutSelect( out, p_sys->es[i], VLC_FALSE ); + EsOutSelect( out, p_sys->es[i], false ); } return VLC_SUCCESS; } @@ -1638,7 +1641,7 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args ) { for( i = 0; i < p_sys->i_es; i++ ) { - if( EsIsSelected( out, p_sys->es[i] ) ) + if( EsIsSelected( p_sys->es[i] ) ) EsUnselect( out, p_sys->es[i], p_sys->es[i]->p_pgrm == p_sys->p_pgrm ); } @@ -1648,7 +1651,7 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args ) for( i = 0; i < p_sys->i_es; i++ ) { if( p_sys->es[i]->fmt.i_cat == AUDIO_ES && - EsIsSelected( out, p_sys->es[i] ) ) + EsIsSelected( p_sys->es[i] ) ) EsUnselect( out, p_sys->es[i], p_sys->es[i]->p_pgrm == p_sys->p_pgrm ); } @@ -1658,7 +1661,7 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args ) for( i = 0; i < p_sys->i_es; i++ ) { if( p_sys->es[i]->fmt.i_cat == VIDEO_ES && - EsIsSelected( out, p_sys->es[i] ) ) + EsIsSelected( p_sys->es[i] ) ) EsUnselect( out, p_sys->es[i], p_sys->es[i]->p_pgrm == p_sys->p_pgrm ); } @@ -1668,7 +1671,7 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args ) for( i = 0; i < p_sys->i_es; i++ ) { if( p_sys->es[i]->fmt.i_cat == SPU_ES && - EsIsSelected( out, p_sys->es[i] ) ) + EsIsSelected( p_sys->es[i] ) ) EsUnselect( out, p_sys->es[i], p_sys->es[i]->p_pgrm == p_sys->p_pgrm ); } @@ -1679,18 +1682,15 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args ) { if( es == p_sys->es[i] ) { - EsOutSelect( out, es, VLC_TRUE ); + EsOutSelect( out, es, true ); break; } } } { - playlist_t * p_playlist = pl_Yield( p_sys->p_input ); - PL_LOCK; - p_playlist->gc_date = mdate(); - vlc_object_signal_unlocked( p_playlist ); - PL_UNLOCK; - pl_Release( p_playlist ); + vlc_event_t event; + event.type = vlc_InputSelectedStreamChanged; + vlc_event_send( &p_sys->p_input->p->event_manager, &event ); } return VLC_SUCCESS; @@ -1765,7 +1765,7 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args ) case ES_OUT_RESET_PCR: for( i = 0; i < p_sys->i_pgrm; i++ ) - input_ClockResetPCR( p_sys->p_input, &p_sys->pgrm[i]->clock ); + input_ClockResetPCR( &p_sys->pgrm[i]->clock ); return VLC_SUCCESS; case ES_OUT_GET_TS: @@ -1823,7 +1823,7 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args ) #if 1 input_DecoderDelete( es->p_dec ); es->p_dec = input_DecoderNew( p_sys->p_input, - &es->fmt, VLC_FALSE ); + &es->fmt, false ); #else es->p_dec->fmt_in.i_extra = p_fmt->i_extra; @@ -2090,7 +2090,7 @@ static void EsOutAddInfo( es_out_t *out, es_out_id_t *es ) fmt->video.i_frame_rate_base * 1000000, 1000000 ); input_Control( p_input, INPUT_ADD_INFO, psz_cat, - _("Frame rate"), I64Fd".%06u", + _("Frame rate"), "%"PRId64".%06u", div.quot, (unsigned int )div.rem ); } break;