1*a9cf57cfSAxel Dörfler /* 2*a9cf57cfSAxel Dörfler * Copyright 2003 Marcus Overhagen 3*a9cf57cfSAxel Dörfler * Distributed under the terms of the MIT License. 4575526ffSbeveloper */ 549705454SStephan Aßmus #ifndef _RESAMPLER_H 649705454SStephan Aßmus #define _RESAMPLER_H 749705454SStephan Aßmus 8*a9cf57cfSAxel Dörfler 949705454SStephan Aßmus #include <SupportDefs.h> 1049705454SStephan Aßmus 11575526ffSbeveloper 12*a9cf57cfSAxel Dörfler class Resampler { 13575526ffSbeveloper public: 14*a9cf57cfSAxel Dörfler Resampler(uint32 sourceFormat, 15*a9cf57cfSAxel Dörfler uint32 destFormat); 16575526ffSbeveloper virtual ~Resampler(); 17575526ffSbeveloper 18*a9cf57cfSAxel Dörfler status_t InitCheck() const; 19575526ffSbeveloper 20*a9cf57cfSAxel Dörfler void Resample(const void* src, int32 srcSampleOffset, 21*a9cf57cfSAxel Dörfler int32 srcSampleCount, void* dest, 22*a9cf57cfSAxel Dörfler int32 destSampleOffset, 23*a9cf57cfSAxel Dörfler int32 destSampleCount, float gain); 24575526ffSbeveloper 25575526ffSbeveloper protected: 26*a9cf57cfSAxel Dörfler virtual void float_to_float(const void* src, 27*a9cf57cfSAxel Dörfler int32 srcSampleOffset, int32 srcSampleCount, 28*a9cf57cfSAxel Dörfler void* dest, int32 destSampleOffset, 29*a9cf57cfSAxel Dörfler int32 destSampleCount, float gain); 30*a9cf57cfSAxel Dörfler virtual void int32_to_float(const void* src, 31*a9cf57cfSAxel Dörfler int32 srcSampleOffset, int32 srcSampleCount, 32*a9cf57cfSAxel Dörfler void* dest, int32 destSampleOffset, 33*a9cf57cfSAxel Dörfler int32 destSampleCount, float gain); 34*a9cf57cfSAxel Dörfler virtual void int16_to_float(const void* src, 35*a9cf57cfSAxel Dörfler int32 srcSampleOffset, int32 srcSampleCount, 36*a9cf57cfSAxel Dörfler void* dest, int32 destSampleOffset, 37*a9cf57cfSAxel Dörfler int32 destSampleCount, float gain); 38*a9cf57cfSAxel Dörfler virtual void int8_to_float(const void* src, 39*a9cf57cfSAxel Dörfler int32 srcSampleOffset, int32 srcSampleCount, 40*a9cf57cfSAxel Dörfler void* dest, int32 destSampleOffset, 41*a9cf57cfSAxel Dörfler int32 destSampleCount, float gain); 42*a9cf57cfSAxel Dörfler virtual void uint8_to_float(const void* src, 43*a9cf57cfSAxel Dörfler int32 srcSampleOffset, int32 srcSampleCount, 44*a9cf57cfSAxel Dörfler void* dest, int32 destSampleOffset, 45*a9cf57cfSAxel Dörfler int32 destSampleCount, float gain); 46*a9cf57cfSAxel Dörfler virtual void float_to_int32(const void* src, 47*a9cf57cfSAxel Dörfler int32 srcSampleOffset, int32 srcSampleCount, 48*a9cf57cfSAxel Dörfler void* dest, int32 destSampleOffset, 49*a9cf57cfSAxel Dörfler int32 destSampleCount, float gain); 50*a9cf57cfSAxel Dörfler virtual void float_to_int16(const void* src, 51*a9cf57cfSAxel Dörfler int32 srcSampleOffset, int32 srcSampleCount, 52*a9cf57cfSAxel Dörfler void* dest, int32 destSampleOffset, 53*a9cf57cfSAxel Dörfler int32 destSampleCount, float gain); 54*a9cf57cfSAxel Dörfler virtual void float_to_int8(const void* src, 55*a9cf57cfSAxel Dörfler int32 srcSampleOffset, int32 srcSampleCount, 56*a9cf57cfSAxel Dörfler void* dest, int32 destSampleOffset, 57*a9cf57cfSAxel Dörfler int32 destSampleCount, float gain); 58*a9cf57cfSAxel Dörfler virtual void float_to_uint8(const void* src, 59*a9cf57cfSAxel Dörfler int32 srcSampleOffset, int32 srcSampleCount, 60*a9cf57cfSAxel Dörfler void* dest, int32 destSampleOffset, 61*a9cf57cfSAxel Dörfler int32 destSampleCount, float gain); 62*a9cf57cfSAxel Dörfler 63575526ffSbeveloper private: 64*a9cf57cfSAxel Dörfler void (Resampler::*fFunc)(const void* src, 65*a9cf57cfSAxel Dörfler int32 srcSampleOffset, int32 srcSampleCount, 66*a9cf57cfSAxel Dörfler void* dest, int32 destSampleOffset, 67*a9cf57cfSAxel Dörfler int32 destSampleCount, float gain); 68575526ffSbeveloper }; 69575526ffSbeveloper 70575526ffSbeveloper 71575526ffSbeveloper inline void 72*a9cf57cfSAxel Dörfler Resampler::Resample(const void *src, int32 srcSampleOffset, 73*a9cf57cfSAxel Dörfler int32 srcSampleCount, void *dest, int32 destSampleOffset, 74*a9cf57cfSAxel Dörfler int32 destSampleCount, float gain) 75575526ffSbeveloper { 76*a9cf57cfSAxel Dörfler (this->*fFunc)(src, srcSampleOffset, srcSampleCount, dest, destSampleOffset, 77*a9cf57cfSAxel Dörfler destSampleCount, gain); 78575526ffSbeveloper } 79575526ffSbeveloper 8049705454SStephan Aßmus #endif // _RESAMPLER_H 81