From 9ff834c2a0dbbe5544ec09b56d077a3b21f728c0 Mon Sep 17 00:00:00 2001 From: Lynne Date: Tue, 4 Jul 2023 00:48:09 +0200 Subject: [PATCH] bwdif_vulkan: clamp the temporarily interpolated sample spatially This makes the filter output match that of the C version. It was left intentionally while we figured out if it was better or not, and while it makes certain samples better, it makes static samples jump around slightly. --- libavfilter/vf_bwdif_vulkan.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libavfilter/vf_bwdif_vulkan.c b/libavfilter/vf_bwdif_vulkan.c index 1fc74d1544..db916b22cd 100644 --- a/libavfilter/vf_bwdif_vulkan.c +++ b/libavfilter/vf_bwdif_vulkan.c @@ -86,8 +86,7 @@ static const char filter_fn[] = { C(0, ) C(1, bvec4 interpolate_cnd1 = greaterThan(abs(fc - fe), temp_diff[0]); ) C(1, vec4 interpol = mix(interpolate_cur, interpolate_all, interpolate_cnd1); ) - /* Cliping interpol between [fd - diff, fd + diff] is intentionally left out. - * Removing the clipping increases quality. TODO: research and fix the C version to match this. */ + C(1, interpol = clamp(interpol, fd - diff, fd + diff); ) C(1, return mix(interpol, fd, diff_mask); ) C(0, } ) };