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