summaryrefslogtreecommitdiff
path: root/doc/html/RtAudio_8h-source.html
diff options
context:
space:
mode:
authorGary Scavone <gary@music.mcgill.ca>2013-10-11 00:00:56 +0200
committerStephen Sinclair <sinclair@music.mcgill.ca>2013-10-11 00:00:56 +0200
commit830706e4368bb27d4c7d8138fbce4e393cedcd2f (patch)
treef549855bc7641bfb77728111a9ec11e67c46390b /doc/html/RtAudio_8h-source.html
parent7ab3b73d98f92e07d6915e6620a7fa54f6164586 (diff)
Release 3.0 tarball3.0
Diffstat (limited to 'doc/html/RtAudio_8h-source.html')
-rw-r--r--doc/html/RtAudio_8h-source.html823
1 files changed, 514 insertions, 309 deletions
diff --git a/doc/html/RtAudio_8h-source.html b/doc/html/RtAudio_8h-source.html
index ffe382d..7c78353 100644
--- a/doc/html/RtAudio_8h-source.html
+++ b/doc/html/RtAudio_8h-source.html
@@ -7,328 +7,533 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.2.8.1 -->
-<h1>RtAudio.h</h1><div class="fragment"><pre>00001 <font class="comment">/************************************************************************/</font>
-00038 <font class="comment">/************************************************************************/</font>
+<!-- Generated by Doxygen 1.3.4 -->
+<h1>RtAudio.h</h1><div class="fragment"><pre>00001 <span class="comment">/************************************************************************/</span>
+00038 <span class="comment">/************************************************************************/</span>
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 &lt;map&gt;</font>
-00044
-00045 <font class="preprocessor">#if defined(__LINUX_ALSA__)</font>
-00046 <font class="preprocessor"></font><font class="preprocessor"> #include &lt;alsa/asoundlib.h&gt;</font>
-00047 <font class="preprocessor"> #include &lt;pthread.h&gt;</font>
-00048 <font class="preprocessor"> #include &lt;unistd.h&gt;</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 &lt;pthread.h&gt;</font>
-00057 <font class="preprocessor"> #include &lt;unistd.h&gt;</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 &lt;windows.h&gt;</font>
-00066 <font class="preprocessor"> #include &lt;process.h&gt;</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;
+00040 <span class="comment">// RtAudio: Version 3.0, 11 March 2004</span>
+00041
+00042 <span class="preprocessor">#ifndef __RTAUDIO_H</span>
+00043 <span class="preprocessor"></span><span class="preprocessor">#define __RTAUDIO_H</span>
+00044 <span class="preprocessor"></span>
+00045 <span class="preprocessor">#include "RtError.h"</span>
+00046 <span class="preprocessor">#include &lt;string&gt;</span>
+00047 <span class="preprocessor">#include &lt;vector&gt;</span>
+00048
+00049 <span class="comment">// Operating system dependent thread functionality.</span>
+00050 <span class="preprocessor">#if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__)</span>
+00051 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;windows.h&gt;</span>
+00052 <span class="preprocessor"> #include &lt;process.h&gt;</span>
+00053
+00054 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ThreadHandle;
+00055 <span class="keyword">typedef</span> CRITICAL_SECTION StreamMutex;
+00056
+00057 <span class="preprocessor">#else // Various unix flavors with pthread support.</span>
+00058 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;pthread.h&gt;</span>
+00059
+00060 <span class="keyword">typedef</span> pthread_t ThreadHandle;
+00061 <span class="keyword">typedef</span> pthread_mutex_t StreamMutex;
+00062
+00063 <span class="preprocessor">#endif</span>
+00064 <span class="preprocessor"></span>
+00065 <span class="comment">// This global structure type is used to pass callback information</span>
+00066 <span class="comment">// between the private RtAudio stream structure and global callback</span>
+00067 <span class="comment">// handling functions.</span>
+00068 <span class="keyword">struct </span>CallbackInfo {
+00069 <span class="keywordtype">void</span> *object; <span class="comment">// Used as a "this" pointer.</span>
+00070 ThreadHandle thread;
+00071 <span class="keywordtype">bool</span> usingCallback;
+00072 <span class="keywordtype">void</span> *callback;
+00073 <span class="keywordtype">void</span> *userData;
+00074 <span class="keywordtype">void</span> *apiInfo; <span class="comment">// void pointer for API specific callback information</span>
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 &lt;windows.h&gt;</font>
-00082 <font class="preprocessor"> #include &lt;process.h&gt;</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 &lt;dmedia/audio.h&gt;</font>
-00091 <font class="preprocessor"> #include &lt;pthread.h&gt;</font>
-00092 <font class="preprocessor"> #include &lt;unistd.h&gt;</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
-00099 <font class="preprocessor">#elif defined(__MACOSX_CORE__)</font>
-00100 <font class="preprocessor"></font>
-00101 <font class="preprocessor"> #include &lt;CoreAudio/AudioHardware.h&gt;</font>
-00102 <font class="preprocessor"> #include &lt;pthread.h&gt;</font>
-00103
-00104 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> AUDIO_HANDLE;
-00105 <font class="keyword">typedef</font> AudioDeviceID DEVICE_ID;
-00106 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE;
-00107 <font class="keyword">typedef</font> pthread_mutex_t MUTEX;
-00108
-00109 <font class="preprocessor">#endif</font>
-00110 <font class="preprocessor"></font>
-00111
-00112 <font class="comment">/************************************************************************/</font>
-00125 <font class="comment">/************************************************************************/</font>
-00126
-00127 <font class="keyword">class </font><a class="code" href="classRtError.html">RtError</a>
-00128 {
-00129 <font class="keyword">public</font>:
-<a name="l00131"></a><a class="code" href="classRtError.html#s11">00131</a> <font class="keyword">enum</font> TYPE {
-00132 WARNING,
-00133 DEBUG_WARNING,
-00134 UNSPECIFIED,
-00135 NO_DEVICES_FOUND,
-00136 INVALID_DEVICE,
-00137 INVALID_STREAM,
-00138 MEMORY_ERROR,
-00139 INVALID_PARAMETER,
-00140 DRIVER_ERROR,
-00141 SYSTEM_ERROR,
-00142 THREAD_ERROR
-00143 };
-00144
-00145 <font class="keyword">protected</font>:
-00146 <font class="keywordtype">char</font> error_message[256];
-00147 TYPE type;
+00076 <span class="comment">// Default constructor.</span>
+00077 CallbackInfo()
+00078 :object(0), usingCallback(false), callback(0),
+00079 userData(0), apiInfo(0) {}
+00080 };
+00081
+00082 <span class="comment">// Support for signed integers and floats. Audio data fed to/from</span>
+00083 <span class="comment">// the tickStream() routine is assumed to ALWAYS be in host</span>
+00084 <span class="comment">// byte order. The internal routines will automatically take care of</span>
+00085 <span class="comment">// any necessary byte-swapping between the host format and the</span>
+00086 <span class="comment">// soundcard. Thus, endian-ness is not a concern in the following</span>
+00087 <span class="comment">// format definitions.</span>
+00088 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> RtAudioFormat;
+00089 <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_SINT8 = 0x1;
+00090 <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_SINT16 = 0x2;
+00091 <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_SINT24 = 0x4;
+00092 <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_SINT32 = 0x8;
+00093 <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_FLOAT32 = 0x10;
+00094 <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_FLOAT64 = 0x20;
+00096 <span class="keyword">typedef</span> int (*RtAudioCallback)(<span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> bufferSize, <span class="keywordtype">void</span> *userData);
+00097
+<a name="l00099"></a><a class="code" href="structRtAudioDeviceInfo.html">00099</a> <span class="keyword">struct </span><a class="code" href="structRtAudioDeviceInfo.html">RtAudioDeviceInfo</a> {
+<a name="l00100"></a><a class="code" href="structRtAudioDeviceInfo.html#o0">00100</a> std::string <a class="code" href="structRtAudioDeviceInfo.html#o0">name</a>;
+<a name="l00101"></a><a class="code" href="structRtAudioDeviceInfo.html#o1">00101</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudioDeviceInfo.html#o1">probed</a>;
+<a name="l00102"></a><a class="code" href="structRtAudioDeviceInfo.html#o2">00102</a> <span class="keywordtype">int</span> <a class="code" href="structRtAudioDeviceInfo.html#o2">outputChannels</a>;
+<a name="l00103"></a><a class="code" href="structRtAudioDeviceInfo.html#o3">00103</a> <span class="keywordtype">int</span> <a class="code" href="structRtAudioDeviceInfo.html#o3">inputChannels</a>;
+<a name="l00104"></a><a class="code" href="structRtAudioDeviceInfo.html#o4">00104</a> <span class="keywordtype">int</span> <a class="code" href="structRtAudioDeviceInfo.html#o4">duplexChannels</a>;
+<a name="l00105"></a><a class="code" href="structRtAudioDeviceInfo.html#o5">00105</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudioDeviceInfo.html#o5">isDefault</a>;
+<a name="l00106"></a><a class="code" href="structRtAudioDeviceInfo.html#o6">00106</a> std::vector&lt;int&gt; <a class="code" href="structRtAudioDeviceInfo.html#o6">sampleRates</a>;
+<a name="l00107"></a><a class="code" href="structRtAudioDeviceInfo.html#o7">00107</a> RtAudioFormat <a class="code" href="structRtAudioDeviceInfo.html#o7">nativeFormats</a>;
+00109 <span class="comment">// Default constructor.</span>
+00110 <a class="code" href="structRtAudioDeviceInfo.html">RtAudioDeviceInfo</a>()
+00111 :<a class="code" href="structRtAudioDeviceInfo.html#o1">probed</a>(false), <a class="code" href="structRtAudioDeviceInfo.html#o2">outputChannels</a>(0), <a class="code" href="structRtAudioDeviceInfo.html#o3">inputChannels</a>(0),
+00112 <a class="code" href="structRtAudioDeviceInfo.html#o4">duplexChannels</a>(0), <a class="code" href="structRtAudioDeviceInfo.html#o5">isDefault</a>(false), <a class="code" href="structRtAudioDeviceInfo.html#o7">nativeFormats</a>(0) {}
+00113 };
+00114
+00115 <span class="comment">// **************************************************************** //</span>
+00116 <span class="comment">//</span>
+00117 <span class="comment">// RtApi class declaration.</span>
+00118 <span class="comment">//</span>
+00119 <span class="comment">// Note that RtApi is an abstract base class and cannot be</span>
+00120 <span class="comment">// explicitly instantiated. The class RtAudio will create an</span>
+00121 <span class="comment">// instance of an RtApi subclass (RtApiOss, RtApiAlsa,</span>
+00122 <span class="comment">// RtApiJack, RtApiCore, RtApiAl, RtApiDs, or RtApiAsio).</span>
+00123 <span class="comment">//</span>
+00124 <span class="comment">// **************************************************************** //</span>
+00125
+00126 <span class="keyword">class </span>RtApi
+00127 {
+00128 <span class="keyword">public</span>:
+00129
+00130 RtApi();
+00131 <span class="keyword">virtual</span> ~RtApi();
+00132 <span class="keywordtype">void</span> openStream( <span class="keywordtype">int</span> outputDevice, <span class="keywordtype">int</span> outputChannels,
+00133 <span class="keywordtype">int</span> inputDevice, <span class="keywordtype">int</span> inputChannels,
+00134 RtAudioFormat format, <span class="keywordtype">int</span> sampleRate,
+00135 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
+00136 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData ) = 0;
+00137 <span class="keyword">virtual</span> <span class="keywordtype">void</span> cancelStreamCallback() = 0;
+00138 <span class="keywordtype">int</span> getDeviceCount(<span class="keywordtype">void</span>);
+00139 <a class="code" href="structRtAudioDeviceInfo.html">RtAudioDeviceInfo</a> getDeviceInfo( <span class="keywordtype">int</span> device );
+00140 <span class="keywordtype">char</span> * <span class="keyword">const</span> getStreamBuffer();
+00141 <span class="keyword">virtual</span> <span class="keywordtype">void</span> tickStream() = 0;
+00142 <span class="keyword">virtual</span> <span class="keywordtype">void</span> closeStream();
+00143 <span class="keyword">virtual</span> <span class="keywordtype">void</span> startStream() = 0;
+00144 <span class="keyword">virtual</span> <span class="keywordtype">void</span> stopStream() = 0;
+00145 <span class="keyword">virtual</span> <span class="keywordtype">void</span> abortStream() = 0;
+00146
+00147 <span class="keyword">protected</span>:
00148
-00149 <font class="keyword">public</font>:
-00151 <a class="code" href="classRtError.html#a0">RtError</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *p, TYPE tipe = RtError::UNSPECIFIED);
-00152
-00154 <font class="keyword">virtual</font> <a class="code" href="classRtError.html#a1">~RtError</a>(<font class="keywordtype">void</font>);
-00155
-00157 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classRtError.html#a2">printMessage</a>(<font class="keywordtype">void</font>);
-00158
-<a name="l00160"></a><a class="code" href="classRtError.html#a3">00160</a> <font class="keyword">virtual</font> <font class="keyword">const</font> TYPE&amp; <a class="code" href="classRtError.html#a3">getType</a>(<font class="keywordtype">void</font>)<font class="keyword"> </font>{ <font class="keywordflow">return</font> type; }
-00161
-<a name="l00163"></a><a class="code" href="classRtError.html#a4">00163</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; }
-00164 };
+00149 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAX_SAMPLE_RATES;
+00150 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SAMPLE_RATES[];
+00151
+00152 <span class="keyword">enum</span> { FAILURE, SUCCESS };
+00153
+00154 <span class="keyword">enum</span> StreamMode {
+00155 OUTPUT,
+00156 INPUT,
+00157 DUPLEX,
+00158 UNINITIALIZED = -75
+00159 };
+00160
+00161 <span class="keyword">enum</span> StreamState {
+00162 STREAM_STOPPED,
+00163 STREAM_RUNNING
+00164 };
00165
-00166
-00167 <font class="comment">// This public structure type is used to pass callback information</font>
-00168 <font class="comment">// between the private RtAudio stream structure and global callback</font>
-00169 <font class="comment">// handling functions.</font>
-00170 <font class="keyword">typedef</font> <font class="keyword">struct </font>{
-00171 <font class="keywordtype">void</font> *object; <font class="comment">// Used as a "this" pointer.</font>
-00172 <font class="keywordtype">int</font> streamId;
-00173 DEVICE_ID device[2];
-00174 THREAD_HANDLE thread;
-00175 <font class="keywordtype">void</font> *callback;
-00176 <font class="keywordtype">void</font> *buffers;
-00177 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> waitTime;
-00178 <font class="keywordtype">bool</font> blockTick;
-00179 <font class="keywordtype">bool</font> stopStream;
-00180 <font class="keywordtype">bool</font> usingCallback;
-00181 <font class="keywordtype">void</font> *userData;
-00182 } CALLBACK_INFO;
-00183
-00184
-00185 <font class="comment">// *************************************************** //</font>
-00186 <font class="comment">//</font>
-00187 <font class="comment">// RtAudio class declaration.</font>
-00188 <font class="comment">//</font>
-00189 <font class="comment">// *************************************************** //</font>
-00190
-00191 <font class="keyword">class </font><a class="code" href="classRtAudio.html">RtAudio</a>
-00192 {
-00193 <font class="keyword">public</font>:
-00194
-00195 <font class="comment">// Support for signed integers and floats. Audio data fed to/from</font>
-00196 <font class="comment">// the tickStream() routine is assumed to ALWAYS be in host</font>
-00197 <font class="comment">// byte order. The internal routines will automatically take care of</font>
-00198 <font class="comment">// any necessary byte-swapping between the host format and the</font>
-00199 <font class="comment">// soundcard. Thus, endian-ness is not a concern in the following</font>
-00200 <font class="comment">// format definitions.</font>
-00201 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> RTAUDIO_FORMAT;
-<a name="l00202"></a><a class="code" href="classRtAudio.html#p0">00202</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT8;
-<a name="l00203"></a><a class="code" href="classRtAudio.html#p1">00203</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT16;
-<a name="l00204"></a><a class="code" href="classRtAudio.html#p2">00204</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT24;
-<a name="l00205"></a><a class="code" href="classRtAudio.html#p3">00205</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT32;
-<a name="l00206"></a><a class="code" href="classRtAudio.html#p4">00206</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_FLOAT32;
-<a name="l00207"></a><a class="code" href="classRtAudio.html#p5">00207</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_FLOAT64;
-00209 <font class="comment">//static const int MAX_SAMPLE_RATES = 14;</font>
-00210 <font class="keyword">enum</font> { MAX_SAMPLE_RATES = 14 };
-00211
-00212 <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);
-00213
-<a name="l00215"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html">00215</a> <font class="keyword">typedef</font> <font class="keyword">struct </font>{
-<a name="l00216"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m0">00216</a> <font class="keywordtype">char</font> name[128];
-00217 DEVICE_ID id[2]; <font class="comment">/* No value reported by getDeviceInfo(). */</font>
-<a name="l00218"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m2">00218</a> <font class="keywordtype">bool</font> probed;
-<a name="l00219"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m3">00219</a> <font class="keywordtype">int</font> maxOutputChannels;
-<a name="l00220"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m4">00220</a> <font class="keywordtype">int</font> maxInputChannels;
-<a name="l00221"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m5">00221</a> <font class="keywordtype">int</font> maxDuplexChannels;
-<a name="l00222"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m6">00222</a> <font class="keywordtype">int</font> minOutputChannels;
-<a name="l00223"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m7">00223</a> <font class="keywordtype">int</font> minInputChannels;
-<a name="l00224"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m8">00224</a> <font class="keywordtype">int</font> minDuplexChannels;
-<a name="l00225"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m9">00225</a> <font class="keywordtype">bool</font> hasDuplexSupport;
-<a name="l00226"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m10">00226</a> <font class="keywordtype">bool</font> isDefault;
-<a name="l00227"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m11">00227</a> <font class="keywordtype">int</font> nSampleRates;
-<a name="l00228"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m12">00228</a> <font class="keywordtype">int</font> sampleRates[MAX_SAMPLE_RATES];
-<a name="l00229"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m13">00229</a> RTAUDIO_FORMAT nativeFormats;
-00230 } RTAUDIO_DEVICE;
+00166 <span class="comment">// A protected structure for audio streams.</span>
+00167 <span class="keyword">struct </span>RtApiStream {
+00168 <span class="keywordtype">int</span> device[2]; <span class="comment">// Playback and record, respectively.</span>
+00169 <span class="keywordtype">void</span> *apiHandle; <span class="comment">// void pointer for API specific stream handle information</span>
+00170 StreamMode mode; <span class="comment">// OUTPUT, INPUT, or DUPLEX.</span>
+00171 StreamState state; <span class="comment">// STOPPED or RUNNING</span>
+00172 <span class="keywordtype">char</span> *userBuffer;
+00173 <span class="keywordtype">char</span> *deviceBuffer;
+00174 <span class="keywordtype">bool</span> doConvertBuffer[2]; <span class="comment">// Playback and record, respectively.</span>
+00175 <span class="keywordtype">bool</span> deInterleave[2]; <span class="comment">// Playback and record, respectively.</span>
+00176 <span class="keywordtype">bool</span> doByteSwap[2]; <span class="comment">// Playback and record, respectively.</span>
+00177 <span class="keywordtype">int</span> sampleRate;
+00178 <span class="keywordtype">int</span> bufferSize;
+00179 <span class="keywordtype">int</span> nBuffers;
+00180 <span class="keywordtype">int</span> nUserChannels[2]; <span class="comment">// Playback and record, respectively.</span>
+00181 <span class="keywordtype">int</span> nDeviceChannels[2]; <span class="comment">// Playback and record channels, respectively.</span>
+00182 RtAudioFormat userFormat;
+00183 RtAudioFormat deviceFormat[2]; <span class="comment">// Playback and record, respectively.</span>
+00184 StreamMutex mutex;
+00185 CallbackInfo callbackInfo;
+00186
+00187 RtApiStream()
+00188 :apiHandle(0), userBuffer(0), deviceBuffer(0) {}
+00189 <span class="comment">// :apiHandle(0), mode(UNINITIALIZED), state(STREAM_STOPPED),</span>
+00190 <span class="comment">// userBuffer(0), deviceBuffer(0) {}</span>
+00191 };
+00192
+00193 <span class="comment">// A protected device structure for audio devices.</span>
+00194 <span class="keyword">struct </span>RtApiDevice {
+00195 std::string name;
+00196 <span class="keywordtype">bool</span> probed;
+00197 <span class="keywordtype">void</span> *apiDeviceId; <span class="comment">// void pointer for API specific device information</span>
+00198 <span class="keywordtype">int</span> maxOutputChannels;
+00199 <span class="keywordtype">int</span> maxInputChannels;
+00200 <span class="keywordtype">int</span> maxDuplexChannels;
+00201 <span class="keywordtype">int</span> minOutputChannels;
+00202 <span class="keywordtype">int</span> minInputChannels;
+00203 <span class="keywordtype">int</span> minDuplexChannels;
+00204 <span class="keywordtype">bool</span> hasDuplexSupport;
+00205 <span class="keywordtype">bool</span> isDefault;
+00206 std::vector&lt;int&gt; sampleRates;
+00207 RtAudioFormat nativeFormats;
+00209 <span class="comment">// Default constructor.</span>
+00210 RtApiDevice()
+00211 :probed(false), apiDeviceId(0), maxOutputChannels(0), maxInputChannels(0),
+00212 maxDuplexChannels(0), minOutputChannels(0), minInputChannels(0),
+00213 minDuplexChannels(0), isDefault(false), nativeFormats(0) {}
+00214 };
+00215
+00216 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">short</span> Int16;
+00217 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">int</span> Int32;
+00218 <span class="keyword">typedef</span> <span class="keywordtype">float</span> Float32;
+00219 <span class="keyword">typedef</span> <span class="keywordtype">double</span> Float64;
+00220
+00221 <span class="keywordtype">char</span> message_[256];
+00222 <span class="keywordtype">int</span> nDevices_;
+00223 std::vector&lt;RtApiDevice&gt; devices_;
+00224 RtApiStream stream_;
+00225
+00230 <span class="keyword">virtual</span> <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>) = 0;
00231
-00233
-00239 <a class="code" href="classRtAudio.html#a0">RtAudio</a>();
-00240
-00242
-00253 <a class="code" href="classRtAudio.html#a0">RtAudio</a>(<font class="keywordtype">int</font> *streamId,
-00254 <font class="keywordtype">int</font> outputDevice, <font class="keywordtype">int</font> outputChannels,
-00255 <font class="keywordtype">int</font> inputDevice, <font class="keywordtype">int</font> inputChannels,
-00256 RTAUDIO_FORMAT format, <font class="keywordtype">int</font> sampleRate,
-00257 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers);
-00258
-00260
-00264 <a class="code" href="classRtAudio.html#a2">~RtAudio</a>();
+00240 <span class="keyword">virtual</span> <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
+00241
+00250 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
+00251 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
+00252 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
+00253
+00258 <span class="keyword">virtual</span> <span class="keywordtype">int</span> getDefaultInputDevice(<span class="keywordtype">void</span>);
+00259
+00264 <span class="keyword">virtual</span> <span class="keywordtype">int</span> getDefaultOutputDevice(<span class="keywordtype">void</span>);
00265
-00267
-00294 <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,
-00295 <font class="keywordtype">int</font> inputDevice, <font class="keywordtype">int</font> inputChannels,
-00296 RTAUDIO_FORMAT format, <font class="keywordtype">int</font> sampleRate,
-00297 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers);
-00298
-00300
-00319 <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);
-00320
-00322
-00329 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a5">cancelStreamCallback</a>(<font class="keywordtype">int</font> streamId);
-00330
-00332 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a6">getDeviceCount</a>(<font class="keywordtype">void</font>);
-00333
-00335
-00343 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a7">getDeviceInfo</a>(<font class="keywordtype">int</font> device, RTAUDIO_DEVICE *info);
-00344
-00346
-00351 <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);
-00352
-00354
-00359 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a9">tickStream</a>(<font class="keywordtype">int</font> streamId);
+00267 <span class="keywordtype">void</span> clearDeviceInfo( RtApiDevice *info );
+00268
+00270 <span class="keywordtype">void</span> clearStreamInfo();
+00271
+00273 <span class="keywordtype">void</span> error( RtError::Type type );
+00274
+00279 <span class="keywordtype">void</span> verifyStream();
+00280
+00285 <span class="keywordtype">void</span> convertStreamBuffer( StreamMode mode );
+00286
+00288 <span class="keywordtype">void</span> byteSwapBuffer( <span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> samples, RtAudioFormat format );
+00289
+00291 <span class="keywordtype">int</span> formatBytes( RtAudioFormat format );
+00292 };
+00293
+00294
+00295 <span class="comment">// **************************************************************** //</span>
+00296 <span class="comment">//</span>
+00297 <span class="comment">// RtAudio class declaration.</span>
+00298 <span class="comment">//</span>
+00299 <span class="comment">// RtAudio is a "controller" used to select an available audio i/o</span>
+00300 <span class="comment">// interface. It presents a common API for the user to call but all</span>
+00301 <span class="comment">// functionality is implemented by the class RtAudioApi and its</span>
+00302 <span class="comment">// subclasses. RtAudio creates an instance of an RtAudioApi subclass</span>
+00303 <span class="comment">// based on the user's API choice. If no choice is made, RtAudio</span>
+00304 <span class="comment">// attempts to make a "logical" API selection.</span>
+00305 <span class="comment">//</span>
+00306 <span class="comment">// **************************************************************** //</span>
+00307
+<a name="l00308"></a><a class="code" href="classRtAudio.html">00308</a> <span class="keyword">class </span><a class="code" href="classRtAudio.html">RtAudio</a>
+00309 {
+00310 <span class="keyword">public</span>:
+00311
+<a name="l00313"></a><a class="code" href="classRtAudio.html#w8">00313</a> <span class="keyword">enum</span> <a class="code" href="classRtAudio.html#w8">RtAudioApi</a> {
+00314 <a class="code" href="classRtAudio.html#w8w0">UNSPECIFIED</a>,
+00315 <a class="code" href="classRtAudio.html#w8w1">LINUX_ALSA</a>,
+00316 <a class="code" href="classRtAudio.html#w8w2">LINUX_OSS</a>,
+00317 <a class="code" href="classRtAudio.html#w8w3">LINUX_JACK</a>,
+00318 <a class="code" href="classRtAudio.html#w8w4">MACOSX_CORE</a>,
+00319 <a class="code" href="classRtAudio.html#w8w5">IRIX_AL</a>,
+00320 <a class="code" href="classRtAudio.html#w8w6">WINDOWS_ASIO</a>,
+00321 <a class="code" href="classRtAudio.html#w8w7">WINDOWS_DS</a>
+00322 };
+00323
+00325
+00335 <a class="code" href="classRtAudio.html#a0">RtAudio</a>( RtAudioApi api=UNSPECIFIED );
+00336
+00338
+00349 <a class="code" href="classRtAudio.html#a0">RtAudio</a>( <span class="keywordtype">int</span> outputDevice, <span class="keywordtype">int</span> outputChannels,
+00350 <span class="keywordtype">int</span> inputDevice, <span class="keywordtype">int</span> inputChannels,
+00351 RtAudioFormat format, <span class="keywordtype">int</span> sampleRate,
+00352 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers, RtAudioApi api=UNSPECIFIED );
+00353
+00355
+00359 <a class="code" href="classRtAudio.html#a2">~RtAudio</a>();
00360
00362
-00366 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a10">closeStream</a>(<font class="keywordtype">int</font> streamId);
-00367
-00369
-00373 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a11">startStream</a>(<font class="keywordtype">int</font> streamId);
-00374
-00376
-00380 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a12">stopStream</a>(<font class="keywordtype">int</font> streamId);
-00381
-00383
-00387 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a13">abortStream</a>(<font class="keywordtype">int</font> streamId);
-00388
-00390
-00395 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a14">streamWillBlock</a>(<font class="keywordtype">int</font> streamId);
-00396
-00397 <font class="preprocessor">#if (defined(__MACOSX_CORE__) || defined(__WINDOWS_ASIO__))</font>
-00398 <font class="preprocessor"></font> <font class="comment">// This function is intended for internal use only. It must be</font>
-00399 <font class="comment">// public because it is called by the internal callback handler,</font>
-00400 <font class="comment">// which is not a member of RtAudio. External use of this function</font>
-00401 <font class="comment">// will most likely produce highly undesireable results!</font>
-00402 <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);
-00403 <font class="preprocessor">#endif</font>
-00404 <font class="preprocessor"></font>
-00405 <font class="keyword">protected</font>:
-00406
-00407 <font class="keyword">private</font>:
-00408
-00409 <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];
-00410
-00411 <font class="keyword">enum</font> { FAILURE, SUCCESS };
-00412
-00413 <font class="keyword">enum</font> STREAM_MODE {
-00414 OUTPUT,
-00415 INPUT,
-00416 DUPLEX,
-00417 UNINITIALIZED = -75
-00418 };
-00419
-00420 <font class="keyword">enum</font> STREAM_STATE {
-00421 STREAM_STOPPED,
-00422 STREAM_RUNNING
-00423 };
+00388 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a3">openStream</a>( <span class="keywordtype">int</span> outputDevice, <span class="keywordtype">int</span> outputChannels,
+00389 <span class="keywordtype">int</span> inputDevice, <span class="keywordtype">int</span> inputChannels,
+00390 RtAudioFormat format, <span class="keywordtype">int</span> sampleRate,
+00391 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
+00392
+00394
+<a name="l00413"></a><a class="code" href="classRtAudio.html#a4">00413</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a4">setStreamCallback</a>(RtAudioCallback callback, <span class="keywordtype">void</span> *userData) { rtapi_-&gt;setStreamCallback( callback, userData ); };
+00414
+00416
+<a name="l00423"></a><a class="code" href="classRtAudio.html#a5">00423</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a5">cancelStreamCallback</a>() { rtapi_-&gt;cancelStreamCallback(); };
00424
-00425 <font class="keyword">typedef</font> <font class="keyword">struct </font>{
-00426 <font class="keywordtype">int</font> device[2]; <font class="comment">// Playback and record, respectively.</font>
-00427 STREAM_MODE mode; <font class="comment">// OUTPUT, INPUT, or DUPLEX.</font>
-00428 AUDIO_HANDLE handle[2]; <font class="comment">// Playback and record handles, respectively.</font>
-00429 STREAM_STATE state; <font class="comment">// STOPPED or RUNNING</font>
-00430 <font class="keywordtype">char</font> *userBuffer;
-00431 <font class="keywordtype">char</font> *deviceBuffer;
-00432 <font class="keywordtype">bool</font> doConvertBuffer[2]; <font class="comment">// Playback and record, respectively.</font>
-00433 <font class="keywordtype">bool</font> deInterleave[2]; <font class="comment">// Playback and record, respectively.</font>
-00434 <font class="keywordtype">bool</font> doByteSwap[2]; <font class="comment">// Playback and record, respectively.</font>
-00435 <font class="keywordtype">int</font> sampleRate;
-00436 <font class="keywordtype">int</font> bufferSize;
-00437 <font class="keywordtype">int</font> nBuffers;
-00438 <font class="keywordtype">int</font> nUserChannels[2]; <font class="comment">// Playback and record, respectively.</font>
-00439 <font class="keywordtype">int</font> nDeviceChannels[2]; <font class="comment">// Playback and record channels, respectively.</font>
-00440 RTAUDIO_FORMAT userFormat;
-00441 RTAUDIO_FORMAT deviceFormat[2]; <font class="comment">// Playback and record, respectively.</font>
-00442 MUTEX mutex;
-00443 CALLBACK_INFO callbackInfo;
-00444 } RTAUDIO_STREAM;
-00445
-00446 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">short</font> INT16;
-00447 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">int</font> INT32;
-00448 <font class="keyword">typedef</font> <font class="keywordtype">float</font> FLOAT32;
-00449 <font class="keyword">typedef</font> <font class="keywordtype">double</font> FLOAT64;
-00450
-00451 <font class="keywordtype">char</font> message[256];
-00452 <font class="keywordtype">int</font> nDevices;
-00453 RTAUDIO_DEVICE *devices;
+<a name="l00426"></a><a class="code" href="classRtAudio.html#a6">00426</a> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a6">getDeviceCount</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> rtapi_-&gt;getDeviceCount(); };
+00427
+00429
+<a name="l00437"></a><a class="code" href="classRtAudio.html#a7">00437</a> <a class="code" href="structRtAudioDeviceInfo.html">RtAudioDeviceInfo</a> <a class="code" href="classRtAudio.html#a7">getDeviceInfo</a>(<span class="keywordtype">int</span> device) { <span class="keywordflow">return</span> rtapi_-&gt;getDeviceInfo( device ); };
+00438
+00440
+<a name="l00445"></a><a class="code" href="classRtAudio.html#a8">00445</a> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="classRtAudio.html#a8">getStreamBuffer</a>() { <span class="keywordflow">return</span> rtapi_-&gt;getStreamBuffer(); };
+00446
+00448
+<a name="l00453"></a><a class="code" href="classRtAudio.html#a9">00453</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a9">tickStream</a>() { rtapi_-&gt;tickStream(); };
00454
-00455 std::map&lt;int, void *&gt; streams;
00456
-00458 <font class="keywordtype">void</font> error(RtError::TYPE type);
-00459
-00464 <font class="keywordtype">void</font> initialize(<font class="keywordtype">void</font>);
-00465
-00470 <font class="keywordtype">int</font> getDefaultInputDevice(<font class="keywordtype">void</font>);
-00471
-00476 <font class="keywordtype">int</font> getDefaultOutputDevice(<font class="keywordtype">void</font>);
+<a name="l00460"></a><a class="code" href="classRtAudio.html#a10">00460</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a10">closeStream</a>() { rtapi_-&gt;closeStream(); };
+00461
+00463
+<a name="l00467"></a><a class="code" href="classRtAudio.html#a11">00467</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a11">startStream</a>() { rtapi_-&gt;startStream(); };
+00468
+00470
+<a name="l00474"></a><a class="code" href="classRtAudio.html#a12">00474</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a12">stopStream</a>() { rtapi_-&gt;stopStream(); };
+00475
00477
-00479 <font class="keywordtype">void</font> clearDeviceInfo(RTAUDIO_DEVICE *info);
-00480
-00488 <font class="keywordtype">void</font> probeDeviceInfo(RTAUDIO_DEVICE *info);
-00489
-00496 <font class="keywordtype">bool</font> probeDeviceOpen(<font class="keywordtype">int</font> device, RTAUDIO_STREAM *stream,
-00497 STREAM_MODE mode, <font class="keywordtype">int</font> channels,
-00498 <font class="keywordtype">int</font> sampleRate, RTAUDIO_FORMAT format,
-00499 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers);
-00500
-00507 <font class="keywordtype">void</font> *verifyStream(<font class="keywordtype">int</font> streamId);
-00508
-00513 <font class="keywordtype">void</font> convertStreamBuffer(RTAUDIO_STREAM *stream, STREAM_MODE mode);
-00514
-00516 <font class="keywordtype">void</font> byteSwapBuffer(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">int</font> samples, RTAUDIO_FORMAT format);
-00517
-00519 <font class="keywordtype">int</font> formatBytes(RTAUDIO_FORMAT format);
-00520 };
-00521
-00522 <font class="comment">// Define the following flag to have extra information spewed to stderr.</font>
-00523 <font class="comment">//#define __RTAUDIO_DEBUG__</font>
-00524
-00525 <font class="preprocessor">#endif</font>
-</font></pre></div><HR>
+<a name="l00481"></a><a class="code" href="classRtAudio.html#a13">00481</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a13">abortStream</a>() { rtapi_-&gt;abortStream(); };
+00482
+00483
+00484 <span class="keyword">protected</span>:
+00485
+00486 <span class="keywordtype">void</span> initialize( RtAudioApi api );
+00487
+00488 RtApi *rtapi_;
+00489 };
+00490
+00491
+00492 <span class="comment">// RtApi Subclass prototypes.</span>
+00493
+00494 <span class="preprocessor">#if defined(__LINUX_ALSA__)</span>
+00495 <span class="preprocessor"></span>
+00496 <span class="keyword">class </span>RtApiAlsa: <span class="keyword">public</span> RtApi
+00497 {
+00498 <span class="keyword">public</span>:
+00499
+00500 RtApiAlsa();
+00501 ~RtApiAlsa();
+00502 <span class="keywordtype">void</span> tickStream();
+00503 <span class="keywordtype">void</span> closeStream();
+00504 <span class="keywordtype">void</span> startStream();
+00505 <span class="keywordtype">void</span> stopStream();
+00506 <span class="keywordtype">void</span> abortStream();
+00507 <span class="keywordtype">int</span> streamWillBlock();
+00508 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
+00509 <span class="keywordtype">void</span> cancelStreamCallback();
+00510
+00511 <span class="keyword">private</span>:
+00512
+00513 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
+00514 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
+00515 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
+00516 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
+00517 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
+00518 };
+00519
+00520 <span class="preprocessor">#endif</span>
+00521 <span class="preprocessor"></span>
+00522 <span class="preprocessor">#if defined(__LINUX_JACK__)</span>
+00523 <span class="preprocessor"></span>
+00524 <span class="keyword">class </span>RtApiJack: <span class="keyword">public</span> RtApi
+00525 {
+00526 <span class="keyword">public</span>:
+00527
+00528 RtApiJack();
+00529 ~RtApiJack();
+00530 <span class="keywordtype">void</span> tickStream();
+00531 <span class="keywordtype">void</span> closeStream();
+00532 <span class="keywordtype">void</span> startStream();
+00533 <span class="keywordtype">void</span> stopStream();
+00534 <span class="keywordtype">void</span> abortStream();
+00535 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
+00536 <span class="keywordtype">void</span> cancelStreamCallback();
+00537 <span class="comment">// This function is intended for internal use only. It must be</span>
+00538 <span class="comment">// public because it is called by the internal callback handler,</span>
+00539 <span class="comment">// which is not a member of RtAudio. External use of this function</span>
+00540 <span class="comment">// will most likely produce highly undesireable results!</span>
+00541 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> nframes );
+00542
+00543 <span class="keyword">private</span>:
+00544
+00545 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
+00546 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
+00547 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
+00548 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
+00549 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
+00550 };
+00551
+00552 <span class="preprocessor">#endif</span>
+00553 <span class="preprocessor"></span>
+00554 <span class="preprocessor">#if defined(__LINUX_OSS__)</span>
+00555 <span class="preprocessor"></span>
+00556 <span class="keyword">class </span>RtApiOss: <span class="keyword">public</span> RtApi
+00557 {
+00558 <span class="keyword">public</span>:
+00559
+00560 RtApiOss();
+00561 ~RtApiOss();
+00562 <span class="keywordtype">void</span> tickStream();
+00563 <span class="keywordtype">void</span> closeStream();
+00564 <span class="keywordtype">void</span> startStream();
+00565 <span class="keywordtype">void</span> stopStream();
+00566 <span class="keywordtype">void</span> abortStream();
+00567 <span class="keywordtype">int</span> streamWillBlock();
+00568 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
+00569 <span class="keywordtype">void</span> cancelStreamCallback();
+00570
+00571 <span class="keyword">private</span>:
+00572
+00573 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
+00574 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
+00575 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
+00576 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
+00577 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
+00578 };
+00579
+00580 <span class="preprocessor">#endif</span>
+00581 <span class="preprocessor"></span>
+00582 <span class="preprocessor">#if defined(__MACOSX_CORE__)</span>
+00583 <span class="preprocessor"></span>
+00584 <span class="preprocessor">#include &lt;CoreAudio/AudioHardware.h&gt;</span>
+00585
+00586 <span class="keyword">class </span>RtApiCore: <span class="keyword">public</span> RtApi
+00587 {
+00588 <span class="keyword">public</span>:
+00589
+00590 RtApiCore();
+00591 ~RtApiCore();
+00592 <span class="keywordtype">int</span> getDefaultOutputDevice(<span class="keywordtype">void</span>);
+00593 <span class="keywordtype">int</span> getDefaultInputDevice(<span class="keywordtype">void</span>);
+00594 <span class="keywordtype">void</span> tickStream();
+00595 <span class="keywordtype">void</span> closeStream();
+00596 <span class="keywordtype">void</span> startStream();
+00597 <span class="keywordtype">void</span> stopStream();
+00598 <span class="keywordtype">void</span> abortStream();
+00599 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
+00600 <span class="keywordtype">void</span> cancelStreamCallback();
+00601
+00602 <span class="comment">// This function is intended for internal use only. It must be</span>
+00603 <span class="comment">// public because it is called by the internal callback handler,</span>
+00604 <span class="comment">// which is not a member of RtAudio. External use of this function</span>
+00605 <span class="comment">// will most likely produce highly undesireable results!</span>
+00606 <span class="keywordtype">void</span> callbackEvent( AudioDeviceID deviceId, <span class="keywordtype">void</span> *inData, <span class="keywordtype">void</span> *outData );
+00607
+00608 <span class="keyword">private</span>:
+00609
+00610 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
+00611 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
+00612 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
+00613 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
+00614 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
+00615 };
+00616
+00617 <span class="preprocessor">#endif</span>
+00618 <span class="preprocessor"></span>
+00619 <span class="preprocessor">#if defined(__WINDOWS_DS__)</span>
+00620 <span class="preprocessor"></span>
+00621 <span class="keyword">class </span>RtApiDs: <span class="keyword">public</span> RtApi
+00622 {
+00623 <span class="keyword">public</span>:
+00624
+00625 RtApiDs();
+00626 ~RtApiDs();
+00627 <span class="keywordtype">int</span> getDefaultOutputDevice(<span class="keywordtype">void</span>);
+00628 <span class="keywordtype">int</span> getDefaultInputDevice(<span class="keywordtype">void</span>);
+00629 <span class="keywordtype">void</span> tickStream();
+00630 <span class="keywordtype">void</span> closeStream();
+00631 <span class="keywordtype">void</span> startStream();
+00632 <span class="keywordtype">void</span> stopStream();
+00633 <span class="keywordtype">void</span> abortStream();
+00634 <span class="keywordtype">int</span> streamWillBlock();
+00635 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
+00636 <span class="keywordtype">void</span> cancelStreamCallback();
+00637
+00638 <span class="keyword">private</span>:
+00639
+00640 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
+00641 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
+00642 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
+00643 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
+00644 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
+00645 };
+00646
+00647 <span class="preprocessor">#endif</span>
+00648 <span class="preprocessor"></span>
+00649 <span class="preprocessor">#if defined(__WINDOWS_ASIO__)</span>
+00650 <span class="preprocessor"></span>
+00651 <span class="keyword">class </span>RtApiAsio: <span class="keyword">public</span> RtApi
+00652 {
+00653 <span class="keyword">public</span>:
+00654
+00655 RtApiAsio();
+00656 ~RtApiAsio();
+00657 <span class="keywordtype">void</span> tickStream();
+00658 <span class="keywordtype">void</span> closeStream();
+00659 <span class="keywordtype">void</span> startStream();
+00660 <span class="keywordtype">void</span> stopStream();
+00661 <span class="keywordtype">void</span> abortStream();
+00662 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
+00663 <span class="keywordtype">void</span> cancelStreamCallback();
+00664
+00665 <span class="comment">// This function is intended for internal use only. It must be</span>
+00666 <span class="comment">// public because it is called by the internal callback handler,</span>
+00667 <span class="comment">// which is not a member of RtAudio. External use of this function</span>
+00668 <span class="comment">// will most likely produce highly undesireable results!</span>
+00669 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">long</span> bufferIndex );
+00670
+00671 <span class="keyword">private</span>:
+00672
+00673 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
+00674 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
+00675 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
+00676 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
+00677 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
+00678 };
+00679
+00680 <span class="preprocessor">#endif</span>
+00681 <span class="preprocessor"></span>
+00682 <span class="preprocessor">#if defined(__IRIX_AL__)</span>
+00683 <span class="preprocessor"></span>
+00684 <span class="keyword">class </span>RtApiAl: <span class="keyword">public</span> RtApi
+00685 {
+00686 <span class="keyword">public</span>:
+00687
+00688 RtApiAl();
+00689 ~RtApiAl();
+00690 <span class="keywordtype">int</span> getDefaultOutputDevice(<span class="keywordtype">void</span>);
+00691 <span class="keywordtype">int</span> getDefaultInputDevice(<span class="keywordtype">void</span>);
+00692 <span class="keywordtype">void</span> tickStream();
+00693 <span class="keywordtype">void</span> closeStream();
+00694 <span class="keywordtype">void</span> startStream();
+00695 <span class="keywordtype">void</span> stopStream();
+00696 <span class="keywordtype">void</span> abortStream();
+00697 <span class="keywordtype">int</span> streamWillBlock();
+00698 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
+00699 <span class="keywordtype">void</span> cancelStreamCallback();
+00700
+00701 <span class="keyword">private</span>:
+00702
+00703 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
+00704 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
+00705 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
+00706 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
+00707 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
+00708 };
+00709
+00710 <span class="preprocessor">#endif</span>
+00711 <span class="preprocessor"></span>
+00712 <span class="comment">// Define the following flag to have extra information spewed to stderr.</span>
+00713 <span class="comment">//#define __RTAUDIO_DEBUG__</span>
+00714
+00715 <span class="preprocessor">#endif</span>
+</pre></div><HR>
-<table><tr><td><img src="../images/ccrma.gif">
- <td>&copy;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><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2001-2004 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, <a href="mailto:gary@music.mcgill.ca">gary@music.mcgill.ca</a></td></tr>
</table>
</BODY>