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]
