20 RESAMPLER_DEFAULT
= LINEAR_RESAMPLER
22 extern resampler_t DefaultResampler
;
24 typedef struct ALbufferlistitem
26 struct ALbuffer
*buffer
;
27 struct ALbufferlistitem
*next
;
28 struct ALbufferlistitem
*prev
;
31 typedef struct ALsource
40 ALfloat flRefDistance
;
41 ALfloat flMaxDistance
;
42 ALfloat flRollOffFactor
;
45 ALfloat vOrientation
[3];
46 ALboolean bHeadRelative
;
50 resampler_t Resampler
;
54 ALuint position_fraction
;
56 struct ALbuffer
*Buffer
;
58 struct ALbufferlistitem
*queue
; // Linked list of buffers in queue
59 ALuint BuffersInQueue
; // Number of buffers in queue
60 ALuint BuffersPlayed
; // Number of buffers played on this loop
62 ALfilter DirectFilter
;
65 struct ALeffectslot
*Slot
;
69 ALboolean DryGainHFAuto
;
70 ALboolean WetGainAuto
;
71 ALboolean WetGainHFAuto
;
74 ALfloat AirAbsorptionFactor
;
75 ALfloat RoomRolloffFactor
;
76 ALfloat DopplerFactor
;
81 // Source Type (Static, Streaming, or Undetermined)
84 // Current target parameters used for mixing
85 ALboolean NeedsUpdate
;
89 ALfloat DryGains
[OUTPUTCHANNELS
];
91 ALfloat history
[OUTPUTCHANNELS
*2];
96 ALfloat history
[OUTPUTCHANNELS
];
100 ALvoid (*Update
)(struct ALsource
*self
, const ALCcontext
*context
);
101 ALvoid (*Mix
)(struct ALsource
*self
, ALCdevice
*Device
, ALuint SamplesToDo
);
106 #define ALsource_Update(s,a) ((s)->Update(s,a))
107 #define ALsource_Mix(s,a,b) ((s)->Mix(s,a,b))
109 ALvoid
ReleaseALSources(ALCcontext
*Context
);