Chris@39: #ifndef INCLUDED_PORTAUDIO_SINGLEDIRECTIONSTREAMPARAMETERS_HXX Chris@39: #define INCLUDED_PORTAUDIO_SINGLEDIRECTIONSTREAMPARAMETERS_HXX Chris@39: Chris@39: // --------------------------------------------------------------------------------------- Chris@39: Chris@39: #include Chris@39: Chris@39: #include "portaudio.h" Chris@39: Chris@39: #include "portaudiocpp/System.hxx" Chris@39: #include "portaudiocpp/SampleDataFormat.hxx" Chris@39: Chris@39: // --------------------------------------------------------------------------------------- Chris@39: Chris@39: // Forward declaration(s): Chris@39: namespace portaudio Chris@39: { Chris@39: class Device; Chris@39: } Chris@39: Chris@39: // --------------------------------------------------------------------------------------- Chris@39: Chris@39: // Declaration(s): Chris@39: namespace portaudio Chris@39: { Chris@39: Chris@39: ////// Chris@39: /// @brief All parameters for one direction (either in or out) of a Stream. Together with Chris@39: /// parameters common to both directions, two DirectionSpecificStreamParameters can make up Chris@39: /// a StreamParameters object which contains all parameters for a Stream. Chris@39: ////// Chris@39: class DirectionSpecificStreamParameters Chris@39: { Chris@39: public: Chris@39: static DirectionSpecificStreamParameters null(); Chris@39: Chris@39: DirectionSpecificStreamParameters(); Chris@39: DirectionSpecificStreamParameters(const Device &device, int numChannels, SampleDataFormat format, Chris@39: bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo); Chris@39: Chris@39: // Set up methods: Chris@39: void setDevice(const Device &device); Chris@39: void setNumChannels(int numChannels); Chris@39: Chris@39: void setSampleFormat(SampleDataFormat format, bool interleaved = true); Chris@39: void setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved = true); Chris@39: Chris@39: void setSuggestedLatency(PaTime latency); Chris@39: Chris@39: void setHostApiSpecificStreamInfo(void *streamInfo); Chris@39: Chris@39: // Accessor methods: Chris@39: PaStreamParameters *paStreamParameters(); Chris@39: const PaStreamParameters *paStreamParameters() const; Chris@39: Chris@39: Device &device() const; Chris@39: int numChannels() const; Chris@39: Chris@39: SampleDataFormat sampleFormat() const; Chris@39: bool isSampleFormatInterleaved() const; Chris@39: bool isSampleFormatHostApiSpecific() const; Chris@39: PaSampleFormat hostApiSpecificSampleFormat() const; Chris@39: Chris@39: PaTime suggestedLatency() const; Chris@39: Chris@39: void *hostApiSpecificStreamInfo() const; Chris@39: Chris@39: private: Chris@39: PaStreamParameters paStreamParameters_; Chris@39: }; Chris@39: Chris@39: Chris@39: } // namespace portaudio Chris@39: Chris@39: // --------------------------------------------------------------------------------------- Chris@39: Chris@39: #endif // INCLUDED_PORTAUDIO_SINGLEDIRECTIONSTREAMPARAMETERS_HXX