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 |
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 |
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 --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
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(-)