annotate src/portaudio/bindings/cpp/source/portaudiocpp/Device.cxx @ 107:71c914cf6201

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