mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-30 08:08:39 -05:00
39f88b793d
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/trunk@249 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
84 lines
1.8 KiB
C++
84 lines
1.8 KiB
C++
#include "portaudiocpp/AsioDeviceAdapter.hxx"
|
|
|
|
#include "portaudio.h"
|
|
#include "pa_asio.h"
|
|
|
|
#include "portaudiocpp/Device.hxx"
|
|
#include "portaudiocpp/HostApi.hxx"
|
|
#include "portaudiocpp/Exception.hxx"
|
|
|
|
namespace portaudio
|
|
{
|
|
AsioDeviceAdapter::AsioDeviceAdapter(Device &device)
|
|
{
|
|
if (device.hostApi().typeId() != paASIO)
|
|
throw PaCppException(PaCppException::UNABLE_TO_ADAPT_DEVICE);
|
|
|
|
device_ = &device;
|
|
|
|
PaError err = PaAsio_GetAvailableLatencyValues(device_->index(), &minBufferSize_, &maxBufferSize_,
|
|
&preferredBufferSize_, &granularity_);
|
|
|
|
if (err != paNoError)
|
|
throw PaException(err);
|
|
|
|
}
|
|
|
|
Device &AsioDeviceAdapter::device()
|
|
{
|
|
return *device_;
|
|
}
|
|
|
|
long AsioDeviceAdapter::minBufferSize() const
|
|
{
|
|
return minBufferSize_;
|
|
}
|
|
|
|
long AsioDeviceAdapter::maxBufferSize() const
|
|
{
|
|
return maxBufferSize_;
|
|
}
|
|
|
|
long AsioDeviceAdapter::preferredBufferSize() const
|
|
{
|
|
return preferredBufferSize_;
|
|
}
|
|
|
|
long AsioDeviceAdapter::granularity() const
|
|
{
|
|
return granularity_;
|
|
}
|
|
|
|
void AsioDeviceAdapter::showControlPanel(void *systemSpecific)
|
|
{
|
|
PaError err = PaAsio_ShowControlPanel(device_->index(), systemSpecific);
|
|
|
|
if (err != paNoError)
|
|
throw PaException(err);
|
|
}
|
|
|
|
const char *AsioDeviceAdapter::inputChannelName(int channelIndex) const
|
|
{
|
|
const char *channelName;
|
|
PaError err = PaAsio_GetInputChannelName(device_->index(), channelIndex, &channelName);
|
|
|
|
if (err != paNoError)
|
|
throw PaException(err);
|
|
|
|
return channelName;
|
|
}
|
|
|
|
const char *AsioDeviceAdapter::outputChannelName(int channelIndex) const
|
|
{
|
|
const char *channelName;
|
|
PaError err = PaAsio_GetOutputChannelName(device_->index(), channelIndex, &channelName);
|
|
|
|
if (err != paNoError)
|
|
throw PaException(err);
|
|
|
|
return channelName;
|
|
}
|
|
}
|
|
|
|
|