[FFmpeg-cvslog] avcodec/cbs_av1: fix parsing frame_size_with_refs
James Almer
git at videolan.org
Sat Oct 27 22:10:57 EEST 2018
ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Fri Oct 26 21:32:36 2018 -0300| [99ef8b8afd993fec3160c633f5fe87cceb7fe392] | committer: James Almer
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 at jkqxz.net>
Signed-off-by: James Almer <jamrial at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=99ef8b8afd993fec3160c633f5fe87cceb7fe392
---
libavcodec/cbs_av1.h | 2 +-
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 {
More information about the ffmpeg-cvslog
mailing list