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