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