mirror of
https://github.com/aicodix/dsp.git
synced 2026-04-27 14:30:36 +00:00
moved template argument RATE to constructor argument rate
This commit is contained in:
parent
7043b1e35a
commit
7efb7d2f0f
1 changed files with 6 additions and 5 deletions
11
resampler.hh
11
resampler.hh
|
|
@ -13,19 +13,20 @@ Copyright 2018 Ahmet Inan <inan@aicodix.de>
|
|||
|
||||
namespace DSP {
|
||||
|
||||
template <typename TYPE, int RATE, int TAPS, int OVER>
|
||||
template <typename TYPE, int TAPS, int OVER>
|
||||
class Resampler
|
||||
{
|
||||
typedef DSP::UniformNaturalCubicSpline<TAPS * OVER, TYPE, TYPE> spline_type;
|
||||
spline_type lpf;
|
||||
TYPE rate;
|
||||
public:
|
||||
Resampler(TYPE cutoff, TYPE alpha)
|
||||
Resampler(TYPE rate, TYPE cutoff, TYPE alpha) : rate(rate)
|
||||
{
|
||||
TYPE tmp[TAPS * OVER];
|
||||
DSP::Kaiser<TYPE> window(alpha);
|
||||
for (int n = 0; n < TAPS * OVER; ++n) {
|
||||
TYPE x = TYPE(n) / TYPE(OVER) - TYPE(TAPS - 1) / TYPE(2);
|
||||
TYPE y = TYPE(2) * cutoff / TYPE(RATE) * sinc(TYPE(2) * cutoff / TYPE(RATE) * x);
|
||||
TYPE y = TYPE(2) * cutoff / rate * sinc(TYPE(2) * cutoff / rate * x);
|
||||
tmp[n] = y * window(n, TAPS * OVER);
|
||||
}
|
||||
lpf = spline_type(tmp, 0, 1.0 / OVER);
|
||||
|
|
@ -33,8 +34,8 @@ public:
|
|||
template <typename IO>
|
||||
void operator ()(IO *output, IO *input, TYPE diff, int samples, int stride = 1)
|
||||
{
|
||||
TYPE ratio = (RATE + diff) / RATE;
|
||||
TYPE recip = RATE / (RATE + diff);
|
||||
TYPE ratio = (rate + diff) / rate;
|
||||
TYPE recip = rate / (rate + diff);
|
||||
for (int i = 0; i < samples - TAPS; ++i) {
|
||||
IO sum = 0;
|
||||
int s0 = nearbyint(i * ratio);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue