annotate src/portaudio_20161030/bindings/cpp/source/portaudiocpp/Device.cxx @ 169:223a55898ab9 tip default

Add null config files
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 02 Mar 2020 14:03:47 +0000
parents 59a8758c56b1
children
rev   line source
cannam@140 1 #include "portaudiocpp/Device.hxx"
cannam@140 2
cannam@140 3 #include <cstddef>
cannam@140 4
cannam@140 5 #include "portaudiocpp/HostApi.hxx"
cannam@140 6 #include "portaudiocpp/System.hxx"
cannam@140 7 #include "portaudiocpp/Exception.hxx"
cannam@140 8
cannam@140 9 namespace portaudio
cannam@140 10 {
cannam@140 11
cannam@140 12 // -------------------------------------------------------------------------------
cannam@140 13
cannam@140 14 Device::Device(PaDeviceIndex index) : index_(index)
cannam@140 15 {
cannam@140 16 if (index == paNoDevice)
cannam@140 17 info_ = NULL;
cannam@140 18 else
cannam@140 19 info_ = Pa_GetDeviceInfo(index);
cannam@140 20 }
cannam@140 21
cannam@140 22 Device::~Device()
cannam@140 23 {
cannam@140 24 }
cannam@140 25
cannam@140 26 PaDeviceIndex Device::index() const
cannam@140 27 {
cannam@140 28 return index_;
cannam@140 29 }
cannam@140 30
cannam@140 31 const char *Device::name() const
cannam@140 32 {
cannam@140 33 if (info_ == NULL)
cannam@140 34 return "";
cannam@140 35
cannam@140 36 return info_->name;
cannam@140 37 }
cannam@140 38
cannam@140 39 int Device::maxInputChannels() const
cannam@140 40 {
cannam@140 41 if (info_ == NULL)
cannam@140 42 return 0;
cannam@140 43
cannam@140 44 return info_->maxInputChannels;
cannam@140 45 }
cannam@140 46
cannam@140 47 int Device::maxOutputChannels() const
cannam@140 48 {
cannam@140 49 if (info_ == NULL)
cannam@140 50 return 0;
cannam@140 51
cannam@140 52 return info_->maxOutputChannels;
cannam@140 53 }
cannam@140 54
cannam@140 55 PaTime Device::defaultLowInputLatency() const
cannam@140 56 {
cannam@140 57 if (info_ == NULL)
cannam@140 58 return static_cast<PaTime>(0.0);
cannam@140 59
cannam@140 60 return info_->defaultLowInputLatency;
cannam@140 61 }
cannam@140 62
cannam@140 63 PaTime Device::defaultHighInputLatency() const
cannam@140 64 {
cannam@140 65 if (info_ == NULL)
cannam@140 66 return static_cast<PaTime>(0.0);
cannam@140 67
cannam@140 68 return info_->defaultHighInputLatency;
cannam@140 69 }
cannam@140 70
cannam@140 71 PaTime Device::defaultLowOutputLatency() const
cannam@140 72 {
cannam@140 73 if (info_ == NULL)
cannam@140 74 return static_cast<PaTime>(0.0);
cannam@140 75
cannam@140 76 return info_->defaultLowOutputLatency;
cannam@140 77 }
cannam@140 78
cannam@140 79 PaTime Device::defaultHighOutputLatency() const
cannam@140 80 {
cannam@140 81 if (info_ == NULL)
cannam@140 82 return static_cast<PaTime>(0.0);
cannam@140 83
cannam@140 84 return info_->defaultHighOutputLatency;
cannam@140 85 }
cannam@140 86
cannam@140 87 double Device::defaultSampleRate() const
cannam@140 88 {
cannam@140 89 if (info_ == NULL)
cannam@140 90 return 0.0;
cannam@140 91
cannam@140 92 return info_->defaultSampleRate;
cannam@140 93 }
cannam@140 94
cannam@140 95 // -------------------------------------------------------------------------------
cannam@140 96
cannam@140 97 bool Device::isInputOnlyDevice() const
cannam@140 98 {
cannam@140 99 return (maxOutputChannels() == 0);
cannam@140 100 }
cannam@140 101
cannam@140 102 bool Device::isOutputOnlyDevice() const
cannam@140 103 {
cannam@140 104 return (maxInputChannels() == 0);
cannam@140 105 }
cannam@140 106
cannam@140 107 bool Device::isFullDuplexDevice() const
cannam@140 108 {
cannam@140 109 return (maxInputChannels() > 0 && maxOutputChannels() > 0);
cannam@140 110 }
cannam@140 111
cannam@140 112 bool Device::isSystemDefaultInputDevice() const
cannam@140 113 {
cannam@140 114 return (System::instance().defaultInputDevice() == *this);
cannam@140 115 }
cannam@140 116
cannam@140 117 bool Device::isSystemDefaultOutputDevice() const
cannam@140 118 {
cannam@140 119 return (System::instance().defaultOutputDevice() == *this);
cannam@140 120 }
cannam@140 121
cannam@140 122 bool Device::isHostApiDefaultInputDevice() const
cannam@140 123 {
cannam@140 124 return (hostApi().defaultInputDevice() == *this);
cannam@140 125 }
cannam@140 126
cannam@140 127 bool Device::isHostApiDefaultOutputDevice() const
cannam@140 128 {
cannam@140 129 return (hostApi().defaultOutputDevice() == *this);
cannam@140 130 }
cannam@140 131
cannam@140 132 // -------------------------------------------------------------------------------
cannam@140 133
cannam@140 134 bool Device::operator==(const Device &rhs) const
cannam@140 135 {
cannam@140 136 return (index_ == rhs.index_);
cannam@140 137 }
cannam@140 138
cannam@140 139 bool Device::operator!=(const Device &rhs) const
cannam@140 140 {
cannam@140 141 return !(*this == rhs);
cannam@140 142 }
cannam@140 143
cannam@140 144 // -------------------------------------------------------------------------------
cannam@140 145
cannam@140 146 HostApi &Device::hostApi()
cannam@140 147 {
cannam@140 148 // NOTE: will cause an exception when called for the null device
cannam@140 149 if (info_ == NULL)
cannam@140 150 throw PaException(paInternalError);
cannam@140 151
cannam@140 152 return System::instance().hostApiByIndex(info_->hostApi);
cannam@140 153 }
cannam@140 154
cannam@140 155 const HostApi &Device::hostApi() const
cannam@140 156 {
cannam@140 157 // NOTE; will cause an exception when called for the null device
cannam@140 158 if (info_ == NULL)
cannam@140 159 throw PaException(paInternalError);
cannam@140 160
cannam@140 161 return System::instance().hostApiByIndex(info_->hostApi);
cannam@140 162 }
cannam@140 163
cannam@140 164 // -------------------------------------------------------------------------------
cannam@140 165
cannam@140 166 } // namespace portaudio
cannam@140 167
cannam@140 168