media: verisilicon: av1: Fix reference video buffer pointer assignment
authorBenjamin Gaignard <benjamin.gaignard@collabora.com>
Tue, 10 Sep 2024 14:10:09 +0000 (14:10 +0000)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Sat, 12 Oct 2024 14:28:25 +0000 (16:28 +0200)
Always get new destination buffer for reference frame because nothing
garantees the one set previously is still valid or unused.

Fixes this chromium test suite:
https://chromium.googlesource.com/chromium/src/media/+/refs/heads/main/test/data/test-25fps.av1.ivf

Fixes: 727a400686a2 ("media: verisilicon: Add Rockchip AV1 decoder")
Cc: <stable@vger.kernel.org>
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
[hverkuil: fix typo and add link to chromium test suite]

drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c

index 65e8f2d074005c03a7677280f80456cc01485d0e..e54f5fac325bd6e1f1f8d5cfb188537a8758b6b4 100644 (file)
@@ -161,8 +161,7 @@ static int rockchip_vpu981_av1_dec_frame_ref(struct hantro_ctx *ctx,
                av1_dec->frame_refs[i].timestamp = timestamp;
                av1_dec->frame_refs[i].frame_type = frame->frame_type;
                av1_dec->frame_refs[i].order_hint = frame->order_hint;
-               if (!av1_dec->frame_refs[i].vb2_ref)
-                       av1_dec->frame_refs[i].vb2_ref = hantro_get_dst_buf(ctx);
+               av1_dec->frame_refs[i].vb2_ref = hantro_get_dst_buf(ctx);
 
                for (j = 0; j < V4L2_AV1_TOTAL_REFS_PER_FRAME; j++)
                        av1_dec->frame_refs[i].order_hints[j] = frame->order_hints[j];