[vlc-devel] commit: Added teletext fields in es_forma_t. (Laurent Aimar )

git version control git at videolan.org
Sat Feb 14 00:46:33 CET 2009


vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Fri Feb 13 23:40:55 2009 +0100| [d66d8f7d1854340ed37c4ca2b1371de9dc5be072] | committer: Laurent Aimar 

Added teletext fields in es_forma_t.

It removed a hack where dvb.i_id was used for teletext.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d66d8f7d1854340ed37c4ca2b1371de9dc5be072
---

 include/vlc_es.h     |    5 +++++
 modules/codec/telx.c |   12 ++++++------
 modules/codec/zvbi.c |    9 +++------
 modules/demux/ts.c   |   12 ++++++------
 4 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/include/vlc_es.h b/include/vlc_es.h
index 690de39..8744f20 100644
--- a/include/vlc_es.h
+++ b/include/vlc_es.h
@@ -206,6 +206,11 @@ struct subs_format_t
     {
         int i_id;
     } dvb;
+    struct
+    {
+        int i_magazine;
+        int i_page;
+    } teletext;
 };
 
 /**
diff --git a/modules/codec/telx.c b/modules/codec/telx.c
index 90fff84..33b1fa3 100644
--- a/modules/codec/telx.c
+++ b/modules/codec/telx.c
@@ -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 );
diff --git a/modules/codec/zvbi.c b/modules/codec/zvbi.c
index 06bffe0..8f6c052 100644
--- a/modules/codec/zvbi.c
+++ b/modules/codec/zvbi.c
@@ -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;
 
diff --git a/modules/demux/ts.c b/modules/demux/ts.c
index cb96928..ada40c4 100644
--- a/modules/demux/ts.c
+++ b/modules/demux/ts.c
@@ -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]) );
                     }
                 }




More information about the vlc-devel mailing list