48#define RTAUDIO_VERSION "5.0.0"
49#define RTAUDIO_DLL_PUBLIC
189 unsigned int nFrames,
229 { std::cerr <<
'\n' << what() <<
"\n\n"; }
236 {
return std::string(what()); }
384 static std::string getVersion(
void );
392 static void getCompiledApi( std::vector<RtAudio::Api> &apis );
421 unsigned int getDeviceCount(
void );
444 unsigned int getDefaultOutputDevice(
void );
454 unsigned int getDefaultInputDevice(
void );
509 void closeStream(
void );
518 void startStream(
void );
527 void stopStream(
void );
536 void abortStream(
void );
539 bool isStreamOpen(
void )
const;
542 bool isStreamRunning(
void )
const;
548 double getStreamTime(
void );
554 void setStreamTime(
double time );
565 long getStreamLatency(
void );
573 unsigned int getStreamSampleRate(
void );
576 void showWarnings(
bool value =
true );
585#if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__) || defined(__WINDOWS_WASAPI__)
596#elif defined(__LINUX_ALSA__) || defined(__UNIX_PULSE__) || defined(__UNIX_JACK__) || defined(__LINUX_OSS__) || defined(__MACOSX_CORE__) || defined(__HAIKU__)
605 #define __RTAUDIO_DUMMY__
655 c3[0] = (
i & 0x000000ff);
656 c3[1] = (
i & 0x0000ff00) >> 8;
657 c3[2] = (
i & 0x00ff0000) >> 16;
661#if defined(__GNUC__) && __GNUC__ < 8
670 int i =
c3[0] | (
c3[1] << 8) | (
c3[2] << 16);
671 if (
i & 0x800000)
i |= ~0xffffff;
677#if defined( HAVE_GETTIMEOFDAY )
678 #include <sys/time.h>
770#if defined(HAVE_GETTIMEOFDAY)
771 struct timeval lastTickTimestamp;
798 unsigned int firstChannel,
unsigned int sampleRate,
840inline unsigned int RtAudio :: getDeviceCount(
void ) {
return rtapi_->getDeviceCount(); }
842inline unsigned int RtAudio :: getDefaultInputDevice(
void ) {
return rtapi_->getDefaultInputDevice(); }
843inline unsigned int RtAudio :: getDefaultOutputDevice(
void ) {
return rtapi_->getDefaultOutputDevice(); }
844inline void RtAudio :: closeStream(
void ) {
return rtapi_->closeStream(); }
845inline void RtAudio :: startStream(
void ) {
return rtapi_->startStream(); }
846inline void RtAudio :: stopStream(
void ) {
return rtapi_->stopStream(); }
847inline void RtAudio :: abortStream(
void ) {
return rtapi_->abortStream(); }
848inline bool RtAudio :: isStreamOpen(
void )
const {
return rtapi_->isStreamOpen(); }
849inline bool RtAudio :: isStreamRunning(
void )
const {
return rtapi_->isStreamRunning(); }
850inline long RtAudio :: getStreamLatency(
void ) {
return rtapi_->getStreamLatency(); }
851inline unsigned int RtAudio :: getStreamSampleRate(
void ) {
return rtapi_->getStreamSampleRate(); }
852inline double RtAudio :: getStreamTime(
void ) {
return rtapi_->getStreamTime(); }
853inline void RtAudio :: setStreamTime(
double time ) {
return rtapi_->setStreamTime( time ); }
858#if defined(__MACOSX_CORE__)
860#include <CoreAudio/AudioHardware.h>
862class RtApiCore:
public RtApi
883 bool callbackEvent( AudioDeviceID deviceId,
884 const AudioBufferList *inBufferList,
885 const AudioBufferList *outBufferList );
890 unsigned int firstChannel,
unsigned int sampleRate,
892 RtAudio::StreamOptions *options );
893 static const char* getErrorCode( OSStatus code );
898#if defined(__UNIX_JACK__)
900class RtApiJack:
public RtApi
919 bool callbackEvent(
unsigned long nframes );
922 bool bufferSizeEvent(
unsigned long nframes );
927 unsigned int firstChannel,
unsigned int sampleRate,
929 RtAudio::StreamOptions *options );
931 bool shouldAutoconnect_;
936#if defined(__WINDOWS_ASIO__)
938class RtApiAsio:
public RtApi
957 bool callbackEvent(
long bufferIndex );
961 std::vector<RtAudio::DeviceInfo> devices_;
962 void saveDeviceInfo(
void );
965 unsigned int firstChannel,
unsigned int sampleRate,
967 RtAudio::StreamOptions *options );
972#if defined(__WINDOWS_DS__)
974class RtApiDs:
public RtApi
995 void callbackEvent(
void );
1000 bool buffersRolling;
1001 long duplexPrerollBytes;
1002 std::vector<struct DsDevice> dsDevices;
1004 unsigned int firstChannel,
unsigned int sampleRate,
1006 RtAudio::StreamOptions *options );
1011#if defined(__WINDOWS_WASAPI__)
1013struct IMMDeviceEnumerator;
1015class RtApiWasapi :
public RtApi
1032 bool coInitialized_;
1033 IMMDeviceEnumerator* deviceEnumerator_;
1036 unsigned int firstChannel,
unsigned int sampleRate,
1038 RtAudio::StreamOptions* options );
1040 static DWORD WINAPI runWasapiThread(
void* wasapiPtr );
1041 static DWORD WINAPI stopWasapiThread(
void* wasapiPtr );
1042 static DWORD WINAPI abortWasapiThread(
void* wasapiPtr );
1043 void wasapiThread();
1048#if defined(__LINUX_ALSA__)
1050class RtApiAlsa:
public RtApi
1068 void callbackEvent(
void );
1072 std::vector<RtAudio::DeviceInfo> devices_;
1073 void saveDeviceInfo(
void );
1075 unsigned int firstChannel,
unsigned int sampleRate,
1077 RtAudio::StreamOptions *options );
1082#if defined(__UNIX_PULSE__)
1084class RtApiPulse:
public RtApi
1100 void callbackEvent(
void );
1104 std::vector<RtAudio::DeviceInfo> devices_;
1105 void saveDeviceInfo(
void );
1107 unsigned int firstChannel,
unsigned int sampleRate,
1109 RtAudio::StreamOptions *options );
1114#if defined(__LINUX_OSS__)
1116class RtApiOss:
public RtApi
1134 void callbackEvent(
void );
1139 unsigned int firstChannel,
unsigned int sampleRate,
1141 RtAudio::StreamOptions *options );
1146#if defined(__RTAUDIO_DUMMY__)
1164 unsigned int ,
unsigned int ,
static const RtAudioFormat RTAUDIO_SINT8
Definition RtAudio.h:73
void(* RtAudioErrorCallback)(RtAudioError::Type type, const std::string &errorText)
RtAudio error callback function prototype.
Definition RtAudio.h:247
static const RtAudioFormat RTAUDIO_SINT32
Definition RtAudio.h:76
static const RtAudioFormat RTAUDIO_FLOAT64
Definition RtAudio.h:78
static const RtAudioStreamFlags RTAUDIO_MINIMIZE_LATENCY
Definition RtAudio.h:128
static const RtAudioStreamFlags RTAUDIO_JACK_DONT_CONNECT
Definition RtAudio.h:132
static const RtAudioStreamStatus RTAUDIO_OUTPUT_UNDERFLOW
Definition RtAudio.h:147
int ThreadHandle
Definition RtAudio.h:606
static const RtAudioFormat RTAUDIO_FLOAT32
Definition RtAudio.h:77
static const RtAudioFormat RTAUDIO_SINT24
Definition RtAudio.h:75
bool(* RtAudioBufferSizeCallback)(unsigned int bufferSize, void *userData)
RtAudio buffer size change callback.
Definition RtAudio.h:250
int(* RtAudioCallback)(void *outputBuffer, void *inputBuffer, unsigned int nFrames, double streamTime, RtAudioStreamStatus status, void *userData)
RtAudio callback function prototype.
Definition RtAudio.h:188
static const RtAudioFormat RTAUDIO_SINT16
Definition RtAudio.h:74
unsigned long RtAudioFormat
RtAudio data format type.
Definition RtAudio.h:72
static const RtAudioStreamFlags RTAUDIO_ALSA_USE_DEFAULT
Definition RtAudio.h:131
unsigned int RtAudioStreamFlags
RtAudio stream option flags.
Definition RtAudio.h:126
static const RtAudioStreamStatus RTAUDIO_INPUT_OVERFLOW
Definition RtAudio.h:146
static const RtAudioStreamFlags RTAUDIO_NONINTERLEAVED
Definition RtAudio.h:127
unsigned int RtAudioStreamStatus
RtAudio stream status (over- or underflow) flags.
Definition RtAudio.h:145
static const RtAudioStreamFlags RTAUDIO_SCHEDULE_REALTIME
Definition RtAudio.h:130
int StreamMutex
Definition RtAudio.h:607
#define RTAUDIO_DLL_PUBLIC
Definition RtAudio.h:49
static const RtAudioStreamFlags RTAUDIO_HOG_DEVICE
Definition RtAudio.h:129
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
static void message(int level, const char *fmt,...)
Definition adplugdb.cpp:120
RtApiDummy()
Definition RtAudio.h:1152
RtAudio::DeviceInfo getDeviceInfo(unsigned int)
Definition RtAudio.h:1155
void closeStream(void)
Definition RtAudio.h:1156
RtAudio::Api getCurrentApi(void) const
Definition RtAudio.h:1153
bool probeDeviceOpen(unsigned int, StreamMode, unsigned int, unsigned int, unsigned int, RtAudioFormat, unsigned int *, RtAudio::StreamOptions *)
Definition RtAudio.h:1163
unsigned int getDeviceCount(void)
Definition RtAudio.h:1154
void abortStream(void)
Definition RtAudio.h:1159
void stopStream(void)
Definition RtAudio.h:1158
void startStream(void)
Definition RtAudio.h:1157
void byteSwapBuffer(char *buffer, unsigned int samples, RtAudioFormat format)
Protected common method used to perform byte-swapping on buffers.
Definition RtAudio.cpp:9968
virtual void startStream(void)=0
virtual void closeStream(void)
Definition RtAudio.cpp:364
virtual RtAudio::Api getCurrentApi(void) const =0
bool firstErrorOccurred_
Definition RtAudio.h:788
virtual void setStreamTime(double time)
Definition RtAudio.cpp:428
unsigned int getStreamSampleRate(void)
Definition RtAudio.cpp:439
std::ostringstream errorStream_
Definition RtAudio.h:784
void showWarnings(bool value)
Definition RtAudio.h:711
signed int Int32
Definition RtAudio.h:780
virtual unsigned int getDeviceCount(void)=0
void openStream(RtAudio::StreamParameters *outputParameters, RtAudio::StreamParameters *inputParameters, RtAudioFormat format, unsigned int sampleRate, unsigned int *bufferFrames, RtAudioCallback callback, void *userData, RtAudio::StreamOptions *options, RtAudioBufferSizeCallback bufSizeCallback, RtAudioErrorCallback errorCallback)
Definition RtAudio.cpp:257
static const unsigned int MAX_SAMPLE_RATES
Definition RtAudio.h:716
virtual double getStreamTime(void)
Definition RtAudio.cpp:405
virtual unsigned int getDefaultInputDevice(void)
Definition RtAudio.cpp:352
unsigned int formatBytes(RtAudioFormat format)
Protected common method that returns the number of bytes for a given format.
Definition RtAudio.cpp:9432
virtual RtAudio::DeviceInfo getDeviceInfo(unsigned int device)=0
@ SUCCESS
Definition RtAudio.h:719
@ FAILURE
Definition RtAudio.h:719
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)
Definition RtAudio.cpp:370
StreamMode
Definition RtAudio.h:728
@ DUPLEX
Definition RtAudio.h:731
@ INPUT
Definition RtAudio.h:730
@ UNINITIALIZED
Definition RtAudio.h:732
@ OUTPUT
Definition RtAudio.h:729
RtApiStream stream_
Definition RtAudio.h:787
static const unsigned int SAMPLE_RATES[]
Definition RtAudio.h:53
void convertBuffer(char *outBuffer, char *inBuffer, ConvertInfo &info)
Definition RtAudio.cpp:9531
StreamState
Definition RtAudio.h:721
@ STREAM_CLOSED
Definition RtAudio.h:725
@ STREAM_STOPPED
Definition RtAudio.h:722
@ STREAM_RUNNING
Definition RtAudio.h:724
@ STREAM_STOPPING
Definition RtAudio.h:723
S24 Int24
Definition RtAudio.h:778
signed short Int16
Definition RtAudio.h:779
bool showWarnings_
Definition RtAudio.h:786
std::string errorText_
Definition RtAudio.h:785
RtApi()
Definition RtAudio.cpp:240
bool isStreamRunning(void) const
Definition RtAudio.h:710
void verifyStream(void)
Definition RtAudio.cpp:9387
void clearStreamInfo()
Protected common method to clear an RtApiStream structure.
Definition RtAudio.cpp:9395
double Float64
Definition RtAudio.h:782
void tickStreamTime(void)
A protected function used to increment the stream time.
Definition RtAudio.cpp:379
bool isStreamOpen(void) const
Definition RtAudio.h:709
float Float32
Definition RtAudio.h:781
void setConvertInfo(StreamMode mode, unsigned int firstChannel)
Protected common method that sets up the parameters for buffer conversion.
Definition RtAudio.cpp:9451
virtual void stopStream(void)=0
virtual void abortStream(void)=0
long getStreamLatency(void)
Definition RtAudio.cpp:392
virtual unsigned int getDefaultOutputDevice(void)
Definition RtAudio.cpp:358
RtAudioError(const std::string &message, Type type=RtAudioError::UNSPECIFIED)
The constructor.
Definition RtAudio.h:223
virtual const std::string getMessage(void) const
Returns the thrown error message string.
Definition RtAudio.h:235
Type
Defined RtAudioError types.
Definition RtAudio.h:208
@ INVALID_DEVICE
Definition RtAudio.h:213
@ MEMORY_ERROR
Definition RtAudio.h:214
@ WARNING
Definition RtAudio.h:209
@ UNSPECIFIED
Definition RtAudio.h:211
@ DRIVER_ERROR
Definition RtAudio.h:217
@ NO_DEVICES_FOUND
Definition RtAudio.h:212
@ INVALID_USE
Definition RtAudio.h:216
@ THREAD_ERROR
Definition RtAudio.h:219
@ INVALID_PARAMETER
Definition RtAudio.h:215
@ DEBUG_WARNING
Definition RtAudio.h:210
@ SYSTEM_ERROR
Definition RtAudio.h:218
virtual const Type & getType(void) const
Returns the thrown error message type.
Definition RtAudio.h:232
Type type_
Definition RtAudio.h:239
virtual void printMessage(void) const
Prints thrown error message to stderr.
Definition RtAudio.h:228
Realtime audio i/o C++ classes.
Definition RtAudio.h:268
RtApi * rtapi_
Definition RtAudio.h:581
Api
Audio API specifier arguments.
Definition RtAudio.h:272
@ WINDOWS_ASIO
Definition RtAudio.h:280
@ WINDOWS_DS
Definition RtAudio.h:281
@ LINUX_OSS
Definition RtAudio.h:275
@ UNIX_PULSE
Definition RtAudio.h:276
@ UNIX_JACK
Definition RtAudio.h:277
@ MACOSX_CORE
Definition RtAudio.h:278
@ UNSPECIFIED
Definition RtAudio.h:273
@ LINUX_ALSA
Definition RtAudio.h:274
@ RTAUDIO_DUMMY
Definition RtAudio.h:282
@ WINDOWS_WASAPI
Definition RtAudio.h:279
RtAudio(RtAudio::Api api=UNSPECIFIED)
The class constructor.
Definition RtAudio.cpp:180
int asInt()
Definition RtAudio.h:669
S24(const signed short &s)
Definition RtAudio.h:666
unsigned char c3[3]
Definition RtAudio.h:649
S24()
Definition RtAudio.h:652
S24(const char &c)
Definition RtAudio.h:667
S24(const double &d)
Definition RtAudio.h:664
S24(const float &f)
Definition RtAudio.h:665
S24 & operator=(const int &i)
Definition RtAudio.h:654
unsigned v[N_MAX]
Definition inflate.c:1584
unsigned d
Definition inflate.c:940
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
unsigned f
Definition inflate.c:1572
static PuglViewHint int value
Definition pugl.h:1708
struct backing_store_struct * info
Definition jmemsys.h:183
Definition juce_Uuid.h:141
#define false
Definition ordinals.h:83
png_structrp int mode
Definition png.h:1139
void * bufSizeCallback
Definition RtAudio.h:619
bool isRunning
Definition RtAudio.h:622
void * userData
Definition RtAudio.h:618
void * apiInfo
Definition RtAudio.h:621
ThreadHandle thread
Definition RtAudio.h:616
CallbackInfo()
Definition RtAudio.h:627
void * callback
Definition RtAudio.h:617
void * errorCallback
Definition RtAudio.h:620
void * object
Definition RtAudio.h:615
int priority
Definition RtAudio.h:624
bool doRealtime
Definition RtAudio.h:623
RtAudioFormat inFormat
Definition RtAudio.h:739
int inJump
Definition RtAudio.h:738
std::vector< int > inOffset
Definition RtAudio.h:740
RtAudioFormat outFormat
Definition RtAudio.h:739
int outJump
Definition RtAudio.h:738
int channels
Definition RtAudio.h:737
std::vector< int > outOffset
Definition RtAudio.h:741
unsigned int sampleRate
Definition RtAudio.h:756
unsigned long latency[2]
Definition RtAudio.h:762
char * deviceBuffer
Definition RtAudio.h:751
ConvertInfo convertInfo[2]
Definition RtAudio.h:767
unsigned int device[2]
Definition RtAudio.h:746
double streamTime
Definition RtAudio.h:768
StreamMode mode
Definition RtAudio.h:748
bool doByteSwap[2]
Definition RtAudio.h:755
bool doConvertBuffer[2]
Definition RtAudio.h:752
char * userBuffer[2]
Definition RtAudio.h:750
unsigned int nBuffers
Definition RtAudio.h:758
void * apiHandle
Definition RtAudio.h:747
StreamMutex mutex
Definition RtAudio.h:765
unsigned int nUserChannels[2]
Definition RtAudio.h:759
bool userInterleaved
Definition RtAudio.h:753
RtAudioFormat deviceFormat[2]
Definition RtAudio.h:764
unsigned int bufferSize
Definition RtAudio.h:757
bool deviceInterleaved[2]
Definition RtAudio.h:754
CallbackInfo callbackInfo
Definition RtAudio.h:766
unsigned int nDeviceChannels[2]
Definition RtAudio.h:760
StreamState state
Definition RtAudio.h:749
RtAudioFormat userFormat
Definition RtAudio.h:763
unsigned int channelOffset[2]
Definition RtAudio.h:761
RtApiStream()
Definition RtAudio.h:774
The public device information structure for returning queried values.
Definition RtAudio.h:286
RtAudioFormat nativeFormats
Definition RtAudio.h:296
std::string name
Definition RtAudio.h:288
unsigned int duplexChannels
Definition RtAudio.h:291
bool isDefaultOutput
Definition RtAudio.h:292
unsigned int inputChannels
Definition RtAudio.h:290
DeviceInfo()
Definition RtAudio.h:299
bool isDefaultInput
Definition RtAudio.h:293
unsigned int outputChannels
Definition RtAudio.h:289
bool probed
Definition RtAudio.h:287
unsigned int preferredSampleRate
Definition RtAudio.h:295
std::vector< unsigned int > sampleRates
Definition RtAudio.h:294
The structure for specifying stream options.
Definition RtAudio.h:372
RtAudioStreamFlags flags
Definition RtAudio.h:373
std::string streamName
Definition RtAudio.h:375
StreamOptions()
Definition RtAudio.h:379
unsigned int numberOfBuffers
Definition RtAudio.h:374
int priority
Definition RtAudio.h:376
The structure for specifying input or ouput stream parameters.
Definition RtAudio.h:305
StreamParameters()
Definition RtAudio.h:311
unsigned int nChannels
Definition RtAudio.h:307
unsigned int deviceId
Definition RtAudio.h:306
unsigned int firstChannel
Definition RtAudio.h:308
RECT const char void(* callback)(const char *droppath))) SWELL_API_DEFINE(BOOL
Definition swell-functions.h:1004
unsigned int DWORD
Definition swell-types.h:164
#define WINAPI
Definition swell-types.h:631
return c
Definition crypt.c:175
typedef int(UZ_EXP MsgFn)()
#define void
Definition unzip.h:396
_WDL_CSTRING_PREFIX void INT_PTR const char * format
Definition wdlcstring.h:263