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 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 int EsOutControl( es_out_t *, int i_query, va_list );
static void EsOutAddInfo( es_out_t *, es_out_id_t *es );
static int EsOutControl( es_out_t *, int i_query, va_list );
static void EsOutAddInfo( es_out_t *, es_out_id_t *es );
static char *LanguageGetName( const char *psz_code );
static char *LanguageGetCode( const char *psz_lang );
static char **LanguageSplit( const char *psz_langs );
static char *LanguageGetName( const char *psz_code );
static char *LanguageGetCode( const char *psz_lang );
static char **LanguageSplit( const char *psz_langs );
*****************************************************************************/
es_out_t *input_EsOutNew( input_thread_t *p_input, int i_rate )
{
*****************************************************************************/
es_out_t *input_EsOutNew( input_thread_t *p_input, int i_rate )
{
for( i = 0; i < p_sys->i_pgrm; i++ )
input_ClockSetRate( &p_sys->pgrm[i]->clock, i_rate );
for( i = 0; i < p_sys->i_pgrm; i++ )
input_ClockSetRate( &p_sys->pgrm[i]->clock, i_rate );
//es_out_sys_t *p_sys = out->p_sys;
es_out_Control( out, ES_OUT_RESET_PCR );
//es_out_sys_t *p_sys = out->p_sys;
es_out_Control( out, ES_OUT_RESET_PCR );
}
/*****************************************************************************
*
*****************************************************************************/
static void EsOutESVarUpdateGeneric( es_out_t *out, int i_id, es_format_t *fmt, const char *psz_language,
}
/*****************************************************************************
*
*****************************************************************************/
static void EsOutESVarUpdateGeneric( es_out_t *out, int i_id, es_format_t *fmt, const char *psz_language,
val.i_int = i_id;
var_Change( p_input, psz_var, VLC_VAR_DELCHOICE, &val, NULL );
val.i_int = i_id;
var_Change( p_input, psz_var, VLC_VAR_DELCHOICE, &val, NULL );
- char *temp;
- text.psz_string = malloc( strlen( _("Track %i") )+
- strlen( psz_language ) + 30 );
- asprintf( &temp, _("Track %i"), val.i_int );
- sprintf( text.psz_string, "%s - [%s]", temp, psz_language );
- free( temp );
+ if( asprintf( &text.psz_string, "%s %i - [%s]", _( "Track" ), val.i_int, psz_language ) == -1 )
+ text.psz_string = NULL;
- text.psz_string = malloc( strlen( _("Track %i") ) + 20 );
- sprintf( text.psz_string, _("Track %i"), val.i_int );
+ if( asprintf( &text.psz_string, "%s %i", _( "Track" ), val.i_int ) == -1 )
+ text.psz_string = NULL;
- var_SetBool( p_sys->p_input, "intf-change", VLC_TRUE );
+ if( b_teletext )
+ var_SetInteger( p_sys->p_input, "teletext-es", i_id );
+
+ var_SetBool( p_sys->p_input, "intf-change", true );
{
EsOutESVarUpdateGeneric( out, es->i_id, &es->fmt, es->psz_language, b_delete );
}
{
EsOutESVarUpdateGeneric( out, es->i_id, &es->fmt, es->psz_language, b_delete );
}
{
if( p_sys->es[i]->p_pgrm == old && EsIsSelected( p_sys->es[i] ) &&
p_sys->i_mode != ES_OUT_MODE_ALL )
{
if( p_sys->es[i]->p_pgrm == old && EsIsSelected( p_sys->es[i] ) &&
p_sys->i_mode != ES_OUT_MODE_ALL )
var_Change( p_input, "audio-es", VLC_VAR_CLEARCHOICES, NULL, NULL );
var_Change( p_input, "video-es", VLC_VAR_CLEARCHOICES, NULL, NULL );
var_Change( p_input, "spu-es", VLC_VAR_CLEARCHOICES, NULL, NULL );
var_Change( p_input, "audio-es", VLC_VAR_CLEARCHOICES, NULL, NULL );
var_Change( p_input, "video-es", VLC_VAR_CLEARCHOICES, NULL, NULL );
var_Change( p_input, "spu-es", VLC_VAR_CLEARCHOICES, NULL, NULL );
- 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 );
- input_ClockInit( &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 );
val.i_int = i_group;
var_Change( p_input, "program", VLC_VAR_DELCHOICE, &val, NULL );
val.i_int = i_group;
var_Change( p_input, "program", VLC_VAR_DELCHOICE, &val, NULL );
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 )
{
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 )
{
- 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 );
{
msg_Dbg( p_input, "video is disabled, not selecting ES 0x%x",
es->i_id );
else if( es->fmt.i_cat == AUDIO_ES )
{
var_Get( p_input, "audio", &val );
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 );
{
msg_Dbg( p_input, "audio is disabled, not selecting ES 0x%x",
es->i_id );
if( es->fmt.i_cat == SPU_ES )
{
var_Get( p_input, "spu", &val );
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 );
{
msg_Dbg( p_input, "spu is disabled, not selecting ES 0x%x",
es->i_id );
val.i_int = es->i_id;
var_Change( p_input, psz_var, VLC_VAR_SETVALUE, &val, NULL );
val.i_int = es->i_id;
var_Change( p_input, psz_var, VLC_VAR_SETVALUE, &val, NULL );
val.i_int = -1;
var_Change( p_input, "spu-es", VLC_VAR_SETVALUE, &val, NULL );
if( !b_update )
val.i_int = -1;
var_Change( p_input, "spu-es", VLC_VAR_SETVALUE, &val, NULL );
if( !b_update )
val.i_int = -1;
var_Change( p_input, psz_var, VLC_VAR_SETVALUE, &val, NULL );
val.i_int = -1;
var_Change( p_input, psz_var, VLC_VAR_SETVALUE, &val, NULL );
{
vlc_mutex_lock( &p_input->p->counters.counters_lock );
stats_UpdateInteger( p_input, p_input->p->counters.p_demux_read,
{
vlc_mutex_lock( &p_input->p->counters.counters_lock );
stats_UpdateInteger( p_input, p_input->p->counters.p_demux_read,
- 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' ) )
( p_sys->i_rate >= INPUT_RATE_DEFAULT/AOUT_MAX_INPUT_RATE &&
p_sys->i_rate <= INPUT_RATE_DEFAULT*AOUT_MAX_INPUT_RATE ) ) )
{
( p_sys->i_rate >= INPUT_RATE_DEFAULT/AOUT_MAX_INPUT_RATE &&
p_sys->i_rate <= INPUT_RATE_DEFAULT*AOUT_MAX_INPUT_RATE ) ) )
{
VLC_FOURCC('c', 'c', '3', ' '),
VLC_FOURCC('c', 'c', '4', ' '),
};
VLC_FOURCC('c', 'c', '3', ' '),
VLC_FOURCC('c', 'c', '4', ' '),
};
static void EsOutDel( es_out_t *out, es_out_id_t *es )
{
es_out_sys_t *p_sys = out->p_sys;
static void EsOutDel( es_out_t *out, es_out_id_t *es )
{
es_out_sys_t *p_sys = out->p_sys;
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;
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;
static int EsOutControl( es_out_t *out, int i_query, va_list args )
{
es_out_sys_t *p_sys = out->p_sys;
static int EsOutControl( es_out_t *out, int i_query, va_list args )
{
es_out_sys_t *p_sys = out->p_sys;
case ES_OUT_GET_ES_STATE:
es = (es_out_id_t*) va_arg( args, es_out_id_t * );
case ES_OUT_GET_ES_STATE:
es = (es_out_id_t*) va_arg( args, es_out_id_t * );
- 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 );
#if 1
input_DecoderDelete( es->p_dec );
es->p_dec = input_DecoderNew( p_sys->p_input,
#if 1
input_DecoderDelete( es->p_dec );
es->p_dec = input_DecoderNew( p_sys->p_input,
fmt->video.i_frame_rate_base * 1000000,
1000000 );
input_Control( p_input, INPUT_ADD_INFO, psz_cat,
fmt->video.i_frame_rate_base * 1000000,
1000000 );
input_Control( p_input, INPUT_ADD_INFO, psz_cat,