Mercurial > libavformat.hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
3322:97f7b77a969b | 3323:4bf98e198eec |
---|---|
2158 } | 2158 } |
2159 | 2159 |
2160 switch (id) { | 2160 switch (id) { |
2161 case MATROSKA_ID_EDITIONENTRY: { | 2161 case MATROSKA_ID_EDITIONENTRY: { |
2162 uint64_t end = AV_NOPTS_VALUE, start = AV_NOPTS_VALUE; | 2162 uint64_t end = AV_NOPTS_VALUE, start = AV_NOPTS_VALUE; |
2163 int64_t uid= -1; | |
2163 char* title = NULL; | 2164 char* title = NULL; |
2164 /* if there is more than one chapter edition | 2165 /* if there is more than one chapter edition |
2165 we take only the first one */ | 2166 we take only the first one */ |
2166 if(s->chapters) { | 2167 if(s->chapters) { |
2167 ebml_read_skip(matroska); | 2168 ebml_read_skip(matroska); |
2233 break; | 2234 break; |
2234 } | 2235 } |
2235 } | 2236 } |
2236 break; | 2237 break; |
2237 | 2238 |
2239 case MATROSKA_ID_CHAPTERUID: | |
2240 res = ebml_read_uint(matroska, &id, &uid); | |
2241 break; | |
2238 default: | 2242 default: |
2239 av_log(s, AV_LOG_INFO, "Ignoring unknown Chapter atom ID 0x%x\n", id); | 2243 av_log(s, AV_LOG_INFO, "Ignoring unknown Chapter atom ID 0x%x\n", id); |
2240 case MATROSKA_ID_CHAPTERUID: | |
2241 case MATROSKA_ID_CHAPTERFLAGHIDDEN: | 2244 case MATROSKA_ID_CHAPTERFLAGHIDDEN: |
2242 case EBML_ID_VOID: | 2245 case EBML_ID_VOID: |
2243 res = ebml_read_skip(matroska); | 2246 res = ebml_read_skip(matroska); |
2244 break; | 2247 break; |
2245 } | 2248 } |
2248 matroska->level_up--; | 2251 matroska->level_up--; |
2249 break; | 2252 break; |
2250 } | 2253 } |
2251 } | 2254 } |
2252 | 2255 |
2253 if (start != AV_NOPTS_VALUE) { | 2256 if (start != AV_NOPTS_VALUE && uid != -1) { |
2254 start = start * AV_TIME_BASE / 1000000000; | 2257 start = start * AV_TIME_BASE / 1000000000; |
2255 if (end != AV_NOPTS_VALUE) | 2258 if (end != AV_NOPTS_VALUE) |
2256 end = end * AV_TIME_BASE / 1000000000; | 2259 end = end * AV_TIME_BASE / 1000000000; |
2257 res = ff_new_chapter(s, start, end, title); | 2260 res = ff_new_chapter(s, uid, start, end, title); |
2258 } | 2261 } |
2259 av_free(title); | 2262 av_free(title); |
2260 break; | 2263 break; |
2261 | 2264 |
2262 default: | 2265 default: |