diff mbox series

[FFmpeg-devel,1/5] avcodec/d3d12va_vp9: fix vp9 max_num_refs value

Message ID 20231225141859.664-1-tong1.wu@intel.com
State New
Headers show
Series [FFmpeg-devel,1/5] avcodec/d3d12va_vp9: fix vp9 max_num_refs value | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Wu, Tong1 Dec. 25, 2023, 2:18 p.m. UTC
Previous max_num_refs was based on pp.frame_refs plus 1 and it could possibly
reaches the size limit. Actually it should be the size of pp.ref_frame_map
plus 1.

Signed-off-by: Tong Wu <tong1.wu@intel.com>
---
 libavcodec/d3d12va_vp9.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Wu Jianhua Dec. 25, 2023, 2:47 p.m. UTC | #1
Tong Wu <tong1.wu-at-intel.com@ffmpeg.org>:
> subject: [FFmpeg-devel] [PATCH 1/5] avcodec/d3d12va_vp9: fix vp9 max_num_refs value
>
> Previous max_num_refs was based on pp.frame_refs plus 1 and it could possibly
> reaches the size limit. Actually it should be the size of pp.ref_frame_map
> plus 1.
>
> Signed-off-by: Tong Wu <tong1.wu@intel.com>
> ---
> libavcodec/d3d12va_vp9.c | 2 +-
>1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavcodec/d3d12va_vp9.c b/libavcodec/d3d12va_vp9.c
> index bb94e18781..d6dfc905d9 100644
> --- a/libavcodec/d3d12va_vp9.c
> +++ b/libavcodec/d3d12va_vp9.c
> @@ -148,7 +148,7 @@ static int d3d12va_vp9_decode_init(AVCodecContext *avctx)
>        break;
>    };
>
> -    ctx->max_num_ref = FF_ARRAY_ELEMS(pp.frame_refs) + 1;
> +    ctx->max_num_ref = FF_ARRAY_ELEMS(pp.ref_frame_map) + 1;
> 
>     return ff_d3d12va_decode_init(avctx);
> }
> --
> 2.41.0.windows.1

LGTM. I tested this fix both in command line and C API and it fixed the VP9 decoding issue
that the decoded reference frames of some samples have corrupted.

Thanks,
Jianhua
diff mbox series

Patch

diff --git a/libavcodec/d3d12va_vp9.c b/libavcodec/d3d12va_vp9.c
index bb94e18781..d6dfc905d9 100644
--- a/libavcodec/d3d12va_vp9.c
+++ b/libavcodec/d3d12va_vp9.c
@@ -148,7 +148,7 @@  static int d3d12va_vp9_decode_init(AVCodecContext *avctx)
         break;
     };
 
-    ctx->max_num_ref = FF_ARRAY_ELEMS(pp.frame_refs) + 1;
+    ctx->max_num_ref = FF_ARRAY_ELEMS(pp.ref_frame_map) + 1;
 
     return ff_d3d12va_decode_init(avctx);
 }