[vlc-devel] [PATCH] input: convert input_title_t.b_menu to flags

Petri Hintukainen phintuka at gmail.com
Wed Dec 2 13:55:46 CET 2015


---
 include/vlc_input.h          | 13 +++++++++----
 lib/media_player.c           |  2 +-
 modules/access/bluray.c      | 10 ++++++----
 modules/access/dvdnav.c      |  2 +-
 modules/access/vcdx/access.c |  2 +-
 5 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/include/vlc_input.h b/include/vlc_input.h
index fa2d3f9..1fe42ee 100644
--- a/include/vlc_input.h
+++ b/include/vlc_input.h
@@ -82,14 +82,19 @@ static inline seekpoint_t *vlc_seekpoint_Duplicate( const seekpoint_t *src )
 /*****************************************************************************
  * Title:
  *****************************************************************************/
+
+/* input_title_t.i_flags field */
+#define INPUT_TITLE_MENU         0x0001   /* Menu title */
+#define INPUT_TITLE_INTERACTIVE  0x0002   /* Interactive title. Playback position has no meaning. */
+
 typedef struct input_title_t
 {
     char        *psz_name;
 
-    bool        b_menu;      /* Is it a menu or a normal entry */
-
     int64_t     i_length;   /* Length(microsecond) if known, else 0 */
 
+    int         i_flags;    /* Is it a menu or a normal entry */
+
     /* Title seekpoint */
     int         i_seekpoint;
     seekpoint_t **seekpoint;
@@ -102,7 +107,7 @@ static inline input_title_t *vlc_input_title_New(void)
         return NULL;
 
     t->psz_name = NULL;
-    t->b_menu = false;
+    t->i_flags = 0;
     t->i_length = 0;
     t->i_seekpoint = 0;
     t->seekpoint = NULL;
@@ -129,7 +134,7 @@ static inline input_title_t *vlc_input_title_Duplicate( const input_title_t *t )
     int i;
 
     if( t->psz_name ) dup->psz_name = strdup( t->psz_name );
-    dup->b_menu      = t->b_menu;
+    dup->i_flags     = t->i_flags;
     dup->i_length    = t->i_length;
     if( t->i_seekpoint > 0 )
     {
diff --git a/lib/media_player.c b/lib/media_player.c
index 8b6938c..2dee2d7 100644
--- a/lib/media_player.c
+++ b/lib/media_player.c
@@ -1476,7 +1476,7 @@ int libvlc_media_player_get_full_title_descriptions( libvlc_media_player_t *p_mi
 
         /* we want to return milliseconds to match the rest of the API */
         title->i_duration = p_input_title[i]->i_length / 1000;
-        title->b_menu = p_input_title[i]->b_menu;
+        title->b_menu = p_input_title[i]->i_flags & INPUT_TITLE_MENU;
         if( p_input_title[i]->psz_name )
             title->psz_name = strdup( p_input_title[i]->psz_name );
         else
diff --git a/modules/access/bluray.c b/modules/access/bluray.c
index 8c9700c..c2b3b80 100644
--- a/modules/access/bluray.c
+++ b/modules/access/bluray.c
@@ -1465,11 +1465,11 @@ static void blurayInitTitles(demux_t *p_demux, int menu_titles)
 
         } else if (i == 0) {
             t->psz_name = strdup(_("Top Menu"));
-            t->b_menu = true;
+            t->i_flags = INPUT_TITLE_MENU | INPUT_TITLE_INTERACTIVE;
         } else if (i == i_title - 1) {
             t->psz_name = strdup(_("First Play"));
-            if (di && di->first_play) {
-                t->b_menu = di->first_play->interactive;
+            if (di && di->first_play && di->first_play->interactive) {
+                t->i_flags = INPUT_TITLE_INTERACTIVE;
             }
         } else {
             /* add possible title name from disc metadata */
@@ -1477,7 +1477,9 @@ static void blurayInitTitles(demux_t *p_demux, int menu_titles)
                 if (di->titles[i]->name) {
                     t->psz_name = strdup(di->titles[i]->name);
                 }
-                t->b_menu = di->titles[i]->interactive;
+                if (di->titles[i]->interactive) {
+                    t->i_flags = INPUT_TITLE_INTERACTIVE;
+                }
             }
         }
 
diff --git a/modules/access/dvdnav.c b/modules/access/dvdnav.c
index 2e03153..270007d 100644
--- a/modules/access/dvdnav.c
+++ b/modules/access/dvdnav.c
@@ -1115,7 +1115,7 @@ static void DemuxTitles( demux_t *p_demux )
 
     /* Menu */
     t = vlc_input_title_New();
-    t->b_menu = true;
+    t->i_flags = INPUT_TITLE_MENU | INPUT_TITLE_INTERACTIVE;
     t->psz_name = strdup( "DVD Menu" );
 
     s = vlc_seekpoint_New();
diff --git a/modules/access/vcdx/access.c b/modules/access/vcdx/access.c
index 7298b0f..164423e 100644
--- a/modules/access/vcdx/access.c
+++ b/modules/access/vcdx/access.c
@@ -482,7 +482,7 @@ VCDLIDs( access_t * p_access )
 
     /* Set up LIDs Navigation Menu */
     t = vlc_input_title_New();
-    t->b_menu = true;
+    t->i_flags = INPUT_TITLE_MENU;
     t->psz_name = strdup( "LIDs" );
 
     for( i_lid =  1 ; i_lid <=  p_vcdplayer->i_lids ; i_lid++ )
-- 
2.5.0



More information about the vlc-devel mailing list