/[zanavi_public1]/navit/navit/support/espeak/portaudio.h
ZANavi

Contents of /navit/navit/support/espeak/portaudio.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (show annotations) (download)
Fri Oct 28 21:19:04 2011 UTC (12 years, 5 months ago) by zoff99
File MIME type: text/plain
File size: 15877 byte(s)
import files
1 // NOTE: Copy this file to portaudio.h in order to compile with V18 portaudio
2
3
4 #ifndef PORT_AUDIO_H
5 #define PORT_AUDIO_H
6
7 #ifdef __cplusplus
8 extern "C"
9 {
10 #endif /* __cplusplus */
11
12 /*
13 * $Id: portaudio.h,v 1.5 2002/03/26 18:04:22 philburk Exp $
14 * PortAudio Portable Real-Time Audio Library
15 * PortAudio API Header File
16 * Latest version available at: http://www.audiomulch.com/portaudio/
17 *
18 * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
19 *
20 * Permission is hereby granted, free of charge, to any person obtaining
21 * a copy of this software and associated documentation files
22 * (the "Software"), to deal in the Software without restriction,
23 * including without limitation the rights to use, copy, modify, merge,
24 * publish, distribute, sublicense, and/or sell copies of the Software,
25 * and to permit persons to whom the Software is furnished to do so,
26 * subject to the following conditions:
27 *
28 * The above copyright notice and this permission notice shall be
29 * included in all copies or substantial portions of the Software.
30 *
31 * Any person wishing to distribute modifications to the Software is
32 * requested to send the modifications to the original developer so that
33 * they can be incorporated into the canonical version.
34 *
35 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
37 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
38 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
39 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
40 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
41 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
42 *
43 */
44
45 typedef int PaError;
46 typedef enum {
47 paNoError = 0,
48
49 paHostError = -10000,
50 paInvalidChannelCount,
51 paInvalidSampleRate,
52 paInvalidDeviceId,
53 paInvalidFlag,
54 paSampleFormatNotSupported,
55 paBadIODeviceCombination,
56 paInsufficientMemory,
57 paBufferTooBig,
58 paBufferTooSmall,
59 paNullCallback,
60 paBadStreamPtr,
61 paTimedOut,
62 paInternalError,
63 paDeviceUnavailable
64 } PaErrorNum;
65
66 /*
67 Pa_Initialize() is the library initialisation function - call this before
68 using the library.
69
70 */
71
72 PaError Pa_Initialize( void );
73
74 /*
75 Pa_Terminate() is the library termination function - call this after
76 using the library.
77
78 */
79
80 PaError Pa_Terminate( void );
81
82 /*
83 Pa_GetHostError() returns a host specific error code.
84 This can be called after receiving a PortAudio error code of paHostError.
85
86 */
87
88 long Pa_GetHostError( void );
89
90 /*
91 Pa_GetErrorText() translates the supplied PortAudio error number
92 into a human readable message.
93
94 */
95
96 const char *Pa_GetErrorText( PaError errnum );
97
98 /*
99 Sample formats
100
101 These are formats used to pass sound data between the callback and the
102 stream. Each device has a "native" format which may be used when optimum
103 efficiency or control over conversion is required.
104
105 Formats marked "always available" are supported (emulated) by all
106 PortAudio implementations.
107
108 The floating point representation (paFloat32) uses +1.0 and -1.0 as the
109 maximum and minimum respectively.
110
111 paUInt8 is an unsigned 8 bit format where 128 is considered "ground"
112
113 */
114
115 typedef unsigned long PaSampleFormat;
116 #define paFloat32 ((PaSampleFormat) (1<<0)) /*always available*/
117 #define paInt16 ((PaSampleFormat) (1<<1)) /*always available*/
118 #define paInt32 ((PaSampleFormat) (1<<2)) /*always available*/
119 #define paInt24 ((PaSampleFormat) (1<<3))
120 #define paPackedInt24 ((PaSampleFormat) (1<<4))
121 #define paInt8 ((PaSampleFormat) (1<<5))
122 #define paUInt8 ((PaSampleFormat) (1<<6))
123 #define paCustomFormat ((PaSampleFormat) (1<<16))
124
125 /*
126 Device enumeration mechanism.
127
128 Device ids range from 0 to Pa_CountDevices()-1.
129
130 Devices may support input, output or both.
131
132 */
133
134 typedef int PaDeviceID;
135 #define paNoDevice -1
136
137 int Pa_CountDevices( void );
138
139 typedef struct
140 {
141 int structVersion;
142 const char *name;
143 int maxInputChannels;
144 int maxOutputChannels;
145 /* Number of discrete rates, or -1 if range supported. */
146 int numSampleRates;
147 /* Array of supported sample rates, or {min,max} if range supported. */
148 const double *sampleRates;
149 PaSampleFormat nativeSampleFormats;
150 }
151 PaDeviceInfo;
152
153 /*
154 Pa_GetDefaultInputDeviceID(), Pa_GetDefaultOutputDeviceID() return the
155 default device ids for input and output respectively, or paNoDevice if
156 no device is available.
157 The result can be passed to Pa_OpenStream().
158
159 On the PC, the user can specify a default device by
160 setting an environment variable. For example, to use device #1.
161
162 set PA_RECOMMENDED_OUTPUT_DEVICE=1
163
164 The user should first determine the available device ids by using
165 the supplied application "pa_devs".
166
167 */
168
169 PaDeviceID Pa_GetDefaultInputDeviceID( void );
170 PaDeviceID Pa_GetDefaultOutputDeviceID( void );
171
172
173
174 /*
175 Pa_GetDeviceInfo() returns a pointer to an immutable PaDeviceInfo structure
176 for the device specified.
177 If the device parameter is out of range the function returns NULL.
178
179 PortAudio manages the memory referenced by the returned pointer, the client
180 must not manipulate or free the memory. The pointer is only guaranteed to be
181 valid between calls to Pa_Initialize() and Pa_Terminate().
182
183 */
184
185 const PaDeviceInfo* Pa_GetDeviceInfo( PaDeviceID device );
186
187 /*
188 PaTimestamp is used to represent a continuous sample clock with arbitrary
189 start time that can be used for syncronization. The type is used for the
190 outTime argument to the PortAudioCallback and as the result of Pa_StreamTime()
191
192 */
193
194 typedef double PaTimestamp;
195
196 /*
197 PortAudioCallback is implemented by PortAudio clients.
198
199 inputBuffer and outputBuffer are arrays of interleaved samples,
200 the format, packing and number of channels used by the buffers are
201 determined by parameters to Pa_OpenStream() (see below).
202
203 framesPerBuffer is the number of sample frames to be processed by the callback.
204
205 outTime is the time in samples when the buffer(s) processed by
206 this callback will begin being played at the audio output.
207 See also Pa_StreamTime()
208
209 userData is the value of a user supplied pointer passed to Pa_OpenStream()
210 intended for storing synthesis data etc.
211
212 return value:
213 The callback can return a non-zero value to stop the stream. This may be
214 useful in applications such as soundfile players where a specific duration
215 of output is required. However, it is not necessary to utilise this mechanism
216 as StopStream() will also terminate the stream. A callback returning a
217 non-zero value must fill the entire outputBuffer.
218
219 NOTE: None of the other stream functions may be called from within the
220 callback function except for Pa_GetCPULoad().
221
222 */
223
224 typedef int (PortAudioCallback)(
225 void *inputBuffer, void *outputBuffer,
226 unsigned long framesPerBuffer,
227 PaTimestamp outTime, void *userData );
228
229
230 /*
231 Stream flags
232
233 These flags may be supplied (ored together) in the streamFlags argument to
234 the Pa_OpenStream() function.
235
236 */
237
238 #define paNoFlag (0)
239 #define paClipOff (1<<0) /* disable default clipping of out of range samples */
240 #define paDitherOff (1<<1) /* disable default dithering */
241 #define paPlatformSpecificFlags (0x00010000)
242 typedef unsigned long PaStreamFlags;
243
244 /*
245 A single PortAudioStream provides multiple channels of real-time
246 input and output audio streaming to a client application.
247 Pointers to PortAudioStream objects are passed between PortAudio functions.
248 */
249
250 typedef void PortAudioStream;
251 #define PaStream PortAudioStream
252
253 /*
254 Pa_OpenStream() opens a stream for either input, output or both.
255
256 stream is the address of a PortAudioStream pointer which will receive
257 a pointer to the newly opened stream.
258
259 inputDevice is the id of the device used for input (see PaDeviceID above.)
260 inputDevice may be paNoDevice to indicate that an input device is not required.
261
262 numInputChannels is the number of channels of sound to be delivered to the
263 callback. It can range from 1 to the value of maxInputChannels in the
264 PaDeviceInfo record for the device specified by the inputDevice parameter.
265 If inputDevice is paNoDevice numInputChannels is ignored.
266
267 inputSampleFormat is the sample format of inputBuffer provided to the callback
268 function. inputSampleFormat may be any of the formats described by the
269 PaSampleFormat enumeration (see above). PortAudio guarantees support for
270 the device's native formats (nativeSampleFormats in the device info record)
271 and additionally 16 and 32 bit integer and 32 bit floating point formats.
272 Support for other formats is implementation defined.
273
274 inputDriverInfo is a pointer to an optional driver specific data structure
275 containing additional information for device setup or stream processing.
276 inputDriverInfo is never required for correct operation. If not used
277 inputDriverInfo should be NULL.
278
279 outputDevice is the id of the device used for output (see PaDeviceID above.)
280 outputDevice may be paNoDevice to indicate that an output device is not required.
281
282 numOutputChannels is the number of channels of sound to be supplied by the
283 callback. See the definition of numInputChannels above for more details.
284
285 outputSampleFormat is the sample format of the outputBuffer filled by the
286 callback function. See the definition of inputSampleFormat above for more
287 details.
288
289 outputDriverInfo is a pointer to an optional driver specific data structure
290 containing additional information for device setup or stream processing.
291 outputDriverInfo is never required for correct operation. If not used
292 outputDriverInfo should be NULL.
293
294 sampleRate is the desired sampleRate. For full-duplex streams it is the
295 sample rate for both input and output
296
297 framesPerBuffer is the length in sample frames of all internal sample buffers
298 used for communication with platform specific audio routines. Wherever
299 possible this corresponds to the framesPerBuffer parameter passed to the
300 callback function.
301
302 numberOfBuffers is the number of buffers used for multibuffered communication
303 with the platform specific audio routines. If you pass zero, then an optimum
304 value will be chosen for you internally. This parameter is provided only
305 as a guide - and does not imply that an implementation must use multibuffered
306 i/o when reliable double buffering is available (such as SndPlayDoubleBuffer()
307 on the Macintosh.)
308
309 streamFlags may contain a combination of flags ORed together.
310 These flags modify the behaviour of the streaming process. Some flags may only
311 be relevant to certain buffer formats.
312
313 callback is a pointer to a client supplied function that is responsible
314 for processing and filling input and output buffers (see above for details.)
315
316 userData is a client supplied pointer which is passed to the callback
317 function. It could for example, contain a pointer to instance data necessary
318 for processing the audio buffers.
319
320 return value:
321 Upon success Pa_OpenStream() returns PaNoError and places a pointer to a
322 valid PortAudioStream in the stream argument. The stream is inactive (stopped).
323 If a call to Pa_OpenStream() fails a non-zero error code is returned (see
324 PaError above) and the value of stream is invalid.
325
326 */
327
328 PaError Pa_OpenStream( PortAudioStream** stream,
329 PaDeviceID inputDevice,
330 int numInputChannels,
331 PaSampleFormat inputSampleFormat,
332 void *inputDriverInfo,
333 PaDeviceID outputDevice,
334 int numOutputChannels,
335 PaSampleFormat outputSampleFormat,
336 void *outputDriverInfo,
337 double sampleRate,
338 unsigned long framesPerBuffer,
339 unsigned long numberOfBuffers,
340 PaStreamFlags streamFlags,
341 PortAudioCallback *callback,
342 void *userData );
343
344
345 /*
346 Pa_OpenDefaultStream() is a simplified version of Pa_OpenStream() that opens
347 the default input and/or output devices. Most parameters have identical meaning
348 to their Pa_OpenStream() counterparts, with the following exceptions:
349
350 If either numInputChannels or numOutputChannels is 0 the respective device
351 is not opened. This has the same effect as passing paNoDevice in the device
352 arguments to Pa_OpenStream().
353
354 sampleFormat applies to both the input and output buffers.
355
356 */
357
358 PaError Pa_OpenDefaultStream( PortAudioStream** stream,
359 int numInputChannels,
360 int numOutputChannels,
361 PaSampleFormat sampleFormat,
362 double sampleRate,
363 unsigned long framesPerBuffer,
364 unsigned long numberOfBuffers,
365 PortAudioCallback *callback,
366 void *userData );
367
368 /*
369 Pa_CloseStream() closes an audio stream, flushing any pending buffers.
370
371 */
372
373 PaError Pa_CloseStream( PortAudioStream* );
374
375 /*
376 Pa_StartStream() and Pa_StopStream() begin and terminate audio processing.
377 Pa_StopStream() waits until all pending audio buffers have been played.
378 Pa_AbortStream() stops playing immediately without waiting for pending
379 buffers to complete.
380
381 */
382
383 PaError Pa_StartStream( PortAudioStream *stream );
384
385 PaError Pa_StopStream( PortAudioStream *stream );
386
387 PaError Pa_AbortStream( PortAudioStream *stream );
388
389 /*
390 Pa_StreamActive() returns one (1) when the stream is active (ie playing
391 or recording audio), zero (0) when not playing, or a negative error number
392 if the stream is invalid.
393 The stream is active between calls to Pa_StartStream() and Pa_StopStream(),
394 but may also become inactive if the callback returns a non-zero value.
395 In the latter case, the stream is considered inactive after the last
396 buffer has finished playing.
397
398 */
399
400 PaError Pa_StreamActive( PortAudioStream *stream );
401
402 /*
403 Pa_StreamTime() returns the current output time in samples for the stream.
404 This time may be used as a time reference (for example synchronizing audio to
405 MIDI).
406
407 */
408
409 PaTimestamp Pa_StreamTime( PortAudioStream *stream );
410
411 /*
412 Pa_GetCPULoad() returns the CPU Load for the stream.
413 The "CPU Load" is a fraction of total CPU time consumed by the stream's
414 audio processing routines including, but not limited to the client supplied
415 callback.
416 A value of 0.5 would imply that PortAudio and the sound generating
417 callback was consuming roughly 50% of the available CPU time.
418 This function may be called from the callback function or the application.
419
420 */
421
422 double Pa_GetCPULoad( PortAudioStream* stream );
423
424 /*
425 Pa_GetMinNumBuffers() returns the minimum number of buffers required by
426 the current host based on minimum latency.
427 On the PC, for the DirectSound implementation, latency can be optionally set
428 by user by setting an environment variable.
429 For example, to set latency to 200 msec, put:
430
431 set PA_MIN_LATENCY_MSEC=200
432
433 in the AUTOEXEC.BAT file and reboot.
434 If the environment variable is not set, then the latency will be determined
435 based on the OS. Windows NT has higher latency than Win95.
436
437 */
438
439 int Pa_GetMinNumBuffers( int framesPerBuffer, double sampleRate );
440
441 /*
442 Pa_Sleep() puts the caller to sleep for at least 'msec' milliseconds.
443 You may sleep longer than the requested time so don't rely on this for
444 accurate musical timing.
445
446 Pa_Sleep() is provided as a convenience for authors of portable code (such as
447 the tests and examples in the PortAudio distribution.)
448
449 */
450
451 void Pa_Sleep( long msec );
452
453 /*
454 Pa_GetSampleSize() returns the size in bytes of a single sample in the
455 supplied PaSampleFormat, or paSampleFormatNotSupported if the format is
456 no supported.
457
458 */
459
460 PaError Pa_GetSampleSize( PaSampleFormat format );
461
462
463 #ifdef __cplusplus
464 }
465 #endif /* __cplusplus */
466 #endif /* PORT_AUDIO_H */

Properties

Name Value
svn:executable *

   
Visit the ZANavi Wiki