changeset 25165:4e57fd666c56

-identify chapters of chosen title
author nicodvb
date Wed, 28 Nov 2007 23:50:05 +0000
parents c250dbbf038f
children 6d3a16393c1c
files stream/stream_dvdnav.c
diffstat 1 files changed, 18 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/stream/stream_dvdnav.c	Wed Nov 28 18:16:47 2007 +0000
+++ b/stream/stream_dvdnav.c	Wed Nov 28 23:50:05 2007 +0000
@@ -348,6 +348,22 @@
   return STREAM_UNSUPPORTED;
 }
 
+static void identify_chapters(dvdnav_t *nav, uint32_t title)
+{
+  uint64_t *parts=NULL;
+  uint32_t n, i, t;
+  n = dvdnav_describe_title_chapters(nav, title, &parts);
+  if(parts) {
+    mp_msg(MSGT_IDENTIFY, MSGL_INFO, "CHAPTERS: ");
+    for(i=0; i<n; i++) {
+      t = parts[i] /  90000;
+      mp_msg(MSGT_IDENTIFY, MSGL_INFO, "%02d:%02d:%02d,", t/3600, (t/60)%60, t%60);
+    }
+    free(parts);
+    mp_msg(MSGT_IDENTIFY, MSGL_INFO, "\n");
+  }
+}
+
 static int open_s(stream_t *stream,int mode, void* opts, int* file_format) {
   struct stream_priv_s* p = (struct stream_priv_s*)opts;
   char *filename;
@@ -362,6 +378,8 @@
   }
 
   if(p->track > 0) {
+    if(mp_msg_test(MSGT_IDENTIFY, MSGL_INFO))
+      identify_chapters(priv->dvdnav, p->track);
     if(dvd_chapter > 0 && dvd_last_chapter > 0 && dvd_chapter > dvd_last_chapter) {
       mp_msg(MSGT_OPEN,MSGL_FATAL,"dvdnav_stream, invalid chapter range: %d > %d\n", dvd_chapter, dvd_last_chapter);
       return STREAM_UNSUPPORTED;