diff matroskadec.c @ 3323:4bf98e198eec libavformat

Add id to AVChapter, untested (where do i find matroska files with chapters?).
author michael
date Fri, 23 May 2008 13:02:27 +0000
parents 609eabc17cb2
children 374e74567a4e
line wrap: on
line diff
--- a/matroskadec.c	Fri May 23 12:45:03 2008 +0000
+++ b/matroskadec.c	Fri May 23 13:02:27 2008 +0000
@@ -2160,6 +2160,7 @@
         switch (id) {
         case MATROSKA_ID_EDITIONENTRY: {
             uint64_t end = AV_NOPTS_VALUE, start = AV_NOPTS_VALUE;
+            int64_t uid= -1;
             char* title = NULL;
             /* if there is more than one chapter edition
                we take only the first one */
@@ -2235,9 +2236,11 @@
                             }
                             break;
 
+                        case MATROSKA_ID_CHAPTERUID:
+                            res = ebml_read_uint(matroska, &id, &uid);
+                            break;
                         default:
                             av_log(s, AV_LOG_INFO, "Ignoring unknown Chapter atom ID 0x%x\n", id);
-                        case MATROSKA_ID_CHAPTERUID:
                         case MATROSKA_ID_CHAPTERFLAGHIDDEN:
                         case EBML_ID_VOID:
                             res = ebml_read_skip(matroska);
@@ -2250,11 +2253,11 @@
                         }
                     }
 
-                    if (start != AV_NOPTS_VALUE) {
+                    if (start != AV_NOPTS_VALUE && uid != -1) {
                         start = start * AV_TIME_BASE / 1000000000;
                         if (end != AV_NOPTS_VALUE)
                             end = end * AV_TIME_BASE / 1000000000;
-                        res = ff_new_chapter(s, start, end, title);
+                        res = ff_new_chapter(s, uid, start, end, title);
                     }
                     av_free(title);
                     break;