Implement Section 7.21 "Reference frame loading process" and Section 7.20 "Reference frame update process" for show_existing_frame frames, as required by the definition in Section 7.4 "Decode frame wrapup process".
Signed-off-by: James Almer <jamr...@gmail.com> --- libavcodec/cbs_av1_syntax_template.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c index 258779c591..f5ed189be4 100644 --- a/libavcodec/cbs_av1_syntax_template.c +++ b/libavcodec/cbs_av1_syntax_template.c @@ -1295,9 +1295,19 @@ static int FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw, fb(id_len, display_frame_id); infer(frame_type, frame->frame_type); - if (current->frame_type == AV1_FRAME_KEY) + if (current->frame_type == AV1_FRAME_KEY) { infer(refresh_frame_flags, all_frames); - else + + // Section 7.21 + infer(current_frame_id, frame->frame_id); + priv->upscaled_width = frame->upscaled_width; + priv->frame_width = frame->frame_width; + priv->frame_height = frame->frame_height; + priv->render_width = frame->render_width; + priv->render_height = frame->render_height; + priv->bit_depth = frame->bit_depth; + priv->order_hint = frame->order_hint; + } else infer(refresh_frame_flags, 0); infer(frame_width_minus_1, frame->upscaled_width - 1); @@ -1305,13 +1315,8 @@ static int FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw, infer(render_width_minus_1, frame->render_width - 1); infer(render_height_minus_1, frame->render_height - 1); - priv->upscaled_width = frame->upscaled_width; - priv->frame_width = frame->frame_width; - priv->frame_height = frame->frame_height; - priv->render_width = frame->render_width; - priv->render_height = frame->render_height; - - return 0; + // Section 7.20 + goto update_refs; } fb(2, frame_type); @@ -1573,6 +1578,7 @@ static int FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw, CHECK(FUNC(film_grain_params)(ctx, rw, current)); +update_refs: for (i = 0; i < AV1_NUM_REF_FRAMES; i++) { if (current->refresh_frame_flags & (1 << i)) { priv->ref[i] = (AV1ReferenceFrameState) { @@ -1592,6 +1598,10 @@ static int FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw, } } + // Don't print debug log a second time + if (current->show_existing_frame) + return 0; + av_log(ctx->log_ctx, AV_LOG_DEBUG, "Frame %d: size %dx%d " "upscaled %d render %dx%d subsample %dx%d " "bitdepth %d tiles %dx%d.\n", priv->order_hint, -- 2.27.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".