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