Move the resampler declarations to a more appropriate header

This commit is contained in:
Chris Robinson 2020-12-03 23:09:23 -08:00
parent 75f469fa71
commit b1c2671e9d
2 changed files with 39 additions and 38 deletions

View File

@ -26,6 +26,43 @@ constexpr int MixerFracMask{MixerFracOne - 1};
constexpr int MaxResamplerPadding{48};
enum class Resampler {
Point,
Linear,
Cubic,
FastBSinc12,
BSinc12,
FastBSinc24,
BSinc24,
Max = BSinc24
};
/* Interpolator state. Kind of a misnomer since the interpolator itself is
* stateless. This just keeps it from having to recompute scale-related
* mappings for every sample.
*/
struct BsincState {
float sf; /* Scale interpolation factor. */
uint m; /* Coefficient count. */
uint l; /* Left coefficient offset. */
/* Filter coefficients, followed by the phase, scale, and scale-phase
* delta coefficients. Starting at phase index 0, each subsequent phase
* index follows contiguously.
*/
const float *filter;
};
union InterpState {
BsincState bsinc;
};
using ResamplerFunc = const float*(*)(const InterpState *state, const float *RESTRICT src,
uint frac, uint increment, const al::span<float> dst);
ResamplerFunc PrepareResampler(Resampler resampler, uint increment, InterpState *state);
template<typename TypeTag, typename InstTag>
const float *Resample_(const InterpState *state, const float *RESTRICT src, uint frac,
uint increment, const al::span<float> dst);

View File

@ -33,44 +33,6 @@ enum class DirectMode : unsigned char {
RemixMismatch
};
enum class Resampler {
Point,
Linear,
Cubic,
FastBSinc12,
BSinc12,
FastBSinc24,
BSinc24,
Max = BSinc24
};
extern Resampler ResamplerDefault;
/* Interpolator state. Kind of a misnomer since the interpolator itself is
* stateless. This just keeps it from having to recompute scale-related
* mappings for every sample.
*/
struct BsincState {
float sf; /* Scale interpolation factor. */
uint m; /* Coefficient count. */
uint l; /* Left coefficient offset. */
/* Filter coefficients, followed by the phase, scale, and scale-phase
* delta coefficients. Starting at phase index 0, each subsequent phase
* index follows contiguously.
*/
const float *filter;
};
union InterpState {
BsincState bsinc;
};
using ResamplerFunc = const float*(*)(const InterpState *state, const float *RESTRICT src,
uint frac, uint increment, const al::span<float> dst);
ResamplerFunc PrepareResampler(Resampler resampler, uint increment, InterpState *state);
enum {
AF_None = 0,
@ -262,4 +224,6 @@ struct Voice {
DEF_NEWDEL(Voice)
};
extern Resampler ResamplerDefault;
#endif /* VOICE_H */