Commit a996fae8 authored by Christophe Mutricy's avatar Christophe Mutricy

ts.c: Current libdvbpsi is buggy so wait for 0.1.6 to activate the teletext detection code

ts.c, telx.c: Fallback to teletext detection if TS detection wasn't possible
parent e618a3ea
...@@ -49,7 +49,9 @@ static subpicture_t *Decode( decoder_t *, block_t ** ); ...@@ -49,7 +49,9 @@ static subpicture_t *Decode( decoder_t *, block_t ** );
#define OVERRIDE_PAGE_TEXT N_("Override page") #define OVERRIDE_PAGE_TEXT N_("Override page")
#define OVERRIDE_PAGE_LONGTEXT N_("Override the indicated page, try this if " \ #define OVERRIDE_PAGE_LONGTEXT N_("Override the indicated page, try this if " \
"your subtitles don't appear (0 = autodetect, usually 888 or 889).") "your subtitles don't appear (-1 = autodetect from TS, " \
"0 = autodetect from teletext, " \
">0 = actual page number, usually 888 or 889).")
#define IGNORE_SUB_FLAG_TEXT N_("Ignore subtitle flag") #define IGNORE_SUB_FLAG_TEXT N_("Ignore subtitle flag")
#define IGNORE_SUB_FLAG_LONGTEXT N_("Ignore the subtitle flag, try this if " \ #define IGNORE_SUB_FLAG_LONGTEXT N_("Ignore the subtitle flag, try this if " \
...@@ -173,6 +175,7 @@ static int Open( vlc_object_t *p_this ) ...@@ -173,6 +175,7 @@ static int Open( vlc_object_t *p_this )
return VLC_ENOMEM; return VLC_ENOMEM;
} }
memset( p_sys, 0, sizeof(decoder_sys_t) ); memset( p_sys, 0, sizeof(decoder_sys_t) );
p_sys->i_align = 0; p_sys->i_align = 0;
...@@ -182,14 +185,14 @@ static int Open( vlc_object_t *p_this ) ...@@ -182,14 +185,14 @@ static int Open( vlc_object_t *p_this )
var_Create( p_dec, "telx-override-page", var_Create( p_dec, "telx-override-page",
VLC_VAR_BOOL | VLC_VAR_DOINHERIT ); VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
var_Get( p_dec, "telx-override-page", &val ); var_Get( p_dec, "telx-override-page", &val );
if( val.i_int == -1 ) if( val.i_int == -1 && p_dec->fmt_in.subs.dvb.i_id != -1 )
{ {
p_sys->i_wanted_magazine = p_dec->fmt_in.subs.dvb.i_id >> 16; p_sys->i_wanted_magazine = p_dec->fmt_in.subs.dvb.i_id >> 16;
if( p_sys->i_wanted_magazine == 0 ) if( p_sys->i_wanted_magazine == 0 )
p_sys->i_wanted_magazine = 8; p_sys->i_wanted_magazine = 8;
p_sys->i_wanted_page = p_dec->fmt_in.subs.dvb.i_id & 0xff; p_sys->i_wanted_page = p_dec->fmt_in.subs.dvb.i_id & 0xff;
} }
else if( val.i_int == 0 ) else if( val.i_int <= 0 )
{ {
p_sys->i_wanted_magazine = -1; p_sys->i_wanted_magazine = -1;
p_sys->i_wanted_page = -1; p_sys->i_wanted_page = -1;
...@@ -200,7 +203,6 @@ static int Open( vlc_object_t *p_this ) ...@@ -200,7 +203,6 @@ static int Open( vlc_object_t *p_this )
p_sys->i_wanted_page = (((val.i_int % 100) / 10) << 4) p_sys->i_wanted_page = (((val.i_int % 100) / 10) << 4)
| ((val.i_int % 100) % 10); | ((val.i_int % 100) % 10);
} }
var_Create( p_dec, "telx-ignore-subtitle-flag", var_Create( p_dec, "telx-ignore-subtitle-flag",
VLC_VAR_BOOL | VLC_VAR_DOINHERIT ); VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
var_Get( p_dec, "telx-ignore-subtitle-flag", &val ); var_Get( p_dec, "telx-ignore-subtitle-flag", &val );
......
...@@ -3021,7 +3021,8 @@ static void PMTCallBack( demux_t *p_demux, dvbpsi_pmt_t *p_pmt ) ...@@ -3021,7 +3021,8 @@ static void PMTCallBack( demux_t *p_demux, dvbpsi_pmt_t *p_pmt )
memcpy( pid->es->fmt.p_extra, p_dr->p_data, memcpy( pid->es->fmt.p_extra, p_dr->p_data,
p_dr->i_length ); p_dr->i_length );
#ifdef _DVBPSI_DR_56_H_ #if defined _DVBPSI_DR_56_H_ && defined DVBPSI_VERSION \
&& DVBPSI_VERSION_INT > ((0<<16)+(1<<8)+5)
pid->es->fmt.i_group = p_pmt->i_program_number; pid->es->fmt.i_group = p_pmt->i_program_number;
/* If i_dvb_program == -1 it means the user specified /* If i_dvb_program == -1 it means the user specified
...@@ -3110,8 +3111,9 @@ static void PMTCallBack( demux_t *p_demux, dvbpsi_pmt_t *p_pmt ) ...@@ -3110,8 +3111,9 @@ static void PMTCallBack( demux_t *p_demux, dvbpsi_pmt_t *p_pmt )
pid->es->fmt.i_cat = UNKNOWN_ES; pid->es->fmt.i_cat = UNKNOWN_ES;
} }
#else #else
pid->es->fmt.subs.dvb.i_id = -1;
pid->es->fmt.psz_description = strdup( "Teletext" ); pid->es->fmt.psz_description = strdup( "Teletext" );
#endif #endif /* defined _DVBPSI_DR_56_H_ && DVBPSI_VERSION(0,1,6) */
} }
else if( p_dr->i_tag == 0x59 ) else if( p_dr->i_tag == 0x59 )
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment