PortAudio  2.0
pa_stream.h
Go to the documentation of this file.
1 #ifndef PA_STREAM_H
2 #define PA_STREAM_H
3 /*
4  * $Id$
5  * Portable Audio I/O Library
6  * stream interface
7  *
8  * Based on the Open Source API proposed by Ross Bencina
9  * Copyright (c) 1999-2008 Ross Bencina, Phil Burk
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining
12  * a copy of this software and associated documentation files
13  * (the "Software"), to deal in the Software without restriction,
14  * including without limitation the rights to use, copy, modify, merge,
15  * publish, distribute, sublicense, and/or sell copies of the Software,
16  * and to permit persons to whom the Software is furnished to do so,
17  * subject to the following conditions:
18  *
19  * The above copyright notice and this permission notice shall be
20  * included in all copies or substantial portions of the Software.
21  *
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
25  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
26  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
27  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29  */
30 
31 /*
32  * The text above constitutes the entire PortAudio license; however,
33  * the PortAudio community also makes the following non-binding requests:
34  *
35  * Any person wishing to distribute modifications to the Software is
36  * requested to send the modifications to the original developer so that
37  * they can be incorporated into the canonical version. It is also
38  * requested that these non-binding requests be included along with the
39  * license above.
40  */
41 
50 #include "portaudio.h"
51 
52 #ifdef __cplusplus
53 extern "C"
54 {
55 #endif /* __cplusplus */
56 
57 
58 #define PA_STREAM_MAGIC (0x18273645)
59 
60 
67 typedef struct {
68  PaError (*Close)( PaStream* stream );
69  PaError (*Start)( PaStream *stream );
70  PaError (*Stop)( PaStream *stream );
71  PaError (*Abort)( PaStream *stream );
72  PaError (*IsStopped)( PaStream *stream );
73  PaError (*IsActive)( PaStream *stream );
74  PaTime (*GetTime)( PaStream *stream );
75  double (*GetCpuLoad)( PaStream* stream );
76  PaError (*Read)( PaStream* stream, void *buffer, unsigned long frames );
77  PaError (*Write)( PaStream* stream, const void *buffer, unsigned long frames );
78  signed long (*GetReadAvailable)( PaStream* stream );
79  signed long (*GetWriteAvailable)( PaStream* stream );
81 
82 
86  PaError (*Close)( PaStream* ),
87  PaError (*Start)( PaStream* ),
88  PaError (*Stop)( PaStream* ),
89  PaError (*Abort)( PaStream* ),
90  PaError (*IsStopped)( PaStream* ),
91  PaError (*IsActive)( PaStream* ),
92  PaTime (*GetTime)( PaStream* ),
93  double (*GetCpuLoad)( PaStream* ),
94  PaError (*Read)( PaStream* stream, void *buffer, unsigned long frames ),
95  PaError (*Write)( PaStream* stream, const void *buffer, unsigned long frames ),
96  signed long (*GetReadAvailable)( PaStream* stream ),
97  signed long (*GetWriteAvailable)( PaStream* stream ) );
98 
99 
106  void *buffer,
107  unsigned long frames );
108 
109 
116  const void *buffer,
117  unsigned long frames );
118 
119 
125 signed long PaUtil_DummyGetReadAvailable( PaStream* stream );
126 
127 
133 signed long PaUtil_DummyGetWriteAvailable( PaStream* stream );
134 
135 
136 
141 double PaUtil_DummyGetCpuLoad( PaStream* stream );
142 
143 
148  unsigned long magic;
153  void *userData;
156 
157 
163  PaUtilStreamRepresentation *streamRepresentation,
164  PaUtilStreamInterface *streamInterface,
166  void *userData );
167 
168 
175 
176 
183 
184 
189 #define PA_STREAM_REP( stream )\
190  ((PaUtilStreamRepresentation*) (stream) )
191 
192 
197 #define PA_STREAM_INTERFACE( stream )\
198  PA_STREAM_REP( (stream) )->streamInterface
199 
200 
201 
202 #ifdef __cplusplus
203 }
204 #endif /* __cplusplus */
205 #endif /* PA_STREAM_H */
unsigned long magic
Definition: pa_stream.h:148
PaError PaUtil_DummyRead(PaStream *stream, void *buffer, unsigned long frames)
Definition: pa_stream.c:105
void PaUtil_InitializeStreamInterface(PaUtilStreamInterface *streamInterface, PaError(*Close)(PaStream *), PaError(*Start)(PaStream *), PaError(*Stop)(PaStream *), PaError(*Abort)(PaStream *), PaError(*IsStopped)(PaStream *), PaError(*IsActive)(PaStream *), PaTime(*GetTime)(PaStream *), double(*GetCpuLoad)(PaStream *), PaError(*Read)(PaStream *, void *, unsigned long), PaError(*Write)(PaStream *, const void *, unsigned long), signed long(*GetReadAvailable)(PaStream *), signed long(*GetWriteAvailable)(PaStream *))
Definition: pa_stream.c:51
void PaUtil_InitializeStreamRepresentation(PaUtilStreamRepresentation *streamRepresentation, PaUtilStreamInterface *streamInterface, PaStreamCallback *streamCallback, void *userData)
Definition: pa_stream.c:80
void PaStream
Definition: portaudio.h:635
Definition: portaudio.h:1039
PaUtilStreamInterface * streamInterface
Definition: pa_stream.h:150
int PaStreamCallback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
Definition: portaudio.h:830
void PaStreamFinishedCallback(void *userData)
Definition: portaudio.h:962
Definition: pa_stream.h:67
The portable PortAudio API.
PaError PaUtil_ValidateStreamPointer(PaStream *stream)
Definition: pa_front.c:1355
struct PaUtilStreamRepresentation * nextOpenStream
Definition: pa_stream.h:149
void PaUtil_TerminateStreamRepresentation(PaUtilStreamRepresentation *streamRepresentation)
Definition: pa_stream.c:99
int PaError
Definition: portaudio.h:121
Definition: pa_stream.h:147
void * userData
Definition: pa_stream.h:153
PaStreamCallback * streamCallback
Definition: pa_stream.h:151
PaStreamFinishedCallback * streamFinishedCallback
Definition: pa_stream.h:152
signed long PaUtil_DummyGetWriteAvailable(PaStream *stream)
Definition: pa_stream.c:137
double PaUtil_DummyGetCpuLoad(PaStream *stream)
Definition: pa_stream.c:145
char buffer[NUM_BYTES]
Definition: recplay.c:26
double PaTime
Definition: portaudio.h:460
struct PaUtilStreamRepresentation PaUtilStreamRepresentation
PaError PaUtil_DummyWrite(PaStream *stream, const void *buffer, unsigned long frames)
Definition: pa_stream.c:117
signed long PaUtil_DummyGetReadAvailable(PaStream *stream)
Definition: pa_stream.c:129
PaStreamInfo streamInfo
Definition: pa_stream.h:154