From cdfd5a2d8e8781f1925e90953a330ad38e63222f Mon Sep 17 00:00:00 2001 From: Gary Scavone Date: Thu, 10 Oct 2013 23:52:38 +0200 Subject: Release 2.0 tarball --- doc/html/RtAudio_8h-source.html | 295 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 295 insertions(+) create mode 100644 doc/html/RtAudio_8h-source.html (limited to 'doc/html/RtAudio_8h-source.html') diff --git a/doc/html/RtAudio_8h-source.html b/doc/html/RtAudio_8h-source.html new file mode 100644 index 0000000..cd9bc20 --- /dev/null +++ b/doc/html/RtAudio_8h-source.html @@ -0,0 +1,295 @@ + + +The RtAudio Tutorial + + + +
+Tutorial   Class/Enum List   File List   Compound Members  
+
+ +

RtAudio.h

Go to the documentation of this file.
00001 /******************************************/
+00002 /*
+00003   RtAudio - realtime sound I/O C++ class
+00004   Version 2.0 by Gary P. Scavone, 2001-2002.
+00005 */
+00006 /******************************************/
+00007 
+00008 #if !defined(__RtAudio_h)
+00009 #define __RtAudio_h
+00010 
+00011 #include <map>
+00012 
+00013 #if defined(__LINUX_ALSA_)
+00014   #include <alsa/asoundlib.h>
+00015   #include <pthread.h>
+00016   #include <unistd.h>
+00017 
+00018   typedef snd_pcm_t *AUDIO_HANDLE;
+00019   typedef int DEVICE_ID;
+00020   typedef pthread_t THREAD_HANDLE;
+00021   typedef pthread_mutex_t MUTEX;
+00022 
+00023 #elif defined(__LINUX_OSS_)
+00024   #include <pthread.h>
+00025   #include <unistd.h>
+00026 
+00027   typedef int AUDIO_HANDLE;
+00028   typedef int DEVICE_ID;
+00029   typedef pthread_t THREAD_HANDLE;
+00030   typedef pthread_mutex_t MUTEX;
+00031 
+00032 #elif defined(__WINDOWS_DS_)
+00033   #include <windows.h>
+00034   #include <process.h>
+00035 
+00036   // The following struct is used to hold the extra variables
+00037   // specific to the DirectSound implementation.
+00038   typedef struct {
+00039     void * object;
+00040     void * buffer;
+00041     UINT bufferPointer;
+00042   } AUDIO_HANDLE;
+00043 
+00044   typedef LPGUID DEVICE_ID;
+00045   typedef unsigned long THREAD_HANDLE;
+00046   typedef CRITICAL_SECTION MUTEX;
+00047 
+00048 #elif defined(__IRIX_AL_)
+00049   #include <dmedia/audio.h>
+00050   #include <pthread.h>
+00051   #include <unistd.h>
+00052 
+00053   typedef ALport AUDIO_HANDLE;
+00054   typedef int DEVICE_ID;
+00055   typedef pthread_t THREAD_HANDLE;
+00056   typedef pthread_mutex_t MUTEX;
+00057 
+00058 #endif
+00059 
+00060 
+00061 // *************************************************** //
+00062 //
+00063 // RtAudioError class declaration.
+00064 //
+00065 // *************************************************** //
+00066 
+00067 class RtAudioError
+00068 {
+00069 public:
+00070   enum TYPE {
+00071     WARNING,
+00072     DEBUG_WARNING,
+00073     UNSPECIFIED,
+00074     NO_DEVICES_FOUND,
+00075     INVALID_DEVICE,
+00076     INVALID_STREAM,
+00077     MEMORY_ERROR,
+00078     INVALID_PARAMETER,
+00079     DRIVER_ERROR,
+00080     SYSTEM_ERROR,
+00081     THREAD_ERROR
+00082   };
+00083 
+00084 protected:
+00085   char error_message[256];
+00086   TYPE type;
+00087 
+00088 public:
+00090   RtAudioError(const char *p, TYPE tipe = RtAudioError::UNSPECIFIED);
+00091 
+00093   virtual ~RtAudioError(void);
+00094 
+00096   virtual void printMessage(void);
+00097 
+00099   virtual const TYPE& getType(void) { return type; }
+00100 
+00102   virtual const char *getMessage(void) { return error_message; }
+00103 };
+00104 
+00105 
+00106 // *************************************************** //
+00107 //
+00108 // RtAudio class declaration.
+00109 //
+00110 // *************************************************** //
+00111 
+00112 class RtAudio
+00113 {
+00114 public:
+00115 
+00116   // Support for signed integers and floats.  Audio data fed to/from
+00117   // the tickStream() routine is assumed to ALWAYS be in host
+00118   // byte order.  The internal routines will automatically take care of
+00119   // any necessary byte-swapping between the host format and the
+00120   // soundcard.  Thus, endian-ness is not a concern in the following
+00121   // format definitions.
+00122   typedef unsigned long RTAUDIO_FORMAT;
+00123   static const RTAUDIO_FORMAT RTAUDIO_SINT8;
+00124   static const RTAUDIO_FORMAT RTAUDIO_SINT16;
+00125   static const RTAUDIO_FORMAT RTAUDIO_SINT24; 
+00126   static const RTAUDIO_FORMAT RTAUDIO_SINT32;
+00127   static const RTAUDIO_FORMAT RTAUDIO_FLOAT32; 
+00128   static const RTAUDIO_FORMAT RTAUDIO_FLOAT64; 
+00130   //static const int MAX_SAMPLE_RATES = 14;
+00131   enum { MAX_SAMPLE_RATES = 14 };
+00132 
+00133   typedef int (*RTAUDIO_CALLBACK)(char *buffer, int bufferSize, void *userData);
+00134 
+00135   typedef struct {
+00136     char name[128];
+00137     DEVICE_ID id[2];  
+00138     bool probed;       
+00139     int maxOutputChannels;
+00140     int maxInputChannels;
+00141     int maxDuplexChannels;
+00142     int minOutputChannels;
+00143     int minInputChannels;
+00144     int minDuplexChannels;
+00145     bool hasDuplexSupport; 
+00146     int nSampleRates;      
+00147     int sampleRates[MAX_SAMPLE_RATES]; 
+00148     RTAUDIO_FORMAT nativeFormats;     
+00149   } RTAUDIO_DEVICE;
+00150 
+00152 
+00159   RtAudio();
+00160 
+00162 
+00173   RtAudio(int *streamID,
+00174           int outputDevice, int outputChannels,
+00175           int inputDevice, int inputChannels,
+00176           RTAUDIO_FORMAT format, int sampleRate,
+00177           int *bufferSize, int numberOfBuffers);
+00178 
+00180 
+00184   ~RtAudio();
+00185 
+00187 
+00214   int openStream(int outputDevice, int outputChannels,
+00215                  int inputDevice, int inputChannels,
+00216                  RTAUDIO_FORMAT format, int sampleRate,
+00217                  int *bufferSize, int numberOfBuffers);
+00218 
+00220 
+00239   void setStreamCallback(int streamID, RTAUDIO_CALLBACK callback, void *userData);
+00240 
+00242 
+00249   void cancelStreamCallback(int streamID);
+00250 
+00252   int getDeviceCount(void);
+00253 
+00255 
+00265   void getDeviceInfo(int device, RTAUDIO_DEVICE *info);
+00266 
+00268 
+00273   char * const getStreamBuffer(int streamID);
+00274 
+00276 
+00281   void tickStream(int streamID);
+00282 
+00284 
+00288   void closeStream(int streamID);
+00289 
+00291 
+00295   void startStream(int streamID);
+00296 
+00298 
+00302   void stopStream(int streamID);
+00303 
+00305 
+00309   void abortStream(int streamID);
+00310 
+00312 
+00317   int streamWillBlock(int streamID);
+00318 
+00319 protected:
+00320 
+00321 private:
+00322 
+00323   static const unsigned int SAMPLE_RATES[MAX_SAMPLE_RATES];
+00324 
+00325   enum { FAILURE, SUCCESS };
+00326 
+00327   enum STREAM_MODE {
+00328     PLAYBACK,
+00329     RECORD,
+00330     DUPLEX,
+00331     UNINITIALIZED = -75
+00332   };
+00333 
+00334   enum STREAM_STATE {
+00335     STREAM_STOPPED,
+00336     STREAM_RUNNING
+00337   };
+00338 
+00339   typedef struct {
+00340     int device[2];           // Playback and record, respectively.
+00341     STREAM_MODE mode;       // PLAYBACK, RECORD, or DUPLEX.
+00342     AUDIO_HANDLE handle[2]; // Playback and record handles, respectively.
+00343     STREAM_STATE state;     // STOPPED or RUNNING
+00344     char *userBuffer;
+00345     char *deviceBuffer;
+00346     bool doConvertBuffer[2]; // Playback and record, respectively.
+00347     bool deInterleave[2];    // Playback and record, respectively.
+00348     bool doByteSwap[2];      // Playback and record, respectively.
+00349     int sampleRate;
+00350     int bufferSize;
+00351     int nBuffers;
+00352     int nUserChannels[2];    // Playback and record, respectively.
+00353     int nDeviceChannels[2];  // Playback and record channels, respectively.
+00354     RTAUDIO_FORMAT userFormat;
+00355     RTAUDIO_FORMAT deviceFormat[2]; // Playback and record, respectively.
+00356     bool usingCallback;
+00357     THREAD_HANDLE thread;
+00358     MUTEX mutex;
+00359     RTAUDIO_CALLBACK callback;
+00360     void *userData;
+00361   } RTAUDIO_STREAM;
+00362 
+00363   typedef signed short INT16;
+00364   typedef signed int INT32;
+00365   typedef float FLOAT32;
+00366   typedef double FLOAT64;
+00367 
+00368   char message[256];
+00369   int nDevices;
+00370   RTAUDIO_DEVICE *devices;
+00371 
+00372   std::map<int, void *> streams;
+00373 
+00375   void error(RtAudioError::TYPE type);
+00376 
+00381   void initialize(void);
+00382 
+00384   void clearDeviceInfo(RTAUDIO_DEVICE *info);
+00385 
+00393   void probeDeviceInfo(RTAUDIO_DEVICE *info);
+00394 
+00401   bool probeDeviceOpen(int device, RTAUDIO_STREAM *stream,
+00402                        STREAM_MODE mode, int channels, 
+00403                        int sampleRate, RTAUDIO_FORMAT format,
+00404                        int *bufferSize, int numberOfBuffers);
+00405 
+00412   void *verifyStream(int streamID);
+00413 
+00418   void convertStreamBuffer(RTAUDIO_STREAM *stream, STREAM_MODE mode);
+00419 
+00421   void byteSwapBuffer(char *buffer, int samples, RTAUDIO_FORMAT format);
+00422 
+00424   int formatBytes(RTAUDIO_FORMAT format);
+00425 };
+00426 
+00427 // Uncomment the following definition to have extra information spewed to stderr.
+00428 //#define RTAUDIO_DEBUG
+00429 
+00430 #endif
+

+ +
+ ©2001-2002 CCRMA, Stanford University. All Rights Reserved.
+ Maintained by Gary P. Scavone, gary@ccrma.stanford.edu

+

+ + + -- cgit v1.2.3