annotate src/portaudio_20140130/bindings/cpp/source/portaudiocpp/Device.cxx @ 39:7ddb4fc30dac

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