comparison src/portaudio/bindings/cpp/source/portaudiocpp/BlockingStream.cxx @ 4:e13257ea84a4

Add bzip2, zlib, liblo, portaudio sources
author Chris Cannam
date Wed, 20 Mar 2013 13:59:52 +0000
parents
children
comparison
equal deleted inserted replaced
3:6c505a35919a 4:e13257ea84a4
1 #include "portaudiocpp/BlockingStream.hxx"
2
3 #include "portaudio.h"
4
5 #include "portaudiocpp/StreamParameters.hxx"
6 #include "portaudiocpp/Exception.hxx"
7
8 namespace portaudio
9 {
10
11 // --------------------------------------------------------------------------------------
12
13 BlockingStream::BlockingStream()
14 {
15 }
16
17 BlockingStream::BlockingStream(const StreamParameters &parameters)
18 {
19 open(parameters);
20 }
21
22 BlockingStream::~BlockingStream()
23 {
24 try
25 {
26 close();
27 }
28 catch (...)
29 {
30 // ignore all errors
31 }
32 }
33
34 // --------------------------------------------------------------------------------------
35
36 void BlockingStream::open(const StreamParameters &parameters)
37 {
38 PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
39 parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), NULL, NULL);
40
41 if (err != paNoError)
42 {
43 throw PaException(err);
44 }
45 }
46
47 // --------------------------------------------------------------------------------------
48
49 void BlockingStream::read(void *buffer, unsigned long numFrames)
50 {
51 PaError err = Pa_ReadStream(stream_, buffer, numFrames);
52
53 if (err != paNoError)
54 {
55 throw PaException(err);
56 }
57 }
58
59 void BlockingStream::write(const void *buffer, unsigned long numFrames)
60 {
61 PaError err = Pa_WriteStream(stream_, buffer, numFrames);
62
63 if (err != paNoError)
64 {
65 throw PaException(err);
66 }
67 }
68
69 // --------------------------------------------------------------------------------------
70
71 signed long BlockingStream::availableReadSize() const
72 {
73 signed long avail = Pa_GetStreamReadAvailable(stream_);
74
75 if (avail < 0)
76 {
77 throw PaException(avail);
78 }
79
80 return avail;
81 }
82
83 signed long BlockingStream::availableWriteSize() const
84 {
85 signed long avail = Pa_GetStreamWriteAvailable(stream_);
86
87 if (avail < 0)
88 {
89 throw PaException(avail);
90 }
91
92 return avail;
93 }
94
95 // --------------------------------------------------------------------------------------
96
97 } // portaudio
98
99
100