annotate src/portaudio_20161030/bindings/cpp/include/portaudiocpp/Device.hxx @ 81:7029a4916348

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