20 lines
469 B
C
20 lines
469 B
C
|
#pragma once
|
||
|
#include "stdafx.h"
|
||
|
|
||
|
class HermiteResampler
|
||
|
{
|
||
|
private:
|
||
|
double _prevLeft[4] = {};
|
||
|
double _prevRight[4] = {};
|
||
|
double _rateRatio = 1.0;
|
||
|
double _fraction = 0.0;
|
||
|
|
||
|
__forceinline int16_t HermiteInterpolate(double values[4], double mu);
|
||
|
__forceinline void PushSample(double prevValues[4], int16_t sample);
|
||
|
|
||
|
public:
|
||
|
void Reset();
|
||
|
|
||
|
void SetSampleRates(double srcRate, double dstRate);
|
||
|
uint32_t Resample(int16_t* in, uint32_t inSampleCount, int16_t* out);
|
||
|
};
|