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