107 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			107 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								#ifndef INCLUDED_PORTAUDIO_SYSTEM_HXX
							 | 
						||
| 
								 | 
							
								#define INCLUDED_PORTAUDIO_SYSTEM_HXX
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// ---------------------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "portaudio.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// ---------------------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Forward declaration(s):
							 | 
						||
| 
								 | 
							
								namespace portaudio
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    class Device;
							 | 
						||
| 
								 | 
							
								    class Stream;
							 | 
						||
| 
								 | 
							
								    class HostApi;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// ---------------------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Declaration(s):
							 | 
						||
| 
								 | 
							
								namespace portaudio
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //////
							 | 
						||
| 
								 | 
							
								    /// @brief System singleton which represents the PortAudio system.
							 | 
						||
| 
								 | 
							
								    ///
							 | 
						||
| 
								 | 
							
								    /// The System is used to initialize/terminate PortAudio and provide
							 | 
						||
| 
								 | 
							
								    /// a single access point to the PortAudio System (instance()).
							 | 
						||
| 
								 | 
							
								    /// It can be used to iterate through all HostApi 's in the System as
							 | 
						||
| 
								 | 
							
								    /// well as all devices in the System. It also provides some utility
							 | 
						||
| 
								 | 
							
								    /// functionality of PortAudio.
							 | 
						||
| 
								 | 
							
								    ///
							 | 
						||
| 
								 | 
							
								    /// Terminating the System will also abort and close the open streams.
							 | 
						||
| 
								 | 
							
								    /// The Stream objects will need to be deallocated by the client though
							 | 
						||
| 
								 | 
							
								    /// (it's usually a good idea to have them cleaned up automatically).
							 | 
						||
| 
								 | 
							
								    //////
							 | 
						||
| 
								 | 
							
								    class System
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								    public:
							 | 
						||
| 
								 | 
							
								        class HostApiIterator; // forward declaration
							 | 
						||
| 
								 | 
							
								        class DeviceIterator; // forward declaration
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // -------------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        static int version();
							 | 
						||
| 
								 | 
							
								        static const char *versionText();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        static void initialize();
							 | 
						||
| 
								 | 
							
								        static void terminate();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        static System &instance();
							 | 
						||
| 
								 | 
							
								        static bool exists();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // -------------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // host apis:
							 | 
						||
| 
								 | 
							
								        HostApiIterator hostApisBegin();
							 | 
						||
| 
								 | 
							
								        HostApiIterator hostApisEnd();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        HostApi &defaultHostApi();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        HostApi &hostApiByTypeId(PaHostApiTypeId type);
							 | 
						||
| 
								 | 
							
								        HostApi &hostApiByIndex(PaHostApiIndex index);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        int hostApiCount();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // -------------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // devices:
							 | 
						||
| 
								 | 
							
								        DeviceIterator devicesBegin();
							 | 
						||
| 
								 | 
							
								        DeviceIterator devicesEnd();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Device &defaultInputDevice();
							 | 
						||
| 
								 | 
							
								        Device &defaultOutputDevice();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Device &deviceByIndex(PaDeviceIndex index);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        int deviceCount();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        static Device &nullDevice();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // -------------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // misc:
							 | 
						||
| 
								 | 
							
								        void sleep(long msec);
							 | 
						||
| 
								 | 
							
								        int sizeOfSample(PaSampleFormat format);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    private:
							 | 
						||
| 
								 | 
							
								        System();
							 | 
						||
| 
								 | 
							
								        ~System();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        static System *instance_;
							 | 
						||
| 
								 | 
							
								        static int initCount_;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        static HostApi **hostApis_;
							 | 
						||
| 
								 | 
							
								        static Device **devices_;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        static Device *nullDevice_;
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								} // namespace portaudio
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif // INCLUDED_PORTAUDIO_SYSTEM_HXX
							 |