From 69cc9f2a2c970610df0ea961998d494f69ef73c0 Mon Sep 17 00:00:00 2001 From: "Nicholas J. Kain" Date: Fri, 3 Mar 2017 23:35:22 -0500 Subject: filter_kernels: Apply blur/taper before culling radius. Modifications to the input coordinates should all be performed before the final range check against the filter boundaries. However, in the existing code, the blur/taper is applied after the filter radius check is performed. Thus, effectively the filter radius cutoff is applied to only-downscaling-metric-modified coordinates, not the final coordinates. Correct this issue and restructure the returns a bit to make it more obvious what is being done. --- video/out/filter_kernels.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'video') diff --git a/video/out/filter_kernels.c b/video/out/filter_kernels.c index c5a12295f7..68f03ac2e3 100644 --- a/video/out/filter_kernels.c +++ b/video/out/filter_kernels.c @@ -100,14 +100,14 @@ static double sample_window(struct filter_window *kernel, double x) // All windows are symmetric, this makes life easier x = fabs(x); - if (x >= kernel->radius) - return 0.0; // Stretch and taper the window size as needed x = kernel->blur > 0.0 ? x / kernel->blur : x; x = x <= kernel->taper ? 0.0 : (x - kernel->taper) / (1 - kernel->taper); - return kernel->weight(kernel, x); + if (x < kernel->radius) + return kernel->weight(kernel, x); + return 0.0; } // Evaluate a filter's kernel and window at a given absolute position -- cgit v1.2.3