[FFmpeg-devel] [PATCH v5 5/5] lavfi/format: add a hwmap auto conversion filter

Marvin Scholz epirat07 at gmail.com
Wed Jun 7 11:51:42 EEST 2023



On 25 Apr 2023, at 9:26, Tong Wu wrote:

> When two formats lists cannot be merged, a scale filter is
> auto-inserted. However, when it comes to hardware map, we have to
> manually add a hwmap filter to do the conversion. This patch introduces
> an auto hwmap filter to do the hwmap conversion automatically.
>

Thanks for trying to improve this!

I've recently done quite a bit of experimentation with hardware
filters and at least for the Cuda - Vulkan - Cuda case, hwmap
was useless, and I was told I need to use hwupload instead, so I wonder
what cases this would help with?

I just fear that, especially given the bad error messages hwmap gives,
this will just implicitly insert it because it seemingly works but then
just fail to actually do the job and give an absolutely indescriptive
error to the user for a filter they did not even insert themselves.

> Signed-off-by: Tong Wu <tong1.wu at intel.com>
> ---
>  libavfilter/avfiltergraph.c | 3 ++-
>  libavfilter/formats.c       | 4 ++++
>  2 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
> index 8af0467bc5..b2b627ad6a 100644
> --- a/libavfilter/avfiltergraph.c
> +++ b/libavfilter/avfiltergraph.c
> @@ -402,7 +402,8 @@ static int insert_auto_filter(AVFilterContext **convert, AVFilterGraph *graph,
>      AVFilterContext *ctx;
>      AVFilterLink *inlink, *outlink;
>      char inst_name[30];
> -    const char *opts = FF_FIELD_AT(char *, neg->conversion_filters[conv_step].conversion_opts_offset, *graph);
> +    const char *opts = neg->conversion_filters[conv_step].conversion_opts_offset == 0 ? NULL :
> +                       FF_FIELD_AT(char *, neg->conversion_filters[conv_step].conversion_opts_offset, *graph);
>      const char *name = neg->conversion_filters[conv_step].conversion_filter;
>
>      if (!(filter = avfilter_get_by_name(name))) {
> diff --git a/libavfilter/formats.c b/libavfilter/formats.c
> index c8e20e5b20..fee10fa0ee 100644
> --- a/libavfilter/formats.c
> +++ b/libavfilter/formats.c
> @@ -331,6 +331,10 @@ static const AVFilterFormatsFilter filters_video[] = {
>          .conversion_filter = "scale",
>          .conversion_opts_offset = offsetof(AVFilterGraph, scale_sws_opts),
>      },
> +    {
> +        .conversion_filter = "hwmap",
> +        .conversion_opts_offset = 0,
> +    }
>  };
>
>  static const AVFilterFormatsFilter filters_audio[] = {
> -- 
> 2.39.1.windows.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list