Mercurial > libavformat.hg
changeset 3331:f89173ea4c5e libavformat
Chapter demuxing support. (untested as I have no nuts with chapters)
Isn't that much simpler than Matroska?
author | michael |
---|---|
date | Fri, 23 May 2008 13:52:54 +0000 |
parents | 374e74567a4e |
children | 74e2cfc79cda |
files | nutdec.c |
diffstat | 1 files changed, 12 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/nutdec.c Fri May 23 13:14:11 2008 +0000 +++ b/nutdec.c Fri May 23 13:52:54 2008 +0000 @@ -393,6 +393,7 @@ int64_t value, end; char name[256], str_value[1024], type_str[256]; const char *type; + AVChapter *chapter= NULL; end= get_packetheader(nut, bc, 1, INFO_STARTCODE); end += url_ftell(bc); @@ -402,6 +403,13 @@ chapter_start= ff_get_v(bc); chapter_len = ff_get_v(bc); count = ff_get_v(bc); + + if(chapter_id && !stream_id_plus1){ + int64_t start= chapter_start / nut->time_base_count; + chapter= ff_new_chapter(s, chapter_id, start, start + chapter_len, NULL); + chapter->time_base= nut->time_base[chapter_start % nut->time_base_count]; + } + for(i=0; i<count; i++){ get_str(bc, name, sizeof(name)); value= get_s(bc); @@ -442,6 +450,10 @@ else if(!strcmp(name, "Disposition")) set_disposition_bits(s, str_value, stream_id_plus1 - 1); } + if(chapter && !strcmp(type, "UTF-8")){ + if(!strcmp(name, "Title")) + chapter->title= av_strdup(str_value); + } } if(skip_reserved(bc, end) || get_checksum(bc)){