zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
alSource.h
Go to the documentation of this file.
1 #ifndef _AL_SOURCE_H_
2 #define _AL_SOURCE_H_
3 
4 #define MAX_SENDS 4
5 
6 #include "alMain.h"
7 #include "alu.h"
8 #include "alFilter.h"
9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 #define SRC_HISTORY_BITS (6)
15 #define SRC_HISTORY_LENGTH (1<<SRC_HISTORY_BITS)
16 #define SRC_HISTORY_MASK (SRC_HISTORY_LENGTH-1)
17 
18 extern enum Resampler DefaultResampler;
19 
22 
23 
24 typedef struct ALbufferlistitem
25 {
26  struct ALbuffer *buffer;
30 
31 typedef struct HrtfState {
35  ALIGN(16) ALfloat Values[MaxChannels][HRIR_LENGTH][2];
37 } HrtfState;
38 
39 typedef struct HrtfParams {
41  ALfloat Dir[3];
42  ALIGN(16) ALfloat Coeffs[MaxChannels][HRIR_LENGTH][2];
43  ALIGN(16) ALfloat CoeffStep[HRIR_LENGTH][2];
44  ALuint Delay[MaxChannels][2];
45  ALint DelayStep[2];
46  ALuint IrSize;
47 } HrtfParams;
48 
49 typedef struct DirectParams {
50  ALfloat (*OutBuffer)[BUFFERSIZE];
53 
54  struct {
55  HrtfParams Params;
57  } Hrtf;
58 
59  /* A mixing matrix. First subscript is the channel number of the input data
60  * (regardless of channel configuration) and the second is the channel
61  * target (eg. FrontLeft). Not used with HRTF. */
63 
64  /* A low-pass filter, using 2 chained one-pole filters. */
66  ALfloat history[MaxChannels*2];
67 } DirectParams;
68 
69 typedef struct SendParams {
70  struct ALeffectslot *Slot;
71 
72  /* Gain control, which applies to all input channels to a single (mono)
73  * output buffer. */
75 
76  /* A low-pass filter, using 2 chained one-pole filters. */
78  ALfloat history[MaxChannels*2];
79 } SendParams;
80 
81 
82 typedef struct ALsource
83 {
85  volatile ALfloat Pitch;
86  volatile ALfloat Gain;
87  volatile ALfloat OuterGain;
88  volatile ALfloat MinGain;
89  volatile ALfloat MaxGain;
90  volatile ALfloat InnerAngle;
91  volatile ALfloat OuterAngle;
92  volatile ALfloat RefDistance;
93  volatile ALfloat MaxDistance;
95  volatile ALfloat Position[3];
96  volatile ALfloat Velocity[3];
97  volatile ALfloat Orientation[3];
99  volatile ALboolean Looping;
102 
107 
111 
113 
120 
122  volatile ALint SourceType;
123 
125  volatile ALenum state;
127 
135 
140 
144 
148 
149  struct {
153  } Send[MAX_SENDS];
154 
157 
159  struct {
163 
165 
167 
169  } Params;
171  volatile ALenum NeedsUpdate;
172 
174  ALvoid (*Update)(struct ALsource *self, const ALCcontext *context);
175 
178 } ALsource;
179 #define ALsource_Update(s,a) ((s)->Update(s,a))
180 
183 
185 
186 #ifdef __cplusplus
187 }
188 #endif
189 
190 #endif
ALdouble Offset
Definition: alSource.h:118
struct ALeffectslot * Slot
Definition: alSource.h:150
ALvoid(* WetMixerFunc)(const struct SendParams *params, const ALfloat *RESTRICT data, ALuint OutPos, ALuint SamplesToDo, ALuint BufferSize)
Definition: alu.h:40
volatile ALboolean WetGainHFAuto
Definition: alSource.h:105
void ALvoid
Definition: al.h:74
volatile ALenum state
Definition: alSource.h:125
volatile ALfloat DopplerFactor
Definition: alSource.h:110
struct ALbufferlistitem ALbufferlistitem
ALuint position
Definition: alSource.h:133
#define SRC_HISTORY_LENGTH
Definition: alSource.h:15
struct DirectParams DirectParams
volatile ALfloat Pitch
Definition: alSource.h:85
FILTER iirFilter
Definition: alSource.h:77
ALenum OffsetType
Definition: alSource.h:119
const ALsizei ResamplerPadding[ResamplerMax]
Definition: alSource.c:38
int ALsizei
Definition: al.h:62
struct SendParams SendParams
ALvoid(* DryMixerFunc)(const struct DirectParams *params, const ALfloat *RESTRICT data, ALuint srcchan, ALuint OutPos, ALuint SamplesToDo, ALuint BufferSize)
Definition: alu.h:36
int ALint
Definition: al.h:56
DistanceModel
Definition: alMain.h:460
ALIGN(16) ALfloat History[MaxChannels][SRC_HISTORY_LENGTH]
volatile ALenum NeedsUpdate
Definition: alSource.h:171
volatile ALfloat OuterGainHF
Definition: alSource.h:106
#define HRIR_LENGTH
Definition: alMain.h:776
float ALfloat
Definition: al.h:68
DryMixerFunc DryMix
Definition: alSource.h:161
volatile ALfloat MinGain
Definition: alSource.h:88
FILTER iirFilter
Definition: alSource.h:65
ALint Step
Definition: alSource.h:164
enum Resampler DefaultResampler
Definition: alSource.c:37
volatile ALfloat RoomRolloffFactor
Definition: alSource.h:109
volatile ALfloat AirAbsorptionFactor
Definition: alSource.h:108
double ALdouble
Definition: al.h:71
ALfloat DirectGainHF
Definition: alSource.h:147
ALuint position_fraction
Definition: alSource.h:134
volatile ALfloat RefDistance
Definition: alSource.h:92
ALfloat DirectGain
Definition: alSource.h:146
ALfloat GainHF
Definition: alSource.h:152
volatile ALboolean HeadRelative
Definition: alSource.h:98
volatile ALfloat OuterAngle
Definition: alSource.h:91
ALuint id
Definition: alSource.h:177
volatile ALfloat MaxDistance
Definition: alSource.h:93
struct ALeffectslot * Slot
Definition: alSource.h:70
ALuint SampleSize
Definition: alSource.h:143
WetMixerFunc WetMix
Definition: alSource.h:162
#define MAX_SENDS
Definition: alSource.h:4
const ALsizei ResamplerPrePadding[ResamplerMax]
Definition: alSource.c:43
volatile ALboolean DryGainHFAuto
Definition: alSource.h:103
ALenum new_state
Definition: alSource.h:126
HrtfParams Params
Definition: alSource.h:55
ALfloat Gain
Definition: alSource.h:74
ResamplerFunc Resample
Definition: alSource.h:160
int ALenum
Definition: al.h:65
ALvoid ReleaseALSources(ALCcontext *Context)
Definition: alSource.c:2705
unsigned int ALuint
Definition: al.h:59
volatile ALfloat OuterGain
Definition: alSource.h:87
DirectParams Direct
Definition: alSource.h:166
ALuint NumChannels
Definition: alSource.h:142
volatile ALfloat MaxGain
Definition: alSource.h:89
volatile ALboolean WetGainAuto
Definition: alSource.h:104
struct ALbuffer * buffer
Definition: alSource.h:26
ALfloat Gain
Definition: alSource.h:151
ALboolean Moving
Definition: alSource.h:32
volatile ALboolean Looping
Definition: alSource.h:99
volatile ALboolean DirectChannels
Definition: alSource.h:101
struct ALsource ALsource
ALfloat * PendingClicks
Definition: alSource.h:52
Resampler
Definition: alMain.h:472
struct ALbufferlistitem * next
Definition: alSource.h:27
volatile ALfloat Gain
Definition: alSource.h:86
ALuint Counter
Definition: alSource.h:33
HrtfState * State
Definition: alSource.h:56
ALfloat Gain
Definition: alSource.h:40
char ALboolean
Definition: al.h:38
volatile ALfloat RollOffFactor
Definition: alSource.h:94
ALuint BuffersInQueue
Definition: alSource.h:138
struct ALbufferlistitem * prev
Definition: alSource.h:28
TParseContext * context
volatile ALint SourceType
Definition: alSource.h:122
void(* ResamplerFunc)(const ALfloat *src, ALuint frac, ALuint increment, ALfloat *RESTRICT dst, ALuint dstlen)
Definition: alu.h:33
#define BUFFERSIZE
Definition: alMain.h:556
ALuint BuffersPlayed
Definition: alSource.h:139
volatile ALfloat InnerAngle
Definition: alSource.h:90
ALvoid SetSourceState(ALsource *Source, ALCcontext *Context, ALenum state)
Definition: alSource.c:2312
ALboolean ApplyOffset(ALsource *Source)
Definition: alSource.c:2596
ALfloat * ClickRemoval
Definition: alSource.h:51
ALbufferlistitem * queue
Definition: alSource.h:137
HrtfState Hrtf
Definition: alSource.h:156
ALuint Offset
Definition: alSource.h:36