[FFmpeg-devel] [PATCH 4/6] lavfi: add a Vulkan chromatic aberration filter

Mark Thompson sw at jkqxz.net
Sun Sep 2 23:42:09 EEST 2018


On 21/06/18 17:55, Rostislav Pehlivanov wrote:
> It tries to do something similar to it with YUV images, but RGB images
> are done properly.

I agree that it's something similar and kindof cute, but it definitely isn't the separation of colours you would expect from the name of the filter.  I think it might be better to constrain the filter to be RGB-only, since a video-processing case is likely to have YUV input by default and a user may be somewhat confused by what this does.

> Signed-off-by: Rostislav Pehlivanov <atomnuker at gmail.com>
> ---
>  configure                                   |   1 +
>  libavfilter/Makefile                        |   1 +
>  libavfilter/allfilters.c                    |   1 +
>  libavfilter/vf_chromaticaberration_vulkan.c | 342 ++++++++++++++++++++
>  4 files changed, 345 insertions(+)
>  create mode 100644 libavfilter/vf_chromaticaberration_vulkan.c

What is the behaviour around the edges of the frame meant to be?  Currently it bleeds the empty edges into the frame, which looks pretty weird.

> ...
> diff --git a/libavfilter/vf_chromaticaberration_vulkan.c b/libavfilter/vf_chromaticaberration_vulkan.c
> new file mode 100644
> index 0000000000..1d1aeb95a0
> --- /dev/null
> +++ b/libavfilter/vf_chromaticaberration_vulkan.c
> ...> +
> +#define OFFSET(x) offsetof(ChromaticAberrationVulkanContext, x)
> +#define FLAGS (AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM)
> +static const AVOption chromaticaberration_vulkan_options[] = {
> +    { "dist_x", "Set horizontal distortion amount", OFFSET(dist_x), AV_OPT_TYPE_FLOAT, {.dbl = 0.0f}, 0.0f, 10.0f, .flags = FLAGS },
> +    { "dist_y", "Set vertical distortion amount",   OFFSET(dist_y), AV_OPT_TYPE_FLOAT, {.dbl = 0.0f}, 0.0f, 10.0f, .flags = FLAGS },

Can you say anything about what the units of this are?

It looks like dist_y has exactly half the effect of dist_x - is that intended?

> +    { NULL },
> +};
> ...

The code parts of this filter all look fine.


More information about the ffmpeg-devel mailing list