annotate src/portaudio/bindings/cpp/source/portaudiocpp/Device.cxx @ 19:891f60ab2af1

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