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