In article <
[email protected]>,
Jim Thomas <
[email protected]> wrote:
>The interpolation code on dspguru is most definitely polyphase.
>
>My understanding is that polyphase only comes into play during interpolation.
>It's only during interpolation that you get the opportunity to skip through
>the coefs - essentially choosing a phase of the impulse response.
Why choose a phase with one can calculate the coefficients of the
precise phase?
I prefer to think of both upsampling, interpolation and decimation as
identical processes, consisting of a filter plus an interpolator. If the
decimation results line up with the input, the the interpolator become
trivial (constant phase 0). The lowpass filter usually changes to cut at
near or under half the minima of the input and output sample frequencies.
The filter+interpolator (usually a windowed sync) coefficients can
sometimes be calculated directly, per sample, even in real-time on
a fast PC, no precalculated phase table lookup required except for
efficiency reasons (and the sin/cos routines can be more cache friendly
than large lookup tables on embedded systems with tiny caches). This,
of course, depends on the choice of window function (which can be much
more expensive than calculating a cosine or three).
The upsample-decimate and polyphase table method are merely opaque
optimizations, needed for systems with various performance or power
limitations. How often does one write their own sin/cos routines
for any other generic program?
IMHO. YMMV.
--
Ron Nicholson rhn AT nicholson DOT com
http://www.nicholson.com/rhn/
#include <canonical.disclaimer> // only my own opinions, etc.