Mercurial > libavformat.hg
changeset 5991:b65ecf9c2a26 libavformat
mov: Read nero chapters
author | conrad |
---|---|
date | Wed, 05 May 2010 08:41:01 +0000 |
parents | d52b769af700 |
children | 391e3ca10474 |
files | mov.c |
diffstat | 1 files changed, 31 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mov.c Tue May 04 17:17:16 2010 +0000 +++ b/mov.c Wed May 05 08:41:01 2010 +0000 @@ -219,6 +219,36 @@ return 0; } +static int mov_read_chpl(MOVContext *c, ByteIOContext *pb, MOVAtom atom) +{ + int64_t start; + int i, nb_chapters, str_len; + char str[256+1]; + + if ((atom.size -= 5) < 0) + return 0; + + get_be32(pb); // version + flags + get_be32(pb); // ??? + nb_chapters = get_byte(pb); + + for (i = 0; i < nb_chapters; i++) { + if (atom.size < 9) + return 0; + + start = get_be64(pb); + str_len = get_byte(pb); + + if ((atom.size -= 9+str_len) < 0) + return 0; + + get_buffer(pb, str, str_len); + str[str_len] = 0; + ff_new_chapter(c->fc, i, (AVRational){1,10000000}, start, AV_NOPTS_VALUE, str); + } + return 0; +} + static int mov_read_default(MOVContext *c, ByteIOContext *pb, MOVAtom atom) { int64_t total_size = 0; @@ -2166,6 +2196,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('a','v','s','s'), mov_read_extradata }, +{ MKTAG('c','h','p','l'), mov_read_chpl }, { MKTAG('c','o','6','4'), mov_read_stco }, { MKTAG('c','t','t','s'), mov_read_ctts }, /* composition time to sample */ { MKTAG('d','i','n','f'), mov_read_default },