diff mbox series

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

Message ID 20230616005810.792849-1-fei.w.wang@intel.com
State New
Headers show
Series [FFmpeg-devel,v2,1/3] lavfi/vaapi: Add function to get surface ID from AVFrame | 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

Wang, Fei W June 16, 2023, 12:58 a.m. UTC
Signed-off-by: Fei Wang <fei.w.wang@intel.com>
---
 libavfilter/vaapi_vpp.c | 10 ++--------
 libavfilter/vaapi_vpp.h |  5 +++++
 2 files changed, 7 insertions(+), 8 deletions(-)

Comments

Xiang, Haihao June 20, 2023, 2:33 a.m. UTC | #1
On Vr, 2023-06-16 at 08:58 +0800, Fei Wang wrote:
> Signed-off-by: Fei Wang <fei.w.wang@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
diff mbox series

Patch

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