annotate src/portaudio_20161030/bindings/cpp/source/portaudiocpp/Device.cxx @ 81:7029a4916348

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