annotate src/portaudio_20140130/bindings/cpp/source/portaudiocpp/BlockingStream.cxx @ 169:223a55898ab9 tip default

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