Mercurial > libavformat.hg
changeset 3678:fd968e67ac6a libavformat
matroskadec: directly use ebml_parse() or ebml_parse_id() where it's enough
author | aurel |
---|---|
date | Tue, 05 Aug 2008 00:42:20 +0000 |
parents | 0aed3a6e4e81 |
children | 039a28684d43 |
files | matroskadec.c |
diffstat | 1 files changed, 6 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/matroskadec.c Tue Aug 05 00:42:17 2008 +0000 +++ b/matroskadec.c Tue Aug 05 00:42:20 2008 +0000 @@ -846,6 +846,8 @@ return 0; } +static int ebml_parse_id(MatroskaDemuxContext *matroska, EbmlSyntax *syntax, + uint32_t id, void *data); static int ebml_parse_nest(MatroskaDemuxContext *matroska, EbmlSyntax *syntax, void *data, int once); @@ -881,7 +883,7 @@ if (id == MATROSKA_ID_SEGMENT) matroska->segment_start = url_ftell(matroska->ctx->pb); return ebml_parse_nest(matroska, syntax->def.n, data, 0); - case EBML_PASS: return ebml_parse_nest(matroska, syntax->def.n, data, 1); + case EBML_PASS: return ebml_parse_id(matroska, syntax->def.n, id, data); case EBML_STOP: *(int *)data = 1; return 1; default: url_fskip(pb, length); return 0; } @@ -1129,7 +1131,7 @@ matroska->ctx = s; /* First read the EBML header. */ - if (ebml_parse_nest(matroska, ebml_syntax, &ebml, 1) + if (ebml_parse(matroska, ebml_syntax, &ebml) || ebml.version > EBML_VERSION || ebml.max_size > sizeof(uint64_t) || ebml.id_length > sizeof(uint32_t) || strcmp(ebml.doctype, "matroska") || ebml.doctype_version > 2) { @@ -1142,7 +1144,7 @@ ebml_free(ebml_syntax, &ebml); /* The next thing is a segment. */ - if (ebml_parse_nest(matroska, matroska_segments, matroska, 1) < 0) + if (ebml_parse(matroska, matroska_segments, matroska) < 0) return -1; matroska_execute_seekhead(matroska); @@ -1632,7 +1634,7 @@ MatroskaCluster cluster = { 0 }; EbmlList *blocks_list; MatroskaBlock *blocks; - int i, res = ebml_parse_nest(matroska, matroska_clusters, &cluster, 1); + int i, res = ebml_parse(matroska, matroska_clusters, &cluster); blocks_list = &cluster.blocks; blocks = blocks_list->elem; for (i=0; !res && i<blocks_list->nb_elem; i++)