[FFmpeg-devel] [PATCH v2 1/3] lavfi/vaapi: Add function to get surface ID from AVFrame

Xiang, Haihao haihao.xiang at intel.com
Tue Jun 20 05:33:49 EEST 2023


On Vr, 2023-06-16 at 08:58 +0800, Fei Wang wrote:
> Signed-off-by: Fei Wang <fei.w.wang at intel.com>
> ---
>  libavfilter/vaapi_vpp.c | 10 ++--------
>  libavfilter/vaapi_vpp.h |  5 +++++
>  2 files changed, 7 insertions(+), 8 deletions(-)
> 
> diff --git a/libavfilter/vaapi_vpp.c b/libavfilter/vaapi_vpp.c
> index a323dab8b8..10d31977c6 100644
> --- a/libavfilter/vaapi_vpp.c
> +++ b/libavfilter/vaapi_vpp.c
> @@ -518,7 +518,6 @@ int ff_vaapi_vpp_init_params(AVFilterContext *avctx,
>                               AVFrame *output_frame)
>  {
>      VAAPIVPPContext *ctx = avctx->priv;
> -    VASurfaceID input_surface;
>      int err;
>  
>      ctx->input_region = (VARectangle) {
> @@ -534,10 +533,8 @@ int ff_vaapi_vpp_init_params(AVFilterContext *avctx,
>      output_frame->crop_left   = 0;
>      output_frame->crop_right  = 0;
>  
> -    input_surface = (VASurfaceID)(uintptr_t)input_frame->data[3],
> -
>      *params = (VAProcPipelineParameterBuffer) {
> -        .surface                 = input_surface,
> +        .surface                 = ff_vaapi_vpp_get_surface_id(input_frame),
>          .surface_region          = &ctx->input_region,
>          .output_region           = NULL,
>          .output_background_color = VAAPI_VPP_BACKGROUND_BLACK,
> @@ -623,7 +620,6 @@ int ff_vaapi_vpp_render_pictures(AVFilterContext *avctx,
>                                   AVFrame *output_frame)
>  {
>      VAAPIVPPContext *ctx = avctx->priv;
> -    VASurfaceID output_surface;
>      VABufferID *params_ids;
>      VAStatus vas;
>      int err;
> @@ -635,10 +631,8 @@ int ff_vaapi_vpp_render_pictures(AVFilterContext *avctx,
>      for (int i = 0; i < cout; i++)
>          params_ids[i] = VA_INVALID_ID;
>  
> -    output_surface = (VASurfaceID)(uintptr_t)output_frame->data[3];
> -
>      vas = vaBeginPicture(ctx->hwctx->display,
> -                         ctx->va_context, output_surface);
> +                         ctx->va_context,
> ff_vaapi_vpp_get_surface_id(output_frame));
>      if (vas != VA_STATUS_SUCCESS) {
>          av_log(avctx, AV_LOG_ERROR, "Failed to attach new picture: "
>                 "%d (%s).\n", vas, vaErrorStr(vas));
> diff --git a/libavfilter/vaapi_vpp.h b/libavfilter/vaapi_vpp.h
> index ead07036dc..cc845b854c 100644
> --- a/libavfilter/vaapi_vpp.h
> +++ b/libavfilter/vaapi_vpp.h
> @@ -27,6 +27,11 @@
>  
>  #include "avfilter.h"
>  
> +static inline VASurfaceID ff_vaapi_vpp_get_surface_id(const AVFrame *frame)
> +{
> +    return (uintptr_t)frame->data[3];
> +}
> +
>  // ARGB black, for VAProcPipelineParameterBuffer.output_background_color.
>  #define VAAPI_VPP_BACKGROUND_BLACK 0xff000000
>  

Patchset LGTM and will apply.

Thanks
Haihao




More information about the ffmpeg-devel mailing list