annotate src/portaudio_20140130/bindings/cpp/include/portaudiocpp/Device.hxx @ 169:223a55898ab9 tip default

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