[FFmpeg-devel] [PATCH 03/10] hw_base_encode: allocate DPB image upfront

Tong Wu wutong1208 at outlook.com
Wed Sep 4 17:36:08 EEST 2024


Lynne:
>Subject: [FFmpeg-devel] [PATCH 03/10] hw_base_encode: allocate DPB image
>upfront
>
>Vulkan requires this, as it needs to initialize state upfront.
>---
> libavcodec/d3d12va_encode.c | 6 ------
> libavcodec/hw_base_encode.c | 6 ++++++
> libavcodec/vaapi_encode.c   | 5 -----
> 3 files changed, 6 insertions(+), 11 deletions(-)
>
>diff --git a/libavcodec/d3d12va_encode.c b/libavcodec/d3d12va_encode.c index
>d437750598..68fb9927a8 100644
>--- a/libavcodec/d3d12va_encode.c
>+++ b/libavcodec/d3d12va_encode.c
>@@ -264,12 +264,6 @@ static int d3d12va_encode_issue(AVCodecContext
>*avctx,
>
>     av_log(avctx, AV_LOG_DEBUG, "Input surface is %p.\n", pic->input_surface-
>>texture);
>
>-    err = av_hwframe_get_buffer(base_ctx->recon_frames_ref, base_pic-
>>recon_image, 0);
>-    if (err < 0) {
>-        err = AVERROR(ENOMEM);
>-        goto fail;
>-    }
>-
>     pic->recon_surface = (AVD3D12VAFrame *)base_pic->recon_image->data[0];
>     av_log(avctx, AV_LOG_DEBUG, "Recon surface is %p.\n",
>            pic->recon_surface->texture); diff --git a/libavcodec/hw_base_encode.c
>b/libavcodec/hw_base_encode.c index 35dac6e596..8411cc7582 100644
>--- a/libavcodec/hw_base_encode.c
>+++ b/libavcodec/hw_base_encode.c
>@@ -446,6 +446,12 @@ static int
>hw_base_encode_send_frame(AVCodecContext *avctx, FFHWBaseEncodeContex
>             goto fail;
>         }
>
>+        err = av_hwframe_get_buffer(ctx->recon_frames_ref, pic->recon_image, 0);
>+        if (err < 0) {
>+            err = AVERROR(ENOMEM);
>+            goto fail;
>+        }
>+
>         pic->priv = av_mallocz(ctx->op->priv_size);
>         if (!pic->priv) {
>             err = AVERROR(ENOMEM);

Pls rebase this patch to current master or just push the refactor patch V3.

>diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index
>b72e9035cb..0058e1e772 100644
>--- a/libavcodec/vaapi_encode.c
>+++ b/libavcodec/vaapi_encode.c
>@@ -313,11 +313,6 @@ static int vaapi_encode_issue(AVCodecContext *avctx,
>
>     av_log(avctx, AV_LOG_DEBUG, "Input surface is %#x.\n", pic->input_surface);
>
>-    err = av_hwframe_get_buffer(base_ctx->recon_frames_ref, base_pic-
>>recon_image, 0);
>-    if (err < 0) {
>-        err = AVERROR(ENOMEM);
>-        goto fail;
>-    }
>     pic->recon_surface = (VASurfaceID)(uintptr_t)base_pic->recon_image-
>>data[3];
>     av_log(avctx, AV_LOG_DEBUG, "Recon surface is %#x.\n", pic->recon_surface);
>
>--
>2.45.2.753.g447d99e1c3b
>_______________________________________________
>ffmpeg-devel mailing list
>ffmpeg-devel at ffmpeg.org
>https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
>To unsubscribe, visit link above, or email ffmpeg-devel-request at ffmpeg.org with
>subject "unsubscribe".


More information about the ffmpeg-devel mailing list