Remove broken autowah effect code
[openal-soft.git] / OpenAL32 / Include / alBuffer.h
blob351c81bcffe507d55654d376cd5b2782a24772e5
1 #ifndef _AL_BUFFER_H_
2 #define _AL_BUFFER_H_
4 #include "alMain.h"
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
10 /* User formats */
11 enum UserFmtType {
12 UserFmtByte = AL_BYTE_SOFT,
13 UserFmtUByte = AL_UNSIGNED_BYTE_SOFT,
14 UserFmtShort = AL_SHORT_SOFT,
15 UserFmtUShort = AL_UNSIGNED_SHORT_SOFT,
16 UserFmtInt = AL_INT_SOFT,
17 UserFmtUInt = AL_UNSIGNED_INT_SOFT,
18 UserFmtFloat = AL_FLOAT_SOFT,
19 UserFmtDouble = AL_DOUBLE_SOFT,
20 UserFmtByte3 = AL_BYTE3_SOFT,
21 UserFmtUByte3 = AL_UNSIGNED_BYTE3_SOFT,
22 UserFmtMulaw = AL_MULAW_SOFT,
23 UserFmtAlaw = 0x10000000,
24 UserFmtIMA4,
25 UserFmtMSADPCM,
27 enum UserFmtChannels {
28 UserFmtMono = AL_MONO_SOFT,
29 UserFmtStereo = AL_STEREO_SOFT,
30 UserFmtRear = AL_REAR_SOFT,
31 UserFmtQuad = AL_QUAD_SOFT,
32 UserFmtX51 = AL_5POINT1_SOFT, /* (WFX order) */
33 UserFmtX61 = AL_6POINT1_SOFT, /* (WFX order) */
34 UserFmtX71 = AL_7POINT1_SOFT, /* (WFX order) */
35 UserFmtBFormat2D = AL_BFORMAT2D_SOFT, /* WXY */
36 UserFmtBFormat3D = AL_BFORMAT3D_SOFT, /* WXYZ */
39 ALuint BytesFromUserFmt(enum UserFmtType type) DECL_CONST;
40 ALuint ChannelsFromUserFmt(enum UserFmtChannels chans) DECL_CONST;
41 inline ALuint FrameSizeFromUserFmt(enum UserFmtChannels chans, enum UserFmtType type)
43 return ChannelsFromUserFmt(chans) * BytesFromUserFmt(type);
47 /* Storable formats */
48 enum FmtType {
49 FmtByte = UserFmtByte,
50 FmtShort = UserFmtShort,
51 FmtFloat = UserFmtFloat,
53 enum FmtChannels {
54 FmtMono = UserFmtMono,
55 FmtStereo = UserFmtStereo,
56 FmtRear = UserFmtRear,
57 FmtQuad = UserFmtQuad,
58 FmtX51 = UserFmtX51,
59 FmtX61 = UserFmtX61,
60 FmtX71 = UserFmtX71,
61 FmtBFormat2D = UserFmtBFormat2D,
62 FmtBFormat3D = UserFmtBFormat3D,
64 #define MAX_INPUT_CHANNELS (8)
66 ALuint BytesFromFmt(enum FmtType type) DECL_CONST;
67 ALuint ChannelsFromFmt(enum FmtChannels chans) DECL_CONST;
68 inline ALuint FrameSizeFromFmt(enum FmtChannels chans, enum FmtType type)
70 return ChannelsFromFmt(chans) * BytesFromFmt(type);
74 typedef struct ALbuffer {
75 ALvoid *data;
77 ALsizei Frequency;
78 ALenum Format;
79 ALsizei SampleLen;
81 enum FmtChannels FmtChannels;
82 enum FmtType FmtType;
83 ALuint BytesAlloc;
85 enum UserFmtChannels OriginalChannels;
86 enum UserFmtType OriginalType;
87 ALsizei OriginalSize;
88 ALsizei OriginalAlign;
90 ALsizei LoopStart;
91 ALsizei LoopEnd;
93 ATOMIC(ALsizei) UnpackAlign;
94 ATOMIC(ALsizei) PackAlign;
96 /* Number of times buffer was attached to a source (deletion can only occur when 0) */
97 RefCount ref;
99 RWLock lock;
101 /* Self ID */
102 ALuint id;
103 } ALbuffer;
105 ALbuffer *NewBuffer(ALCcontext *context);
106 void DeleteBuffer(ALCdevice *device, ALbuffer *buffer);
108 ALenum LoadData(ALbuffer *buffer, ALuint freq, ALenum NewFormat, ALsizei frames, enum UserFmtChannels SrcChannels, enum UserFmtType SrcType, const ALvoid *data, ALsizei align, ALboolean storesrc);
110 inline void LockBuffersRead(ALCdevice *device)
111 { LockUIntMapRead(&device->BufferMap); }
112 inline void UnlockBuffersRead(ALCdevice *device)
113 { UnlockUIntMapRead(&device->BufferMap); }
114 inline void LockBuffersWrite(ALCdevice *device)
115 { LockUIntMapWrite(&device->BufferMap); }
116 inline void UnlockBuffersWrite(ALCdevice *device)
117 { UnlockUIntMapWrite(&device->BufferMap); }
119 inline struct ALbuffer *LookupBuffer(ALCdevice *device, ALuint id)
120 { return (struct ALbuffer*)LookupUIntMapKeyNoLock(&device->BufferMap, id); }
121 inline struct ALbuffer *RemoveBuffer(ALCdevice *device, ALuint id)
122 { return (struct ALbuffer*)RemoveUIntMapKeyNoLock(&device->BufferMap, id); }
124 ALvoid ReleaseALBuffers(ALCdevice *device);
126 #ifdef __cplusplus
128 #endif
130 #endif