]> git.sesse.net Git - vlc/commitdiff
Bluray: correctly select the main title
authorJean-Baptiste Kempf <jb@videolan.org>
Sun, 17 Oct 2010 15:24:26 +0000 (17:24 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Sun, 17 Oct 2010 15:25:15 +0000 (17:25 +0200)
This should fix the usual playback issues we had so far.

modules/access/bluray.c

index bbe7c7a26692df8fceb9842cc234977427f452be..9610cb37809b880b3f6b7759d19fa281d6a305ce 100644 (file)
@@ -88,7 +88,7 @@ static int blurayOpen( vlc_object_t *object )
 
     access_sys_t *p_sys;
     char *pos_title;
-    int i_title = 0;
+    int i_title = -1;
     char bd_path[PATH_MAX];
 
     if( strcmp( p_access->psz_access, "bluray" ) ) {
@@ -157,6 +157,20 @@ static int bluraySetTitle(access_t *p_access, int i_title)
 {
     access_sys_t *p_sys = p_access->p_sys;
 
+    unsigned int i_nb_titles = bd_get_titles(p_sys->bluray, TITLES_RELEVANT);
+
+    /* Looking for the main title, ie the longest duration */
+    if (i_title == -1) {
+        uint64_t duration=0;
+        for (unsigned int i = 0; i < i_nb_titles; i++) {
+            BLURAY_TITLE_INFO *info = bd_get_title_info(p_sys->bluray, i);
+            if (info->duration > duration) {
+                i_title = i;
+                duration = info->duration;
+            }
+        }
+    }
+
     /* Select Blu-Ray title */
     if ( bd_select_title(p_access->p_sys->bluray, i_title) == 0 ) {
         msg_Err( p_access, "cannot select bd title '%d'", p_access->info.i_title);