Free Electron
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ambdec.h
1 #ifndef AMBDEC_H
2 #define AMBDEC_H
3 
4 #include "alstring.h"
5 #include "alMain.h"
6 
7 /* Helpers to read .ambdec configuration files. */
8 
9 enum AmbDecScaleType {
10  ADS_N3D,
11  ADS_SN3D,
12  ADS_FuMa,
13 };
14 typedef struct AmbDecConf {
15  al_string Description;
16  ALuint Version; /* Must be 3 */
17 
18  ALuint ChanMask;
19  ALuint FreqBands; /* Must be 1 or 2 */
20  ALsizei NumSpeakers;
21  enum AmbDecScaleType CoeffScale;
22 
23  ALfloat XOverFreq;
24  ALfloat XOverRatio;
25 
26  struct {
27  al_string Name;
28  ALfloat Distance;
29  ALfloat Azimuth;
30  ALfloat Elevation;
31  al_string Connection;
32  } Speakers[MAX_OUTPUT_CHANNELS];
33 
34  /* Unused when FreqBands == 1 */
35  ALfloat LFOrderGain[MAX_AMBI_ORDER+1];
36  ALfloat LFMatrix[MAX_OUTPUT_CHANNELS][MAX_AMBI_COEFFS];
37 
38  ALfloat HFOrderGain[MAX_AMBI_ORDER+1];
39  ALfloat HFMatrix[MAX_OUTPUT_CHANNELS][MAX_AMBI_COEFFS];
40 } AmbDecConf;
41 
42 void ambdec_init(AmbDecConf *conf);
43 void ambdec_deinit(AmbDecConf *conf);
44 int ambdec_load(AmbDecConf *conf, const char *fname);
45 
46 #endif /* AMBDEC_H */