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
{
int i_id;
} dvb;
struct
{
int i_magazine;
int i_page;
} teletext;
};
/**
......
......@@ -194,13 +194,13 @@ static int Open( vlc_object_t *p_this )
var_Create( p_dec, "telx-override-page",
VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
var_Get( p_dec, "telx-override-page", &val );
if( val.i_int == -1 && p_dec->fmt_in.subs.dvb.i_id != -1
&& p_dec->fmt_in.subs.dvb.i_id != (1<<16) ) /* ignore if TS demux wants page 100 (unlikely to be sub) */
if( val.i_int == -1 &&
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;
if( p_sys->i_wanted_magazine == 0 )
p_sys->i_wanted_magazine = 8;
p_sys->i_wanted_page = p_dec->fmt_in.subs.dvb.i_id & 0xff;
p_sys->i_wanted_magazine = p_dec->fmt_in.subs.teletext.i_magazine;
p_sys->i_wanted_page = p_dec->fmt_in.subs.teletext.i_page;
var_Create( p_dec, "telx-french-workaround",
VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
......
......@@ -251,13 +251,10 @@ static int Open( vlc_object_t *p_this )
RequestPage, p_sys );
/* 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;
if( i_wanted_magazine == 0 )
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_page = 100 * p_dec->fmt_in.subs.teletext.i_magazine +
vbi_bcd2dec( p_dec->fmt_in.subs.teletext.i_page );
}
p_sys->i_wanted_subpage = VBI_ANY_SUBNO;
......
......@@ -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_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. */
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_es->fmt.subs.dvb.i_id |=
((int)p_page->i_teletext_magazine_number << 16);
i++;
}
}
if( !i )
pid->es->fmt.i_cat = UNKNOWN_ES;
}
else
#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]) );
}
}
......
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