Mercurial > hg > sv-dependency-builds
view 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 |
line wrap: on
line source
#include "portaudiocpp/BlockingStream.hxx" #include "portaudio.h" #include "portaudiocpp/StreamParameters.hxx" #include "portaudiocpp/Exception.hxx" namespace portaudio { // -------------------------------------------------------------------------------------- BlockingStream::BlockingStream() { } BlockingStream::BlockingStream(const StreamParameters ¶meters) { open(parameters); } BlockingStream::~BlockingStream() { try { close(); } catch (...) { // ignore all errors } } // -------------------------------------------------------------------------------------- void BlockingStream::open(const StreamParameters ¶meters) { PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(), parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), NULL, NULL); if (err != paNoError) { throw PaException(err); } } // -------------------------------------------------------------------------------------- void BlockingStream::read(void *buffer, unsigned long numFrames) { PaError err = Pa_ReadStream(stream_, buffer, numFrames); if (err != paNoError) { throw PaException(err); } } void BlockingStream::write(const void *buffer, unsigned long numFrames) { PaError err = Pa_WriteStream(stream_, buffer, numFrames); if (err != paNoError) { throw PaException(err); } } // -------------------------------------------------------------------------------------- signed long BlockingStream::availableReadSize() const { signed long avail = Pa_GetStreamReadAvailable(stream_); if (avail < 0) { throw PaException(avail); } return avail; } signed long BlockingStream::availableWriteSize() const { signed long avail = Pa_GetStreamWriteAvailable(stream_); if (avail < 0) { throw PaException(avail); } return avail; } // -------------------------------------------------------------------------------------- } // portaudio