annotate src/portaudio/bindings/cpp/source/portaudiocpp/BlockingStream.cxx @ 107:71c914cf6201

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