16 #ifndef _FFT_DATA_SERVER_H_ 17 #define _FFT_DATA_SERVER_H_ 29 #include <QReadWriteLock> 30 #include <QReadLocker> 31 #include <QWaitCondition> 52 int fillFromColumn = 0);
63 int fillFromColumn = 0);
85 void getValuesAt(
int x,
int y,
float &real,
float &imaginary);
88 bool getMagnitudesAt(
int x,
float *values,
int minbin = 0,
int count = 0,
int step = 1);
90 bool getPhasesAt(
int x,
float *values,
int minbin = 0,
int count = 0,
int step = 1);
91 bool getValuesAt(
int x,
float *reals,
float *imaginaries,
int minbin = 0,
int count = 0,
int step = 1);
123 int fillFromColumn = 0);
171 Profiler profiler(
"FFTDataServer::getCacheReader");
177 if (cb->memoryCache) {
179 return cb->memoryCache;
181 if (cb->fileCacheWriter) {
182 QThread *me = QThread::currentThread();
184 if (map.find(me) == map.end()) {
204 Profiler profiler(
"FFTDataServer::getCacheWriter");
212 if (cb->fileCacheWriter)
return cb->fileCacheWriter;
void deleteProcessingData()
std::vector< CacheBlock * > CacheVector
FillThread * m_fillThread
static QMutex m_serverMapMutex
FFTDataServer & operator=(const FFTDataServer &)
bool getNormalizedMagnitudesAt(int x, float *values, int minbin=0, int count=0, int step=1)
FFTCacheWriter * getCacheWriter(int x, int &col)
ThreadReaderMap fileCacheReader
QReadWriteLock m_cacheVectorLock
FFTMemoryCache * memoryCache
static ServerMap m_servers
Window< fftsample > m_windower
FFTDataServer(QString fileBaseName, const DenseTimeValueModel *model, int channel, WindowType windowType, int windowSize, int windowIncrement, int fftSize, bool polar, StorageAdviser::Criteria criteria, int fillFromColumn=0)
float getMaximumMagnitudeAt(int x)
const DenseTimeValueModel * getModel() const
fftf_complex * m_fftOutput
static void purgeLimbo(int maxSize=3)
float getMagnitudeAt(int x, int y)
std::map< QThread *, FFTFileCacheReader * > ThreadReaderMap
int getCompletion() const
std::pair< FFTDataServer *, int > ServerCountPair
QWaitCondition m_condition
int getWindowIncrement() const
QMutex m_cacheCreationMutex
FFTFileCacheWriter * fileCacheWriter
bool getMagnitudesAt(int x, float *values, int minbin=0, int count=0, int step=1)
static FFTDataServer * findServer(QString)
WindowType getWindowType() const
void getStorageAdvice(int w, int h, bool &memory, bool &compact)
int getFillExtent() const
float getPhaseAt(int x, int y)
bool isLocalPeak(int x, int y)
const DenseTimeValueModel * m_model
Model is the base class for all data models that represent any sort of data on a time scale based on ...
static void modelAboutToBeDeleted(Model *)
bool isColumnReady(int x)
int getFillCompletion() const
static void claimInstance(FFTDataServer *)
StorageAdviser::Criteria m_criteria
FFTCacheReader * getCacheReader(int x, int &col)
static void releaseInstance(FFTDataServer *)
void getValuesAt(int x, int y, float &real, float &imaginary)
Base class for models containing dense two-dimensional data (value against time).
std::map< QString, ServerCountPair > ServerMap
bool makeCacheReader(int c)
int getWindowSize() const
float getNormalizedMagnitudeAt(int x, int y)
bool isOverThreshold(int x, int y, float threshold)
WindowType getType() const
FillThread(FFTDataServer &server, int fillFromColumn)
static FFTDataServer * getInstance(const DenseTimeValueModel *model, int channel, WindowType windowType, int windowSize, int windowIncrement, int fftSize, bool polar, StorageAdviser::Criteria criteria=StorageAdviser::NoCriteria, int fillFromColumn=0)
std::deque< FFTDataServer * > ServerQueue
QString generateFileBasename() const
bool getPhasesAt(int x, float *values, int minbin=0, int count=0, int step=1)
static FFTDataServer * getFuzzyInstance(const DenseTimeValueModel *model, int channel, WindowType windowType, int windowSize, int windowIncrement, int fftSize, bool polar, StorageAdviser::Criteria criteria=StorageAdviser::NoCriteria, int fillFromColumn=0)
Profile point instance class.
static ServerQueue m_releasedServers