78 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | #ifndef INCLUDED_PORTAUDIO_STREAMPARAMETERS_HXX
 | ||
|  | #define INCLUDED_PORTAUDIO_STREAMPARAMETERS_HXX
 | ||
|  | 
 | ||
|  | // ---------------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | #include "portaudio.h"
 | ||
|  | 
 | ||
|  | #include "portaudiocpp/DirectionSpecificStreamParameters.hxx"
 | ||
|  | 
 | ||
|  | // ---------------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | // Declaration(s):
 | ||
|  | namespace portaudio | ||
|  | { | ||
|  | 
 | ||
|  |     //////
 | ||
|  |     /// @brief The entire set of parameters needed to configure and open
 | ||
|  |     /// a Stream.
 | ||
|  |     ///
 | ||
|  |     /// It contains parameters of input, output and shared parameters.
 | ||
|  |     /// Using the isSupported() method, the StreamParameters can be
 | ||
|  |     /// checked if opening a Stream using this StreamParameters would
 | ||
|  |     /// succeed or not. Accessors are provided to higher-level parameters
 | ||
|  |     /// aswell as the lower-level parameters which are mainly intended for
 | ||
|  |     /// internal use.
 | ||
|  |     //////
 | ||
|  |     class StreamParameters | ||
|  |     { | ||
|  |     public: | ||
|  |         StreamParameters(); | ||
|  |         StreamParameters(const DirectionSpecificStreamParameters &inputParameters, | ||
|  |             const DirectionSpecificStreamParameters &outputParameters, double sampleRate, | ||
|  |             unsigned long framesPerBuffer, PaStreamFlags flags); | ||
|  | 
 | ||
|  |         // Set up for direction-specific:
 | ||
|  |         void setInputParameters(const DirectionSpecificStreamParameters ¶meters); | ||
|  |         void setOutputParameters(const DirectionSpecificStreamParameters ¶meters); | ||
|  | 
 | ||
|  |         // Set up for common parameters:
 | ||
|  |         void setSampleRate(double sampleRate); | ||
|  |         void setFramesPerBuffer(unsigned long framesPerBuffer); | ||
|  |         void setFlag(PaStreamFlags flag); | ||
|  |         void unsetFlag(PaStreamFlags flag); | ||
|  |         void clearFlags(); | ||
|  | 
 | ||
|  |         // Validation:
 | ||
|  |         bool isSupported() const; | ||
|  | 
 | ||
|  |         // Accessors (direction-specific):
 | ||
|  |         DirectionSpecificStreamParameters &inputParameters(); | ||
|  |         const DirectionSpecificStreamParameters &inputParameters() const; | ||
|  |         DirectionSpecificStreamParameters &outputParameters(); | ||
|  |         const DirectionSpecificStreamParameters &outputParameters() const; | ||
|  | 
 | ||
|  |         // Accessors (common):
 | ||
|  |         double sampleRate() const; | ||
|  |         unsigned long framesPerBuffer() const; | ||
|  |         PaStreamFlags flags() const; | ||
|  |         bool isFlagSet(PaStreamFlags flag) const; | ||
|  | 
 | ||
|  |     private: | ||
|  |         // Half-duplex specific parameters:
 | ||
|  |         DirectionSpecificStreamParameters inputParameters_; | ||
|  |         DirectionSpecificStreamParameters outputParameters_; | ||
|  | 
 | ||
|  |         // Common parameters:
 | ||
|  |         double sampleRate_; | ||
|  |         unsigned long framesPerBuffer_; | ||
|  |         PaStreamFlags flags_; | ||
|  |     }; | ||
|  | 
 | ||
|  | 
 | ||
|  | } // namespace portaudio
 | ||
|  | 
 | ||
|  | // ---------------------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | #endif // INCLUDED_PORTAUDIO_STREAMPARAMETERS_HXX
 |