11 #define DEFAULT_SENDS 2
21 typedef struct ALbufferlistitem
{
22 ATOMIC(struct ALbufferlistitem
*) next
;
25 struct ALbuffer
*buffers
[];
29 typedef struct ALsource
{
30 /** Source properties. */
40 ALfloat RolloffFactor
;
44 ALfloat Orientation
[2][3];
45 ALboolean HeadRelative
;
47 DistanceModel mDistanceModel
;
48 enum Resampler Resampler
;
49 ALboolean DirectChannels
;
50 enum SpatializeMode Spatialize
;
52 ALboolean DryGainHFAuto
;
53 ALboolean WetGainAuto
;
54 ALboolean WetGainHFAuto
;
57 ALfloat AirAbsorptionFactor
;
58 ALfloat RoomRolloffFactor
;
59 ALfloat DopplerFactor
;
61 /* NOTE: Stereo pan angles are specified in radians, counter-clockwise
62 * rather than clockwise.
68 /** Direct filter and auxiliary send info. */
77 struct ALeffectslot
*Slot
;
84 al::vector
<SendData
> Send
;
87 * Last user-specified offset, and the offset type (bytes, samples, or
93 /** Source type (static, streaming, or undetermined) */
96 /** Source state (initial, playing, paused, or stopped) */
99 /** Source Buffer Queue head. */
100 ALbufferlistitem
*queue
;
102 std::atomic_flag PropsClean
{true};
104 /* Index into the context's Voices array. Lazily updated, only checked and
105 * reset when looking up the voice.
113 ALsource(ALsizei num_sends
);
116 ALsource(const ALsource
&) = delete;
117 ALsource
& operator=(const ALsource
&) = delete;
120 void UpdateAllSourceProps(ALCcontext
*context
);