diff options
| author | Gary Scavone <gary@music.mcgill.ca> | 2013-10-10 23:57:51 +0200 |
|---|---|---|
| committer | Stephen Sinclair <sinclair@music.mcgill.ca> | 2013-10-10 23:57:51 +0200 |
| commit | f58f7c5aafe9b52acf26fad31ac2c01c6a184fbc (patch) | |
| tree | e6a95e6bce9138be23bffd52c6e9e742b863f73e /doc/html/RtAudio_8h-source.html | |
| parent | 71d678163c1a267fd006dbddf5f7ff42a5986366 (diff) | |
Release 2.1 tarball2.1
Diffstat (limited to 'doc/html/RtAudio_8h-source.html')
| -rw-r--r-- | doc/html/RtAudio_8h-source.html | 606 |
1 files changed, 321 insertions, 285 deletions
diff --git a/doc/html/RtAudio_8h-source.html b/doc/html/RtAudio_8h-source.html index 964e1e5..1b99c73 100644 --- a/doc/html/RtAudio_8h-source.html +++ b/doc/html/RtAudio_8h-source.html @@ -1,300 +1,336 @@ -<HTML>
-<HEAD>
-<TITLE>The RtAudio Tutorial</TITLE>
-<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
-</HEAD>
-<BODY BGCOLOR="#FFFFFF">
-<CENTER>
-<a class="qindex" href="index.html">Tutorial</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER>
+<HTML> +<HEAD> +<TITLE>The RtAudio Tutorial</TITLE> +<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> +</HEAD> +<BODY BGCOLOR="#FFFFFF"> +<CENTER> +<a class="qindex" href="index.html">Tutorial</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> <!-- Generated by Doxygen 1.2.8.1 --> -<h1>RtAudio.h</h1><a href="RtAudio_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">/******************************************/</font> -00002 <font class="comment">/*</font> -00003 <font class="comment"> RtAudio - realtime sound I/O C++ class</font> -00004 <font class="comment"> by Gary P. Scavone, 2001-2002.</font> -00005 <font class="comment">*/</font> -00006 <font class="comment">/******************************************/</font> -00007 -00008 <font class="preprocessor">#if !defined(__RTAUDIO_H)</font> -<a name="l00009"></a><a class="code" href="RtAudio_8h.html#a0">00009</a> <font class="preprocessor"></font><font class="preprocessor">#define __RTAUDIO_H</font> -00010 <font class="preprocessor"></font> -00011 <font class="preprocessor">#include <map></font> -00012 -00013 <font class="preprocessor">#if defined(__LINUX_ALSA__)</font> -00014 <font class="preprocessor"></font><font class="preprocessor"> #include <alsa/asoundlib.h></font> -00015 <font class="preprocessor"> #include <pthread.h></font> -00016 <font class="preprocessor"> #include <unistd.h></font> -00017 -00018 <font class="preprocessor"> #define THREAD_TYPE</font> -00019 <font class="preprocessor"></font> <font class="keyword">typedef</font> snd_pcm_t *AUDIO_HANDLE; -00020 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID; -00021 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE; -00022 <font class="keyword">typedef</font> pthread_mutex_t MUTEX; -00023 -00024 <font class="preprocessor">#elif defined(__LINUX_OSS__)</font> -00025 <font class="preprocessor"></font><font class="preprocessor"> #include <pthread.h></font> -00026 <font class="preprocessor"> #include <unistd.h></font> -00027 -00028 <font class="preprocessor"> #define THREAD_TYPE</font> -00029 <font class="preprocessor"></font> <font class="keyword">typedef</font> <font class="keywordtype">int</font> AUDIO_HANDLE; -00030 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID; -00031 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE; -00032 <font class="keyword">typedef</font> pthread_mutex_t MUTEX; -00033 -00034 <font class="preprocessor">#elif defined(__WINDOWS_DS__)</font> -00035 <font class="preprocessor"></font><font class="preprocessor"> #include <windows.h></font> -00036 <font class="preprocessor"> #include <process.h></font> -00037 -00038 <font class="comment">// The following struct is used to hold the extra variables</font> -00039 <font class="comment">// specific to the DirectSound implementation.</font> -00040 <font class="keyword">typedef</font> <font class="keyword">struct </font>{ -00041 <font class="keywordtype">void</font> * object; -00042 <font class="keywordtype">void</font> * buffer; -00043 UINT bufferPointer; -00044 } AUDIO_HANDLE; -00045 -00046 <font class="preprocessor"> #define THREAD_TYPE __stdcall</font> -00047 <font class="preprocessor"></font> <font class="keyword">typedef</font> LPGUID DEVICE_ID; -00048 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> THREAD_HANDLE; -00049 <font class="keyword">typedef</font> CRITICAL_SECTION MUTEX; -00050 -00051 <font class="preprocessor">#elif defined(__IRIX_AL__)</font> -00052 <font class="preprocessor"></font><font class="preprocessor"> #include <dmedia/audio.h></font> -00053 <font class="preprocessor"> #include <pthread.h></font> -00054 <font class="preprocessor"> #include <unistd.h></font> -00055 -00056 <font class="preprocessor"> #define THREAD_TYPE</font> -00057 <font class="preprocessor"></font> <font class="keyword">typedef</font> ALport AUDIO_HANDLE; -00058 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID; -00059 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE; -00060 <font class="keyword">typedef</font> pthread_mutex_t MUTEX; -00061 -00062 <font class="preprocessor">#endif</font> -00063 <font class="preprocessor"></font> -00064 -00065 <font class="comment">// *************************************************** //</font> -00066 <font class="comment">//</font> -00067 <font class="comment">// RtError class declaration.</font> -00068 <font class="comment">//</font> -00069 <font class="comment">// *************************************************** //</font> -00070 -<a name="l00071"></a><a class="code" href="classRtError.html">00071</a> <font class="keyword">class </font><a class="code" href="classRtError.html">RtError</a> -00072 { -00073 <font class="keyword">public</font>: -<a name="l00074"></a><a class="code" href="classRtError.html#s11">00074</a> <font class="keyword">enum</font> TYPE { -00075 WARNING, -00076 DEBUG_WARNING, -00077 UNSPECIFIED, -00078 NO_DEVICES_FOUND, -00079 INVALID_DEVICE, -00080 INVALID_STREAM, -00081 MEMORY_ERROR, -00082 INVALID_PARAMETER, -00083 DRIVER_ERROR, -00084 SYSTEM_ERROR, -00085 THREAD_ERROR -00086 }; -00087 -00088 <font class="keyword">protected</font>: -<a name="l00089"></a><a class="code" href="classRtError.html#n0">00089</a> <font class="keywordtype">char</font> error_message[256]; -<a name="l00090"></a><a class="code" href="classRtError.html#n1">00090</a> TYPE type; -00091 -00092 <font class="keyword">public</font>: -00094 <a class="code" href="classRtError.html#a0">RtError</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *p, TYPE tipe = RtError::UNSPECIFIED); -00095 -00097 <font class="keyword">virtual</font> <a class="code" href="classRtError.html#a1">~RtError</a>(<font class="keywordtype">void</font>); +<h1>RtAudio.h</h1><div class="fragment"><pre>00001 <font class="comment">/************************************************************************/</font> +00038 <font class="comment">/************************************************************************/</font> +00039 +00040 <font class="preprocessor">#if !defined(__RTAUDIO_H)</font> +00041 <font class="preprocessor"></font><font class="preprocessor">#define __RTAUDIO_H</font> +00042 <font class="preprocessor"></font> +00043 <font class="preprocessor">#include <map></font> +00044 +00045 <font class="preprocessor">#if defined(__LINUX_ALSA__)</font> +00046 <font class="preprocessor"></font><font class="preprocessor"> #include <alsa/asoundlib.h></font> +00047 <font class="preprocessor"> #include <pthread.h></font> +00048 <font class="preprocessor"> #include <unistd.h></font> +00049 +00050 <font class="keyword">typedef</font> snd_pcm_t *AUDIO_HANDLE; +00051 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID; +00052 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE; +00053 <font class="keyword">typedef</font> pthread_mutex_t MUTEX; +00054 +00055 <font class="preprocessor">#elif defined(__LINUX_OSS__)</font> +00056 <font class="preprocessor"></font><font class="preprocessor"> #include <pthread.h></font> +00057 <font class="preprocessor"> #include <unistd.h></font> +00058 +00059 <font class="keyword">typedef</font> <font class="keywordtype">int</font> AUDIO_HANDLE; +00060 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID; +00061 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE; +00062 <font class="keyword">typedef</font> pthread_mutex_t MUTEX; +00063 +00064 <font class="preprocessor">#elif defined(__WINDOWS_DS__)</font> +00065 <font class="preprocessor"></font><font class="preprocessor"> #include <windows.h></font> +00066 <font class="preprocessor"> #include <process.h></font> +00067 +00068 <font class="comment">// The following struct is used to hold the extra variables</font> +00069 <font class="comment">// specific to the DirectSound implementation.</font> +00070 <font class="keyword">typedef</font> <font class="keyword">struct </font>{ +00071 <font class="keywordtype">void</font> * object; +00072 <font class="keywordtype">void</font> * buffer; +00073 UINT bufferPointer; +00074 } AUDIO_HANDLE; +00075 +00076 <font class="keyword">typedef</font> LPGUID DEVICE_ID; +00077 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> THREAD_HANDLE; +00078 <font class="keyword">typedef</font> CRITICAL_SECTION MUTEX; +00079 +00080 <font class="preprocessor">#elif defined(__WINDOWS_ASIO__)</font> +00081 <font class="preprocessor"></font><font class="preprocessor"> #include <windows.h></font> +00082 <font class="preprocessor"> #include <process.h></font> +00083 +00084 <font class="keyword">typedef</font> <font class="keywordtype">int</font> AUDIO_HANDLE; +00085 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID; +00086 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> THREAD_HANDLE; +00087 <font class="keyword">typedef</font> CRITICAL_SECTION MUTEX; +00088 +00089 <font class="preprocessor">#elif defined(__IRIX_AL__)</font> +00090 <font class="preprocessor"></font><font class="preprocessor"> #include <dmedia/audio.h></font> +00091 <font class="preprocessor"> #include <pthread.h></font> +00092 <font class="preprocessor"> #include <unistd.h></font> +00093 +00094 <font class="keyword">typedef</font> ALport AUDIO_HANDLE; +00095 <font class="keyword">typedef</font> <font class="keywordtype">long</font> DEVICE_ID; +00096 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE; +00097 <font class="keyword">typedef</font> pthread_mutex_t MUTEX; 00098 -00100 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classRtError.html#a2">printMessage</a>(<font class="keywordtype">void</font>); -00101 -<a name="l00103"></a><a class="code" href="classRtError.html#a3">00103</a> <font class="keyword">virtual</font> <font class="keyword">const</font> TYPE& <a class="code" href="classRtError.html#a3">getType</a>(<font class="keywordtype">void</font>)<font class="keyword"> </font>{ <font class="keywordflow">return</font> type; } +00099 <font class="preprocessor">#elif defined(__MACOSX_CORE__)</font> +00100 <font class="preprocessor"></font> +00101 <font class="preprocessor"> #include <CoreServices/CoreServices.h></font> +00102 <font class="preprocessor"> #include <CoreAudio/AudioHardware.h></font> +00103 <font class="preprocessor"> #include <pthread.h></font> 00104 -<a name="l00106"></a><a class="code" href="classRtError.html#a4">00106</a> <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="classRtError.html#a4">getMessage</a>(<font class="keywordtype">void</font>)<font class="keyword"> </font>{ <font class="keywordflow">return</font> error_message; } -00107 }; -00108 +00105 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> AUDIO_HANDLE; +00106 <font class="keyword">typedef</font> AudioDeviceID DEVICE_ID; +00107 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE; +00108 <font class="keyword">typedef</font> pthread_mutex_t MUTEX; 00109 -00110 <font class="comment">// *************************************************** //</font> -00111 <font class="comment">//</font> -00112 <font class="comment">// RtAudio class declaration.</font> -00113 <font class="comment">//</font> -00114 <font class="comment">// *************************************************** //</font> -00115 -<a name="l00116"></a><a class="code" href="classRtAudio.html">00116</a> <font class="keyword">class </font><a class="code" href="classRtAudio.html">RtAudio</a> -00117 { -00118 <font class="keyword">public</font>: -00119 -00120 <font class="comment">// Support for signed integers and floats. Audio data fed to/from</font> -00121 <font class="comment">// the tickStream() routine is assumed to ALWAYS be in host</font> -00122 <font class="comment">// byte order. The internal routines will automatically take care of</font> -00123 <font class="comment">// any necessary byte-swapping between the host format and the</font> -00124 <font class="comment">// soundcard. Thus, endian-ness is not a concern in the following</font> -00125 <font class="comment">// format definitions.</font> -<a name="l00126"></a><a class="code" href="classRtAudio.html#s0">00126</a> <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> RTAUDIO_FORMAT; -<a name="l00127"></a><a class="code" href="classRtAudio.html#p0">00127</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT8; -<a name="l00128"></a><a class="code" href="classRtAudio.html#p1">00128</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT16; -<a name="l00129"></a><a class="code" href="classRtAudio.html#p2">00129</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT24; -<a name="l00130"></a><a class="code" href="classRtAudio.html#p3">00130</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT32; -<a name="l00131"></a><a class="code" href="classRtAudio.html#p4">00131</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_FLOAT32; -<a name="l00132"></a><a class="code" href="classRtAudio.html#p5">00132</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_FLOAT64; -00133 -00134 <font class="comment">//static const int MAX_SAMPLE_RATES = 14;</font> -00135 <font class="keyword">enum</font> { MAX_SAMPLE_RATES = 14 }; -00136 -00137 <font class="keyword">typedef</font> int (*RTAUDIO_CALLBACK)(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">int</font> bufferSize, <font class="keywordtype">void</font> *userData); -00138 -<a name="l00139"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html">00139</a> <font class="keyword">typedef</font> <font class="keyword">struct </font>{ -<a name="l00140"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m0">00140</a> <font class="keywordtype">char</font> name[128]; -<a name="l00141"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m1">00141</a> DEVICE_ID id[2]; -<a name="l00142"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m2">00142</a> <font class="keywordtype">bool</font> probed; -<a name="l00143"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m3">00143</a> <font class="keywordtype">int</font> maxOutputChannels; -<a name="l00144"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m4">00144</a> <font class="keywordtype">int</font> maxInputChannels; -<a name="l00145"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m5">00145</a> <font class="keywordtype">int</font> maxDuplexChannels; -<a name="l00146"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m6">00146</a> <font class="keywordtype">int</font> minOutputChannels; -<a name="l00147"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m7">00147</a> <font class="keywordtype">int</font> minInputChannels; -<a name="l00148"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m8">00148</a> <font class="keywordtype">int</font> minDuplexChannels; -<a name="l00149"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m9">00149</a> <font class="keywordtype">bool</font> hasDuplexSupport; -<a name="l00150"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m10">00150</a> <font class="keywordtype">int</font> nSampleRates; -<a name="l00151"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m11">00151</a> <font class="keywordtype">int</font> sampleRates[MAX_SAMPLE_RATES]; -<a name="l00152"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m12">00152</a> RTAUDIO_FORMAT nativeFormats; -00153 } RTAUDIO_DEVICE; -00154 +00110 <font class="preprocessor">#endif</font> +00111 <font class="preprocessor"></font> +00112 +00113 <font class="comment">/************************************************************************/</font> +00126 <font class="comment">/************************************************************************/</font> +00127 +00128 <font class="keyword">class </font><a class="code" href="classRtError.html">RtError</a> +00129 { +00130 <font class="keyword">public</font>: +<a name="l00132"></a><a class="code" href="classRtError.html#s11">00132</a> <font class="keyword">enum</font> TYPE { +00133 WARNING, +00134 DEBUG_WARNING, +00135 UNSPECIFIED, +00136 NO_DEVICES_FOUND, +00137 INVALID_DEVICE, +00138 INVALID_STREAM, +00139 MEMORY_ERROR, +00140 INVALID_PARAMETER, +00141 DRIVER_ERROR, +00142 SYSTEM_ERROR, +00143 THREAD_ERROR +00144 }; +00145 +00146 <font class="keyword">protected</font>: +00147 <font class="keywordtype">char</font> error_message[256]; +00148 TYPE type; +00149 +00150 <font class="keyword">public</font>: +00152 <a class="code" href="classRtError.html#a0">RtError</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *p, TYPE tipe = RtError::UNSPECIFIED); +00153 +00155 <font class="keyword">virtual</font> <a class="code" href="classRtError.html#a1">~RtError</a>(<font class="keywordtype">void</font>); 00156 -00163 <a class="code" href="classRtAudio.html#a0">RtAudio</a>(); -00164 +00158 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classRtError.html#a2">printMessage</a>(<font class="keywordtype">void</font>); +00159 +<a name="l00161"></a><a class="code" href="classRtError.html#a3">00161</a> <font class="keyword">virtual</font> <font class="keyword">const</font> TYPE& <a class="code" href="classRtError.html#a3">getType</a>(<font class="keywordtype">void</font>)<font class="keyword"> </font>{ <font class="keywordflow">return</font> type; } +00162 +<a name="l00164"></a><a class="code" href="classRtError.html#a4">00164</a> <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="classRtError.html#a4">getMessage</a>(<font class="keywordtype">void</font>)<font class="keyword"> </font>{ <font class="keywordflow">return</font> error_message; } +00165 }; 00166 -00177 <a class="code" href="classRtAudio.html#a0">RtAudio</a>(<font class="keywordtype">int</font> *streamId, -00178 <font class="keywordtype">int</font> outputDevice, <font class="keywordtype">int</font> outputChannels, -00179 <font class="keywordtype">int</font> inputDevice, <font class="keywordtype">int</font> inputChannels, -00180 RTAUDIO_FORMAT format, <font class="keywordtype">int</font> sampleRate, -00181 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers); -00182 +00167 +00168 <font class="comment">// This public structure type is used to pass callback information</font> +00169 <font class="comment">// between the private RtAudio stream structure and global callback</font> +00170 <font class="comment">// handling functions.</font> +00171 <font class="keyword">typedef</font> <font class="keyword">struct </font>{ +00172 <font class="keywordtype">void</font> *object; <font class="comment">// Used as a "this" pointer.</font> +00173 <font class="keywordtype">int</font> streamId; +00174 DEVICE_ID device[2]; +00175 THREAD_HANDLE thread; +00176 <font class="keywordtype">void</font> *callback; +00177 <font class="keywordtype">void</font> *buffers; +00178 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> waitTime; +00179 <font class="keywordtype">bool</font> blockTick; +00180 <font class="keywordtype">bool</font> stopStream; +00181 <font class="keywordtype">bool</font> usingCallback; +00182 <font class="keywordtype">void</font> *userData; +00183 } CALLBACK_INFO; 00184 -00188 <a class="code" href="classRtAudio.html#a2">~RtAudio</a>(); -00189 +00185 +00186 <font class="comment">// *************************************************** //</font> +00187 <font class="comment">//</font> +00188 <font class="comment">// RtAudio class declaration.</font> +00189 <font class="comment">//</font> +00190 <font class="comment">// *************************************************** //</font> 00191 -00218 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a3">openStream</a>(<font class="keywordtype">int</font> outputDevice, <font class="keywordtype">int</font> outputChannels, -00219 <font class="keywordtype">int</font> inputDevice, <font class="keywordtype">int</font> inputChannels, -00220 RTAUDIO_FORMAT format, <font class="keywordtype">int</font> sampleRate, -00221 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers); -00222 -00224 -00243 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a4">setStreamCallback</a>(<font class="keywordtype">int</font> streamId, RTAUDIO_CALLBACK callback, <font class="keywordtype">void</font> *userData); -00244 -00246 -00253 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a5">cancelStreamCallback</a>(<font class="keywordtype">int</font> streamId); -00254 -00256 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a6">getDeviceCount</a>(<font class="keywordtype">void</font>); -00257 +00192 <font class="keyword">class </font><a class="code" href="classRtAudio.html">RtAudio</a> +00193 { +00194 <font class="keyword">public</font>: +00195 +00196 <font class="comment">// Support for signed integers and floats. Audio data fed to/from</font> +00197 <font class="comment">// the tickStream() routine is assumed to ALWAYS be in host</font> +00198 <font class="comment">// byte order. The internal routines will automatically take care of</font> +00199 <font class="comment">// any necessary byte-swapping between the host format and the</font> +00200 <font class="comment">// soundcard. Thus, endian-ness is not a concern in the following</font> +00201 <font class="comment">// format definitions.</font> +00202 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> RTAUDIO_FORMAT; +<a name="l00203"></a><a class="code" href="classRtAudio.html#p0">00203</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT8; +<a name="l00204"></a><a class="code" href="classRtAudio.html#p1">00204</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT16; +<a name="l00205"></a><a class="code" href="classRtAudio.html#p2">00205</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT24; +<a name="l00206"></a><a class="code" href="classRtAudio.html#p3">00206</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT32; +<a name="l00207"></a><a class="code" href="classRtAudio.html#p4">00207</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_FLOAT32; +<a name="l00208"></a><a class="code" href="classRtAudio.html#p5">00208</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_FLOAT64; +00210 <font class="comment">//static const int MAX_SAMPLE_RATES = 14;</font> +00211 <font class="keyword">enum</font> { MAX_SAMPLE_RATES = 14 }; +00212 +00213 <font class="keyword">typedef</font> int (*RTAUDIO_CALLBACK)(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">int</font> bufferSize, <font class="keywordtype">void</font> *userData); +00214 +<a name="l00216"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html">00216</a> <font class="keyword">typedef</font> <font class="keyword">struct </font>{ +<a name="l00217"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m0">00217</a> <font class="keywordtype">char</font> name[128]; +00218 DEVICE_ID id[2]; <font class="comment">/* No value reported by getDeviceInfo(). */</font> +<a name="l00219"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m2">00219</a> <font class="keywordtype">bool</font> probed; +<a name="l00220"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m3">00220</a> <font class="keywordtype">int</font> maxOutputChannels; +<a name="l00221"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m4">00221</a> <font class="keywordtype">int</font> maxInputChannels; +<a name="l00222"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m5">00222</a> <font class="keywordtype">int</font> maxDuplexChannels; +<a name="l00223"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m6">00223</a> <font class="keywordtype">int</font> minOutputChannels; +<a name="l00224"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m7">00224</a> <font class="keywordtype">int</font> minInputChannels; +<a name="l00225"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m8">00225</a> <font class="keywordtype">int</font> minDuplexChannels; +<a name="l00226"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m9">00226</a> <font class="keywordtype">bool</font> hasDuplexSupport; +<a name="l00227"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m10">00227</a> <font class="keywordtype">bool</font> isDefault; +<a name="l00228"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m11">00228</a> <font class="keywordtype">int</font> nSampleRates; +<a name="l00229"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m12">00229</a> <font class="keywordtype">int</font> sampleRates[MAX_SAMPLE_RATES]; +<a name="l00230"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m13">00230</a> RTAUDIO_FORMAT nativeFormats; +00231 } RTAUDIO_DEVICE; +00232 +00234 +00240 <a class="code" href="classRtAudio.html#a0">RtAudio</a>(); +00241 +00243 +00254 <a class="code" href="classRtAudio.html#a0">RtAudio</a>(<font class="keywordtype">int</font> *streamId, +00255 <font class="keywordtype">int</font> outputDevice, <font class="keywordtype">int</font> outputChannels, +00256 <font class="keywordtype">int</font> inputDevice, <font class="keywordtype">int</font> inputChannels, +00257 RTAUDIO_FORMAT format, <font class="keywordtype">int</font> sampleRate, +00258 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers); 00259 -00269 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a7">getDeviceInfo</a>(<font class="keywordtype">int</font> device, RTAUDIO_DEVICE *info); -00270 -00272 -00277 <font class="keywordtype">char</font> * <font class="keyword">const</font> <a class="code" href="classRtAudio.html#a8">getStreamBuffer</a>(<font class="keywordtype">int</font> streamId); -00278 -00280 -00285 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a9">tickStream</a>(<font class="keywordtype">int</font> streamId); -00286 -00288 -00292 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a10">closeStream</a>(<font class="keywordtype">int</font> streamId); -00293 -00295 -00299 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a11">startStream</a>(<font class="keywordtype">int</font> streamId); -00300 -00302 -00306 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a12">stopStream</a>(<font class="keywordtype">int</font> streamId); -00307 -00309 -00313 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a13">abortStream</a>(<font class="keywordtype">int</font> streamId); -00314 -00316 -00321 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a14">streamWillBlock</a>(<font class="keywordtype">int</font> streamId); -00322 -00323 <font class="keyword">protected</font>: -00324 -00325 <font class="keyword">private</font>: -00326 -00327 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> SAMPLE_RATES[MAX_SAMPLE_RATES]; -00328 -00329 <font class="keyword">enum</font> { FAILURE, SUCCESS }; -00330 -00331 <font class="keyword">enum</font> STREAM_MODE { -00332 PLAYBACK, -00333 RECORD, -00334 DUPLEX, -00335 UNINITIALIZED = -75 -00336 }; -00337 -00338 <font class="keyword">enum</font> STREAM_STATE { -00339 STREAM_STOPPED, -00340 STREAM_RUNNING -00341 }; -00342 -00343 <font class="keyword">typedef</font> <font class="keyword">struct </font>{ -00344 <font class="keywordtype">int</font> device[2]; <font class="comment">// Playback and record, respectively.</font> -00345 STREAM_MODE mode; <font class="comment">// PLAYBACK, RECORD, or DUPLEX.</font> -00346 AUDIO_HANDLE handle[2]; <font class="comment">// Playback and record handles, respectively.</font> -00347 STREAM_STATE state; <font class="comment">// STOPPED or RUNNING</font> -00348 <font class="keywordtype">char</font> *userBuffer; -00349 <font class="keywordtype">char</font> *deviceBuffer; -00350 <font class="keywordtype">bool</font> doConvertBuffer[2]; <font class="comment">// Playback and record, respectively.</font> -00351 <font class="keywordtype">bool</font> deInterleave[2]; <font class="comment">// Playback and record, respectively.</font> -00352 <font class="keywordtype">bool</font> doByteSwap[2]; <font class="comment">// Playback and record, respectively.</font> -00353 <font class="keywordtype">int</font> sampleRate; -00354 <font class="keywordtype">int</font> bufferSize; -00355 <font class="keywordtype">int</font> nBuffers; -00356 <font class="keywordtype">int</font> nUserChannels[2]; <font class="comment">// Playback and record, respectively.</font> -00357 <font class="keywordtype">int</font> nDeviceChannels[2]; <font class="comment">// Playback and record channels, respectively.</font> -00358 RTAUDIO_FORMAT userFormat; -00359 RTAUDIO_FORMAT deviceFormat[2]; <font class="comment">// Playback and record, respectively.</font> -00360 <font class="keywordtype">bool</font> usingCallback; -00361 THREAD_HANDLE thread; -00362 MUTEX mutex; -00363 RTAUDIO_CALLBACK callback; -00364 <font class="keywordtype">void</font> *userData; -00365 } RTAUDIO_STREAM; -00366 -00367 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">short</font> INT16; -00368 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">int</font> INT32; -00369 <font class="keyword">typedef</font> <font class="keywordtype">float</font> FLOAT32; -00370 <font class="keyword">typedef</font> <font class="keywordtype">double</font> FLOAT64; -00371 -00372 <font class="keywordtype">char</font> message[256]; -00373 <font class="keywordtype">int</font> nDevices; -00374 RTAUDIO_DEVICE *devices; +00261 +00265 <a class="code" href="classRtAudio.html#a2">~RtAudio</a>(); +00266 +00268 +00295 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a3">openStream</a>(<font class="keywordtype">int</font> outputDevice, <font class="keywordtype">int</font> outputChannels, +00296 <font class="keywordtype">int</font> inputDevice, <font class="keywordtype">int</font> inputChannels, +00297 RTAUDIO_FORMAT format, <font class="keywordtype">int</font> sampleRate, +00298 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers); +00299 +00301 +00320 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a4">setStreamCallback</a>(<font class="keywordtype">int</font> streamId, RTAUDIO_CALLBACK callback, <font class="keywordtype">void</font> *userData); +00321 +00323 +00330 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a5">cancelStreamCallback</a>(<font class="keywordtype">int</font> streamId); +00331 +00333 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a6">getDeviceCount</a>(<font class="keywordtype">void</font>); +00334 +00336 +00344 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a7">getDeviceInfo</a>(<font class="keywordtype">int</font> device, RTAUDIO_DEVICE *info); +00345 +00347 +00352 <font class="keywordtype">char</font> * <font class="keyword">const</font> <a class="code" href="classRtAudio.html#a8">getStreamBuffer</a>(<font class="keywordtype">int</font> streamId); +00353 +00355 +00360 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a9">tickStream</a>(<font class="keywordtype">int</font> streamId); +00361 +00363 +00367 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a10">closeStream</a>(<font class="keywordtype">int</font> streamId); +00368 +00370 +00374 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a11">startStream</a>(<font class="keywordtype">int</font> streamId); 00375 -00376 std::map<int, void *> streams; 00377 -00379 <font class="keywordtype">void</font> error(RtError::TYPE type); -00380 -00385 <font class="keywordtype">void</font> initialize(<font class="keywordtype">void</font>); -00386 -00388 <font class="keywordtype">void</font> clearDeviceInfo(RTAUDIO_DEVICE *info); +00381 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a12">stopStream</a>(<font class="keywordtype">int</font> streamId); +00382 +00384 +00388 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a13">abortStream</a>(<font class="keywordtype">int</font> streamId); 00389 -00397 <font class="keywordtype">void</font> probeDeviceInfo(RTAUDIO_DEVICE *info); -00398 -00405 <font class="keywordtype">bool</font> probeDeviceOpen(<font class="keywordtype">int</font> device, RTAUDIO_STREAM *stream, -00406 STREAM_MODE mode, <font class="keywordtype">int</font> channels, -00407 <font class="keywordtype">int</font> sampleRate, RTAUDIO_FORMAT format, -00408 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers); +00391 +00396 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a14">streamWillBlock</a>(<font class="keywordtype">int</font> streamId); +00397 +00398 <font class="preprocessor">#if (defined(__MACOSX_CORE__) || defined(__WINDOWS_ASIO__))</font> +00399 <font class="preprocessor"></font> <font class="comment">// This function is intended for internal use only. It must be</font> +00400 <font class="comment">// public because it is called by the internal callback handler,</font> +00401 <font class="comment">// which is not a member of RtAudio. External use of this function</font> +00402 <font class="comment">// will most likely produce highly undesireable results!</font> +00403 <font class="keywordtype">void</font> callbackEvent(<font class="keywordtype">int</font> streamId, DEVICE_ID deviceId, <font class="keywordtype">void</font> *inData, <font class="keywordtype">void</font> *outData); +00404 <font class="preprocessor">#endif</font> +00405 <font class="preprocessor"></font> +00406 <font class="keyword">protected</font>: +00407 +00408 <font class="keyword">private</font>: 00409 -00416 <font class="keywordtype">void</font> *verifyStream(<font class="keywordtype">int</font> streamId); -00417 -00422 <font class="keywordtype">void</font> convertStreamBuffer(RTAUDIO_STREAM *stream, STREAM_MODE mode); -00423 -00425 <font class="keywordtype">void</font> byteSwapBuffer(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">int</font> samples, RTAUDIO_FORMAT format); -00426 -00428 <font class="keywordtype">int</font> formatBytes(RTAUDIO_FORMAT format); -00429 }; -00430 -00431 <font class="comment">// Uncomment the following definition to have extra information spewed to stderr.</font> -00432 <font class="comment">//#define RTAUDIO_DEBUG</font> -00433 -00434 <font class="preprocessor">#endif</font> -</font></pre></div><HR>
-
-<table><tr><td><img src="../images/ccrma.gif">
- <td>©2001-2002 CCRMA, Stanford University. All Rights Reserved.<br>
- Maintained by Gary P. Scavone, <a href="mailto:gary@ccrma.stanford.edu">gary@ccrma.stanford.edu</a><P>
-</table>
-
-</BODY>
+00410 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> SAMPLE_RATES[MAX_SAMPLE_RATES]; +00411 +00412 <font class="keyword">enum</font> { FAILURE, SUCCESS }; +00413 +00414 <font class="keyword">enum</font> STREAM_MODE { +00415 OUTPUT, +00416 INPUT, +00417 DUPLEX, +00418 UNINITIALIZED = -75 +00419 }; +00420 +00421 <font class="keyword">enum</font> STREAM_STATE { +00422 STREAM_STOPPED, +00423 STREAM_RUNNING +00424 }; +00425 +00426 <font class="keyword">typedef</font> <font class="keyword">struct </font>{ +00427 <font class="keywordtype">int</font> device[2]; <font class="comment">// Playback and record, respectively.</font> +00428 STREAM_MODE mode; <font class="comment">// OUTPUT, INPUT, or DUPLEX.</font> +00429 AUDIO_HANDLE handle[2]; <font class="comment">// Playback and record handles, respectively.</font> +00430 STREAM_STATE state; <font class="comment">// STOPPED or RUNNING</font> +00431 <font class="keywordtype">char</font> *userBuffer; +00432 <font class="keywordtype">char</font> *deviceBuffer; +00433 <font class="keywordtype">bool</font> doConvertBuffer[2]; <font class="comment">// Playback and record, respectively.</font> +00434 <font class="keywordtype">bool</font> deInterleave[2]; <font class="comment">// Playback and record, respectively.</font> +00435 <font class="keywordtype">bool</font> doByteSwap[2]; <font class="comment">// Playback and record, respectively.</font> +00436 <font class="keywordtype">int</font> sampleRate; +00437 <font class="keywordtype">int</font> bufferSize; +00438 <font class="keywordtype">int</font> nBuffers; +00439 <font class="keywordtype">int</font> nUserChannels[2]; <font class="comment">// Playback and record, respectively.</font> +00440 <font class="keywordtype">int</font> nDeviceChannels[2]; <font class="comment">// Playback and record channels, respectively.</font> +00441 RTAUDIO_FORMAT userFormat; +00442 RTAUDIO_FORMAT deviceFormat[2]; <font class="comment">// Playback and record, respectively.</font> +00443 MUTEX mutex; +00444 CALLBACK_INFO callbackInfo; +00445 } RTAUDIO_STREAM; +00446 +00447 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">short</font> INT16; +00448 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">int</font> INT32; +00449 <font class="keyword">typedef</font> <font class="keywordtype">float</font> FLOAT32; +00450 <font class="keyword">typedef</font> <font class="keywordtype">double</font> FLOAT64; +00451 +00452 <font class="keywordtype">char</font> message[256]; +00453 <font class="keywordtype">int</font> nDevices; +00454 RTAUDIO_DEVICE *devices; +00455 +00456 std::map<int, void *> streams; +00457 +00459 <font class="keywordtype">void</font> error(RtError::TYPE type); +00460 +00465 <font class="keywordtype">void</font> initialize(<font class="keywordtype">void</font>); +00466 +00471 <font class="keywordtype">int</font> getDefaultInputDevice(<font class="keywordtype">void</font>); +00472 +00477 <font class="keywordtype">int</font> getDefaultOutputDevice(<font class="keywordtype">void</font>); +00478 +00480 <font class="keywordtype">void</font> clearDeviceInfo(RTAUDIO_DEVICE *info); +00481 +00489 <font class="keywordtype">void</font> probeDeviceInfo(RTAUDIO_DEVICE *info); +00490 +00497 <font class="keywordtype">bool</font> probeDeviceOpen(<font class="keywordtype">int</font> device, RTAUDIO_STREAM *stream, +00498 STREAM_MODE mode, <font class="keywordtype">int</font> channels, +00499 <font class="keywordtype">int</font> sampleRate, RTAUDIO_FORMAT format, +00500 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers); +00501 +00508 <font class="keywordtype">void</font> *verifyStream(<font class="keywordtype">int</font> streamId); +00509 +00514 <font class="keywordtype">void</font> convertStreamBuffer(RTAUDIO_STREAM *stream, STREAM_MODE mode); +00515 +00517 <font class="keywordtype">void</font> byteSwapBuffer(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">int</font> samples, RTAUDIO_FORMAT format); +00518 +00520 <font class="keywordtype">int</font> formatBytes(RTAUDIO_FORMAT format); +00521 }; +00522 +00523 <font class="comment">// Define the following flag to have extra information spewed to stderr.</font> +00524 <font class="comment">//#define __RTAUDIO_DEBUG__</font> +00525 +00526 <font class="preprocessor">#endif</font> +</font></pre></div><HR> + +<table><tr><td><img src="../images/ccrma.gif"> + <td>©2001-2002 Gary P. Scavone, CCRMA, Stanford University. All Rights Reserved.<br> + Maintained by Gary P. Scavone, <a href="mailto:gary@ccrma.stanford.edu">gary@ccrma.stanford.edu</a><P> +</table> + +</BODY> </HTML> |
