mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-21 06:01:13 +02:00
Reverting r12850...hopefully
Never removed one before, but I'm pretty sure it is correct.
This commit is contained in:
@@ -1,163 +1,163 @@
|
||||
#include "portaudiocpp/DirectionSpecificStreamParameters.hxx"
|
||||
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Returns a `nil' DirectionSpecificStreamParameters object. This can be used to
|
||||
/// specify that one direction of a Stream is not required (i.e. when creating
|
||||
/// a half-duplex Stream). All fields of the null DirectionSpecificStreamParameters
|
||||
/// object are invalid except for the device and the number of channel, which are set
|
||||
/// to paNoDevice and 0 respectively.
|
||||
//////
|
||||
DirectionSpecificStreamParameters DirectionSpecificStreamParameters::null()
|
||||
{
|
||||
DirectionSpecificStreamParameters tmp;
|
||||
tmp.paStreamParameters_.device = paNoDevice;
|
||||
tmp.paStreamParameters_.channelCount = 0;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Default constructor -- all parameters will be uninitialized.
|
||||
//////
|
||||
DirectionSpecificStreamParameters::DirectionSpecificStreamParameters()
|
||||
{
|
||||
}
|
||||
|
||||
//////
|
||||
/// Constructor which sets all required fields.
|
||||
//////
|
||||
DirectionSpecificStreamParameters::DirectionSpecificStreamParameters(const Device &device, int numChannels,
|
||||
SampleDataFormat format, bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo)
|
||||
{
|
||||
setDevice(device);
|
||||
setNumChannels(numChannels);
|
||||
setSampleFormat(format, interleaved);
|
||||
setSuggestedLatency(suggestedLatency);
|
||||
setHostApiSpecificStreamInfo(hostApiSpecificStreamInfo);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
void DirectionSpecificStreamParameters::setDevice(const Device &device)
|
||||
{
|
||||
paStreamParameters_.device = device.index();
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setNumChannels(int numChannels)
|
||||
{
|
||||
paStreamParameters_.channelCount = numChannels;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setSampleFormat(SampleDataFormat format, bool interleaved)
|
||||
{
|
||||
paStreamParameters_.sampleFormat = static_cast<PaSampleFormat>(format);
|
||||
|
||||
if (!interleaved)
|
||||
paStreamParameters_.sampleFormat |= paNonInterleaved;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved)
|
||||
{
|
||||
paStreamParameters_.sampleFormat = format;
|
||||
|
||||
paStreamParameters_.sampleFormat |= paCustomFormat;
|
||||
|
||||
if (!interleaved)
|
||||
paStreamParameters_.sampleFormat |= paNonInterleaved;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setSuggestedLatency(PaTime latency)
|
||||
{
|
||||
paStreamParameters_.suggestedLatency = latency;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setHostApiSpecificStreamInfo(void *streamInfo)
|
||||
{
|
||||
paStreamParameters_.hostApiSpecificStreamInfo = streamInfo;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters()
|
||||
{
|
||||
if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice)
|
||||
return &paStreamParameters_;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters() const
|
||||
{
|
||||
if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice)
|
||||
return &paStreamParameters_;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Device &DirectionSpecificStreamParameters::device() const
|
||||
{
|
||||
return System::instance().deviceByIndex(paStreamParameters_.device);
|
||||
}
|
||||
|
||||
int DirectionSpecificStreamParameters::numChannels() const
|
||||
{
|
||||
return paStreamParameters_.channelCount;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the (non host api-specific) sample format, without including
|
||||
/// the paNonInterleaved flag. If the sample format is host api-spefific,
|
||||
/// INVALID_FORMAT (0) will be returned.
|
||||
//////
|
||||
SampleDataFormat DirectionSpecificStreamParameters::sampleFormat() const
|
||||
{
|
||||
if (isSampleFormatHostApiSpecific())
|
||||
return INVALID_FORMAT;
|
||||
else
|
||||
return static_cast<SampleDataFormat>(paStreamParameters_.sampleFormat & ~paNonInterleaved);
|
||||
}
|
||||
|
||||
bool DirectionSpecificStreamParameters::isSampleFormatInterleaved() const
|
||||
{
|
||||
return ((paStreamParameters_.sampleFormat & paNonInterleaved) == 0);
|
||||
}
|
||||
|
||||
bool DirectionSpecificStreamParameters::isSampleFormatHostApiSpecific() const
|
||||
{
|
||||
return ((paStreamParameters_.sampleFormat & paCustomFormat) == 0);
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the host api-specific sample format, without including any
|
||||
/// paCustomFormat or paNonInterleaved flags. Will return 0 if the sample format is
|
||||
/// not host api-specific.
|
||||
//////
|
||||
PaSampleFormat DirectionSpecificStreamParameters::hostApiSpecificSampleFormat() const
|
||||
{
|
||||
if (isSampleFormatHostApiSpecific())
|
||||
return paStreamParameters_.sampleFormat & ~paCustomFormat & ~paNonInterleaved;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
PaTime DirectionSpecificStreamParameters::suggestedLatency() const
|
||||
{
|
||||
return paStreamParameters_.suggestedLatency;
|
||||
}
|
||||
|
||||
void *DirectionSpecificStreamParameters::hostApiSpecificStreamInfo() const
|
||||
{
|
||||
return paStreamParameters_.hostApiSpecificStreamInfo;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
#include "portaudiocpp/DirectionSpecificStreamParameters.hxx"
|
||||
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Returns a `nil' DirectionSpecificStreamParameters object. This can be used to
|
||||
/// specify that one direction of a Stream is not required (i.e. when creating
|
||||
/// a half-duplex Stream). All fields of the null DirectionSpecificStreamParameters
|
||||
/// object are invalid except for the device and the number of channel, which are set
|
||||
/// to paNoDevice and 0 respectively.
|
||||
//////
|
||||
DirectionSpecificStreamParameters DirectionSpecificStreamParameters::null()
|
||||
{
|
||||
DirectionSpecificStreamParameters tmp;
|
||||
tmp.paStreamParameters_.device = paNoDevice;
|
||||
tmp.paStreamParameters_.channelCount = 0;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Default constructor -- all parameters will be uninitialized.
|
||||
//////
|
||||
DirectionSpecificStreamParameters::DirectionSpecificStreamParameters()
|
||||
{
|
||||
}
|
||||
|
||||
//////
|
||||
/// Constructor which sets all required fields.
|
||||
//////
|
||||
DirectionSpecificStreamParameters::DirectionSpecificStreamParameters(const Device &device, int numChannels,
|
||||
SampleDataFormat format, bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo)
|
||||
{
|
||||
setDevice(device);
|
||||
setNumChannels(numChannels);
|
||||
setSampleFormat(format, interleaved);
|
||||
setSuggestedLatency(suggestedLatency);
|
||||
setHostApiSpecificStreamInfo(hostApiSpecificStreamInfo);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
void DirectionSpecificStreamParameters::setDevice(const Device &device)
|
||||
{
|
||||
paStreamParameters_.device = device.index();
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setNumChannels(int numChannels)
|
||||
{
|
||||
paStreamParameters_.channelCount = numChannels;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setSampleFormat(SampleDataFormat format, bool interleaved)
|
||||
{
|
||||
paStreamParameters_.sampleFormat = static_cast<PaSampleFormat>(format);
|
||||
|
||||
if (!interleaved)
|
||||
paStreamParameters_.sampleFormat |= paNonInterleaved;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved)
|
||||
{
|
||||
paStreamParameters_.sampleFormat = format;
|
||||
|
||||
paStreamParameters_.sampleFormat |= paCustomFormat;
|
||||
|
||||
if (!interleaved)
|
||||
paStreamParameters_.sampleFormat |= paNonInterleaved;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setSuggestedLatency(PaTime latency)
|
||||
{
|
||||
paStreamParameters_.suggestedLatency = latency;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setHostApiSpecificStreamInfo(void *streamInfo)
|
||||
{
|
||||
paStreamParameters_.hostApiSpecificStreamInfo = streamInfo;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters()
|
||||
{
|
||||
if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice)
|
||||
return &paStreamParameters_;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters() const
|
||||
{
|
||||
if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice)
|
||||
return &paStreamParameters_;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Device &DirectionSpecificStreamParameters::device() const
|
||||
{
|
||||
return System::instance().deviceByIndex(paStreamParameters_.device);
|
||||
}
|
||||
|
||||
int DirectionSpecificStreamParameters::numChannels() const
|
||||
{
|
||||
return paStreamParameters_.channelCount;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the (non host api-specific) sample format, without including
|
||||
/// the paNonInterleaved flag. If the sample format is host api-spefific,
|
||||
/// INVALID_FORMAT (0) will be returned.
|
||||
//////
|
||||
SampleDataFormat DirectionSpecificStreamParameters::sampleFormat() const
|
||||
{
|
||||
if (isSampleFormatHostApiSpecific())
|
||||
return INVALID_FORMAT;
|
||||
else
|
||||
return static_cast<SampleDataFormat>(paStreamParameters_.sampleFormat & ~paNonInterleaved);
|
||||
}
|
||||
|
||||
bool DirectionSpecificStreamParameters::isSampleFormatInterleaved() const
|
||||
{
|
||||
return ((paStreamParameters_.sampleFormat & paNonInterleaved) == 0);
|
||||
}
|
||||
|
||||
bool DirectionSpecificStreamParameters::isSampleFormatHostApiSpecific() const
|
||||
{
|
||||
return ((paStreamParameters_.sampleFormat & paCustomFormat) == 0);
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the host api-specific sample format, without including any
|
||||
/// paCustomFormat or paNonInterleaved flags. Will return 0 if the sample format is
|
||||
/// not host api-specific.
|
||||
//////
|
||||
PaSampleFormat DirectionSpecificStreamParameters::hostApiSpecificSampleFormat() const
|
||||
{
|
||||
if (isSampleFormatHostApiSpecific())
|
||||
return paStreamParameters_.sampleFormat & ~paCustomFormat & ~paNonInterleaved;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
PaTime DirectionSpecificStreamParameters::suggestedLatency() const
|
||||
{
|
||||
return paStreamParameters_.suggestedLatency;
|
||||
}
|
||||
|
||||
void *DirectionSpecificStreamParameters::hostApiSpecificStreamInfo() const
|
||||
{
|
||||
return paStreamParameters_.hostApiSpecificStreamInfo;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
Reference in New Issue
Block a user