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