It removed a hack where dvb.i_id was used for teletext.
{
int i_id;
} dvb;
+ struct
+ {
+ int i_magazine;
+ int i_page;
+ } teletext;
};
/**
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 );
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;
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]) );
}
}