From: Andreas Rheinhardt Date: Tue, 16 Feb 2021 15:18:02 +0000 (+0100) Subject: avformat/matroskadec: Don't use fake default value for ReferenceBlock X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=2f1a5621d319502fc8435a777d9628dec1958b3c;p=ffmpeg avformat/matroskadec: Don't use fake default value for ReferenceBlock This has been done in order to find out whether this element is present at all; but this can now be done in a cleaner way by using a CountedElement for it. Reviewed-by: Ridley Combs Signed-off-by: Andreas Rheinhardt --- diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index e6f4faa3370..069c8794042 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -330,7 +330,7 @@ typedef struct MatroskaLevel { typedef struct MatroskaBlock { uint64_t duration; - int64_t reference; + CountedElement reference; uint64_t non_simple; EbmlBin bin; uint64_t additional_id; @@ -736,7 +736,7 @@ static EbmlSyntax matroska_blockgroup[] = { { MATROSKA_ID_BLOCKADDITIONS, EBML_NEST, 0, 0, 0, { .n = matroska_blockadditions} }, { MATROSKA_ID_BLOCKDURATION, EBML_UINT, 0, 0, offsetof(MatroskaBlock, duration) }, { MATROSKA_ID_DISCARDPADDING, EBML_SINT, 0, 0, offsetof(MatroskaBlock, discard_padding) }, - { MATROSKA_ID_BLOCKREFERENCE, EBML_SINT, 0, 0, offsetof(MatroskaBlock, reference), { .i = INT64_MIN } }, + { MATROSKA_ID_BLOCKREFERENCE, EBML_SINT, 1, 0, offsetof(MatroskaBlock, reference) }, { MATROSKA_ID_CODECSTATE, EBML_NONE }, { 1, EBML_UINT, 0, 0, offsetof(MatroskaBlock, non_simple), { .u = 1 } }, CHILD_OF(matroska_cluster_parsing) @@ -3737,7 +3737,7 @@ static int matroska_parse_cluster(MatroskaDemuxContext *matroska) res = ebml_parse(matroska, matroska_cluster_parsing, cluster); if (res >= 0 && block->bin.size > 0) { - int is_keyframe = block->non_simple ? block->reference == INT64_MIN : -1; + int is_keyframe = block->non_simple ? block->reference.count == 0 : -1; uint8_t* additional = block->additional.size > 0 ? block->additional.data : NULL;