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
53extern "C"
54{
55#endif /* __cplusplus */
56
57
58#define PA_STREAM_MAGIC (0x18273645)
59
60
67typedef 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
125signed long PaUtil_DummyGetReadAvailable( PaStream* stream );
126
127
133signed long PaUtil_DummyGetWriteAvailable( PaStream* stream );
134
135
136
141double PaUtil_DummyGetCpuLoad( PaStream* stream );
142
143
156
157
163 PaUtilStreamRepresentation *streamRepresentation,
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 */
void PaUtil_InitializeStreamRepresentation(PaUtilStreamRepresentation *streamRepresentation, PaUtilStreamInterface *streamInterface, PaStreamCallback *streamCallback, void *userData)
Definition pa_stream.c:80
PaError PaUtil_ValidateStreamPointer(PaStream *stream)
Definition pa_front.c:1369
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
signed long PaUtil_DummyGetWriteAvailable(PaStream *stream)
Definition pa_stream.c:137
double PaUtil_DummyGetCpuLoad(PaStream *stream)
Definition pa_stream.c:145
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 *stream, void *buffer, unsigned long frames), PaError(*Write)(PaStream *stream, const void *buffer, unsigned long frames), signed long(*GetReadAvailable)(PaStream *stream), signed long(*GetWriteAvailable)(PaStream *stream))
Definition pa_stream.c:51
void PaUtil_TerminateStreamRepresentation(PaUtilStreamRepresentation *streamRepresentation)
Definition pa_stream.c:99
PaError PaUtil_DummyRead(PaStream *stream, void *buffer, unsigned long frames)
Definition pa_stream.c:105
struct PaUtilStreamRepresentation PaUtilStreamRepresentation
The portable PortAudio API.
void PaStream
Definition portaudio.h:644
int PaError
Definition portaudio.h:122
int PaStreamCallback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
Definition portaudio.h:839
void PaStreamFinishedCallback(void *userData)
Definition portaudio.h:974
double PaTime
Definition portaudio.h:465
char buffer[NUM_BYTES]
Definition recplay.c:26
Definition portaudio.h:1052
Definition pa_stream.h:67
Definition pa_stream.h:147
PaUtilStreamInterface * streamInterface
Definition pa_stream.h:150
PaStreamInfo streamInfo
Definition pa_stream.h:154
void * userData
Definition pa_stream.h:153
unsigned long magic
Definition pa_stream.h:148
PaStreamCallback * streamCallback
Definition pa_stream.h:151
PaStreamFinishedCallback * streamFinishedCallback
Definition pa_stream.h:152
struct PaUtilStreamRepresentation * nextOpenStream
Definition pa_stream.h:149