mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-14 15:48:21 +02:00
Ensures that all files that Git considers to be text will have normalized (LF) line endings in the repository. When core.eol is set to native (which is the default), Git will convert the line endings of normalized files in your working directory back to your platform's native line ending. See also https://git-scm.com/docs/gitattributes
83 lines
2.1 KiB
C++
83 lines
2.1 KiB
C++
#ifndef INCLUDED_PORTAUDIO_STREAM_HXX
|
|
#define INCLUDED_PORTAUDIO_STREAM_HXX
|
|
|
|
#include "portaudio.h"
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
// Forward declaration(s):
|
|
namespace portaudio
|
|
{
|
|
class StreamParameters;
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
// Declaration(s):
|
|
namespace portaudio
|
|
{
|
|
|
|
|
|
//////
|
|
/// @brief A Stream represents an active or inactive input and/or output data
|
|
/// stream in the System.
|
|
///
|
|
/// Concrete Stream classes should ensure themselves being in a closed state at
|
|
/// destruction (i.e. by calling their own close() method in their deconstructor).
|
|
/// Following good C++ programming practices, care must be taken to ensure no
|
|
/// exceptions are thrown by the deconstructor of these classes. As a consequence,
|
|
/// clients need to explicitly call close() to ensure the stream closed successfully.
|
|
///
|
|
/// The Stream object can be used to manipulate the Stream's state. Also, time-constant
|
|
/// and time-varying information about the Stream can be retreived.
|
|
//////
|
|
class Stream
|
|
{
|
|
public:
|
|
// Opening/closing:
|
|
virtual ~Stream();
|
|
|
|
virtual void close();
|
|
bool isOpen() const;
|
|
|
|
// Additional set up:
|
|
void setStreamFinishedCallback(PaStreamFinishedCallback *callback);
|
|
|
|
// State management:
|
|
void start();
|
|
void stop();
|
|
void abort();
|
|
|
|
bool isStopped() const;
|
|
bool isActive() const;
|
|
|
|
// Stream info (time-constant, but might become time-variant soon):
|
|
PaTime inputLatency() const;
|
|
PaTime outputLatency() const;
|
|
double sampleRate() const;
|
|
|
|
// Stream info (time-varying):
|
|
PaTime time() const;
|
|
|
|
// Accessors for PortAudio PaStream, useful for interfacing
|
|
// with PortAudio add-ons (such as PortMixer) for instance:
|
|
const PaStream *paStream() const;
|
|
PaStream *paStream();
|
|
|
|
protected:
|
|
Stream(); // abstract class
|
|
|
|
PaStream *stream_;
|
|
|
|
private:
|
|
Stream(const Stream &); // non-copyable
|
|
Stream &operator=(const Stream &); // non-copyable
|
|
};
|
|
|
|
|
|
} // namespace portaudio
|
|
|
|
|
|
#endif // INCLUDED_PORTAUDIO_STREAM_HXX
|
|
|