]> git.sesse.net Git - vlc/commitdiff
Added teletext fields in es_forma_t.
authorLaurent Aimar <fenrir@videolan.org>
Fri, 13 Feb 2009 22:40:55 +0000 (23:40 +0100)
committerLaurent Aimar <fenrir@videolan.org>
Fri, 13 Feb 2009 22:40:55 +0000 (23:40 +0100)
It removed a hack where dvb.i_id was used for teletext.

include/vlc_es.h
modules/codec/telx.c
modules/codec/zvbi.c
modules/demux/ts.c

index 690de39686d709d38c24a15f81a0fa3d23ea982d..8744f20f733e05d67f7e20dff8926a62b23590b9 100644 (file)
@@ -206,6 +206,11 @@ struct subs_format_t
     {
         int i_id;
     } dvb;
+    struct
+    {
+        int i_magazine;
+        int i_page;
+    } teletext;
 };
 
 /**
index 90fff84c8a27388711ac966b8180c67491a65c73..33b1fa33d98bf2d0b6d2cf749adc833e2226ba7f 100644 (file)
@@ -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 );
index 06bffe09b6335dafae11d0fc003f2ced2561757d..8f6c0524a385c8a04d245c637de4d26ce73ef8f0 100644 (file)
@@ -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;
 
index cb969285508abf7a80426a1686818e64f6f4adcd..ada40c4e29e58c8f17f6bb70e4c21897ccf3956d 100644 (file)
@@ -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]) );
                     }
                 }