File: fftlib_op.h

package info (click to toggle)
libofa 0.9.3-21
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 2,080 kB
  • sloc: cpp: 24,487; sh: 8,366; makefile: 47; ansic: 14
file content (86 lines) | stat: -rw-r--r-- 1,801 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/* ------------------------------------------------------------------

   libofa -- the Open Fingerprint Architecture library

   Copyright (C) 2006 MusicIP Corporation
   All rights reserved.

-------------------------------------------------------------------*/
// FILE: "fftlib_op.h"
// MODULE: Generic wrapper class for external FFT library calls
// AUTHOR: Frode Holm
// DATE CREATED: 1/12/06


#ifndef __FFTLIB_OP_H
#define __FFTLIB_OP_H 1


#ifdef FFTW
#include "rfftw.h"

class FFTLib_op {
protected:
	FFTLib_op() { PlanF = 0; }
	void Initialize(int N, bool optimize);
	void Destroy();
	void SetSize(int N, bool optimize, double *in, double *out);
	void ComputeFrame(int N, double *in, double *out);

	rfftw_plan PlanF;	// Forward plan: real to complex (time to frequency)
};
#endif

#ifdef FFTW3
#include "fftw3.h"

class FFTLib_op {
protected:
	FFTLib_op() { PlanF = 0; }
	void Initialize(int N, bool optimize);
	void Destroy();
	void SetSize(int N, bool optimize, double *in, double *out);
	void ComputeFrame(int N, double *in, double *out);

	unsigned Flags;

	fftw_plan PlanF;	// Forward plan: real to complex (time to frequency)
};
#endif


#ifdef MKL

class FFTLib_op {
protected:
	FFTLib_op() { WSave = 0; }
	void Initialize(int N, bool optimize);
	void Destroy();
	void SetSize(int N, bool optimize, double *in, double *out);
	void ComputeFrame(int N, double *in, double *out);

	double* WSave;
};
#endif

#ifdef VDSP
#include <Accelerate/Accelerate.h>

class FFTLib_op {
protected:
	FFTLib_op() { Init = false; }
	void Initialize(int N, bool optimize);
	void Destroy();
	void SetSize(int N, bool optimize, double *in, double *out);
	void ComputeFrame(int N, double *in, double *out);
private:
	FFTSetupD SetupReal;
	DSPDoubleSplitComplex A;
	int Exp;
	bool Init;
};
#endif


#endif