annotate src/portaudio/bindings/cpp/source/portaudiocpp/BlockingStream.cxx @ 19:891f60ab2af1

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