00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _FFT_CACHE_H_
00017 #define _FFT_CACHE_H_
00018
00019 #include <cstdlib>
00020 #include <cmath>
00021
00022 #include <stdint.h>
00023
00024 class FFTCache
00025 {
00026 public:
00027 virtual ~FFTCache() { }
00028
00029 virtual size_t getWidth() const = 0;
00030 virtual size_t getHeight() const = 0;
00031
00032 virtual void resize(size_t width, size_t height) = 0;
00033 virtual void reset() = 0;
00034
00035 virtual float getMagnitudeAt(size_t x, size_t y) const = 0;
00036 virtual float getNormalizedMagnitudeAt(size_t x, size_t y) const = 0;
00037 virtual float getMaximumMagnitudeAt(size_t x) const = 0;
00038 virtual float getPhaseAt(size_t x, size_t y) const = 0;
00039
00040 virtual void getValuesAt(size_t x, size_t y, float &real, float &imaginary) const = 0;
00041
00042 virtual bool haveSetColumnAt(size_t x) const = 0;
00043
00044
00045 virtual void setColumnAt(size_t x, float *mags, float *phases, float factor) = 0;
00046
00047
00048 virtual void setColumnAt(size_t x, float *reals, float *imags) = 0;
00049
00050 virtual void suspend() { }
00051
00052 enum Type { MemoryCache, FileCache };
00053 virtual Type getType() = 0;
00054
00055 protected:
00056 FFTCache() { }
00057 };
00058
00059
00060 #endif