X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fvf_misc_vaapi.c;h=08a0917258f246cad4b438d7ade70d9a94b56104;hb=a04ad248a05e7b613abe09b3bb067f555108d794;hp=e227c9ff6b9a3fc30625a98f5cba5aca113fe92a;hpb=ac4b5d86222006fa71ffe5922e1a34f1422507d8;p=ffmpeg diff --git a/libavfilter/vf_misc_vaapi.c b/libavfilter/vf_misc_vaapi.c index e227c9ff6b9..08a0917258f 100644 --- a/libavfilter/vf_misc_vaapi.c +++ b/libavfilter/vf_misc_vaapi.c @@ -84,10 +84,9 @@ static int denoise_vaapi_build_filter_params(AVFilterContext *avctx) denoise.value = map(ctx->denoise, DENOISE_MIN, DENOISE_MAX, caps.range.min_value, caps.range.max_value); - ff_vaapi_vpp_make_param_buffers(avctx, VAProcFilterParameterBufferType, - &denoise, sizeof(denoise), 1); - - return 0; + return ff_vaapi_vpp_make_param_buffers(avctx, + VAProcFilterParameterBufferType, + &denoise, sizeof(denoise), 1); } static int sharpness_vaapi_build_filter_params(AVFilterContext *avctx) @@ -116,11 +115,9 @@ static int sharpness_vaapi_build_filter_params(AVFilterContext *avctx) SHARPNESS_MIN, SHARPNESS_MAX, caps.range.min_value, caps.range.max_value); - ff_vaapi_vpp_make_param_buffers(avctx, - VAProcFilterParameterBufferType, - &sharpness, sizeof(sharpness), 1); - - return 0; + return ff_vaapi_vpp_make_param_buffers(avctx, + VAProcFilterParameterBufferType, + &sharpness, sizeof(sharpness), 1); } static int misc_vaapi_filter_frame(AVFilterLink *inlink, AVFrame *input_frame) @@ -129,9 +126,6 @@ static int misc_vaapi_filter_frame(AVFilterLink *inlink, AVFrame *input_frame) AVFilterLink *outlink = avctx->outputs[0]; VAAPIVPPContext *vpp_ctx = avctx->priv; AVFrame *output_frame = NULL; - VASurfaceID input_surface, output_surface; - VARectangle input_region; - VAProcPipelineParameterBuffer params; int err; @@ -142,10 +136,6 @@ static int misc_vaapi_filter_frame(AVFilterLink *inlink, AVFrame *input_frame) if (vpp_ctx->va_context == VA_INVALID_ID) return AVERROR(EINVAL); - input_surface = (VASurfaceID)(uintptr_t)input_frame->data[3]; - av_log(avctx, AV_LOG_DEBUG, "Using surface %#x for misc vpp input.\n", - input_surface); - output_frame = ff_get_video_buffer(outlink, vpp_ctx->output_width, vpp_ctx->output_height); if (!output_frame) { @@ -153,40 +143,24 @@ static int misc_vaapi_filter_frame(AVFilterLink *inlink, AVFrame *input_frame) goto fail; } - output_surface = (VASurfaceID)(uintptr_t)output_frame->data[3]; - av_log(avctx, AV_LOG_DEBUG, "Using surface %#x for misc vpp output.\n", - output_surface); - memset(¶ms, 0, sizeof(params)); - input_region = (VARectangle) { - .x = 0, - .y = 0, - .width = input_frame->width, - .height = input_frame->height, - }; + err = av_frame_copy_props(output_frame, input_frame); + if (err < 0) + goto fail; + + err = ff_vaapi_vpp_init_params(avctx, ¶ms, + input_frame, output_frame); + if (err < 0) + goto fail; if (vpp_ctx->nb_filter_buffers) { params.filters = &vpp_ctx->filter_buffers[0]; params.num_filters = vpp_ctx->nb_filter_buffers; } - params.surface = input_surface; - params.surface_region = &input_region; - params.surface_color_standard = - ff_vaapi_vpp_colour_standard(input_frame->colorspace); - - params.output_region = NULL; - params.output_background_color = VAAPI_VPP_BACKGROUND_BLACK; - params.output_color_standard = params.surface_color_standard; - params.pipeline_flags = 0; - params.filter_flags = VA_FRAME_PICTURE; - - err = ff_vaapi_vpp_render_picture(avctx, ¶ms, output_surface); + err = ff_vaapi_vpp_render_picture(avctx, ¶ms, output_frame); if (err < 0) goto fail; - err = av_frame_copy_props(output_frame, input_frame); - if (err < 0) - goto fail; av_frame_free(&input_frame); av_log(avctx, AV_LOG_DEBUG, "Filter output: %s, %ux%u (%"PRId64").\n", @@ -262,7 +236,7 @@ static const AVFilterPad misc_vaapi_outputs[] = { { NULL } }; -AVFilter ff_vf_denoise_vaapi = { +const AVFilter ff_vf_denoise_vaapi = { .name = "denoise_vaapi", .description = NULL_IF_CONFIG_SMALL("VAAPI VPP for de-noise"), .priv_size = sizeof(DenoiseVAAPIContext), @@ -275,7 +249,7 @@ AVFilter ff_vf_denoise_vaapi = { .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE, }; -AVFilter ff_vf_sharpness_vaapi = { +const AVFilter ff_vf_sharpness_vaapi = { .name = "sharpness_vaapi", .description = NULL_IF_CONFIG_SMALL("VAAPI VPP for sharpness"), .priv_size = sizeof(SharpnessVAAPIContext),