mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-13 15:38:56 +02:00
Ensures that all files that Git considers to be text will have normalized (LF) line endings in the repository. When core.eol is set to native (which is the default), Git will convert the line endings of normalized files in your working directory back to your platform's native line ending. See also https://git-scm.com/docs/gitattributes
101 lines
2.0 KiB
C++
101 lines
2.0 KiB
C++
#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
|
|
|
|
|
|
|