comparison src/portaudio/bindings/cpp/source/portaudiocpp/Device.cxx @ 4:e13257ea84a4

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