Commit d66d8f7d authored by Laurent Aimar's avatar Laurent Aimar

Added teletext fields in es_forma_t.

It removed a hack where dvb.i_id was used for teletext.
parent ed2ceb36
...@@ -206,6 +206,11 @@ struct subs_format_t ...@@ -206,6 +206,11 @@ struct subs_format_t
{ {
int i_id; int i_id;
} dvb; } dvb;
struct
{
int i_magazine;
int i_page;
} teletext;
}; };
/** /**
......
...@@ -194,13 +194,13 @@ static int Open( vlc_object_t *p_this ) ...@@ -194,13 +194,13 @@ static int Open( vlc_object_t *p_this )
var_Create( p_dec, "telx-override-page", var_Create( p_dec, "telx-override-page",
VLC_VAR_INTEGER | VLC_VAR_DOINHERIT ); VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
var_Get( p_dec, "telx-override-page", &val ); var_Get( p_dec, "telx-override-page", &val );
if( val.i_int == -1 && p_dec->fmt_in.subs.dvb.i_id != -1 if( val.i_int == -1 &&
&& p_dec->fmt_in.subs.dvb.i_id != (1<<16) ) /* ignore if TS demux wants page 100 (unlikely to be sub) */ p_dec->fmt_in.subs.teletext.i_magazine != -1 &&
( p_dec->fmt_in.subs.teletext.i_magazine != 1 ||
p_dec->fmt_in.subs.teletext.i_page != 0 ) ) /* ignore if TS demux wants page 100 (unlikely to be sub) */
{ {
p_sys->i_wanted_magazine = p_dec->fmt_in.subs.dvb.i_id >> 16; p_sys->i_wanted_magazine = p_dec->fmt_in.subs.teletext.i_magazine;
if( p_sys->i_wanted_magazine == 0 ) p_sys->i_wanted_page = p_dec->fmt_in.subs.teletext.i_page;
p_sys->i_wanted_magazine = 8;
p_sys->i_wanted_page = p_dec->fmt_in.subs.dvb.i_id & 0xff;
var_Create( p_dec, "telx-french-workaround", var_Create( p_dec, "telx-french-workaround",
VLC_VAR_BOOL | VLC_VAR_DOINHERIT ); VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
......
...@@ -251,13 +251,10 @@ static int Open( vlc_object_t *p_this ) ...@@ -251,13 +251,10 @@ static int Open( vlc_object_t *p_this )
RequestPage, p_sys ); RequestPage, p_sys );
/* Check if the Teletext track has a known "initial page". */ /* Check if the Teletext track has a known "initial page". */
if( p_sys->i_wanted_page == 100 && p_dec->fmt_in.subs.dvb.i_id != -1 ) if( p_sys->i_wanted_page == 100 && p_dec->fmt_in.subs.teletext.i_magazine != -1 )
{ {
int i_wanted_magazine = p_dec->fmt_in.subs.dvb.i_id >> 16; p_sys->i_wanted_page = 100 * p_dec->fmt_in.subs.teletext.i_magazine +
if( i_wanted_magazine == 0 ) vbi_bcd2dec( p_dec->fmt_in.subs.teletext.i_page );
i_wanted_magazine = 8;
p_sys->i_wanted_page = vbi_bcd2dec(p_dec->fmt_in.subs.dvb.i_id & 0xff);
p_sys->i_wanted_page += 100*i_wanted_magazine;
} }
p_sys->i_wanted_subpage = VBI_ANY_SUBNO; p_sys->i_wanted_subpage = VBI_ANY_SUBNO;
......
...@@ -3464,24 +3464,24 @@ static void PMTCallBack( demux_t *p_demux, dvbpsi_pmt_t *p_pmt ) ...@@ -3464,24 +3464,24 @@ static void PMTCallBack( demux_t *p_demux, dvbpsi_pmt_t *p_pmt )
p_page->i_teletext_magazine_number, p_page->i_teletext_magazine_number,
p_page->i_teletext_page_number ); p_page->i_teletext_page_number );
/* Hack, FIXME This stores the initial page for this track, /* This stores the initial page for this track,
so that it can be used by the telx and zvbi decoders. */ so that it can be used by the telx and zvbi decoders. */
p_es->fmt.subs.dvb.i_id = p_es->fmt.subs.teletext.i_magazine =
p_page->i_teletext_magazine_number ? : 8;
p_es->fmt.subs.teletext.i_page =
p_page->i_teletext_page_number; p_page->i_teletext_page_number;
p_es->fmt.subs.dvb.i_id |=
((int)p_page->i_teletext_magazine_number << 16);
i++; i++;
} }
} }
if( !i ) if( !i )
pid->es->fmt.i_cat = UNKNOWN_ES; pid->es->fmt.i_cat = UNKNOWN_ES;
} }
else else
#endif /* defined _DVBPSI_DR_56_H_ && DVBPSI_VERSION(0,1,6) */ #endif /* defined _DVBPSI_DR_56_H_ && DVBPSI_VERSION(0,1,6) */
{ {
pid->es->fmt.subs.dvb.i_id = -1; pid->es->fmt.subs.teletext.i_magazine = -1;
pid->es->fmt.subs.teletext.i_page = 0;
pid->es->fmt.psz_description = strdup( _(ppsz_teletext_type[1]) ); pid->es->fmt.psz_description = strdup( _(ppsz_teletext_type[1]) );
} }
} }
......
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