Mercurial > hg > sv-dependency-builds
comparison src/portaudio/bindings/cpp/include/portaudiocpp/Device.hxx @ 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 #ifndef INCLUDED_PORTAUDIO_DEVICE_HXX | |
2 #define INCLUDED_PORTAUDIO_DEVICE_HXX | |
3 | |
4 // --------------------------------------------------------------------------------------- | |
5 | |
6 #include <iterator> | |
7 | |
8 #include "portaudio.h" | |
9 | |
10 #include "portaudiocpp/SampleDataFormat.hxx" | |
11 | |
12 // --------------------------------------------------------------------------------------- | |
13 | |
14 // Forward declaration(s): | |
15 namespace portaudio | |
16 { | |
17 class System; | |
18 class HostApi; | |
19 } | |
20 | |
21 // --------------------------------------------------------------------------------------- | |
22 | |
23 // Declaration(s): | |
24 namespace portaudio | |
25 { | |
26 | |
27 ////// | |
28 /// @brief Class which represents a PortAudio device in the System. | |
29 /// | |
30 /// A single physical device in the system may have multiple PortAudio | |
31 /// Device representations using different HostApi 's though. A Device | |
32 /// can be half-duplex or full-duplex. A half-duplex Device can be used | |
33 /// to create a half-duplex Stream. A full-duplex Device can be used to | |
34 /// create a full-duplex Stream. If supported by the HostApi, two | |
35 /// half-duplex Devices can even be used to create a full-duplex Stream. | |
36 /// | |
37 /// Note that Device objects are very light-weight and can be passed around | |
38 /// by-value. | |
39 ////// | |
40 class Device | |
41 { | |
42 public: | |
43 // query info: name, max in channels, max out channels, | |
44 // default low/hight input/output latency, default sample rate | |
45 PaDeviceIndex index() const; | |
46 const char *name() const; | |
47 int maxInputChannels() const; | |
48 int maxOutputChannels() const; | |
49 PaTime defaultLowInputLatency() const; | |
50 PaTime defaultHighInputLatency() const; | |
51 PaTime defaultLowOutputLatency() const; | |
52 PaTime defaultHighOutputLatency() const; | |
53 double defaultSampleRate() const; | |
54 | |
55 bool isInputOnlyDevice() const; // extended | |
56 bool isOutputOnlyDevice() const; // extended | |
57 bool isFullDuplexDevice() const; // extended | |
58 bool isSystemDefaultInputDevice() const; // extended | |
59 bool isSystemDefaultOutputDevice() const; // extended | |
60 bool isHostApiDefaultInputDevice() const; // extended | |
61 bool isHostApiDefaultOutputDevice() const; // extended | |
62 | |
63 bool operator==(const Device &rhs); | |
64 bool operator!=(const Device &rhs); | |
65 | |
66 // host api reference | |
67 HostApi &hostApi(); | |
68 const HostApi &hostApi() const; | |
69 | |
70 private: | |
71 PaDeviceIndex index_; | |
72 const PaDeviceInfo *info_; | |
73 | |
74 private: | |
75 friend class System; | |
76 | |
77 explicit Device(PaDeviceIndex index); | |
78 ~Device(); | |
79 | |
80 Device(const Device &); // non-copyable | |
81 Device &operator=(const Device &); // non-copyable | |
82 }; | |
83 | |
84 // ----------------------------------------------------------------------------------- | |
85 | |
86 } // namespace portaudio | |
87 | |
88 // --------------------------------------------------------------------------------------- | |
89 | |
90 #endif // INCLUDED_PORTAUDIO_DEVICE_HXX | |
91 |