From 886975814e0cb1a2688d063f24e665168b2aae85 Mon Sep 17 00:00:00 2001 From: Christophe Massiot Date: Tue, 23 Jan 2007 17:50:32 +0000 Subject: [PATCH] * modules/demux/ts.c: Fixed stream output mode detection. --- include/vlc_es_out.h | 1 + modules/demux/ts.c | 31 ++++++++++++++++--------------- src/input/es_out.c | 1 + 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/include/vlc_es_out.h b/include/vlc_es_out.h index 10a1723e6b..03ea27a0f6 100644 --- a/include/vlc_es_out.h +++ b/include/vlc_es_out.h @@ -94,6 +94,7 @@ struct es_out_t int (*pf_send) ( es_out_t *, es_out_id_t *, block_t * ); void (*pf_del) ( es_out_t *, es_out_id_t * ); int (*pf_control)( es_out_t *, int i_query, va_list ); + vlc_bool_t b_sout; es_out_sys_t *p_sys; }; diff --git a/modules/demux/ts.c b/modules/demux/ts.c index 2b505a6bad..2a4c6ec38a 100644 --- a/modules/demux/ts.c +++ b/modules/demux/ts.c @@ -3025,12 +3025,9 @@ static void PMTCallBack( demux_t *p_demux, dvbpsi_pmt_t *p_pmt ) && DVBPSI_VERSION_INT > ((0<<16)+(1<<8)+5) pid->es->fmt.i_group = p_pmt->i_program_number; - /* If i_dvb_program == -1 it means the user specified - * --sout-all or --programs, so she want to stream, and - * she doesn't want to stream several identical ESes - * with different language descriptors. So for -1 we - * just enable descriptor pass-through. --Meuuh */ - if( p_sys->i_dvb_program != -1 ) + /* In stream output mode, only enable descriptor + * pass-through. */ + if( !p_demux->out->b_sout ) { uint16_t n, i = 0; dvbpsi_teletext_dr_t *sub; @@ -3110,10 +3107,12 @@ static void PMTCallBack( demux_t *p_demux, dvbpsi_pmt_t *p_pmt ) if( !i ) pid->es->fmt.i_cat = UNKNOWN_ES; } -#else - pid->es->fmt.subs.dvb.i_id = -1; - pid->es->fmt.psz_description = strdup( "Teletext" ); + else #endif /* defined _DVBPSI_DR_56_H_ && DVBPSI_VERSION(0,1,6) */ + { + pid->es->fmt.subs.dvb.i_id = -1; + pid->es->fmt.psz_description = strdup( "Teletext" ); + } } else if( p_dr->i_tag == 0x59 ) { @@ -3128,12 +3127,9 @@ static void PMTCallBack( demux_t *p_demux, dvbpsi_pmt_t *p_pmt ) #ifdef _DVBPSI_DR_59_H_ pid->es->fmt.i_group = p_pmt->i_program_number; - /* If i_dvb_program == -1 it means the user specified - * --sout-all or --programs, so she want to stream, and - * she doesn't want to stream several identical ESes - * with different language descriptors. So for -1 we - * just enable descriptor pass-through. --Meuuh */ - if( p_sys->i_dvb_program != -1 ) + /* In stream output mode, only enable descriptor + * pass-through. */ + if( !p_demux->out->b_sout ) { uint16_t n, i = 0; dvbpsi_subtitling_dr_t *sub; @@ -3220,7 +3216,12 @@ static void PMTCallBack( demux_t *p_demux, dvbpsi_pmt_t *p_pmt ) if( !i ) pid->es->fmt.i_cat = UNKNOWN_ES; } + else #endif /* _DVBPSI_DR_59_H_ */ + { + pid->es->fmt.subs.dvb.i_id = -1; + pid->es->fmt.psz_description = strdup( "DVB subtitles" ); + } } } } diff --git a/src/input/es_out.c b/src/input/es_out.c index 275daab62e..98f4fa0656 100644 --- a/src/input/es_out.c +++ b/src/input/es_out.c @@ -151,6 +151,7 @@ es_out_t *input_EsOutNew( input_thread_t *p_input ) 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); p_sys->p_input = p_input; -- 2.39.2