diff options
author | James Almer <jamrial@gmail.com> | 2018-10-26 21:32:36 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2018-10-27 16:06:36 -0300 |
commit | 99ef8b8afd993fec3160c633f5fe87cceb7fe392 (patch) | |
tree | 95a2789f5aef3ff8d9b6d6eabfada05eff08f463 /libavcodec | |
parent | fef2162b6ea752c76a1220f59ad962b65a400fc3 (diff) | |
download | ffmpeg-99ef8b8afd993fec3160c633f5fe87cceb7fe392.tar.gz |
avcodec/cbs_av1: fix parsing frame_size_with_refs
found_ref is not a single value in the bitstream. Fixes parsing files with
frame size changes.
Based on code from cbs_vp9.
Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/cbs_av1.h | 2 | ||||
-rw-r--r-- | libavcodec/cbs_av1_syntax_template.c | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/libavcodec/cbs_av1.h b/libavcodec/cbs_av1.h index 0d7fd761f1..b66a09c389 100644 --- a/libavcodec/cbs_av1.h +++ b/libavcodec/cbs_av1.h @@ -161,7 +161,7 @@ typedef struct AV1RawFrameHeader { uint8_t render_width_minus_1; uint8_t render_height_minus_1; - uint8_t found_ref; + uint8_t found_ref[AV1_REFS_PER_FRAME]; uint8_t refresh_frame_flags; uint8_t allow_intrabc; diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c index 84ab2973ab..e146bbf8bb 100644 --- a/libavcodec/cbs_av1_syntax_template.c +++ b/libavcodec/cbs_av1_syntax_template.c @@ -417,8 +417,8 @@ static int FUNC(frame_size_with_refs)(CodedBitstreamContext *ctx, RWContext *rw, int i, err; for (i = 0; i < AV1_REFS_PER_FRAME; i++) { - flag(found_ref); - if (current->found_ref) { + flags(found_ref[i], 1, i); + if (current->found_ref[i]) { AV1ReferenceFrameState *ref = &priv->ref[current->ref_frame_idx[i]]; @@ -439,7 +439,7 @@ static int FUNC(frame_size_with_refs)(CodedBitstreamContext *ctx, RWContext *rw, } } - if (current->found_ref == 0) { + if (i >= AV1_REFS_PER_FRAME) { CHECK(FUNC(frame_size)(ctx, rw, current)); CHECK(FUNC(render_size)(ctx, rw, current)); } else { |