184 unsigned int nFrames,
325 static void getCompiledApi( std::vector<RtAudio::Api> &apis )
throw();
428 RtAudio::StreamParameters *inputParameters,
431 void *userData = NULL,
RtAudio::StreamOptions *options = NULL );
508 #if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__) 515 #elif defined(__LINUX_ALSA__) || defined(__LINUX_PULSE__) || defined(__UNIX_JACK__) || defined(__LINUX_OSS__) || defined(__MACOSX_CORE__) 522 #else // Setup for "dummy" behavior 524 #define __RTAUDIO_DUMMY__ 543 :object(0), callback(0), userData(0), apiInfo(0), isRunning(false) {}
560 #if defined( HAVE_GETTIMEOFDAY ) 561 #include <sys/time.h> 589 bool isStreamOpen(
void )
const {
return stream_.state != STREAM_CLOSED; };
596 static const unsigned int MAX_SAMPLE_RATES;
597 static const unsigned int SAMPLE_RATES[];
599 enum { FAILURE, SUCCESS };
626 unsigned int device[2];
632 bool doConvertBuffer[2];
634 bool deviceInterleaved[2];
639 unsigned int nUserChannels[2];
640 unsigned int nDeviceChannels[2];
641 unsigned int channelOffset[2];
642 unsigned long latency[2];
650 #if defined(HAVE_GETTIMEOFDAY) 651 struct timeval lastTickTimestamp;
655 :apiHandle(0), deviceBuffer(0) { device[0] = 11111; device[1] = 11111; }
675 virtual bool probeDeviceOpen(
unsigned int device,
StreamMode mode,
unsigned int channels,
676 unsigned int firstChannel,
unsigned int sampleRate,
681 void tickStreamTime(
void );
684 void clearStreamInfo();
690 void verifyStream(
void );
699 void convertBuffer(
char *outBuffer,
char *inBuffer,
ConvertInfo &info );
702 void byteSwapBuffer(
char *buffer,
unsigned int samples,
RtAudioFormat format );
708 void setConvertInfo(
StreamMode mode,
unsigned int firstChannel );
735 #if defined(__MACOSX_CORE__) 737 #include <CoreAudio/AudioHardware.h> 739 class RtApiCore:
public RtApi 760 bool callbackEvent( AudioDeviceID deviceId,
761 const AudioBufferList *inBufferList,
762 const AudioBufferList *outBufferList );
766 bool probeDeviceOpen(
unsigned int device, StreamMode mode,
unsigned int channels,
767 unsigned int firstChannel,
unsigned int sampleRate,
770 static const char* getErrorCode( OSStatus code );
775 #if defined(__UNIX_JACK__) 777 class RtApiJack:
public RtApi 796 bool callbackEvent(
unsigned long nframes );
800 bool probeDeviceOpen(
unsigned int device, StreamMode mode,
unsigned int channels,
801 unsigned int firstChannel,
unsigned int sampleRate,
808 #if defined(__WINDOWS_ASIO__) 810 class RtApiAsio:
public RtApi 829 bool callbackEvent(
long bufferIndex );
833 std::vector<RtAudio::DeviceInfo> devices_;
834 void saveDeviceInfo(
void );
836 bool probeDeviceOpen(
unsigned int device, StreamMode mode,
unsigned int channels,
837 unsigned int firstChannel,
unsigned int sampleRate,
844 #if defined(__WINDOWS_DS__) 846 class RtApiDs:
public RtApi 867 void callbackEvent(
void );
873 long duplexPrerollBytes;
874 bool probeDeviceOpen(
unsigned int device, StreamMode mode,
unsigned int channels,
875 unsigned int firstChannel,
unsigned int sampleRate,
882 #if defined(__LINUX_ALSA__) 884 class RtApiAlsa:
public RtApi 902 void callbackEvent(
void );
906 std::vector<RtAudio::DeviceInfo> devices_;
907 void saveDeviceInfo(
void );
908 bool probeDeviceOpen(
unsigned int device, StreamMode mode,
unsigned int channels,
909 unsigned int firstChannel,
unsigned int sampleRate,
916 #if defined(__LINUX_PULSE__) 918 class RtApiPulse:
public RtApi 934 void callbackEvent(
void );
938 std::vector<RtAudio::DeviceInfo> devices_;
939 void saveDeviceInfo(
void );
940 bool probeDeviceOpen(
unsigned int device, StreamMode mode,
unsigned int channels,
941 unsigned int firstChannel,
unsigned int sampleRate,
948 #if defined(__LINUX_OSS__) 950 class RtApiOss:
public RtApi 968 void callbackEvent(
void );
972 bool probeDeviceOpen(
unsigned int device, StreamMode mode,
unsigned int channels,
973 unsigned int firstChannel,
unsigned int sampleRate,
980 #if defined(__RTAUDIO_DUMMY__) 997 bool probeDeviceOpen(
unsigned int device, StreamMode mode,
unsigned int channels,
998 unsigned int firstChannel,
unsigned int sampleRate,
unsigned int firstChannel
Definition: RtAudio.h:244
std::vector< int > inOffset
Definition: RtAudio.h:620
void stopStream(void)
Stop a stream, allowing any samples remaining in the output queue to be played.
Definition: RtAudio.h:724
virtual unsigned int getDefaultOutputDevice(void)
Definition: RtAudio.cpp:306
Definition: RtAudio.h:213
bool userInterleaved
Definition: RtAudio.h:633
std::string name
Definition: RtAudio.h:225
virtual void stopStream(void)=0
int outJump
Definition: RtAudio.h:618
void * apiInfo
Definition: RtAudio.h:538
CallbackInfo()
Definition: RtAudio.h:542
std::vector< unsigned int > sampleRates
Definition: RtAudio.h:231
unsigned int nBuffers
Definition: RtAudio.h:638
RtAudio(RtAudio::Api api=UNSPECIFIED)
The class constructor.
Definition: RtAudio.cpp:150
void openStream(RtAudio::StreamParameters *outputParameters, RtAudio::StreamParameters *inputParameters, RtAudioFormat format, unsigned int sampleRate, unsigned int *bufferFrames, RtAudioCallback callback, void *userData=NULL, RtAudio::StreamOptions *options=NULL)
A public function for opening a stream with the specified parameters.
Definition: RtAudio.cpp:187
unsigned int RtAudioStreamFlags
RtAudio stream option flags.
Definition: RtAudio.h:122
Definition: RtAudio.h:219
bool isStreamRunning(void) const
Definition: RtAudio.h:590
void * callback
Definition: RtAudio.h:536
StreamState state
Definition: RtAudio.h:629
Realtime audio i/o C++ classes.
Definition: RtAudio.h:205
unsigned int inputChannels
Definition: RtAudio.h:227
void startStream(void)
Definition: RtAudio.h:991
unsigned int duplexChannels
Definition: RtAudio.h:228
bool isDefaultOutput
Definition: RtAudio.h:229
virtual unsigned int getDeviceCount(void)=0
void * apiHandle
Definition: RtAudio.h:627
void showWarnings(bool value=true)
Specify whether warning messages should be printed to stderr.
Definition: RtAudio.h:731
bool isStreamRunning(void) const
Returns true if the stream is running and false if it is stopped or not open.
Definition: RtAudio.h:727
unsigned long RtAudioFormat
RtAudio data format type.
Definition: RtAudio.h:72
ThreadHandle thread
Definition: RtAudio.h:535
Definition: RtAudio.h:218
int(* RtAudioCallback)(void *outputBuffer, void *inputBuffer, unsigned int nFrames, double streamTime, RtAudioStreamStatus status, void *userData)
RtAudio callback function prototype.
Definition: RtAudio.h:183
void abortStream(void)
Definition: RtAudio.h:993
bool isRunning
Definition: RtAudio.h:539
void openRtApi(RtAudio::Api api)
Definition: RtAudio.cpp:110
bool isStreamOpen(void) const
Definition: RtAudio.h:589
unsigned int getStreamSampleRate(void)
Returns actual sample rate in use by the stream.
Definition: RtAudio.h:729
Definition: RtAudio.h:602
signed short Int16
Definition: RtAudio.h:658
~RtAudio()
The destructor.
Definition: RtAudio.cpp:182
The structure for specifying input or ouput stream parameters.
Definition: RtAudio.h:241
RtAudio::DeviceInfo getDeviceInfo(unsigned int device)
Return an RtAudio::DeviceInfo structure for a specified device number.
Definition: RtAudio.h:719
unsigned int outputChannels
Definition: RtAudio.h:226
unsigned int sampleRate
Definition: RtAudio.h:636
double streamTime
Definition: RtAudio.h:648
StreamParameters()
Definition: RtAudio.h:247
RtApiDummy()
Definition: RtAudio.h:986
long getStreamLatency(void)
Definition: RtAudio.cpp:340
Definition: RtAudio.h:616
std::ostringstream errorStream_
Definition: RtAudio.h:663
RtApiStream stream_
Definition: RtAudio.h:666
unsigned int bufferSize
Definition: RtAudio.h:637
signed int Int32
Definition: RtAudio.h:659
virtual void abortStream(void)=0
unsigned int deviceId
Definition: RtAudio.h:242
int StreamMutex
Definition: RtAudio.h:526
RtAudioFormat outFormat
Definition: RtAudio.h:619
Definition: RtAudio.h:533
void stopStream(void)
Definition: RtAudio.h:992
virtual double getStreamTime(void)
Definition: RtAudio.cpp:353
static void getCompiledApi(std::vector< RtAudio::Api > &apis)
A static function to determine the available compiled audio APIs.
Definition: RtAudio.cpp:78
RtAudioFormat userFormat
Definition: RtAudio.h:643
virtual RtAudio::DeviceInfo getDeviceInfo(unsigned int device)=0
DeviceInfo()
Definition: RtAudio.h:235
std::string streamName
Definition: RtAudio.h:311
unsigned int RtAudioStreamStatus
RtAudio stream status (over- or underflow) flags.
Definition: RtAudio.h:140
void closeStream(void)
A function that closes a stream and frees any associated stream memory.
Definition: RtAudio.h:722
RtApiStream()
Definition: RtAudio.h:654
Type
Defined RtError types.
Definition: RtError.h:23
virtual void closeStream(void)
Definition: RtAudio.cpp:312
void * object
Definition: RtAudio.h:534
Definition: RtAudio.h:212
Api
Audio API specifier arguments.
Definition: RtAudio.h:210
float Float32
Definition: RtAudio.h:660
double getStreamTime(void)
Returns the number of elapsed seconds since the stream was started.
Definition: RtAudio.h:730
RtAudio::Api getCurrentApi(void)
Definition: RtAudio.h:987
RtApi * rtapi_
Definition: RtAudio.h:504
bool showWarnings_
Definition: RtAudio.h:665
unsigned int getDefaultInputDevice(void)
A function that returns the index of the default input device.
Definition: RtAudio.h:720
int channels
Definition: RtAudio.h:617
bool isStreamOpen(void) const
Returns true if a stream is open and false if not.
Definition: RtAudio.h:726
Definition: RtAudio.h:604
bool probed
Definition: RtAudio.h:224
Definition: RtAudio.h:215
Definition: RtAudio.h:610
RtAudioStreamFlags flags
Definition: RtAudio.h:309
int priority
Definition: RtAudio.h:312
double Float64
Definition: RtAudio.h:661
CallbackInfo callbackInfo
Definition: RtAudio.h:646
void abortStream(void)
Stop a stream, discarding any samples remaining in the input/output queue.
Definition: RtAudio.h:725
int ThreadHandle
Definition: RtAudio.h:525
void startStream(void)
A function that starts a stream.
Definition: RtAudio.h:723
unsigned int getDeviceCount(void)
A public function that queries for the number of audio devices available.
Definition: RtAudio.h:718
RtAudioFormat nativeFormats
Definition: RtAudio.h:232
StreamMutex mutex
Definition: RtAudio.h:645
The public device information structure for returning queried values.
Definition: RtAudio.h:223
Definition: RtAudio.h:625
Definition: RtAudio.h:214
StreamOptions()
Definition: RtAudio.h:315
The structure for specifying stream options.
Definition: RtAudio.h:308
Definition: RtAudio.h:566
virtual unsigned int getDefaultInputDevice(void)
Definition: RtAudio.cpp:300
StreamState
Definition: RtAudio.h:601
void showWarnings(bool value)
Definition: RtAudio.h:591
Definition: RtAudio.h:217
virtual void startStream(void)=0
bool isDefaultInput
Definition: RtAudio.h:230
unsigned int nChannels
Definition: RtAudio.h:243
StreamMode mode
Definition: RtAudio.h:628
std::vector< int > outOffset
Definition: RtAudio.h:621
StreamMode
Definition: RtAudio.h:608
void closeStream(void)
Definition: RtAudio.h:990
virtual RtAudio::Api getCurrentApi(void)=0
Definition: RtAudio.h:603
Definition: RtAudio.h:982
Definition: RtAudio.h:216
Definition: RtAudio.h:611
Definition: RtAudio.h:211
RtAudio::Api getCurrentApi(void)
Returns the audio API specifier for the current instance of RtAudio.
Definition: RtAudio.h:717
RtAudio::DeviceInfo getDeviceInfo(unsigned int device)
Definition: RtAudio.h:989
Definition: RtAudio.h:609
std::string errorText_
Definition: RtAudio.h:664
unsigned int numberOfBuffers
Definition: RtAudio.h:310
long getStreamLatency(void)
Returns the internal stream latency in sample frames.
Definition: RtAudio.h:728
char * deviceBuffer
Definition: RtAudio.h:631
unsigned int getStreamSampleRate(void)
Definition: RtAudio.cpp:376
unsigned int getDeviceCount(void)
Definition: RtAudio.h:988
void * userData
Definition: RtAudio.h:537
unsigned int getDefaultOutputDevice(void)
A function that returns the index of the default output device.
Definition: RtAudio.h:721