diff options
author | Nicholas J. Kain <nicholas@kain.us> | 2017-03-03 23:35:22 -0500 |
---|---|---|
committer | Rostislav Pehlivanov <atomnuker@gmail.com> | 2017-03-06 03:31:35 +0000 |
commit | 69cc9f2a2c970610df0ea961998d494f69ef73c0 (patch) | |
tree | 930afe718e043bf806663f1cd63f3bc05ef6baaf /video/out | |
parent | 85c8556eef9ccdb6b172f64a0016bc16f8a092fb (diff) | |
download | mpv-69cc9f2a2c970610df0ea961998d494f69ef73c0.tar.bz2 mpv-69cc9f2a2c970610df0ea961998d494f69ef73c0.tar.xz |
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.
Diffstat (limited to 'video/out')
-rw-r--r-- | video/out/filter_kernels.c | 6 |
1 files changed, 3 insertions, 3 deletions
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 |