comparison dynamin/c/portaudio.d @ 0:aa4efef0f0b1

Initial commit of code.
author Jordan Miner <jminer7@gmail.com>
date Mon, 15 Jun 2009 22:10:48 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:aa4efef0f0b1
1 module dynamin.c.portaudio;
2
3 /*
4 * A complete binding to the core of the PortAudio library v19.
5 */
6
7 version(build) { pragma(link, portaudio); }
8
9 extern(C):
10
11 int Pa_GetVersion();
12
13 char* Pa_GetVersionText();
14
15 alias int PaError;
16
17 alias int PaErrorCode;
18 enum : PaErrorCode {
19 paNoError = 0,
20
21 paNotInitialized = -10000,
22 paUnanticipatedHostError,
23 paInvalidChannelCount,
24 paInvalidSampleRate,
25 paInvalidDevice,
26 paInvalidFlag,
27 paSampleFormatNotSupported,
28 paBadIODeviceCombination,
29 paInsufficientMemory,
30 paBufferTooBig,
31 paBufferTooSmall,
32 paNullCallback,
33 paBadStreamPtr,
34 paTimedOut,
35 paInternalError,
36 paDeviceUnavailable,
37 paIncompatibleHostApiSpecificStreamInfo,
38 paStreamIsStopped,
39 paStreamIsNotStopped,
40 paInputOverflowed,
41 paOutputUnderflowed,
42 paHostApiNotFound,
43 paInvalidHostApi,
44 paCanNotReadFromACallbackStream,
45 paCanNotWriteToACallbackStream,
46 paCanNotReadFromAnOutputOnlyStream,
47 paCanNotWriteToAnInputOnlyStream,
48 paIncompatibleStreamHostApi,
49 paBadBufferPtr
50 }
51
52 char* Pa_GetErrorText(PaError errorCode);
53
54 PaError Pa_Initialize();
55
56 PaError Pa_Terminate();
57
58 alias int PaDeviceIndex;
59
60 enum : PaDeviceIndex {
61 paNoDevice = -1,
62 paUseHostApiSpecificDeviceSpecification = -2
63 }
64
65 alias int PaHostApiIndex;
66
67 PaHostApiIndex Pa_GetHostApiCount();
68
69 PaHostApiIndex Pa_GetDefaultHostApi();
70
71 alias int PaHostApiTypeId;
72 enum : PaHostApiTypeId {
73 paInDevelopment = 0,
74 paDirectSound = 1,
75 paMME = 2,
76 paASIO = 3,
77 paSoundManager = 4,
78 paCoreAudio = 5,
79 paOSS = 7,
80 paALSA = 8,
81 paAL = 9,
82 paBeOS = 10,
83 paWDMKS = 11,
84 paJACK = 12,
85 paWASAPI = 13,
86 paAudioScienceHPI = 14
87 }
88
89 struct PaHostApiInfo {
90 int structVersion;
91 PaHostApiTypeId type;
92 char* name;
93
94 int deviceCount;
95
96 PaDeviceIndex defaultInputDevice;
97
98 PaDeviceIndex defaultOutputDevice;
99
100 }
101
102 PaHostApiInfo* Pa_GetHostApiInfo(PaHostApiIndex hostApi);
103
104 PaHostApiIndex Pa_HostApiTypeIdToHostApiIndex(PaHostApiTypeId type);
105
106 PaDeviceIndex Pa_HostApiDeviceIndexToDeviceIndex(
107 PaHostApiIndex hostApi,
108 int hostApiDeviceIndex);
109
110 struct PaHostErrorInfo {
111 PaHostApiTypeId hostApiType;
112 int errorCode;
113 char* errorText;
114 }
115
116
117 PaHostErrorInfo* Pa_GetLastHostErrorInfo();
118
119 PaDeviceIndex Pa_GetDeviceCount();
120
121 PaDeviceIndex Pa_GetDefaultInputDevice();
122
123 PaDeviceIndex Pa_GetDefaultOutputDevice();
124
125 alias double PaTime;
126
127 alias uint PaSampleFormat;
128
129 enum : PaSampleFormat {
130 paFloat32 = 0x00000001,
131 paInt32 = 0x00000002,
132 paInt24 = 0x00000004,
133 paInt16 = 0x00000008,
134 paInt8 = 0x00000010,
135 paUInt8 = 0x00000020,
136 paCustomFormat = 0x00010000,
137
138 paNonInterleaved = 0x80000000
139 }
140
141 struct PaDeviceInfo {
142 int structVersion;
143 char* name;
144 PaHostApiIndex hostApi;
145
146 int maxInputChannels;
147 int maxOutputChannels;
148
149 PaTime defaultLowInputLatency;
150 PaTime defaultLowOutputLatency;
151 PaTime defaultHighInputLatency;
152 PaTime defaultHighOutputLatency;
153
154 double defaultSampleRate;
155 }
156
157 PaDeviceInfo* Pa_GetDeviceInfo(PaDeviceIndex device);
158
159 struct PaStreamParameters {
160 PaDeviceIndex device;
161
162 int channelCount;
163
164 PaSampleFormat sampleFormat;
165
166 PaTime suggestedLatency;
167
168 void* hostApiSpecificStreamInfo;
169 }
170
171 const paFormatIsSupported = 0;
172
173 PaError Pa_IsFormatSupported(
174 PaStreamParameters* inputParameters,
175 PaStreamParameters* outputParameters,
176 double sampleRate);
177
178 alias void PaStream;
179
180 const paFramesPerBufferUnspecified = 0;
181
182 alias uint PaStreamFlags;
183 enum : PaStreamFlags {
184 paNoFlag = 0,
185 paClipOff = 0x00000001,
186 paDitherOff = 0x00000002,
187 paNeverDropInput = 0x00000004,
188 paPrimeOutputBuffersUsingStreamCallback = 0x00000008,
189 paPlatformSpecificFlags = 0xFFFF0000
190 }
191
192 struct PaStreamCallbackTimeInfo {
193 PaTime inputBufferAdcTime;
194 PaTime currentTime;
195 PaTime outputBufferDacTime;
196 }
197
198 alias uint PaStreamCallbackFlags;
199 enum : PaStreamCallbackFlags {
200 paInputUnderflow = 0x00000001,
201 paInputOverflow = 0x00000002,
202 paOutputUnderflow = 0x00000004,
203 paOutputOverflow = 0x00000008,
204 paPrimingOutput = 0x00000010
205 }
206
207 alias uint PaStreamCallbackResult;
208 enum : PaStreamCallbackResult {
209 paContinue = 0,
210 paComplete = 1,
211 paAbort = 2
212 }
213
214 alias int function(
215 void* input, void* output,
216 uint frameCount,
217 PaStreamCallbackTimeInfo* timeInfo,
218 PaStreamCallbackFlags statusFlags,
219 void* userData) PaStreamCallback;
220
221 PaError Pa_OpenStream(
222 PaStream** stream,
223 PaStreamParameters* inputParameters,
224 PaStreamParameters* outputParameters,
225 double sampleRate,
226 uint framesPerBuffer,
227 PaStreamFlags streamFlags,
228 PaStreamCallback streamCallback,
229 void* userData);
230
231 PaError Pa_OpenDefaultStream(
232 PaStream** stream,
233 int numInputChannels,
234 int numOutputChannels,
235 PaSampleFormat sampleFormat,
236 double sampleRate,
237 uint framesPerBuffer,
238 PaStreamCallback streamCallback,
239 void* userData);
240
241 PaError Pa_CloseStream(PaStream* stream);
242
243 alias void function(void* userData) PaStreamFinishedCallback;
244
245 PaError Pa_SetStreamFinishedCallback(
246 PaStream* stream, PaStreamFinishedCallback streamFinishedCallback);
247
248 PaError Pa_StartStream(PaStream* stream);
249
250 PaError Pa_StopStream(PaStream* stream);
251
252 PaError Pa_AbortStream(PaStream* stream);
253
254 PaError Pa_IsStreamStopped(PaStream* stream);
255
256 PaError Pa_IsStreamActive(PaStream* stream);
257
258 struct PaStreamInfo {
259 int structVersion;
260
261 PaTime inputLatency;
262
263 PaTime outputLatency;
264
265 double sampleRate;
266 }
267
268 PaStreamInfo* Pa_GetStreamInfo(PaStream* stream);
269
270 PaTime Pa_GetStreamTime(PaStream* stream);
271
272 double Pa_GetStreamCpuLoad(PaStream* stream);
273
274 PaError Pa_ReadStream(
275 PaStream* stream,
276 void* buffer,
277 uint frames);
278
279
280 PaError Pa_WriteStream(
281 PaStream* stream,
282 void* buffer,
283 uint frames);
284
285 int Pa_GetStreamReadAvailable(PaStream* stream);
286
287 int Pa_GetStreamWriteAvailable(PaStream* stream);
288
289 PaError Pa_GetSampleSize(PaSampleFormat format);
290
291 void Pa_Sleep(long msec);
292