[FFmpeg-devel] [PATCH v2 7/9] cbs_av1: Fill context information for show-existing-frame
James Almer
jamrial at gmail.com
Wed Apr 3 05:00:03 EEST 2019
On 4/1/2019 8:39 PM, Mark Thompson wrote:
> ---
> libavcodec/cbs_av1_syntax_template.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c
> index 76eb90b279..a9bf78e4ad 100644
> --- a/libavcodec/cbs_av1_syntax_template.c
> +++ b/libavcodec/cbs_av1_syntax_template.c
> @@ -1146,6 +1146,22 @@ static int FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw,
>
> fb(3, frame_to_show_map_idx);
> frame = &priv->ref[current->frame_to_show_map_idx];
> + if (!frame->valid) {
> + av_log(ctx->log_ctx, AV_LOG_ERROR,
> + "Missing reference frame needed to show existing frame "
> + "(frame_to_show_map_idx = %d).\n",
> + current->frame_to_show_map_idx);
> + return AVERROR_INVALIDDATA;
> + }
> +
> + priv->bit_depth = frame->bit_depth;
> + priv->frame_width = frame->frame_width;
> + priv->frame_height = frame->frame_height;
Right, so if you use the frame header returned by
ff_cbs_parse_headers(), then frames with show_existing_frame == 1 would
not have the relevant values set. Hence using CodedBitstreamAV1Context
in patch 8/9.
Using infer() for these like you're doing for frame_type below would be
a solution, i think.
> + priv->upscaled_width = frame->upscaled_width;
> + priv->render_width = frame->render_width;
> + priv->render_height = frame->render_height;
> +
> + infer(frame_type, frame->frame_type);
>
> if (seq->decoder_model_info_present_flag &&
> !seq->timing_info.equal_picture_interval) {
>
More information about the ffmpeg-devel
mailing list