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