oggparsevorbis: support official chapter extension
authorJames Almer <jamrial@gmail.com>
Sat, 5 Oct 2013 19:33:41 +0000 (21:33 +0200)
committerAnton Khirnov <anton@khirnov.net>
Sat, 12 Oct 2013 13:24:08 +0000 (15:24 +0200)
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
libavformat/oggparsevorbis.c

index 1ed75db1fabae3307b9a9cb6fdfb5cfd733c12b8..82833904b843b6fd7414cfb10e1591279c644ef0 100644 (file)
@@ -40,10 +40,10 @@ static int ogm_chapter(AVFormatContext *as, uint8_t *key, uint8_t *val)
     int i, cnum, h, m, s, ms, keylen = strlen(key);
     AVChapter *chapter = NULL;
 
-    if (keylen < 9 || sscanf(key, "CHAPTER%02d", &cnum) != 1)
+    if (keylen < 9 || sscanf(key, "CHAPTER%03d", &cnum) != 1)
         return 0;
 
-    if (keylen == 9) {
+    if (keylen <= 10) {
         if (sscanf(val, "%02d:%02d:%02d.%03d", &h, &m, &s, &ms) < 4)
             return 0;
 
@@ -51,7 +51,7 @@ static int ogm_chapter(AVFormatContext *as, uint8_t *key, uint8_t *val)
                            ms + 1000 * (s + 60 * (m + 60 * h)),
                            AV_NOPTS_VALUE, NULL);
         av_free(val);
-    } else if (!strcmp(key + 9, "NAME")) {
+    } else if (!strcmp(key + keylen - 4, "NAME")) {
         for (i = 0; i < as->nb_chapters; i++)
             if (as->chapters[i]->id == cnum) {
                 chapter = as->chapters[i];