View Single Post
Old 5th September 2018, 22:42   #7  |  Link
TheFluff
Excessively jovial fellow
 
Join Date: Jun 2004
Location: rude
Posts: 1,100
As davidhorman mentioned (see below for the record), if you want the coeffs for a sinc filter to sum to exactly 1 then you need an infinitely large filter kernel, so the question in the OP is nonsensical. If you want the coeffs to sum to exactly 1 then you can't just leave some of them out (which is what you do by only considering a fixed number of taps - the mathematically pure sinc filter has an infinite number of taps). So, as I said, the way you solve this is to use a window function because infinitely large filter kernels are obviously not practical, and the best way to do that windowing that anyone has come up with is Lanczos, and that's the only answer I can give you other than "you can't do that".

Quote:
Originally Posted by davidhorman View Post
Quote:
AVIsynth's built-in sinc filter is designed to truncate at an integer number of taps.
As opposed to what? A non-integer number?

Sinc is an infinite filter. It will never add up to 1 in all finite cases.

And it's not the integral you want to equal 1, it's the sum of the particular coefficients that get picked, and those depend on your sampling position.

Quote:
So |x| =
0.61320733549
1.55775636508
2.53778369874
3.52784055722

and so on?
The more I read this the more I suspect you don't have any understanding of how interpolation filters work.

Then again maybe I'm still blocked for daring to question your brilliance last time, so if anyone who isn't on the Naughty List wants to quote this...

Last edited by TheFluff; 5th September 2018 at 22:46.
TheFluff is offline   Reply With Quote