To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at https://github.com/sonic-visualiser/sv-dependency-builds .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / src / portaudio_20161030_catalina_patch / bindings / cpp / include / portaudiocpp / Device.hxx @ 162:d43aab368df9

History | View | Annotate | Download (2.65 KB)

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) const;
64
		bool operator!=(const Device &rhs) const;
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