Release 4.1.3 tarball

This commit is contained in:
Gary Scavone
2013-09-29 23:38:16 +02:00
committed by Stephen Sinclair
parent 503ed3cc9f
commit e11bff2fe8
275 changed files with 1190 additions and 1228 deletions

View File

@@ -8,11 +8,11 @@
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"> &nbsp; <img src="mcgill.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR>
<!-- Generated by Doxygen 1.3.6 -->
<!-- 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 <span class="comment">// RtAudio: Version 3.0, 1 March 2004</span>
00040 <span class="comment">// RtAudio: Version 3.0.1, 22 March 2004</span>
00041
00042 <span class="preprocessor">#ifndef __RTAUDIO_H</span>
00043 <span class="preprocessor"></span><span class="preprocessor">#define __RTAUDIO_H</span>
@@ -158,378 +158,377 @@
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
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 <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 };
00189 <span class="comment">// mode(UNINITIALIZED), state(STREAM_STOPPED),</span>
00190 };
00191
00192 <span class="comment">// A protected device structure for audio devices.</span>
00193 <span class="keyword">struct </span>RtApiDevice {
00194 std::string name;
00195 <span class="keywordtype">bool</span> probed;
00196 <span class="keywordtype">void</span> *apiDeviceId; <span class="comment">// void pointer for API specific device information</span>
00197 <span class="keywordtype">int</span> maxOutputChannels;
00198 <span class="keywordtype">int</span> maxInputChannels;
00199 <span class="keywordtype">int</span> maxDuplexChannels;
00200 <span class="keywordtype">int</span> minOutputChannels;
00201 <span class="keywordtype">int</span> minInputChannels;
00202 <span class="keywordtype">int</span> minDuplexChannels;
00203 <span class="keywordtype">bool</span> hasDuplexSupport;
00204 <span class="keywordtype">bool</span> isDefault;
00205 std::vector&lt;int&gt; sampleRates;
00206 RtAudioFormat nativeFormats;
00208 <span class="comment">// Default constructor.</span>
00209 RtApiDevice()
00210 :probed(false), apiDeviceId(0), maxOutputChannels(0), maxInputChannels(0),
00211 maxDuplexChannels(0), minOutputChannels(0), minInputChannels(0),
00212 minDuplexChannels(0), isDefault(false), nativeFormats(0) {}
00213 };
00214
00215 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">short</span> Int16;
00216 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">int</span> Int32;
00217 <span class="keyword">typedef</span> <span class="keywordtype">float</span> Float32;
00218 <span class="keyword">typedef</span> <span class="keywordtype">double</span> Float64;
00219
00220 <span class="keywordtype">char</span> message_[256];
00221 <span class="keywordtype">int</span> nDevices_;
00222 std::vector&lt;RtApiDevice&gt; devices_;
00223 RtApiStream stream_;
00224
00229 <span class="keyword">virtual</span> <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>) = 0;
00230
00239 <span class="keyword">virtual</span> <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
00240
00249 <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,
00250 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
00251 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
00252
00257 <span class="keyword">virtual</span> <span class="keywordtype">int</span> getDefaultInputDevice(<span class="keywordtype">void</span>);
00258
00263 <span class="keyword">virtual</span> <span class="keywordtype">int</span> getDefaultOutputDevice(<span class="keywordtype">void</span>);
00264
00266 <span class="keywordtype">void</span> clearDeviceInfo( RtApiDevice *info );
00267
00269 <span class="keywordtype">void</span> clearStreamInfo();
00270
00272 <span class="keywordtype">void</span> error( RtError::Type type );
00273
00278 <span class="keywordtype">void</span> verifyStream();
00279
00284 <span class="keywordtype">void</span> convertStreamBuffer( StreamMode mode );
00285
00287 <span class="keywordtype">void</span> byteSwapBuffer( <span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> samples, RtAudioFormat format );
00288
00290 <span class="keywordtype">int</span> formatBytes( RtAudioFormat format );
00291 };
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
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
<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
00456
<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
<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(); };
00294 <span class="comment">// **************************************************************** //</span>
00295 <span class="comment">//</span>
00296 <span class="comment">// RtAudio class declaration.</span>
00297 <span class="comment">//</span>
00298 <span class="comment">// RtAudio is a "controller" used to select an available audio i/o</span>
00299 <span class="comment">// interface. It presents a common API for the user to call but all</span>
00300 <span class="comment">// functionality is implemented by the class RtAudioApi and its</span>
00301 <span class="comment">// subclasses. RtAudio creates an instance of an RtAudioApi subclass</span>
00302 <span class="comment">// based on the user's API choice. If no choice is made, RtAudio</span>
00303 <span class="comment">// attempts to make a "logical" API selection.</span>
00304 <span class="comment">//</span>
00305 <span class="comment">// **************************************************************** //</span>
00306
<a name="l00307"></a><a class="code" href="classRtAudio.html">00307</a> <span class="keyword">class </span><a class="code" href="classRtAudio.html">RtAudio</a>
00308 {
00309 <span class="keyword">public</span>:
00310
<a name="l00312"></a><a class="code" href="classRtAudio.html#w8">00312</a> <span class="keyword">enum</span> <a class="code" href="classRtAudio.html#w8">RtAudioApi</a> {
00313 <a class="code" href="classRtAudio.html#w8w0">UNSPECIFIED</a>,
00314 <a class="code" href="classRtAudio.html#w8w1">LINUX_ALSA</a>,
00315 <a class="code" href="classRtAudio.html#w8w2">LINUX_OSS</a>,
00316 <a class="code" href="classRtAudio.html#w8w3">LINUX_JACK</a>,
00317 <a class="code" href="classRtAudio.html#w8w4">MACOSX_CORE</a>,
00318 <a class="code" href="classRtAudio.html#w8w5">IRIX_AL</a>,
00319 <a class="code" href="classRtAudio.html#w8w6">WINDOWS_ASIO</a>,
00320 <a class="code" href="classRtAudio.html#w8w7">WINDOWS_DS</a>
00321 };
00322
00324
00334 <a class="code" href="classRtAudio.html#a0">RtAudio</a>( RtAudioApi api=UNSPECIFIED );
00335
00337
00348 <a class="code" href="classRtAudio.html#a0">RtAudio</a>( <span class="keywordtype">int</span> outputDevice, <span class="keywordtype">int</span> outputChannels,
00349 <span class="keywordtype">int</span> inputDevice, <span class="keywordtype">int</span> inputChannels,
00350 RtAudioFormat format, <span class="keywordtype">int</span> sampleRate,
00351 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers, RtAudioApi api=UNSPECIFIED );
00352
00354
00358 <a class="code" href="classRtAudio.html#a2">~RtAudio</a>();
00359
00361
00387 <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,
00388 <span class="keywordtype">int</span> inputDevice, <span class="keywordtype">int</span> inputChannels,
00389 RtAudioFormat format, <span class="keywordtype">int</span> sampleRate,
00390 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
00391
00393
<a name="l00412"></a><a class="code" href="classRtAudio.html#a4">00412</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 ); };
00413
00415
<a name="l00422"></a><a class="code" href="classRtAudio.html#a5">00422</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a5">cancelStreamCallback</a>() { rtapi_-&gt;cancelStreamCallback(); };
00423
<a name="l00425"></a><a class="code" href="classRtAudio.html#a6">00425</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(); };
00426
00428
<a name="l00436"></a><a class="code" href="classRtAudio.html#a7">00436</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 ); };
00437
00439
<a name="l00444"></a><a class="code" href="classRtAudio.html#a8">00444</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(); };
00445
00447
<a name="l00452"></a><a class="code" href="classRtAudio.html#a9">00452</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a9">tickStream</a>() { rtapi_-&gt;tickStream(); };
00453
00455
<a name="l00459"></a><a class="code" href="classRtAudio.html#a10">00459</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a10">closeStream</a>() { rtapi_-&gt;closeStream(); };
00460
00462
<a name="l00466"></a><a class="code" href="classRtAudio.html#a11">00466</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a11">startStream</a>() { rtapi_-&gt;startStream(); };
00467
00469
<a name="l00473"></a><a class="code" href="classRtAudio.html#a12">00473</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a12">stopStream</a>() { rtapi_-&gt;stopStream(); };
00474
00476
<a name="l00480"></a><a class="code" href="classRtAudio.html#a13">00480</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a13">abortStream</a>() { rtapi_-&gt;abortStream(); };
00481
00482
00483
00484 <span class="keyword">protected</span>:
00485
00486 <span class="keywordtype">void</span> initialize( RtAudioApi api );
00487
00488 RtApi *rtapi_;
00489 };
00483 <span class="keyword">protected</span>:
00484
00485 <span class="keywordtype">void</span> initialize( RtAudioApi api );
00486
00487 RtApi *rtapi_;
00488 };
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>
00491 <span class="comment">// RtApi Subclass prototypes.</span>
00492
00493 <span class="preprocessor">#if defined(__LINUX_ALSA__)</span>
00494 <span class="preprocessor"></span>
00495 <span class="keyword">class </span>RtApiAlsa: <span class="keyword">public</span> RtApi
00496 {
00497 <span class="keyword">public</span>:
00498
00499 RtApiAlsa();
00500 ~RtApiAlsa();
00501 <span class="keywordtype">void</span> tickStream();
00502 <span class="keywordtype">void</span> closeStream();
00503 <span class="keywordtype">void</span> startStream();
00504 <span class="keywordtype">void</span> stopStream();
00505 <span class="keywordtype">void</span> abortStream();
00506 <span class="keywordtype">int</span> streamWillBlock();
00507 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
00508 <span class="keywordtype">void</span> cancelStreamCallback();
00509
00510 <span class="keyword">private</span>:
00511
00512 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
00513 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
00514 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
00515 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
00516 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
00517 };
00518
00519 <span class="preprocessor">#endif</span>
00520 <span class="preprocessor"></span>
00521 <span class="preprocessor">#if defined(__LINUX_JACK__)</span>
00522 <span class="preprocessor"></span>
00523 <span class="keyword">class </span>RtApiJack: <span class="keyword">public</span> RtApi
00524 {
00525 <span class="keyword">public</span>:
00526
00527 RtApiJack();
00528 ~RtApiJack();
00529 <span class="keywordtype">void</span> tickStream();
00530 <span class="keywordtype">void</span> closeStream();
00531 <span class="keywordtype">void</span> startStream();
00532 <span class="keywordtype">void</span> stopStream();
00533 <span class="keywordtype">void</span> abortStream();
00534 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
00535 <span class="keywordtype">void</span> cancelStreamCallback();
00536 <span class="comment">// This function is intended for internal use only. It must be</span>
00537 <span class="comment">// public because it is called by the internal callback handler,</span>
00538 <span class="comment">// which is not a member of RtAudio. External use of this function</span>
00539 <span class="comment">// will most likely produce highly undesireable results!</span>
00540 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> nframes );
00541
00542 <span class="keyword">private</span>:
00543
00544 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
00545 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
00546 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
00547 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
00548 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
00549 };
00550
00551 <span class="preprocessor">#endif</span>
00552 <span class="preprocessor"></span>
00553 <span class="preprocessor">#if defined(__LINUX_OSS__)</span>
00554 <span class="preprocessor"></span>
00555 <span class="keyword">class </span>RtApiOss: <span class="keyword">public</span> RtApi
00556 {
00557 <span class="keyword">public</span>:
00558
00559 RtApiOss();
00560 ~RtApiOss();
00561 <span class="keywordtype">void</span> tickStream();
00562 <span class="keywordtype">void</span> closeStream();
00563 <span class="keywordtype">void</span> startStream();
00564 <span class="keywordtype">void</span> stopStream();
00565 <span class="keywordtype">void</span> abortStream();
00566 <span class="keywordtype">int</span> streamWillBlock();
00567 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
00568 <span class="keywordtype">void</span> cancelStreamCallback();
00569
00570 <span class="keyword">private</span>:
00571
00572 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
00573 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
00574 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
00575 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
00576 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
00577 };
00578
00579 <span class="preprocessor">#endif</span>
00580 <span class="preprocessor"></span>
00581 <span class="preprocessor">#if defined(__MACOSX_CORE__)</span>
00582 <span class="preprocessor"></span>
00583 <span class="preprocessor">#include &lt;CoreAudio/AudioHardware.h&gt;</span>
00584
00585 <span class="keyword">class </span>RtApiCore: <span class="keyword">public</span> RtApi
00586 {
00587 <span class="keyword">public</span>:
00588
00589 RtApiCore();
00590 ~RtApiCore();
00591 <span class="keywordtype">int</span> getDefaultOutputDevice(<span class="keywordtype">void</span>);
00592 <span class="keywordtype">int</span> getDefaultInputDevice(<span class="keywordtype">void</span>);
00593 <span class="keywordtype">void</span> tickStream();
00594 <span class="keywordtype">void</span> closeStream();
00595 <span class="keywordtype">void</span> startStream();
00596 <span class="keywordtype">void</span> stopStream();
00597 <span class="keywordtype">void</span> abortStream();
00598 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
00599 <span class="keywordtype">void</span> cancelStreamCallback();
00600
00601 <span class="comment">// This function is intended for internal use only. It must be</span>
00602 <span class="comment">// public because it is called by the internal callback handler,</span>
00603 <span class="comment">// which is not a member of RtAudio. External use of this function</span>
00604 <span class="comment">// will most likely produce highly undesireable results!</span>
00605 <span class="keywordtype">void</span> callbackEvent( AudioDeviceID deviceId, <span class="keywordtype">void</span> *inData, <span class="keywordtype">void</span> *outData );
00606
00607 <span class="keyword">private</span>:
00608
00609 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
00610 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
00611 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
00612 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
00613 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
00614 };
00615
00616 <span class="preprocessor">#endif</span>
00617 <span class="preprocessor"></span>
00618 <span class="preprocessor">#if defined(__WINDOWS_DS__)</span>
00619 <span class="preprocessor"></span>
00620 <span class="keyword">class </span>RtApiDs: <span class="keyword">public</span> RtApi
00621 {
00622 <span class="keyword">public</span>:
00623
00624 RtApiDs();
00625 ~RtApiDs();
00626 <span class="keywordtype">int</span> getDefaultOutputDevice(<span class="keywordtype">void</span>);
00627 <span class="keywordtype">int</span> getDefaultInputDevice(<span class="keywordtype">void</span>);
00628 <span class="keywordtype">void</span> tickStream();
00629 <span class="keywordtype">void</span> closeStream();
00630 <span class="keywordtype">void</span> startStream();
00631 <span class="keywordtype">void</span> stopStream();
00632 <span class="keywordtype">void</span> abortStream();
00633 <span class="keywordtype">int</span> streamWillBlock();
00634 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
00635 <span class="keywordtype">void</span> cancelStreamCallback();
00636
00637 <span class="keyword">private</span>:
00638
00639 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
00640 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
00641 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
00642 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
00643 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
00644 };
00645
00646 <span class="preprocessor">#endif</span>
00647 <span class="preprocessor"></span>
00648 <span class="preprocessor">#if defined(__WINDOWS_ASIO__)</span>
00649 <span class="preprocessor"></span>
00650 <span class="keyword">class </span>RtApiAsio: <span class="keyword">public</span> RtApi
00651 {
00652 <span class="keyword">public</span>:
00653
00654 RtApiAsio();
00655 ~RtApiAsio();
00656 <span class="keywordtype">void</span> tickStream();
00657 <span class="keywordtype">void</span> closeStream();
00658 <span class="keywordtype">void</span> startStream();
00659 <span class="keywordtype">void</span> stopStream();
00660 <span class="keywordtype">void</span> abortStream();
00661 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
00662 <span class="keywordtype">void</span> cancelStreamCallback();
00663
00664 <span class="comment">// This function is intended for internal use only. It must be</span>
00665 <span class="comment">// public because it is called by the internal callback handler,</span>
00666 <span class="comment">// which is not a member of RtAudio. External use of this function</span>
00667 <span class="comment">// will most likely produce highly undesireable results!</span>
00668 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">long</span> bufferIndex );
00669
00670 <span class="keyword">private</span>:
00671
00672 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
00673 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
00674 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
00675 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
00676 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
00677 };
00678
00679 <span class="preprocessor">#endif</span>
00680 <span class="preprocessor"></span>
00681 <span class="preprocessor">#if defined(__IRIX_AL__)</span>
00682 <span class="preprocessor"></span>
00683 <span class="keyword">class </span>RtApiAl: <span class="keyword">public</span> RtApi
00684 {
00685 <span class="keyword">public</span>:
00686
00687 RtApiAl();
00688 ~RtApiAl();
00689 <span class="keywordtype">int</span> getDefaultOutputDevice(<span class="keywordtype">void</span>);
00690 <span class="keywordtype">int</span> getDefaultInputDevice(<span class="keywordtype">void</span>);
00691 <span class="keywordtype">void</span> tickStream();
00692 <span class="keywordtype">void</span> closeStream();
00693 <span class="keywordtype">void</span> startStream();
00694 <span class="keywordtype">void</span> stopStream();
00695 <span class="keywordtype">void</span> abortStream();
00696 <span class="keywordtype">int</span> streamWillBlock();
00697 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
00698 <span class="keywordtype">void</span> cancelStreamCallback();
00699
00700 <span class="keyword">private</span>:
00701
00702 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
00703 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
00704 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
00705 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
00706 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
00707 };
00708
00709 <span class="preprocessor">#endif</span>
00710 <span class="preprocessor"></span>
00711 <span class="comment">// Define the following flag to have extra information spewed to stderr.</span>
00712 <span class="comment">//#define __RTAUDIO_DEBUG__</span>
00713
00714 <span class="preprocessor">#endif</span>
</pre></div><HR>
<table>