[FFmpeg-cvslog] avformat/matroskadec: Don't use fake default value for ReferenceBlock
Andreas Rheinhardt
git at videolan.org
Mon Feb 22 05:38:24 EET 2021
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at gmail.com> | Tue Feb 16 16:18:02 2021 +0100| [2f1a5621d319502fc8435a777d9628dec1958b3c] | committer: Andreas Rheinhardt
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 <rcombs at rcombs.me>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2f1a5621d319502fc8435a777d9628dec1958b3c
---
libavformat/matroskadec.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index e6f4faa337..069c879404 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;
More information about the ffmpeg-cvslog
mailing list