[FFmpeg-devel] [PATCH] avcodec/cbs_av1: fix parsing frame_size_with_refs
Mark Thompson
sw at jkqxz.net
Sat Oct 27 21:54:41 EEST 2018
On 27/10/18 01:38, James Almer wrote:
> found_ref is not a single value in the bitstream. Fixes parsing files with
> frame size changes.
>
> Based on code from cbs_vp9.
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> libavcodec/cbs_av1.h | 2 +-
> libavcodec/cbs_av1_syntax_template.c | 6 +++---
> 2 files changed, 4 insertions(+), 4 deletions(-)
Urgh, yes (I hate the surprise mutable variables in these specs).
LGTM.
Thanks!
- Mark
> 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-devel
mailing list