[FFmpeg-devel] [PATCH 4/8] lavfi/vf_vpp_qsv: add vpp_preinit callback

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Thu Jan 12 06:11:03 EET 2023


Xiang, Haihao:
> From: Haihao Xiang <haihao.xiang at intel.com>
> 
> Set the expected default value for options in this callback, hence we
> have the right values even if these options are not included in the
> option arrray.
> 
> This is in preparation for reusing the code for other QSV filters.
> 
> Signed-off-by: Haihao Xiang <haihao.xiang at intel.com>
> ---
>  libavfilter/vf_vpp_qsv.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
> index cf11cd7fdc..2a7b06fa33 100644
> --- a/libavfilter/vf_vpp_qsv.c
> +++ b/libavfilter/vf_vpp_qsv.c
> @@ -259,6 +259,19 @@ release:
>      return ret;
>  }
>  
> +static av_cold int vpp_preinit(AVFilterContext *ctx)
> +{
> +    VPPContext  *vpp  = ctx->priv;
> +    /* For AV_OPT_TYPE_STRING options, NULL is handled in other way so
> +     * we needn't set default value here
> +     */
> +    vpp->saturation = 1.0;
> +    vpp->contrast = 1.0;
> +    vpp->transpose = -1;
> +
> +    return 0;
> +}
> +
>  static av_cold int vpp_init(AVFilterContext *ctx)
>  {
>      VPPContext  *vpp  = ctx->priv;
> @@ -683,6 +696,7 @@ const AVFilter ff_vf_vpp_qsv = {
>      .name          = "vpp_qsv",
>      .description   = NULL_IF_CONFIG_SMALL("Quick Sync Video VPP."),
>      .priv_size     = sizeof(VPPContext),
> +    .preinit       = vpp_preinit,
>      .init          = vpp_init,
>      .uninit        = vpp_uninit,
>      FILTER_INPUTS(vpp_inputs),

I do not get the point of this at all: None of these options are of type
AV_OPT_TYPE_STRING. You are merely setting the default values that
av_opt_set_defaults() would set lateron anyway.

I also fail to see how this would facilitate reusing this code for other
QSV filters.

- Andreas



More information about the ffmpeg-devel mailing list