61 #if !defined(__RTAUDIO_H)
66 #if defined(__LINUX_ALSA__)
69 #define ALSA_PCM_OLD_HW_PARAMS_API
70 #define ALSA_PCM_OLD_SW_PARAMS_API
72 #include <alsa/asoundlib.h>
76 typedef snd_pcm_t *AUDIO_HANDLE;
77 typedef int DEVICE_ID;
78 typedef pthread_t THREAD_HANDLE;
79 typedef pthread_mutex_t MUTEX;
81 #elif defined(__LINUX_OSS__)
85 typedef int AUDIO_HANDLE;
86 typedef int DEVICE_ID;
87 typedef pthread_t THREAD_HANDLE;
88 typedef pthread_mutex_t MUTEX;
90 #elif defined(__WINDOWS_DS__)
91 #include "CLAM_windows.h"
102 typedef LPGUID DEVICE_ID;
103 typedef unsigned long THREAD_HANDLE;
104 typedef CRITICAL_SECTION MUTEX;
106 #elif defined(__WINDOWS_ASIO__)
107 #include "CLAM_windows.h"
110 typedef int AUDIO_HANDLE;
111 typedef int DEVICE_ID;
112 typedef unsigned long THREAD_HANDLE;
113 typedef CRITICAL_SECTION MUTEX;
115 #elif defined(__IRIX_AL__)
116 #include <dmedia/audio.h>
120 typedef ALport AUDIO_HANDLE;
121 typedef long DEVICE_ID;
122 typedef pthread_t THREAD_HANDLE;
123 typedef pthread_mutex_t MUTEX;
125 #elif defined(__MACOSX_CORE__)
127 #include <CoreAudio/AudioHardware.h>
130 typedef unsigned int AUDIO_HANDLE;
131 typedef AudioDeviceID DEVICE_ID;
132 typedef pthread_t THREAD_HANDLE;
133 typedef pthread_mutex_t MUTEX;
280 int outputDevice,
int outputChannels,
281 int inputDevice,
int inputChannels,
283 int *bufferSize,
int numberOfBuffers);
320 int openStream(
int outputDevice,
int outputChannels,
321 int inputDevice,
int inputChannels,
323 int *bufferSize,
int numberOfBuffers);
423 #if (defined(__MACOSX_CORE__) || defined(__WINDOWS_ASIO__))
428 void callbackEvent(
int streamId, DEVICE_ID deviceId,
void *inData,
void *outData);
437 enum { FAILURE, SUCCESS };
454 AUDIO_HANDLE handle[2];
458 bool doConvertBuffer[2];
459 bool deInterleave[2];
464 int nUserChannels[2];
465 int nDeviceChannels[2];
472 typedef signed short INT16;
473 typedef signed int INT32;
474 typedef float FLOAT32;
475 typedef double FLOAT64;
479 RTAUDIO_DEVICE *devices;
481 std::map<int, void *> streams;
490 void initialize(
void);
496 int getDefaultInputDevice(
void);
502 int getDefaultOutputDevice(
void);
505 void clearDeviceInfo(RTAUDIO_DEVICE *info);
514 void probeDeviceInfo(RTAUDIO_DEVICE *info);
522 bool probeDeviceOpen(
int device, RTAUDIO_STREAM *stream,
523 STREAM_MODE mode,
int channels,
525 int *bufferSize,
int numberOfBuffers);
533 void *verifyStream(
int streamId);
539 void convertStreamBuffer(RTAUDIO_STREAM *stream, STREAM_MODE mode);
542 void byteSwapBuffer(
char *buffer,
int samples,
RTAUDIO_FORMAT format);