projects
/
rtaudio-cdist.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
More detailed error message.
[rtaudio-cdist.git]
/
RtAudio.h
diff --git
a/RtAudio.h
b/RtAudio.h
index 449e0d7dcc9323b47b955ebc7c23a8b2187f4c45..39d0e12576923e8f6172744c9245ff9516408063 100644
(file)
--- a/
RtAudio.h
+++ b/
RtAudio.h
@@
-48,7
+48,11
@@
#define RTAUDIO_VERSION "5.0.0"
#if defined _WIN32 || defined __CYGWIN__
#define RTAUDIO_VERSION "5.0.0"
#if defined _WIN32 || defined __CYGWIN__
- #define RTAUDIO_DLL_PUBLIC
+ #if defined(RTAUDIO_EXPORT)
+ #define RTAUDIO_DLL_PUBLIC __declspec(dllexport)
+ #else
+ #define RTAUDIO_DLL_PUBLIC
+ #endif
#else
#if __GNUC__ >= 4
#define RTAUDIO_DLL_PUBLIC __attribute__( (visibility( "default" )) )
#else
#if __GNUC__ >= 4
#define RTAUDIO_DLL_PUBLIC __attribute__( (visibility( "default" )) )
@@
-112,7
+116,7
@@
static const RtAudioFormat RTAUDIO_FLOAT64 = 0x20; // Normalized between plus/mi
Certain audio APIs offer a number of parameters that influence the
I/O latency of a stream. By default, RtAudio will attempt to set
these parameters internally for robust (glitch-free) performance
Certain audio APIs offer a number of parameters that influence the
I/O latency of a stream. By default, RtAudio will attempt to set
these parameters internally for robust (glitch-free) performance
- (though some APIs, like Windows Direct
Sound, make this difficult).
+ (though some APIs, like Windows DirectSound, make this difficult).
By passing the RTAUDIO_MINIMIZE_LATENCY flag to the openStream()
function, internal stream settings will be influenced in an attempt
to minimize stream latency, though possibly at the expense of stream
By passing the RTAUDIO_MINIMIZE_LATENCY flag to the openStream()
function, internal stream settings will be influenced in an attempt
to minimize stream latency, though possibly at the expense of stream
@@
-122,7
+126,7
@@
static const RtAudioFormat RTAUDIO_FLOAT64 = 0x20; // Normalized between plus/mi
open the input and/or output stream device(s) for exclusive use.
Note that this is not possible with all supported audio APIs.
open the input and/or output stream device(s) for exclusive use.
Note that this is not possible with all supported audio APIs.
- If the RTAUDIO_SCHEDULE_REALTIME flag is set, RtAudio will attempt
+ If the RTAUDIO_SCHEDULE_REALTIME flag is set, RtAudio will attempt
to select realtime scheduling (round-robin) for the callback thread.
If the RTAUDIO_ALSA_USE_DEFAULT flag is set, RtAudio will attempt to
to select realtime scheduling (round-robin) for the callback thread.
If the RTAUDIO_ALSA_USE_DEFAULT flag is set, RtAudio will attempt to
@@
-284,8
+288,9
@@
class RTAUDIO_DLL_PUBLIC RtAudio
MACOSX_CORE, /*!< Macintosh OS-X Core Audio API. */
WINDOWS_WASAPI, /*!< The Microsoft WASAPI API. */
WINDOWS_ASIO, /*!< The Steinberg Audio Stream I/O API. */
MACOSX_CORE, /*!< Macintosh OS-X Core Audio API. */
WINDOWS_WASAPI, /*!< The Microsoft WASAPI API. */
WINDOWS_ASIO, /*!< The Steinberg Audio Stream I/O API. */
- WINDOWS_DS, /*!< The Microsoft Direct Sound API. */
- RTAUDIO_DUMMY /*!< A compilable but non-functional API. */
+ WINDOWS_DS, /*!< The Microsoft DirectSound API. */
+ RTAUDIO_DUMMY, /*!< A compilable but non-functional API. */
+ NUM_APIS /*!< Number of values in this enum. */
};
//! The public device information structure for returning queried values.
};
//! The public device information structure for returning queried values.
@@
-298,7
+303,7
@@
class RTAUDIO_DLL_PUBLIC RtAudio
bool isDefaultOutput; /*!< true if this is the default output device. */
bool isDefaultInput; /*!< true if this is the default input device. */
std::vector<unsigned int> sampleRates; /*!< Supported sample rates (queried from list of standard rates). */
bool isDefaultOutput; /*!< true if this is the default output device. */
bool isDefaultInput; /*!< true if this is the default input device. */
std::vector<unsigned int> sampleRates; /*!< Supported sample rates (queried from list of standard rates). */
- unsigned int preferredSampleRate; /*!< Preferred sample rate, eg. for WASAPI the system sample rate. */
+ unsigned int preferredSampleRate; /*!< Preferred sample rate, e
.
g. for WASAPI the system sample rate. */
RtAudioFormat nativeFormats; /*!< Bit mask of supported data formats. */
// Default constructor.
RtAudioFormat nativeFormats; /*!< Bit mask of supported data formats. */
// Default constructor.
@@
-343,7
+348,7
@@
class RTAUDIO_DLL_PUBLIC RtAudio
Certain audio APIs offer a number of parameters that influence the
I/O latency of a stream. By default, RtAudio will attempt to set
these parameters internally for robust (glitch-free) performance
Certain audio APIs offer a number of parameters that influence the
I/O latency of a stream. By default, RtAudio will attempt to set
these parameters internally for robust (glitch-free) performance
- (though some APIs, like Windows Direct
Sound, make this difficult).
+ (though some APIs, like Windows DirectSound, make this difficult).
By passing the RTAUDIO_MINIMIZE_LATENCY flag to the openStream()
function, internal stream settings will be influenced in an attempt
to minimize stream latency, though possibly at the expense of stream
By passing the RTAUDIO_MINIMIZE_LATENCY flag to the openStream()
function, internal stream settings will be influenced in an attempt
to minimize stream latency, though possibly at the expense of stream
@@
-353,7
+358,7
@@
class RTAUDIO_DLL_PUBLIC RtAudio
open the input and/or output stream device(s) for exclusive use.
Note that this is not possible with all supported audio APIs.
open the input and/or output stream device(s) for exclusive use.
Note that this is not possible with all supported audio APIs.
- If the RTAUDIO_SCHEDULE_REALTIME flag is set, RtAudio will attempt
+ If the RTAUDIO_SCHEDULE_REALTIME flag is set, RtAudio will attempt
to select realtime scheduling (round-robin) for the callback thread.
The \c priority parameter will only be used if the RTAUDIO_SCHEDULE_REALTIME
flag is set. It defines the thread's realtime priority.
to select realtime scheduling (round-robin) for the callback thread.
The \c priority parameter will only be used if the RTAUDIO_SCHEDULE_REALTIME
flag is set. It defines the thread's realtime priority.
@@
-401,18
+406,16
@@
class RTAUDIO_DLL_PUBLIC RtAudio
/*!
This obtains a short lower-case name used for identification purposes.
This value is guaranteed to remain identical across library versions.
/*!
This obtains a short lower-case name used for identification purposes.
This value is guaranteed to remain identical across library versions.
- If the API is unknown or not compiled, this function will return
- the empty string.
+ If the API is unknown, this function will return the empty string.
*/
*/
- static
const std::string &getCompiled
ApiName( RtAudio::Api api );
+ static
std::string get
ApiName( RtAudio::Api api );
//! Return the display name of a specified compiled audio API.
/*!
This obtains a long name used for display purposes.
//! Return the display name of a specified compiled audio API.
/*!
This obtains a long name used for display purposes.
- If the API is unknown or not compiled, this function will return
- the empty string.
+ If the API is unknown, this function will return the empty string.
*/
*/
- static
const std::string &getCompiled
ApiDisplayName( RtAudio::Api api );
+ static
std::string get
ApiDisplayName( RtAudio::Api api );
//! Return the compiled audio API having the given name.
/*!
//! Return the compiled audio API having the given name.
/*!
@@
-447,7
+450,7
@@
class RTAUDIO_DLL_PUBLIC RtAudio
/*!
This function performs a system query of available devices each time it
is called, thus supporting devices connected \e after instantiation. If
/*!
This function performs a system query of available devices each time it
is called, thus supporting devices connected \e after instantiation. If
- a system error occurs during processing, a warning will be issued.
+ a system error occurs during processing, a warning will be issued.
*/
unsigned int getDeviceCount( void );
*/
unsigned int getDeviceCount( void );
@@
-514,7
+517,7
@@
class RTAUDIO_DLL_PUBLIC RtAudio
from within the callback function.
\param options An optional pointer to a structure containing various
global stream options, including a list of OR'ed RtAudioStreamFlags
from within the callback function.
\param options An optional pointer to a structure containing various
global stream options, including a list of OR'ed RtAudioStreamFlags
- and a suggested number of stream buffers that can be used to
+ and a suggested number of stream buffers that can be used to
control stream latency. More buffers typically result in more
robust performance, though at a cost of greater latency. If a
value of zero is specified, a system-specific median value is
control stream latency. More buffers typically result in more
robust performance, though at a cost of greater latency. If a
value of zero is specified, a system-specific median value is
@@
-618,6
+621,7
@@
class RTAUDIO_DLL_PUBLIC RtAudio
#endif
#include <windows.h>
#include <process.h>
#endif
#include <windows.h>
#include <process.h>
+ #include <stdint.h>
typedef uintptr_t ThreadHandle;
typedef CRITICAL_SECTION StreamMutex;
typedef uintptr_t ThreadHandle;
typedef CRITICAL_SECTION StreamMutex;
@@
-686,7
+690,6
@@
class S24 {
return *this;
}
return *this;
}
- S24( const S24& v ) { *this = v; }
S24( const double& d ) { *this = (int) d; }
S24( const float& f ) { *this = (int) f; }
S24( const signed short& s ) { *this = (int) s; }
S24( const double& d ) { *this = (int) d; }
S24( const float& f ) { *this = (int) f; }
S24( const signed short& s ) { *this = (int) s; }
@@
-793,6
+796,9
@@
protected:
double streamTime; // Number of elapsed seconds since the stream started.
#if defined(HAVE_GETTIMEOFDAY)
double streamTime; // Number of elapsed seconds since the stream started.
#if defined(HAVE_GETTIMEOFDAY)
+ // The gettimeofday() when tickStreamTime was last called, or both
+ // fields at 0 if tickStreamTime has not been called since the last
+ // startStream().
struct timeval lastTickTimestamp;
#endif
struct timeval lastTickTimestamp;
#endif
@@
-819,7
+825,7
@@
protected:
"warning" message is reported and FAILURE is returned. A
successful probe is indicated by a return value of SUCCESS.
*/
"warning" message is reported and FAILURE is returned. A
successful probe is indicated by a return value of SUCCESS.
*/
- virtual bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
+ virtual bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
@@
-899,7
+905,6
@@
public:
void startStream( void );
void stopStream( void );
void abortStream( void );
void startStream( void );
void stopStream( void );
void abortStream( void );
- long getStreamLatency( void );
// This function is intended for internal use only. It must be
// public because it is called by the internal callback handler,
// This function is intended for internal use only. It must be
// public because it is called by the internal callback handler,
@@
-911,7
+916,7
@@
public:
private:
private:
- bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
+ bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
@@
-935,7
+940,6
@@
public:
void startStream( void );
void stopStream( void );
void abortStream( void );
void startStream( void );
void stopStream( void );
void abortStream( void );
- long getStreamLatency( void );
// This function is intended for internal use only. It must be
// public because it is called by the internal callback handler,
// This function is intended for internal use only. It must be
// public because it is called by the internal callback handler,
@@
-945,7
+949,7
@@
public:
private:
private:
- bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
+ bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
@@
-970,7
+974,6
@@
public:
void startStream( void );
void stopStream( void );
void abortStream( void );
void startStream( void );
void stopStream( void );
void abortStream( void );
- long getStreamLatency( void );
// This function is intended for internal use only. It must be
// public because it is called by the internal callback handler,
// This function is intended for internal use only. It must be
// public because it is called by the internal callback handler,
@@
-983,7
+986,7
@@
public:
std::vector<RtAudio::DeviceInfo> devices_;
void saveDeviceInfo( void );
bool coInitialized_;
std::vector<RtAudio::DeviceInfo> devices_;
void saveDeviceInfo( void );
bool coInitialized_;
- bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
+ bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
@@
-1008,7
+1011,6
@@
public:
void startStream( void );
void stopStream( void );
void abortStream( void );
void startStream( void );
void stopStream( void );
void abortStream( void );
- long getStreamLatency( void );
// This function is intended for internal use only. It must be
// public because it is called by the internal callback handler,
// This function is intended for internal use only. It must be
// public because it is called by the internal callback handler,
@@
-1022,7
+1024,7
@@
public:
bool buffersRolling;
long duplexPrerollBytes;
std::vector<struct DsDevice> dsDevices;
bool buffersRolling;
long duplexPrerollBytes;
std::vector<struct DsDevice> dsDevices;
- bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
+ bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
@@
-1038,7
+1040,7
@@
class RtApiWasapi : public RtApi
{
public:
RtApiWasapi();
{
public:
RtApiWasapi();
- ~RtApiWasapi();
+
virtual
~RtApiWasapi();
RtAudio::Api getCurrentApi( void ) { return RtAudio::WINDOWS_WASAPI; }
unsigned int getDeviceCount( void );
RtAudio::Api getCurrentApi( void ) { return RtAudio::WINDOWS_WASAPI; }
unsigned int getDeviceCount( void );
@@
-1093,7
+1095,7
@@
public:
std::vector<RtAudio::DeviceInfo> devices_;
void saveDeviceInfo( void );
std::vector<RtAudio::DeviceInfo> devices_;
void saveDeviceInfo( void );
- bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
+ bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
@@
-1103,9
+1105,14
@@
public:
#if defined(__LINUX_PULSE__)
#if defined(__LINUX_PULSE__)
+struct pa_context;
+struct pa_sink_info;
+struct pa_threaded_mainloop;
+
class RtApiPulse: public RtApi
{
public:
class RtApiPulse: public RtApi
{
public:
+ RtApiPulse() : mainloop_(0), channels_(2) {}
~RtApiPulse();
RtAudio::Api getCurrentApi() { return RtAudio::LINUX_PULSE; }
unsigned int getDeviceCount( void );
~RtApiPulse();
RtAudio::Api getCurrentApi() { return RtAudio::LINUX_PULSE; }
unsigned int getDeviceCount( void );
@@
-1129,6
+1136,10
@@
public:
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
+ static void sinkInfoCallback(pa_context* c, const pa_sink_info* info, int eol, void* arg);
+ static void contextStateCallback(pa_context* c, void* arg);
+ pa_threaded_mainloop* mainloop_;
+ int channels_;
};
#endif
};
#endif
@@
-1157,7
+1168,7
@@
public:
private:
private:
- bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
+ bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
unsigned int firstChannel, unsigned int sampleRate,
RtAudioFormat format, unsigned int *bufferSize,
RtAudio::StreamOptions *options );
@@
-1182,7
+1193,7
@@
public:
private:
private:
- bool probeDeviceOpen( unsigned int /*device*/, StreamMode /*mode*/, unsigned int /*channels*/,
+ bool probeDeviceOpen( unsigned int /*device*/, StreamMode /*mode*/, unsigned int /*channels*/,
unsigned int /*firstChannel*/, unsigned int /*sampleRate*/,
RtAudioFormat /*format*/, unsigned int * /*bufferSize*/,
RtAudio::StreamOptions * /*options*/ ) { return false; }
unsigned int /*firstChannel*/, unsigned int /*sampleRate*/,
RtAudioFormat /*format*/, unsigned int * /*bufferSize*/,
RtAudio::StreamOptions * /*options*/ ) { return false; }