Chris@4: #include "portaudiocpp/AsioDeviceAdapter.hxx" Chris@4: Chris@4: #include "portaudio.h" Chris@4: #include "pa_asio.h" Chris@4: Chris@4: #include "portaudiocpp/Device.hxx" Chris@4: #include "portaudiocpp/HostApi.hxx" Chris@4: #include "portaudiocpp/Exception.hxx" Chris@4: Chris@4: namespace portaudio Chris@4: { Chris@4: AsioDeviceAdapter::AsioDeviceAdapter(Device &device) Chris@4: { Chris@4: if (device.hostApi().typeId() != paASIO) Chris@4: throw PaCppException(PaCppException::UNABLE_TO_ADAPT_DEVICE); Chris@4: Chris@4: device_ = &device; Chris@4: Chris@4: PaError err = PaAsio_GetAvailableLatencyValues(device_->index(), &minBufferSize_, &maxBufferSize_, Chris@4: &preferredBufferSize_, &granularity_); Chris@4: Chris@4: if (err != paNoError) Chris@4: throw PaException(err); Chris@4: Chris@4: } Chris@4: Chris@4: Device &AsioDeviceAdapter::device() Chris@4: { Chris@4: return *device_; Chris@4: } Chris@4: Chris@4: long AsioDeviceAdapter::minBufferSize() const Chris@4: { Chris@4: return minBufferSize_; Chris@4: } Chris@4: Chris@4: long AsioDeviceAdapter::maxBufferSize() const Chris@4: { Chris@4: return maxBufferSize_; Chris@4: } Chris@4: Chris@4: long AsioDeviceAdapter::preferredBufferSize() const Chris@4: { Chris@4: return preferredBufferSize_; Chris@4: } Chris@4: Chris@4: long AsioDeviceAdapter::granularity() const Chris@4: { Chris@4: return granularity_; Chris@4: } Chris@4: Chris@4: void AsioDeviceAdapter::showControlPanel(void *systemSpecific) Chris@4: { Chris@4: PaError err = PaAsio_ShowControlPanel(device_->index(), systemSpecific); Chris@4: Chris@4: if (err != paNoError) Chris@4: throw PaException(err); Chris@4: } Chris@4: Chris@4: const char *AsioDeviceAdapter::inputChannelName(int channelIndex) const Chris@4: { Chris@4: const char *channelName; Chris@4: PaError err = PaAsio_GetInputChannelName(device_->index(), channelIndex, &channelName); Chris@4: Chris@4: if (err != paNoError) Chris@4: throw PaException(err); Chris@4: Chris@4: return channelName; Chris@4: } Chris@4: Chris@4: const char *AsioDeviceAdapter::outputChannelName(int channelIndex) const Chris@4: { Chris@4: const char *channelName; Chris@4: PaError err = PaAsio_GetOutputChannelName(device_->index(), channelIndex, &channelName); Chris@4: Chris@4: if (err != paNoError) Chris@4: throw PaException(err); Chris@4: Chris@4: return channelName; Chris@4: } Chris@4: } Chris@4: Chris@4: