This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit af4bfe85e45620d25016e3fea94b09e53962d9f0
Author:     Wu Jianhua <[email protected]>
AuthorDate: Thu Aug 27 08:11:49 2026 +0800
Commit:     jianhuaw <[email protected]>
CommitDate: Sat Sep 5 11:59:49 2026 +0000

    avcodec/d3d12va_av1: dynamically allocate tile group bitstream buffer
    
    Signed-off-by: Wu Jianhua <[email protected]>
---
 libavcodec/d3d12va_av1.c | 22 +++++++++-------------
 1 file changed, 9 insertions(+), 13 deletions(-)

diff --git a/libavcodec/d3d12va_av1.c b/libavcodec/d3d12va_av1.c
index 83222d6770..73f77e04cf 100644
--- a/libavcodec/d3d12va_av1.c
+++ b/libavcodec/d3d12va_av1.c
@@ -33,7 +33,7 @@
 typedef struct D3D12AV1DecodeContext {
     D3D12VADecodeContext ctx;
     uint8_t *bitstream_buffer;
-    size_t bitstream_size;
+    unsigned int bitstream_size;
 } D3D12AV1DecodeContext;
 
 #define D3D12_AV1_DECODE_CONTEXT(avctx) ((D3D12AV1DecodeContext 
*)D3D12VA_DECODE_CONTEXT(avctx))
@@ -93,10 +93,14 @@ static int d3d12va_av1_decode_slice(AVCodecContext *avctx,
         ctx_pic->bitstream      = (uint8_t *)buffer;
         ctx_pic->bitstream_size = size;
     } else {
-        if (ctx_pic->bitstream_size + (uint64_t)size > 
av1_ctx->bitstream_size) {
-            av_log(avctx, AV_LOG_ERROR, "Slice bitstream size exceeds internal 
buffer!\n");
-            return AVERROR(EINVAL);
-        }
+        size_t new_size = ctx_pic->bitstream_size + (size_t)size;
+        uint8_t *tmp = av_fast_realloc(av1_ctx->bitstream_buffer, 
&av1_ctx->bitstream_size, new_size);
+        if (!tmp)
+            return AVERROR(ENOMEM);
+
+        if (ctx_pic->bitstream_size && ctx_pic->bitstream != 
av1_ctx->bitstream_buffer)
+            memcpy(tmp, ctx_pic->bitstream, ctx_pic->bitstream_size);
+        av1_ctx->bitstream_buffer = tmp;
         ctx_pic->bitstream = av1_ctx->bitstream_buffer;
         memcpy(ctx_pic->bitstream + ctx_pic->bitstream_size, buffer, size);
         tg_start = h->tg_start;
@@ -169,7 +173,6 @@ static int d3d12va_av1_end_frame(AVCodecContext *avctx)
 static av_cold int d3d12va_av1_decode_init(AVCodecContext *avctx)
 {
     D3D12VADecodeContext    *ctx     = D3D12VA_DECODE_CONTEXT(avctx);
-    D3D12AV1DecodeContext   *av1_ctx = D3D12_AV1_DECODE_CONTEXT(avctx);
     DXVA_PicParams_AV1 pp;
 
     int ret;
@@ -193,13 +196,6 @@ static av_cold int d3d12va_av1_decode_init(AVCodecContext 
*avctx)
     if (ret < 0)
         return ret;
 
-    if (!av1_ctx->bitstream_buffer) {
-        av1_ctx->bitstream_size = 
ff_d3d12va_get_suitable_max_bitstream_size(avctx);
-        av1_ctx->bitstream_buffer = av_malloc(av1_ctx->bitstream_size);
-        if (!av1_ctx->bitstream_buffer)
-            return AVERROR(ENOMEM);
-    }
-
     return 0;
 }
 

-- 
To stop receiving notification emails like this one, please contact
[email protected].
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to