Free Electron
alutInternal.h
1 /*
2  * This file should be #included as the first header in all *.c files.
3  */
4 
5 #if !defined(ALUT_INTERNAL_H)
6 #define ALUT_INTERNAL_H
7 
8 #if HAVE_CONFIG_H
9 #include "config.h"
10 #endif
11 
12 #include <stdlib.h>
13 
14 #if HAVE_STDINT_H
15 #include <stdint.h>
16 #elif HAVE___INT8
17 typedef __int8 int8_t;
18 typedef unsigned __int8 uint8_t;
19 typedef __int16 int16_t;
20 typedef unsigned __int16 uint16_t;
21 typedef __int32 int32_t;
22 typedef unsigned __int32 uint32_t;
23 #else
24 #error Do not know sized types on this platform
25 #endif
26 
27 typedef int16_t Int16BigEndian;
28 typedef uint16_t UInt16LittleEndian;
29 typedef int32_t Int32BigEndian;
30 typedef uint32_t UInt32LittleEndian;
31 
32 #if HAVE___ATTRIBUTE__
33 #define UNUSED(x) x __attribute__((unused))
34 #else
35 #define UNUSED(x) x
36 #endif
37 
38 #include <AL/alut.h>
39 
40 #define AU_HEADER_SIZE 24
41 
42 /* see: http://en.wikipedia.org/wiki/Au_file_format, G.72x are missing */
43 enum AUEncoding
44 {
45  AU_ULAW_8 = 1, /* 8-bit ISDN u-law */
46  AU_PCM_8 = 2, /* 8-bit linear PCM (signed) */
47  AU_PCM_16 = 3, /* 16-bit linear PCM (signed, big-endian) */
48  AU_PCM_24 = 4, /* 24-bit linear PCM */
49  AU_PCM_32 = 5, /* 32-bit linear PCM */
50  AU_FLOAT_32 = 6, /* 32-bit IEEE floating point */
51  AU_FLOAT_64 = 7, /* 64-bit IEEE floating point */
52  AU_ALAW_8 = 27 /* 8-bit ISDN a-law */
53 };
54 
55 /* in alutCodec.c */
56 typedef ALvoid *Codec (ALvoid *data, size_t length, ALint numChannels,
57  ALint bitsPerSample, ALfloat sampleFrequency,
58  ALint blockAlign);
59 extern Codec _alutCodecLinear;
60 extern Codec _alutCodecPCM8s;
61 extern Codec _alutCodecPCM16;
62 extern Codec _alutCodecULaw;
63 extern Codec _alutCodecALaw;
64 extern Codec _alutCodecIMA4;
65 
66 /* in alutError.c */
67 extern void _alutSetError (ALenum err);
68 
69 /* in alutInit.c */
70 extern ALboolean _alutSanityCheck (void);
71 
72 /* in alutInputStream.c */
73 typedef struct InputStream_struct InputStream;
74 extern InputStream *_alutInputStreamConstructFromFile (const char *fileName);
75 extern InputStream *_alutInputStreamConstructFromMemory (const ALvoid *data,
76  size_t length);
77 extern const char *_alutInputStreamGetFileName (const InputStream *stream);
78 extern size_t _alutInputStreamGetRemainingLength (const InputStream *stream);
79 extern ALboolean _alutInputStreamDestroy (InputStream *stream);
80 extern ALboolean _alutInputStreamEOF (InputStream *stream);
81 extern ALvoid *_alutInputStreamRead (InputStream *stream, size_t length);
82 extern ALboolean _alutInputStreamSkip (InputStream *stream,
83  size_t numBytesToSkip);
84 extern ALboolean _alutInputStreamReadUInt16LE (InputStream *stream,
85  UInt16LittleEndian *value);
86 extern ALboolean _alutInputStreamReadInt32BE (InputStream *stream,
87  Int32BigEndian *value);
88 extern ALboolean _alutInputStreamReadUInt32LE (InputStream *stream,
89  UInt32LittleEndian *value);
90 
91 /* in alutLoader.c */
92 extern ALuint _alutCreateBufferFromInputStream (InputStream *stream);
93 extern void *_alutLoadMemoryFromInputStream (InputStream *stream,
94  ALenum *format, ALsizei *size,
95  ALfloat *frequency);
96 
97 /* in alutOutputStream.c */
98 typedef struct OutputStream_struct OutputStream;
99 extern OutputStream *_alutOutputStreamConstruct (size_t maximumLength);
100 extern ALboolean _alutOutputStreamDestroy (OutputStream *stream);
101 extern void *_alutOutputStreamGetData (OutputStream *stream);
102 extern size_t _alutOutputStreamGetLength (OutputStream *stream);
103 extern ALboolean _alutOutputStreamWriteInt16BE (OutputStream *stream,
104  Int16BigEndian value);
105 extern ALboolean _alutOutputStreamWriteInt32BE (OutputStream *stream,
106  Int32BigEndian value);
107 
108 /* in alutUtil.c */
109 extern ALvoid *_alutMalloc (size_t size);
110 extern ALboolean _alutFormatConstruct (ALint numChannels, ALint bitsPerSample,
111  ALenum *format);
112 extern ALboolean _alutFormatGetNumChannels (ALenum format,
113  ALint *numChannels);
114 extern ALboolean _alutFormatGetBitsPerSample (ALenum format,
115  ALint *bitsPerSample);
116 
117 /* in alutWaveform.c */
118 typedef struct BufferData_struct BufferData;
119 extern BufferData *_alutBufferDataConstruct (ALvoid *data, size_t length,
120  ALint numChannels,
121  ALint bitsPerSample,
122  ALfloat sampleFrequency);
123 extern ALboolean _alutBufferDataDestroy (BufferData *bufferData);
124 extern void _alutBufferDataDetachData (BufferData *bufferData);
125 extern ALvoid *_alutBufferDataGetData (const BufferData *bufferData);
126 extern size_t _alutBufferDataGetLength (const BufferData *bufferData);
127 extern ALfloat _alutBufferDataGetSampleFrequency (const BufferData
128  *bufferData);
129 extern ALboolean _alutGetFormat (const BufferData *bufferData,
130  ALenum *format);
131 extern ALuint _alutPassBufferData (BufferData *bufferData);
132 
133 #endif /* not ALUT_INTERNAL_H */
U32 size(const DenseVector< T > &lhs)
Return number of elements.
Definition: DenseVector.h:587