VVSDK  1.0
The VVAmbisonic Library
VVAmbisonic.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2013 David McGriffy, all rights reserved
3  */
4 
9 #ifndef __VVAMBISONIC_H_INCLUDED
10 #define __VVAMBISONIC_H_INCLUDED
11 
12 #if defined(_WIN32) || defined(_WIN64)
13 #ifdef dll_export
14 #define impexp_spec // __declspec(dllexport)
15 #else
16 #define impexp_spec //__declspec(dllimport)
17 #endif
18 #else
19 #define impexp_spec
20 #endif
21 
22 #include "VVFeatures.h"
23 
24 #define BUFFERLEN (512)
25 
26 #define NUMPROGRAMS (8)
27 #define MAXNAMESIZE (32)
28 
29 class AVVTetra;
30 class AVVRotate;
31 class AVVDecode;
32 #ifdef VVHAS_PARAMETRIC_DECODER
33  class AVVDecode2;
34 #endif
35 #ifdef VVHAS_SYNTH_BINAURAL
36  class AVVBinaural;
37 #endif
38 
39 
40 namespace VVAmbisonic
41 {
42 
47  {
48  public:
49  VVPlugin(long sampleRate);
50  virtual ~VVPlugin();
51  virtual void setAmbiFormat(int fmt) = 0;
52  virtual bool canProcess() = 0;
53  virtual void process(float **inBufs, float **outBufs, long numSamples) = 0;
54  };
55 
59  class impexp_spec VVTetra : public VVPlugin
60  {
61  public:
62  VVTetra(long sampleRate, const char* calibrationFilePath);
63  ~VVTetra();
64  int setProgram(int program);
65  int setProgram(const char* programName);
66  void getCurProgramName(char* programName);
67  void setAmbiFormat(int fmt);
68  void setAddressMode(int mode);
69  bool canProcess();
70  void process(float **inBufs, float **outBufs, long numSamples);
73  void generateImpulses(int blockSize, float** output);
75  private:
76  AVVTetra *m_AVVTetra;
77  };
78 
82  class impexp_spec VVRotate : public VVPlugin
83  {
84  public:
85  VVRotate(long sampleRate);
86  ~VVRotate();
87  void setMirrors(bool mX, bool mY, bool mZ);
88  void setAngles(float rotate, float tilt, float tumble);
90  void setAmbiFormat(int fmt);
91  bool canProcess();
92  void process(float **inBufs, float **outBufs, long numSamples);
93  void processFast(float **inBufs, float **outBufs, long numSamples);
95  private:
96  AVVRotate *m_AVVRotate;
97  };
98 
103  {
104  public:
105  VVDecode(long sampleRate);
106  ~VVDecode();
107  int setProgram(int program);
108  int setProgram(const char* programName);
109  void getCurProgramName(char* programName);
110  void setAmbiFormat(int fmt);
111  bool canProcess();
112  int getNumOutputs();
113  void process(float **inBufs, float **outBufs, long numSamples);
114  private:
115  AVVDecode *m_AVVDecode;
116  };
117 
118 #ifdef VVHAS_PARAMETRIC_DECODER
119 
122  class impexp_spec VVDecodeP : public VVPlugin
123  {
124  public:
125  VVDecodeP(long sampleRate);
126  ~VVDecodeP();
127  int setProgram(int program);
128  int setProgram(const char* programName);
129  void getCurProgramName(char* programName);
130  void setAmbiFormat(int fmt);
131  bool canProcess();
132  int getNumOutputs();
133  void setHRIRSubject(int subjBect);
134  int getHRIRSubjects(const int **subjectList);
135  //void setBinauralParams(float headSize, float frontFreq, float lowFreq); /*!< Set the synthetic binaural parameters */
136  void process(float **inBufs, float **outBufs, long numSamples);
137  private:
138  AVVDecode2 *m_AVVDecodeP;
139  };
140 #endif
141 
142 #ifdef VVHAS_SYNTH_BINAURAL
143 
146  class impexp_spec VVBinaural : public VVPlugin
147  {
148  public:
149  VVBinaural(long sampleRate, const char* HRIRPath, int subjNum);
150  ~VVBinaural();
151  int setProgram(int program);
152  int setProgram(const char* programName);
153  void getCurProgramName(char* programName);
154  void setAmbiFormat(int fmt);
155  bool canProcess();
156  void process(float **inBufs, float **outBufs, long numSamples);
157  private:
158  AVVBinaural *m_AVVBinaural;
159  };
160 #endif
161 
162 };
163 
164 #endif
EXPORTED_FUNCTION void process(float *a, float *b, float *c, float *d, long numSamples)
Definition: VVTetraC.cpp:108
Definition: VVAmbisonic.h:102
Definition: AVVTetra.h:20
Definition: AVVDecode.h:19
Definition: VVAmbisonic.h:59
EXPORTED_FUNCTION void getCurProgramName(char *programName)
Definition: VVTetraC.cpp:56
Definition: VVAmbisonic.cpp:25
Definition: AVVRotate.h:12
#define impexp_spec
Definition: VVAmbisonic.h:19
Definition: VVAmbisonic.h:82
EXPORTED_FUNCTION int setProgram(int program)
Definition: VVTetraC.cpp:42
Definition: VVAmbisonic.h:46
EXPORTED_FUNCTION bool canProcess()
Definition: VVTetraC.cpp:95
EXPORTED_FUNCTION void setAddressMode(short mode)
Definition: VVTetraC.cpp:82