Mercurial > hg > sv-dependency-builds
annotate src/portaudio_20161030/bindings/cpp/source/portaudiocpp/AsioDeviceAdapter.cxx @ 140:59a8758c56b1
Add source for PortAudio stable v190600_20161030
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Tue, 03 Jan 2017 13:44:07 +0000 |
parents | |
children |
rev | line source |
---|---|
cannam@140 | 1 #include "portaudiocpp/AsioDeviceAdapter.hxx" |
cannam@140 | 2 |
cannam@140 | 3 #include "portaudio.h" |
cannam@140 | 4 #include "pa_asio.h" |
cannam@140 | 5 |
cannam@140 | 6 #include "portaudiocpp/Device.hxx" |
cannam@140 | 7 #include "portaudiocpp/HostApi.hxx" |
cannam@140 | 8 #include "portaudiocpp/Exception.hxx" |
cannam@140 | 9 |
cannam@140 | 10 namespace portaudio |
cannam@140 | 11 { |
cannam@140 | 12 AsioDeviceAdapter::AsioDeviceAdapter(Device &device) |
cannam@140 | 13 { |
cannam@140 | 14 if (device.hostApi().typeId() != paASIO) |
cannam@140 | 15 throw PaCppException(PaCppException::UNABLE_TO_ADAPT_DEVICE); |
cannam@140 | 16 |
cannam@140 | 17 device_ = &device; |
cannam@140 | 18 |
cannam@140 | 19 PaError err = PaAsio_GetAvailableLatencyValues(device_->index(), &minBufferSize_, &maxBufferSize_, |
cannam@140 | 20 &preferredBufferSize_, &granularity_); |
cannam@140 | 21 |
cannam@140 | 22 if (err != paNoError) |
cannam@140 | 23 throw PaException(err); |
cannam@140 | 24 |
cannam@140 | 25 } |
cannam@140 | 26 |
cannam@140 | 27 Device &AsioDeviceAdapter::device() |
cannam@140 | 28 { |
cannam@140 | 29 return *device_; |
cannam@140 | 30 } |
cannam@140 | 31 |
cannam@140 | 32 long AsioDeviceAdapter::minBufferSize() const |
cannam@140 | 33 { |
cannam@140 | 34 return minBufferSize_; |
cannam@140 | 35 } |
cannam@140 | 36 |
cannam@140 | 37 long AsioDeviceAdapter::maxBufferSize() const |
cannam@140 | 38 { |
cannam@140 | 39 return maxBufferSize_; |
cannam@140 | 40 } |
cannam@140 | 41 |
cannam@140 | 42 long AsioDeviceAdapter::preferredBufferSize() const |
cannam@140 | 43 { |
cannam@140 | 44 return preferredBufferSize_; |
cannam@140 | 45 } |
cannam@140 | 46 |
cannam@140 | 47 long AsioDeviceAdapter::granularity() const |
cannam@140 | 48 { |
cannam@140 | 49 return granularity_; |
cannam@140 | 50 } |
cannam@140 | 51 |
cannam@140 | 52 void AsioDeviceAdapter::showControlPanel(void *systemSpecific) |
cannam@140 | 53 { |
cannam@140 | 54 PaError err = PaAsio_ShowControlPanel(device_->index(), systemSpecific); |
cannam@140 | 55 |
cannam@140 | 56 if (err != paNoError) |
cannam@140 | 57 throw PaException(err); |
cannam@140 | 58 } |
cannam@140 | 59 |
cannam@140 | 60 const char *AsioDeviceAdapter::inputChannelName(int channelIndex) const |
cannam@140 | 61 { |
cannam@140 | 62 const char *channelName; |
cannam@140 | 63 PaError err = PaAsio_GetInputChannelName(device_->index(), channelIndex, &channelName); |
cannam@140 | 64 |
cannam@140 | 65 if (err != paNoError) |
cannam@140 | 66 throw PaException(err); |
cannam@140 | 67 |
cannam@140 | 68 return channelName; |
cannam@140 | 69 } |
cannam@140 | 70 |
cannam@140 | 71 const char *AsioDeviceAdapter::outputChannelName(int channelIndex) const |
cannam@140 | 72 { |
cannam@140 | 73 const char *channelName; |
cannam@140 | 74 PaError err = PaAsio_GetOutputChannelName(device_->index(), channelIndex, &channelName); |
cannam@140 | 75 |
cannam@140 | 76 if (err != paNoError) |
cannam@140 | 77 throw PaException(err); |
cannam@140 | 78 |
cannam@140 | 79 return channelName; |
cannam@140 | 80 } |
cannam@140 | 81 } |
cannam@140 | 82 |
cannam@140 | 83 |