- var_Create( p_dec, "telx-page", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
- var_Get( p_dec, "telx-page", &val );
- i_conf_wanted_page = val.i_int;
-
+ var_Create( p_dec, "telx-override-page",
+ VLC_VAR_BOOL | 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_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;
+
+ var_Create( p_dec, "telx-french-workaround",
+ VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
+ var_Get( p_dec, "telx-french-workaround", &val );
+ if( p_sys->i_wanted_page < 100 &&
+ (val.b_bool || (p_sys->i_wanted_page % 16) >= 10))
+ {
+ /* See http://www.nada.kth.se/~ragge/vdr/ttxtsubs/TROUBLESHOOTING.txt
+ * paragraph about French channels - they mix up decimal and
+ * hexadecimal */
+ p_sys->i_wanted_page = (p_sys->i_wanted_page / 10) * 16 +
+ (p_sys->i_wanted_page % 10);
+ }
+ }
+ else if( val.i_int <= 0 )
+ {
+ p_sys->i_wanted_magazine = -1;
+ p_sys->i_wanted_page = -1;
+ }
+ else
+ {
+ p_sys->i_wanted_magazine = val.i_int / 100;
+ p_sys->i_wanted_page = (((val.i_int % 100) / 10) << 4)
+ | ((val.i_int % 100) % 10);
+ }