annotate src/portaudio_20140130/bindings/cpp/source/portaudiocpp/BlockingStream.cxx @ 39:7ddb4fc30dac

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