diff options
| author | Gary Scavone <gary@music.mcgill.ca> | 2013-10-11 02:05:07 +0200 |
|---|---|---|
| committer | Stephen Sinclair <sinclair@music.mcgill.ca> | 2013-10-11 02:05:07 +0200 |
| commit | fa0759941de32b91fd328c7ec412d2dd3255aa1e (patch) | |
| tree | baa1d10526b06addd767a03be9b2e73183bf091d /doc | |
| parent | 2fbd57f91e68a10891087c9093ebf71ee4a0bc0d (diff) | |
Release 4.0.11 tarball4.0.11
Diffstat (limited to 'doc')
36 files changed, 644 insertions, 578 deletions
diff --git a/doc/html/RtAudio_8h.html b/doc/html/RtAudio_8h.html index d361bde..601e574 100644 --- a/doc/html/RtAudio_8h.html +++ b/doc/html/RtAudio_8h.html @@ -141,7 +141,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/RtAudio_8h_source.html b/doc/html/RtAudio_8h_source.html index d8a83a1..a5f0026 100644 --- a/doc/html/RtAudio_8h_source.html +++ b/doc/html/RtAudio_8h_source.html @@ -12,7 +12,7 @@ <h1>RtAudio.h</h1><a href="RtAudio_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/************************************************************************/</span> <a name="l00039"></a>00039 <span class="comment">/************************************************************************/</span> <a name="l00040"></a>00040 -<a name="l00045"></a>00045 <span class="comment">// RtAudio: Version 4.0.10</span> +<a name="l00045"></a>00045 <span class="comment">// RtAudio: Version 4.0.11</span> <a name="l00046"></a>00046 <a name="l00047"></a>00047 <span class="preprocessor">#ifndef __RTAUDIO_H</span> <a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor">#define __RTAUDIO_H</span> @@ -70,509 +70,509 @@ <a name="l00210"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849">00210</a> <span class="keyword">enum</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">Api</a> { <a name="l00211"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849aa49af3ac767106158bc6cad74fb214ae">00211</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849aa49af3ac767106158bc6cad74fb214ae">UNSPECIFIED</a>, <a name="l00212"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849aa7a2ba095c2806caa893b6fb8fc3a1a8">00212</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849aa7a2ba095c2806caa893b6fb8fc3a1a8">LINUX_ALSA</a>, -<a name="l00213"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a39c84615e61de75e6a4e865596d62c82">00213</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a39c84615e61de75e6a4e865596d62c82">LINUX_OSS</a>, -<a name="l00214"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a4767e17c6edfbd827f91763915df4105">00214</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a4767e17c6edfbd827f91763915df4105">UNIX_JACK</a>, -<a name="l00215"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a9fec92b8272244a87a6a11a717bd662d">00215</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a9fec92b8272244a87a6a11a717bd662d">MACOSX_CORE</a>, -<a name="l00216"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a219517d1df90f94d07758481155bd469">00216</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a219517d1df90f94d07758481155bd469">WINDOWS_ASIO</a>, -<a name="l00217"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a28478830f42c2fd61e6c7ad498901931">00217</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a28478830f42c2fd61e6c7ad498901931">WINDOWS_DS</a>, -<a name="l00218"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849ab06b8fd88bf18c9a2b8271f6961ae2d1">00218</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849ab06b8fd88bf18c9a2b8271f6961ae2d1">RTAUDIO_DUMMY</a> -<a name="l00219"></a>00219 }; -<a name="l00220"></a>00220 -<a name="l00222"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html">00222</a> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">DeviceInfo</a> { -<a name="l00223"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a97573717ccb1e75a834a0a108cd6982d">00223</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a97573717ccb1e75a834a0a108cd6982d">probed</a>; -<a name="l00224"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a24df596ab8d54f2eb540c7cf16212b3b">00224</a> std::string <a class="code" href="structRtAudio_1_1DeviceInfo.html#a24df596ab8d54f2eb540c7cf16212b3b">name</a>; -<a name="l00225"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a81aaf488f8158ef55b1bb678f66feb7d">00225</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a81aaf488f8158ef55b1bb678f66feb7d">outputChannels</a>; -<a name="l00226"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a56247b458a937ae84d98ca9c4b243275">00226</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a56247b458a937ae84d98ca9c4b243275">inputChannels</a>; -<a name="l00227"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a3e8ad34c2d14e24293a0beafc26186e7">00227</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a3e8ad34c2d14e24293a0beafc26186e7">duplexChannels</a>; -<a name="l00228"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a5365245e73ffe29a05734de4474acd58">00228</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a5365245e73ffe29a05734de4474acd58">isDefaultOutput</a>; -<a name="l00229"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a7c8aca084bd908799b6be5954b80def2">00229</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a7c8aca084bd908799b6be5954b80def2">isDefaultInput</a>; -<a name="l00230"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#afa65f5f92f66ce7aacd3ff35e11b230f">00230</a> std::vector<unsigned int> <a class="code" href="structRtAudio_1_1DeviceInfo.html#afa65f5f92f66ce7aacd3ff35e11b230f">sampleRates</a>; -<a name="l00231"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a23251b549b89b2fe04a57fcd7cb76ea4">00231</a> <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a23251b549b89b2fe04a57fcd7cb76ea4">nativeFormats</a>; -<a name="l00233"></a>00233 <span class="comment">// Default constructor.</span> -<a name="l00234"></a>00234 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">DeviceInfo</a>() -<a name="l00235"></a>00235 :<a class="code" href="structRtAudio_1_1DeviceInfo.html#a97573717ccb1e75a834a0a108cd6982d">probed</a>(false), <a class="code" href="structRtAudio_1_1DeviceInfo.html#a81aaf488f8158ef55b1bb678f66feb7d">outputChannels</a>(0), <a class="code" href="structRtAudio_1_1DeviceInfo.html#a56247b458a937ae84d98ca9c4b243275">inputChannels</a>(0), <a class="code" href="structRtAudio_1_1DeviceInfo.html#a3e8ad34c2d14e24293a0beafc26186e7">duplexChannels</a>(0), -<a name="l00236"></a>00236 <a class="code" href="structRtAudio_1_1DeviceInfo.html#a5365245e73ffe29a05734de4474acd58">isDefaultOutput</a>(false), <a class="code" href="structRtAudio_1_1DeviceInfo.html#a7c8aca084bd908799b6be5954b80def2">isDefaultInput</a>(false), <a class="code" href="structRtAudio_1_1DeviceInfo.html#a23251b549b89b2fe04a57fcd7cb76ea4">nativeFormats</a>(0) {} -<a name="l00237"></a>00237 }; -<a name="l00238"></a>00238 -<a name="l00240"></a><a class="code" href="structRtAudio_1_1StreamParameters.html">00240</a> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">StreamParameters</a> { -<a name="l00241"></a><a class="code" href="structRtAudio_1_1StreamParameters.html#ab3c72bcf3ef12149ae9a4fb597cc5489">00241</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamParameters.html#ab3c72bcf3ef12149ae9a4fb597cc5489">deviceId</a>; -<a name="l00242"></a><a class="code" href="structRtAudio_1_1StreamParameters.html#a88a10091b6e284e21235cc6f25332ebd">00242</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamParameters.html#a88a10091b6e284e21235cc6f25332ebd">nChannels</a>; -<a name="l00243"></a><a class="code" href="structRtAudio_1_1StreamParameters.html#ad4b4503782653ec93c83328c46abe50c">00243</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamParameters.html#ad4b4503782653ec93c83328c46abe50c">firstChannel</a>; -<a name="l00245"></a>00245 <span class="comment">// Default constructor.</span> -<a name="l00246"></a>00246 <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">StreamParameters</a>() -<a name="l00247"></a>00247 : <a class="code" href="structRtAudio_1_1StreamParameters.html#ab3c72bcf3ef12149ae9a4fb597cc5489">deviceId</a>(0), <a class="code" href="structRtAudio_1_1StreamParameters.html#a88a10091b6e284e21235cc6f25332ebd">nChannels</a>(0), <a class="code" href="structRtAudio_1_1StreamParameters.html#ad4b4503782653ec93c83328c46abe50c">firstChannel</a>(0) {} -<a name="l00248"></a>00248 }; -<a name="l00249"></a>00249 -<a name="l00251"></a>00251 -<a name="l00307"></a><a class="code" href="structRtAudio_1_1StreamOptions.html">00307</a> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">StreamOptions</a> { -<a name="l00308"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#a0ecc98b031aa3af49d09b781643e298b">00308</a> <a class="code" href="RtAudio_8h.html#a2c0f59b200dcec4d4e760f9166b29c41" title="RtAudio stream option flags.">RtAudioStreamFlags</a> <a class="code" href="structRtAudio_1_1StreamOptions.html#a0ecc98b031aa3af49d09b781643e298b">flags</a>; -<a name="l00309"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#a75a14cfab903d0e1c091bc16aec80240">00309</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamOptions.html#a75a14cfab903d0e1c091bc16aec80240">numberOfBuffers</a>; -<a name="l00310"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#a2a4b0b8d690c624d20f4e8f4be6ca9ba">00310</a> std::string <a class="code" href="structRtAudio_1_1StreamOptions.html#a2a4b0b8d690c624d20f4e8f4be6ca9ba">streamName</a>; -<a name="l00311"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#adfd267059434edb21573c584e6367def">00311</a> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamOptions.html#adfd267059434edb21573c584e6367def">priority</a>; -<a name="l00313"></a>00313 <span class="comment">// Default constructor.</span> -<a name="l00314"></a>00314 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">StreamOptions</a>() -<a name="l00315"></a>00315 : <a class="code" href="structRtAudio_1_1StreamOptions.html#a0ecc98b031aa3af49d09b781643e298b">flags</a>(0), <a class="code" href="structRtAudio_1_1StreamOptions.html#a75a14cfab903d0e1c091bc16aec80240">numberOfBuffers</a>(0), <a class="code" href="structRtAudio_1_1StreamOptions.html#adfd267059434edb21573c584e6367def">priority</a>(0) {} -<a name="l00316"></a>00316 }; -<a name="l00317"></a>00317 -<a name="l00319"></a>00319 -<a name="l00324"></a>00324 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#ae266ffad2ef428d0b2c6c262d391ce26" title="A static function to determine the available compiled audio APIs.">getCompiledApi</a>( std::vector<RtAudio::Api> &apis ) <span class="keywordflow">throw</span>(); -<a name="l00325"></a>00325 -<a name="l00327"></a>00327 -<a name="l00335"></a>00335 <a class="code" href="classRtAudio.html#afd0bfa26deae9804e18faff59d0273d9" title="The class constructor.">RtAudio</a>( <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> api=<a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849aa49af3ac767106158bc6cad74fb214ae">UNSPECIFIED</a> ) throw(); -<a name="l00336"></a>00336 -<a name="l00338"></a>00338 -<a name="l00342"></a>00342 ~<a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>() throw(); -<a name="l00343"></a>00343 -<a name="l00345"></a>00345 <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::<a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">Api</a> <a class="code" href="classRtAudio.html#a83687634795792b2c47e4ae1cf8a5246" title="Returns the audio API specifier for the current instance of RtAudio.">getCurrentApi</a>( <span class="keywordtype">void</span> ) throw(); -<a name="l00346"></a>00346 -<a name="l00348"></a>00348 -<a name="l00353"></a>00353 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount</a>( <span class="keywordtype">void</span> ) throw(); -<a name="l00354"></a>00354 -<a name="l00356"></a>00356 -<a name="l00366"></a>00366 <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::DeviceInfo <a class="code" href="classRtAudio.html#a02d7ff44ad1d7eae22283a052f3dfda8" title="Return an RtAudio::DeviceInfo structure for a specified device number.">getDeviceInfo</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); -<a name="l00367"></a>00367 -<a name="l00369"></a>00369 -<a name="l00376"></a>00376 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a3a3f3dbe13ea696b521e49cdaaa357bc" title="A function that returns the index of the default output device.">getDefaultOutputDevice</a>( <span class="keywordtype">void</span> ) throw(); -<a name="l00377"></a>00377 -<a name="l00379"></a>00379 -<a name="l00386"></a>00386 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#aad8b94edd3cd379ee300b125750ac6ce" title="A function that returns the index of the default input device.">getDefaultInputDevice</a>( <span class="keywordtype">void</span> ) throw(); -<a name="l00387"></a>00387 -<a name="l00389"></a>00389 -<a name="l00426"></a>00426 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#afacc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">openStream</a>( <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::StreamParameters *outputParameters, -<a name="l00427"></a>00427 <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::StreamParameters *inputParameters, -<a name="l00428"></a>00428 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00429"></a>00429 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferFrames, <a class="code" href="RtAudio_8h.html#a112c7b7e25a974977f6fc094cef1a31f" title="RtAudio callback function prototype.">RtAudioCallback</a> callback, -<a name="l00430"></a>00430 <span class="keywordtype">void</span> *userData = NULL, <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::StreamOptions *options = NULL ); -<a name="l00431"></a>00431 -<a name="l00433"></a>00433 -<a name="l00437"></a>00437 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a90d599002ad32cf250a4cb866f2cc93a" title="A function that closes a stream and frees any associated stream memory.">closeStream</a>( <span class="keywordtype">void</span> ) throw(); -<a name="l00438"></a>00438 -<a name="l00440"></a>00440 -<a name="l00446"></a>00446 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#aec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">startStream</a>( <span class="keywordtype">void</span> ); -<a name="l00447"></a>00447 -<a name="l00449"></a>00449 -<a name="l00455"></a>00455 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#af4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">stopStream</a>( <span class="keywordtype">void</span> ); -<a name="l00456"></a>00456 -<a name="l00458"></a>00458 -<a name="l00464"></a>00464 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#ad0586b47cd6bb9591a80b4052815991f" title="Stop a stream, discarding any samples remaining in the input/output queue.">abortStream</a>( <span class="keywordtype">void</span> ); -<a name="l00465"></a>00465 -<a name="l00467"></a>00467 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a3863e45ff81dbe97176de0ee7545917f" title="Returns true if a stream is open and false if not.">isStreamOpen</a>( <span class="keywordtype">void</span> ) const throw(); -<a name="l00468"></a>00468 -<a name="l00470"></a>00470 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a84cc8d9b7ab9bc5f37bcf48430ec5aea" title="Returns true if the stream is running and false if it is stopped or not open.">isStreamRunning</a>( <span class="keywordtype">void</span> ) const throw(); -<a name="l00471"></a>00471 -<a name="l00473"></a>00473 -<a name="l00476"></a>00476 <span class="keywordtype">double</span> <a class="code" href="classRtAudio.html#a344e59a62353c5791db4621b985cb2ca" title="Returns the number of elapsed seconds since the stream was started.">getStreamTime</a>( <span class="keywordtype">void</span> ); -<a name="l00477"></a>00477 -<a name="l00479"></a>00479 -<a name="l00487"></a>00487 <span class="keywordtype">long</span> <a class="code" href="classRtAudio.html#a843c989d9f501c71bc2f2c5ca18df9f3" title="Returns the internal stream latency in sample frames.">getStreamLatency</a>( <span class="keywordtype">void</span> ); -<a name="l00488"></a>00488 -<a name="l00490"></a>00490 -<a name="l00495"></a>00495 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a28214b8b05d60b45c24ee6fae7b2a0b5" title="Returns actual sample rate in use by the stream.">getStreamSampleRate</a>( <span class="keywordtype">void</span> ); -<a name="l00496"></a>00496 -<a name="l00498"></a>00498 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#af0752ee51cce3dd90a3bd009f9fdbe77" title="Specify whether warning messages should be printed to stderr.">showWarnings</a>( <span class="keywordtype">bool</span> value = true ) throw(); -<a name="l00499"></a>00499 -<a name="l00500"></a>00500 protected: -<a name="l00501"></a>00501 -<a name="l00502"></a>00502 <span class="keywordtype">void</span> openRtApi( <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::<a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">Api</a> api ); -<a name="l00503"></a>00503 RtApi *rtapi_; -<a name="l00504"></a>00504 }; -<a name="l00505"></a>00505 -<a name="l00506"></a>00506 <span class="comment">// Operating system dependent thread functionality.</span> -<a name="l00507"></a>00507 <span class="preprocessor">#if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__)</span> -<a name="l00508"></a>00508 <span class="preprocessor"></span><span class="preprocessor"> #include <windows.h></span> -<a name="l00509"></a>00509 <span class="preprocessor"> #include <process.h></span> -<a name="l00510"></a>00510 -<a name="l00511"></a>00511 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ThreadHandle; -<a name="l00512"></a>00512 <span class="keyword">typedef</span> CRITICAL_SECTION StreamMutex; -<a name="l00513"></a>00513 -<a name="l00514"></a>00514 <span class="preprocessor">#elif defined(__LINUX_ALSA__) || defined(__UNIX_JACK__) || defined(__LINUX_OSS__) || defined(__MACOSX_CORE__)</span> -<a name="l00515"></a>00515 <span class="preprocessor"></span> <span class="comment">// Using pthread library for various flavors of unix.</span> -<a name="l00516"></a>00516 <span class="preprocessor"> #include <pthread.h></span> -<a name="l00517"></a>00517 -<a name="l00518"></a>00518 <span class="keyword">typedef</span> pthread_t ThreadHandle; -<a name="l00519"></a>00519 <span class="keyword">typedef</span> pthread_mutex_t StreamMutex; -<a name="l00520"></a>00520 -<a name="l00521"></a>00521 <span class="preprocessor">#else // Setup for "dummy" behavior</span> -<a name="l00522"></a>00522 <span class="preprocessor"></span> -<a name="l00523"></a>00523 <span class="preprocessor"> #define __RTAUDIO_DUMMY__</span> -<a name="l00524"></a>00524 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">int</span> ThreadHandle; -<a name="l00525"></a>00525 <span class="keyword">typedef</span> <span class="keywordtype">int</span> StreamMutex; -<a name="l00526"></a>00526 -<a name="l00527"></a>00527 <span class="preprocessor">#endif</span> -<a name="l00528"></a>00528 <span class="preprocessor"></span> -<a name="l00529"></a>00529 <span class="comment">// This global structure type is used to pass callback information</span> -<a name="l00530"></a>00530 <span class="comment">// between the private RtAudio stream structure and global callback</span> -<a name="l00531"></a>00531 <span class="comment">// handling functions.</span> -<a name="l00532"></a>00532 <span class="keyword">struct </span>CallbackInfo { -<a name="l00533"></a>00533 <span class="keywordtype">void</span> *object; <span class="comment">// Used as a "this" pointer.</span> -<a name="l00534"></a>00534 ThreadHandle thread; -<a name="l00535"></a>00535 <span class="keywordtype">void</span> *callback; -<a name="l00536"></a>00536 <span class="keywordtype">void</span> *userData; -<a name="l00537"></a>00537 <span class="keywordtype">void</span> *apiInfo; <span class="comment">// void pointer for API specific callback information</span> -<a name="l00538"></a>00538 <span class="keywordtype">bool</span> isRunning; -<a name="l00539"></a>00539 -<a name="l00540"></a>00540 <span class="comment">// Default constructor.</span> -<a name="l00541"></a>00541 CallbackInfo() -<a name="l00542"></a>00542 :object(0), callback(0), userData(0), apiInfo(0), isRunning(false) {} -<a name="l00543"></a>00543 }; -<a name="l00544"></a>00544 -<a name="l00545"></a>00545 <span class="comment">// **************************************************************** //</span> -<a name="l00546"></a>00546 <span class="comment">//</span> -<a name="l00547"></a>00547 <span class="comment">// RtApi class declaration.</span> -<a name="l00548"></a>00548 <span class="comment">//</span> -<a name="l00549"></a>00549 <span class="comment">// Subclasses of RtApi contain all API- and OS-specific code necessary</span> -<a name="l00550"></a>00550 <span class="comment">// to fully implement the RtAudio API.</span> -<a name="l00551"></a>00551 <span class="comment">//</span> -<a name="l00552"></a>00552 <span class="comment">// Note that RtApi is an abstract base class and cannot be</span> -<a name="l00553"></a>00553 <span class="comment">// explicitly instantiated. The class RtAudio will create an</span> -<a name="l00554"></a>00554 <span class="comment">// instance of an RtApi subclass (RtApiOss, RtApiAlsa,</span> -<a name="l00555"></a>00555 <span class="comment">// RtApiJack, RtApiCore, RtApiAl, RtApiDs, or RtApiAsio).</span> -<a name="l00556"></a>00556 <span class="comment">//</span> -<a name="l00557"></a>00557 <span class="comment">// **************************************************************** //</span> -<a name="l00558"></a>00558 -<a name="l00559"></a>00559 <span class="preprocessor">#if defined( HAVE_GETTIMEOFDAY )</span> -<a name="l00560"></a>00560 <span class="preprocessor"></span><span class="preprocessor"> #include <sys/time.h></span> -<a name="l00561"></a>00561 <span class="preprocessor">#endif</span> -<a name="l00562"></a>00562 <span class="preprocessor"></span> -<a name="l00563"></a>00563 <span class="preprocessor">#include <sstream></span> -<a name="l00564"></a>00564 -<a name="l00565"></a>00565 <span class="keyword">class </span>RtApi -<a name="l00566"></a>00566 { -<a name="l00567"></a>00567 <span class="keyword">public</span>: -<a name="l00568"></a>00568 -<a name="l00569"></a>00569 RtApi(); -<a name="l00570"></a>00570 <span class="keyword">virtual</span> ~RtApi(); -<a name="l00571"></a>00571 <span class="keyword">virtual</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> <a class="code" href="classRtAudio.html#a83687634795792b2c47e4ae1cf8a5246" title="Returns the audio API specifier for the current instance of RtAudio.">getCurrentApi</a>( <span class="keywordtype">void</span> ) = 0; -<a name="l00572"></a>00572 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount</a>( <span class="keywordtype">void</span> ) = 0; -<a name="l00573"></a>00573 <span class="keyword">virtual</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> <a class="code" href="classRtAudio.html#a02d7ff44ad1d7eae22283a052f3dfda8" title="Return an RtAudio::DeviceInfo structure for a specified device number.">getDeviceInfo</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ) = 0; -<a name="l00574"></a>00574 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#aad8b94edd3cd379ee300b125750ac6ce" title="A function that returns the index of the default input device.">getDefaultInputDevice</a>( <span class="keywordtype">void</span> ); -<a name="l00575"></a>00575 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a3a3f3dbe13ea696b521e49cdaaa357bc" title="A function that returns the index of the default output device.">getDefaultOutputDevice</a>( <span class="keywordtype">void</span> ); -<a name="l00576"></a>00576 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#afacc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">openStream</a>( <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">RtAudio::StreamParameters</a> *outputParameters, -<a name="l00577"></a>00577 <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">RtAudio::StreamParameters</a> *inputParameters, -<a name="l00578"></a>00578 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00579"></a>00579 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferFrames, <a class="code" href="RtAudio_8h.html#a112c7b7e25a974977f6fc094cef1a31f" title="RtAudio callback function prototype.">RtAudioCallback</a> callback, -<a name="l00580"></a>00580 <span class="keywordtype">void</span> *userData, <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); -<a name="l00581"></a>00581 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a90d599002ad32cf250a4cb866f2cc93a" title="A function that closes a stream and frees any associated stream memory.">closeStream</a>( <span class="keywordtype">void</span> ); -<a name="l00582"></a>00582 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#aec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">startStream</a>( <span class="keywordtype">void</span> ) = 0; -<a name="l00583"></a>00583 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#af4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">stopStream</a>( <span class="keywordtype">void</span> ) = 0; -<a name="l00584"></a>00584 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#ad0586b47cd6bb9591a80b4052815991f" title="Stop a stream, discarding any samples remaining in the input/output queue.">abortStream</a>( <span class="keywordtype">void</span> ) = 0; -<a name="l00585"></a>00585 <span class="keywordtype">long</span> <a class="code" href="classRtAudio.html#a843c989d9f501c71bc2f2c5ca18df9f3" title="Returns the internal stream latency in sample frames.">getStreamLatency</a>( <span class="keywordtype">void</span> ); -<a name="l00586"></a>00586 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a28214b8b05d60b45c24ee6fae7b2a0b5" title="Returns actual sample rate in use by the stream.">getStreamSampleRate</a>( <span class="keywordtype">void</span> ); -<a name="l00587"></a>00587 <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classRtAudio.html#a344e59a62353c5791db4621b985cb2ca" title="Returns the number of elapsed seconds since the stream was started.">getStreamTime</a>( <span class="keywordtype">void</span> ); -<a name="l00588"></a>00588 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a3863e45ff81dbe97176de0ee7545917f" title="Returns true if a stream is open and false if not.">isStreamOpen</a>( <span class="keywordtype">void</span> )<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stream_.state != STREAM_CLOSED; }; -<a name="l00589"></a>00589 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a84cc8d9b7ab9bc5f37bcf48430ec5aea" title="Returns true if the stream is running and false if it is stopped or not open.">isStreamRunning</a>( <span class="keywordtype">void</span> )<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stream_.state == STREAM_RUNNING; }; -<a name="l00590"></a>00590 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#af0752ee51cce3dd90a3bd009f9fdbe77" title="Specify whether warning messages should be printed to stderr.">showWarnings</a>( <span class="keywordtype">bool</span> value ) { showWarnings_ = value; }; -<a name="l00591"></a>00591 +<a name="l00213"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849adc17dff310e85d303fb326c837c08d77">00213</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849adc17dff310e85d303fb326c837c08d77">LINUX_PULSE</a>, +<a name="l00214"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a39c84615e61de75e6a4e865596d62c82">00214</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a39c84615e61de75e6a4e865596d62c82">LINUX_OSS</a>, +<a name="l00215"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a4767e17c6edfbd827f91763915df4105">00215</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a4767e17c6edfbd827f91763915df4105">UNIX_JACK</a>, +<a name="l00216"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a9fec92b8272244a87a6a11a717bd662d">00216</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a9fec92b8272244a87a6a11a717bd662d">MACOSX_CORE</a>, +<a name="l00217"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a219517d1df90f94d07758481155bd469">00217</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a219517d1df90f94d07758481155bd469">WINDOWS_ASIO</a>, +<a name="l00218"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a28478830f42c2fd61e6c7ad498901931">00218</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a28478830f42c2fd61e6c7ad498901931">WINDOWS_DS</a>, +<a name="l00219"></a><a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849ab06b8fd88bf18c9a2b8271f6961ae2d1">00219</a> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849ab06b8fd88bf18c9a2b8271f6961ae2d1">RTAUDIO_DUMMY</a> +<a name="l00220"></a>00220 }; +<a name="l00221"></a>00221 +<a name="l00223"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html">00223</a> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">DeviceInfo</a> { +<a name="l00224"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a97573717ccb1e75a834a0a108cd6982d">00224</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a97573717ccb1e75a834a0a108cd6982d">probed</a>; +<a name="l00225"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a24df596ab8d54f2eb540c7cf16212b3b">00225</a> std::string <a class="code" href="structRtAudio_1_1DeviceInfo.html#a24df596ab8d54f2eb540c7cf16212b3b">name</a>; +<a name="l00226"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a81aaf488f8158ef55b1bb678f66feb7d">00226</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a81aaf488f8158ef55b1bb678f66feb7d">outputChannels</a>; +<a name="l00227"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a56247b458a937ae84d98ca9c4b243275">00227</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a56247b458a937ae84d98ca9c4b243275">inputChannels</a>; +<a name="l00228"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a3e8ad34c2d14e24293a0beafc26186e7">00228</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a3e8ad34c2d14e24293a0beafc26186e7">duplexChannels</a>; +<a name="l00229"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a5365245e73ffe29a05734de4474acd58">00229</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a5365245e73ffe29a05734de4474acd58">isDefaultOutput</a>; +<a name="l00230"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a7c8aca084bd908799b6be5954b80def2">00230</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a7c8aca084bd908799b6be5954b80def2">isDefaultInput</a>; +<a name="l00231"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#afa65f5f92f66ce7aacd3ff35e11b230f">00231</a> std::vector<unsigned int> <a class="code" href="structRtAudio_1_1DeviceInfo.html#afa65f5f92f66ce7aacd3ff35e11b230f">sampleRates</a>; +<a name="l00232"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a23251b549b89b2fe04a57fcd7cb76ea4">00232</a> <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a23251b549b89b2fe04a57fcd7cb76ea4">nativeFormats</a>; +<a name="l00234"></a>00234 <span class="comment">// Default constructor.</span> +<a name="l00235"></a>00235 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">DeviceInfo</a>() +<a name="l00236"></a>00236 :<a class="code" href="structRtAudio_1_1DeviceInfo.html#a97573717ccb1e75a834a0a108cd6982d">probed</a>(false), <a class="code" href="structRtAudio_1_1DeviceInfo.html#a81aaf488f8158ef55b1bb678f66feb7d">outputChannels</a>(0), <a class="code" href="structRtAudio_1_1DeviceInfo.html#a56247b458a937ae84d98ca9c4b243275">inputChannels</a>(0), <a class="code" href="structRtAudio_1_1DeviceInfo.html#a3e8ad34c2d14e24293a0beafc26186e7">duplexChannels</a>(0), +<a name="l00237"></a>00237 <a class="code" href="structRtAudio_1_1DeviceInfo.html#a5365245e73ffe29a05734de4474acd58">isDefaultOutput</a>(false), <a class="code" href="structRtAudio_1_1DeviceInfo.html#a7c8aca084bd908799b6be5954b80def2">isDefaultInput</a>(false), <a class="code" href="structRtAudio_1_1DeviceInfo.html#a23251b549b89b2fe04a57fcd7cb76ea4">nativeFormats</a>(0) {} +<a name="l00238"></a>00238 }; +<a name="l00239"></a>00239 +<a name="l00241"></a><a class="code" href="structRtAudio_1_1StreamParameters.html">00241</a> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">StreamParameters</a> { +<a name="l00242"></a><a class="code" href="structRtAudio_1_1StreamParameters.html#ab3c72bcf3ef12149ae9a4fb597cc5489">00242</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamParameters.html#ab3c72bcf3ef12149ae9a4fb597cc5489">deviceId</a>; +<a name="l00243"></a><a class="code" href="structRtAudio_1_1StreamParameters.html#a88a10091b6e284e21235cc6f25332ebd">00243</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamParameters.html#a88a10091b6e284e21235cc6f25332ebd">nChannels</a>; +<a name="l00244"></a><a class="code" href="structRtAudio_1_1StreamParameters.html#ad4b4503782653ec93c83328c46abe50c">00244</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamParameters.html#ad4b4503782653ec93c83328c46abe50c">firstChannel</a>; +<a name="l00246"></a>00246 <span class="comment">// Default constructor.</span> +<a name="l00247"></a>00247 <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">StreamParameters</a>() +<a name="l00248"></a>00248 : <a class="code" href="structRtAudio_1_1StreamParameters.html#ab3c72bcf3ef12149ae9a4fb597cc5489">deviceId</a>(0), <a class="code" href="structRtAudio_1_1StreamParameters.html#a88a10091b6e284e21235cc6f25332ebd">nChannels</a>(0), <a class="code" href="structRtAudio_1_1StreamParameters.html#ad4b4503782653ec93c83328c46abe50c">firstChannel</a>(0) {} +<a name="l00249"></a>00249 }; +<a name="l00250"></a>00250 +<a name="l00252"></a>00252 +<a name="l00308"></a><a class="code" href="structRtAudio_1_1StreamOptions.html">00308</a> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">StreamOptions</a> { +<a name="l00309"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#a0ecc98b031aa3af49d09b781643e298b">00309</a> <a class="code" href="RtAudio_8h.html#a2c0f59b200dcec4d4e760f9166b29c41" title="RtAudio stream option flags.">RtAudioStreamFlags</a> <a class="code" href="structRtAudio_1_1StreamOptions.html#a0ecc98b031aa3af49d09b781643e298b">flags</a>; +<a name="l00310"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#a75a14cfab903d0e1c091bc16aec80240">00310</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamOptions.html#a75a14cfab903d0e1c091bc16aec80240">numberOfBuffers</a>; +<a name="l00311"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#a2a4b0b8d690c624d20f4e8f4be6ca9ba">00311</a> std::string <a class="code" href="structRtAudio_1_1StreamOptions.html#a2a4b0b8d690c624d20f4e8f4be6ca9ba">streamName</a>; +<a name="l00312"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#adfd267059434edb21573c584e6367def">00312</a> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamOptions.html#adfd267059434edb21573c584e6367def">priority</a>; +<a name="l00314"></a>00314 <span class="comment">// Default constructor.</span> +<a name="l00315"></a>00315 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">StreamOptions</a>() +<a name="l00316"></a>00316 : <a class="code" href="structRtAudio_1_1StreamOptions.html#a0ecc98b031aa3af49d09b781643e298b">flags</a>(0), <a class="code" href="structRtAudio_1_1StreamOptions.html#a75a14cfab903d0e1c091bc16aec80240">numberOfBuffers</a>(0), <a class="code" href="structRtAudio_1_1StreamOptions.html#adfd267059434edb21573c584e6367def">priority</a>(0) {} +<a name="l00317"></a>00317 }; +<a name="l00318"></a>00318 +<a name="l00320"></a>00320 +<a name="l00325"></a>00325 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#ae266ffad2ef428d0b2c6c262d391ce26" title="A static function to determine the available compiled audio APIs.">getCompiledApi</a>( std::vector<RtAudio::Api> &apis ) <span class="keywordflow">throw</span>(); +<a name="l00326"></a>00326 +<a name="l00328"></a>00328 +<a name="l00336"></a>00336 <a class="code" href="classRtAudio.html#afd0bfa26deae9804e18faff59d0273d9" title="The class constructor.">RtAudio</a>( <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> api=<a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849aa49af3ac767106158bc6cad74fb214ae">UNSPECIFIED</a> ) throw(); +<a name="l00337"></a>00337 +<a name="l00339"></a>00339 +<a name="l00343"></a>00343 ~<a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>() throw(); +<a name="l00344"></a>00344 +<a name="l00346"></a>00346 <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::<a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">Api</a> <a class="code" href="classRtAudio.html#a83687634795792b2c47e4ae1cf8a5246" title="Returns the audio API specifier for the current instance of RtAudio.">getCurrentApi</a>( <span class="keywordtype">void</span> ) throw(); +<a name="l00347"></a>00347 +<a name="l00349"></a>00349 +<a name="l00354"></a>00354 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount</a>( <span class="keywordtype">void</span> ) throw(); +<a name="l00355"></a>00355 +<a name="l00357"></a>00357 +<a name="l00367"></a>00367 <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::DeviceInfo <a class="code" href="classRtAudio.html#a02d7ff44ad1d7eae22283a052f3dfda8" title="Return an RtAudio::DeviceInfo structure for a specified device number.">getDeviceInfo</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00368"></a>00368 +<a name="l00370"></a>00370 +<a name="l00377"></a>00377 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a3a3f3dbe13ea696b521e49cdaaa357bc" title="A function that returns the index of the default output device.">getDefaultOutputDevice</a>( <span class="keywordtype">void</span> ) throw(); +<a name="l00378"></a>00378 +<a name="l00380"></a>00380 +<a name="l00387"></a>00387 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#aad8b94edd3cd379ee300b125750ac6ce" title="A function that returns the index of the default input device.">getDefaultInputDevice</a>( <span class="keywordtype">void</span> ) throw(); +<a name="l00388"></a>00388 +<a name="l00390"></a>00390 +<a name="l00427"></a>00427 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#afacc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">openStream</a>( <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::StreamParameters *outputParameters, +<a name="l00428"></a>00428 <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::StreamParameters *inputParameters, +<a name="l00429"></a>00429 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00430"></a>00430 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferFrames, <a class="code" href="RtAudio_8h.html#a112c7b7e25a974977f6fc094cef1a31f" title="RtAudio callback function prototype.">RtAudioCallback</a> callback, +<a name="l00431"></a>00431 <span class="keywordtype">void</span> *userData = NULL, <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::StreamOptions *options = NULL ); +<a name="l00432"></a>00432 +<a name="l00434"></a>00434 +<a name="l00438"></a>00438 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a90d599002ad32cf250a4cb866f2cc93a" title="A function that closes a stream and frees any associated stream memory.">closeStream</a>( <span class="keywordtype">void</span> ) throw(); +<a name="l00439"></a>00439 +<a name="l00441"></a>00441 +<a name="l00447"></a>00447 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#aec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">startStream</a>( <span class="keywordtype">void</span> ); +<a name="l00448"></a>00448 +<a name="l00450"></a>00450 +<a name="l00456"></a>00456 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#af4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">stopStream</a>( <span class="keywordtype">void</span> ); +<a name="l00457"></a>00457 +<a name="l00459"></a>00459 +<a name="l00465"></a>00465 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#ad0586b47cd6bb9591a80b4052815991f" title="Stop a stream, discarding any samples remaining in the input/output queue.">abortStream</a>( <span class="keywordtype">void</span> ); +<a name="l00466"></a>00466 +<a name="l00468"></a>00468 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a3863e45ff81dbe97176de0ee7545917f" title="Returns true if a stream is open and false if not.">isStreamOpen</a>( <span class="keywordtype">void</span> ) const throw(); +<a name="l00469"></a>00469 +<a name="l00471"></a>00471 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a84cc8d9b7ab9bc5f37bcf48430ec5aea" title="Returns true if the stream is running and false if it is stopped or not open.">isStreamRunning</a>( <span class="keywordtype">void</span> ) const throw(); +<a name="l00472"></a>00472 +<a name="l00474"></a>00474 +<a name="l00477"></a>00477 <span class="keywordtype">double</span> <a class="code" href="classRtAudio.html#a344e59a62353c5791db4621b985cb2ca" title="Returns the number of elapsed seconds since the stream was started.">getStreamTime</a>( <span class="keywordtype">void</span> ); +<a name="l00478"></a>00478 +<a name="l00480"></a>00480 +<a name="l00488"></a>00488 <span class="keywordtype">long</span> <a class="code" href="classRtAudio.html#a843c989d9f501c71bc2f2c5ca18df9f3" title="Returns the internal stream latency in sample frames.">getStreamLatency</a>( <span class="keywordtype">void</span> ); +<a name="l00489"></a>00489 +<a name="l00491"></a>00491 +<a name="l00496"></a>00496 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a28214b8b05d60b45c24ee6fae7b2a0b5" title="Returns actual sample rate in use by the stream.">getStreamSampleRate</a>( <span class="keywordtype">void</span> ); +<a name="l00497"></a>00497 +<a name="l00499"></a>00499 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#af0752ee51cce3dd90a3bd009f9fdbe77" title="Specify whether warning messages should be printed to stderr.">showWarnings</a>( <span class="keywordtype">bool</span> value = true ) throw(); +<a name="l00500"></a>00500 +<a name="l00501"></a>00501 protected: +<a name="l00502"></a>00502 +<a name="l00503"></a>00503 <span class="keywordtype">void</span> openRtApi( <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::<a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">Api</a> api ); +<a name="l00504"></a>00504 RtApi *rtapi_; +<a name="l00505"></a>00505 }; +<a name="l00506"></a>00506 +<a name="l00507"></a>00507 <span class="comment">// Operating system dependent thread functionality.</span> +<a name="l00508"></a>00508 <span class="preprocessor">#if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__)</span> +<a name="l00509"></a>00509 <span class="preprocessor"></span><span class="preprocessor"> #include <windows.h></span> +<a name="l00510"></a>00510 <span class="preprocessor"> #include <process.h></span> +<a name="l00511"></a>00511 +<a name="l00512"></a>00512 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ThreadHandle; +<a name="l00513"></a>00513 <span class="keyword">typedef</span> CRITICAL_SECTION StreamMutex; +<a name="l00514"></a>00514 +<a name="l00515"></a>00515 <span class="preprocessor">#elif defined(__LINUX_ALSA__) || defined(__LINUX_PULSE__) || defined(__UNIX_JACK__) || defined(__LINUX_OSS__) || defined(__MACOSX_CORE__)</span> +<a name="l00516"></a>00516 <span class="preprocessor"></span> <span class="comment">// Using pthread library for various flavors of unix.</span> +<a name="l00517"></a>00517 <span class="preprocessor"> #include <pthread.h></span> +<a name="l00518"></a>00518 +<a name="l00519"></a>00519 <span class="keyword">typedef</span> pthread_t ThreadHandle; +<a name="l00520"></a>00520 <span class="keyword">typedef</span> pthread_mutex_t StreamMutex; +<a name="l00521"></a>00521 +<a name="l00522"></a>00522 <span class="preprocessor">#else // Setup for "dummy" behavior</span> +<a name="l00523"></a>00523 <span class="preprocessor"></span> +<a name="l00524"></a>00524 <span class="preprocessor"> #define __RTAUDIO_DUMMY__</span> +<a name="l00525"></a>00525 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">int</span> ThreadHandle; +<a name="l00526"></a>00526 <span class="keyword">typedef</span> <span class="keywordtype">int</span> StreamMutex; +<a name="l00527"></a>00527 +<a name="l00528"></a>00528 <span class="preprocessor">#endif</span> +<a name="l00529"></a>00529 <span class="preprocessor"></span> +<a name="l00530"></a>00530 <span class="comment">// This global structure type is used to pass callback information</span> +<a name="l00531"></a>00531 <span class="comment">// between the private RtAudio stream structure and global callback</span> +<a name="l00532"></a>00532 <span class="comment">// handling functions.</span> +<a name="l00533"></a>00533 <span class="keyword">struct </span>CallbackInfo { +<a name="l00534"></a>00534 <span class="keywordtype">void</span> *object; <span class="comment">// Used as a "this" pointer.</span> +<a name="l00535"></a>00535 ThreadHandle thread; +<a name="l00536"></a>00536 <span class="keywordtype">void</span> *callback; +<a name="l00537"></a>00537 <span class="keywordtype">void</span> *userData; +<a name="l00538"></a>00538 <span class="keywordtype">void</span> *apiInfo; <span class="comment">// void pointer for API specific callback information</span> +<a name="l00539"></a>00539 <span class="keywordtype">bool</span> isRunning; +<a name="l00540"></a>00540 +<a name="l00541"></a>00541 <span class="comment">// Default constructor.</span> +<a name="l00542"></a>00542 CallbackInfo() +<a name="l00543"></a>00543 :object(0), callback(0), userData(0), apiInfo(0), isRunning(false) {} +<a name="l00544"></a>00544 }; +<a name="l00545"></a>00545 +<a name="l00546"></a>00546 <span class="comment">// **************************************************************** //</span> +<a name="l00547"></a>00547 <span class="comment">//</span> +<a name="l00548"></a>00548 <span class="comment">// RtApi class declaration.</span> +<a name="l00549"></a>00549 <span class="comment">//</span> +<a name="l00550"></a>00550 <span class="comment">// Subclasses of RtApi contain all API- and OS-specific code necessary</span> +<a name="l00551"></a>00551 <span class="comment">// to fully implement the RtAudio API.</span> +<a name="l00552"></a>00552 <span class="comment">//</span> +<a name="l00553"></a>00553 <span class="comment">// Note that RtApi is an abstract base class and cannot be</span> +<a name="l00554"></a>00554 <span class="comment">// explicitly instantiated. The class RtAudio will create an</span> +<a name="l00555"></a>00555 <span class="comment">// instance of an RtApi subclass (RtApiOss, RtApiAlsa,</span> +<a name="l00556"></a>00556 <span class="comment">// RtApiJack, RtApiCore, RtApiDs, or RtApiAsio).</span> +<a name="l00557"></a>00557 <span class="comment">//</span> +<a name="l00558"></a>00558 <span class="comment">// **************************************************************** //</span> +<a name="l00559"></a>00559 +<a name="l00560"></a>00560 <span class="preprocessor">#if defined( HAVE_GETTIMEOFDAY )</span> +<a name="l00561"></a>00561 <span class="preprocessor"></span><span class="preprocessor"> #include <sys/time.h></span> +<a name="l00562"></a>00562 <span class="preprocessor">#endif</span> +<a name="l00563"></a>00563 <span class="preprocessor"></span> +<a name="l00564"></a>00564 <span class="preprocessor">#include <sstream></span> +<a name="l00565"></a>00565 +<a name="l00566"></a>00566 <span class="keyword">class </span>RtApi +<a name="l00567"></a>00567 { +<a name="l00568"></a>00568 <span class="keyword">public</span>: +<a name="l00569"></a>00569 +<a name="l00570"></a>00570 RtApi(); +<a name="l00571"></a>00571 <span class="keyword">virtual</span> ~RtApi(); +<a name="l00572"></a>00572 <span class="keyword">virtual</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> <a class="code" href="classRtAudio.html#a83687634795792b2c47e4ae1cf8a5246" title="Returns the audio API specifier for the current instance of RtAudio.">getCurrentApi</a>( <span class="keywordtype">void</span> ) = 0; +<a name="l00573"></a>00573 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount</a>( <span class="keywordtype">void</span> ) = 0; +<a name="l00574"></a>00574 <span class="keyword">virtual</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> <a class="code" href="classRtAudio.html#a02d7ff44ad1d7eae22283a052f3dfda8" title="Return an RtAudio::DeviceInfo structure for a specified device number.">getDeviceInfo</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ) = 0; +<a name="l00575"></a>00575 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#aad8b94edd3cd379ee300b125750ac6ce" title="A function that returns the index of the default input device.">getDefaultInputDevice</a>( <span class="keywordtype">void</span> ); +<a name="l00576"></a>00576 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a3a3f3dbe13ea696b521e49cdaaa357bc" title="A function that returns the index of the default output device.">getDefaultOutputDevice</a>( <span class="keywordtype">void</span> ); +<a name="l00577"></a>00577 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#afacc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">openStream</a>( <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">RtAudio::StreamParameters</a> *outputParameters, +<a name="l00578"></a>00578 <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">RtAudio::StreamParameters</a> *inputParameters, +<a name="l00579"></a>00579 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00580"></a>00580 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferFrames, <a class="code" href="RtAudio_8h.html#a112c7b7e25a974977f6fc094cef1a31f" title="RtAudio callback function prototype.">RtAudioCallback</a> callback, +<a name="l00581"></a>00581 <span class="keywordtype">void</span> *userData, <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00582"></a>00582 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a90d599002ad32cf250a4cb866f2cc93a" title="A function that closes a stream and frees any associated stream memory.">closeStream</a>( <span class="keywordtype">void</span> ); +<a name="l00583"></a>00583 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#aec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">startStream</a>( <span class="keywordtype">void</span> ) = 0; +<a name="l00584"></a>00584 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#af4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">stopStream</a>( <span class="keywordtype">void</span> ) = 0; +<a name="l00585"></a>00585 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#ad0586b47cd6bb9591a80b4052815991f" title="Stop a stream, discarding any samples remaining in the input/output queue.">abortStream</a>( <span class="keywordtype">void</span> ) = 0; +<a name="l00586"></a>00586 <span class="keywordtype">long</span> <a class="code" href="classRtAudio.html#a843c989d9f501c71bc2f2c5ca18df9f3" title="Returns the internal stream latency in sample frames.">getStreamLatency</a>( <span class="keywordtype">void</span> ); +<a name="l00587"></a>00587 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a28214b8b05d60b45c24ee6fae7b2a0b5" title="Returns actual sample rate in use by the stream.">getStreamSampleRate</a>( <span class="keywordtype">void</span> ); +<a name="l00588"></a>00588 <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classRtAudio.html#a344e59a62353c5791db4621b985cb2ca" title="Returns the number of elapsed seconds since the stream was started.">getStreamTime</a>( <span class="keywordtype">void</span> ); +<a name="l00589"></a>00589 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a3863e45ff81dbe97176de0ee7545917f" title="Returns true if a stream is open and false if not.">isStreamOpen</a>( <span class="keywordtype">void</span> )<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stream_.state != STREAM_CLOSED; }; +<a name="l00590"></a>00590 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a84cc8d9b7ab9bc5f37bcf48430ec5aea" title="Returns true if the stream is running and false if it is stopped or not open.">isStreamRunning</a>( <span class="keywordtype">void</span> )<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stream_.state == STREAM_RUNNING; }; +<a name="l00591"></a>00591 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#af0752ee51cce3dd90a3bd009f9fdbe77" title="Specify whether warning messages should be printed to stderr.">showWarnings</a>( <span class="keywordtype">bool</span> value ) { showWarnings_ = value; }; <a name="l00592"></a>00592 -<a name="l00593"></a>00593 <span class="keyword">protected</span>: -<a name="l00594"></a>00594 -<a name="l00595"></a>00595 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAX_SAMPLE_RATES; -<a name="l00596"></a>00596 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SAMPLE_RATES[]; -<a name="l00597"></a>00597 -<a name="l00598"></a>00598 <span class="keyword">enum</span> { FAILURE, SUCCESS }; -<a name="l00599"></a>00599 -<a name="l00600"></a>00600 <span class="keyword">enum</span> StreamState { -<a name="l00601"></a>00601 STREAM_STOPPED, -<a name="l00602"></a>00602 STREAM_RUNNING, -<a name="l00603"></a>00603 STREAM_CLOSED = -50 -<a name="l00604"></a>00604 }; -<a name="l00605"></a>00605 -<a name="l00606"></a>00606 <span class="keyword">enum</span> StreamMode { -<a name="l00607"></a>00607 OUTPUT, -<a name="l00608"></a>00608 INPUT, -<a name="l00609"></a>00609 DUPLEX, -<a name="l00610"></a>00610 UNINITIALIZED = -75 -<a name="l00611"></a>00611 }; -<a name="l00612"></a>00612 -<a name="l00613"></a>00613 <span class="comment">// A protected structure used for buffer conversion.</span> -<a name="l00614"></a>00614 <span class="keyword">struct </span>ConvertInfo { -<a name="l00615"></a>00615 <span class="keywordtype">int</span> channels; -<a name="l00616"></a>00616 <span class="keywordtype">int</span> inJump, outJump; -<a name="l00617"></a>00617 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> inFormat, outFormat; -<a name="l00618"></a>00618 std::vector<int> inOffset; -<a name="l00619"></a>00619 std::vector<int> outOffset; -<a name="l00620"></a>00620 }; -<a name="l00621"></a>00621 -<a name="l00622"></a>00622 <span class="comment">// A protected structure for audio streams.</span> -<a name="l00623"></a>00623 <span class="keyword">struct </span>RtApiStream { -<a name="l00624"></a>00624 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00625"></a>00625 <span class="keywordtype">void</span> *apiHandle; <span class="comment">// void pointer for API specific stream handle information</span> -<a name="l00626"></a>00626 StreamMode mode; <span class="comment">// OUTPUT, INPUT, or DUPLEX.</span> -<a name="l00627"></a>00627 StreamState state; <span class="comment">// STOPPED, RUNNING, or CLOSED</span> -<a name="l00628"></a>00628 <span class="keywordtype">char</span> *userBuffer[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00629"></a>00629 <span class="keywordtype">char</span> *deviceBuffer; -<a name="l00630"></a>00630 <span class="keywordtype">bool</span> doConvertBuffer[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00631"></a>00631 <span class="keywordtype">bool</span> userInterleaved; -<a name="l00632"></a>00632 <span class="keywordtype">bool</span> deviceInterleaved[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00633"></a>00633 <span class="keywordtype">bool</span> doByteSwap[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00634"></a>00634 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate; -<a name="l00635"></a>00635 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferSize; -<a name="l00636"></a>00636 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nBuffers; -<a name="l00637"></a>00637 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nUserChannels[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00638"></a>00638 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nDeviceChannels[2]; <span class="comment">// Playback and record channels, respectively.</span> -<a name="l00639"></a>00639 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelOffset[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00640"></a>00640 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> latency[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00641"></a>00641 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> userFormat; -<a name="l00642"></a>00642 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> deviceFormat[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00643"></a>00643 StreamMutex mutex; -<a name="l00644"></a>00644 CallbackInfo callbackInfo; -<a name="l00645"></a>00645 ConvertInfo convertInfo[2]; -<a name="l00646"></a>00646 <span class="keywordtype">double</span> streamTime; <span class="comment">// Number of elapsed seconds since the stream started.</span> -<a name="l00647"></a>00647 -<a name="l00648"></a>00648 <span class="preprocessor">#if defined(HAVE_GETTIMEOFDAY)</span> -<a name="l00649"></a>00649 <span class="preprocessor"></span> <span class="keyword">struct </span>timeval lastTickTimestamp; -<a name="l00650"></a>00650 <span class="preprocessor">#endif</span> -<a name="l00651"></a>00651 <span class="preprocessor"></span> -<a name="l00652"></a>00652 RtApiStream() -<a name="l00653"></a>00653 :apiHandle(0), deviceBuffer(0) { device[0] = 11111; device[1] = 11111; } -<a name="l00654"></a>00654 }; -<a name="l00655"></a>00655 -<a name="l00656"></a>00656 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">short</span> Int16; -<a name="l00657"></a>00657 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">int</span> Int32; -<a name="l00658"></a>00658 <span class="keyword">typedef</span> <span class="keywordtype">float</span> Float32; -<a name="l00659"></a>00659 <span class="keyword">typedef</span> <span class="keywordtype">double</span> Float64; -<a name="l00660"></a>00660 -<a name="l00661"></a>00661 std::ostringstream errorStream_; -<a name="l00662"></a>00662 std::string errorText_; -<a name="l00663"></a>00663 <span class="keywordtype">bool</span> showWarnings_; -<a name="l00664"></a>00664 RtApiStream stream_; -<a name="l00665"></a>00665 -<a name="l00673"></a>00673 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00674"></a>00674 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00675"></a>00675 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00676"></a>00676 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); -<a name="l00677"></a>00677 -<a name="l00679"></a>00679 <span class="keywordtype">void</span> tickStreamTime( <span class="keywordtype">void</span> ); -<a name="l00680"></a>00680 -<a name="l00682"></a>00682 <span class="keywordtype">void</span> clearStreamInfo(); -<a name="l00683"></a>00683 -<a name="l00688"></a>00688 <span class="keywordtype">void</span> verifyStream( <span class="keywordtype">void</span> ); -<a name="l00689"></a>00689 -<a name="l00691"></a>00691 <span class="keywordtype">void</span> error( <a class="code" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903ac" title="Defined RtError types.">RtError::Type</a> type ); -<a name="l00692"></a>00692 -<a name="l00697"></a>00697 <span class="keywordtype">void</span> convertBuffer( <span class="keywordtype">char</span> *outBuffer, <span class="keywordtype">char</span> *inBuffer, ConvertInfo &info ); -<a name="l00698"></a>00698 -<a name="l00700"></a>00700 <span class="keywordtype">void</span> byteSwapBuffer( <span class="keywordtype">char</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> samples, <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format ); -<a name="l00701"></a>00701 -<a name="l00703"></a>00703 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> formatBytes( <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format ); -<a name="l00704"></a>00704 -<a name="l00706"></a>00706 <span class="keywordtype">void</span> setConvertInfo( StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel ); -<a name="l00707"></a>00707 }; -<a name="l00708"></a>00708 -<a name="l00709"></a>00709 <span class="comment">// **************************************************************** //</span> -<a name="l00710"></a>00710 <span class="comment">//</span> -<a name="l00711"></a>00711 <span class="comment">// Inline RtAudio definitions.</span> +<a name="l00593"></a>00593 +<a name="l00594"></a>00594 <span class="keyword">protected</span>: +<a name="l00595"></a>00595 +<a name="l00596"></a>00596 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAX_SAMPLE_RATES; +<a name="l00597"></a>00597 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SAMPLE_RATES[]; +<a name="l00598"></a>00598 +<a name="l00599"></a>00599 <span class="keyword">enum</span> { FAILURE, SUCCESS }; +<a name="l00600"></a>00600 +<a name="l00601"></a>00601 <span class="keyword">enum</span> StreamState { +<a name="l00602"></a>00602 STREAM_STOPPED, +<a name="l00603"></a>00603 STREAM_STOPPING, +<a name="l00604"></a>00604 STREAM_RUNNING, +<a name="l00605"></a>00605 STREAM_CLOSED = -50 +<a name="l00606"></a>00606 }; +<a name="l00607"></a>00607 +<a name="l00608"></a>00608 <span class="keyword">enum</span> StreamMode { +<a name="l00609"></a>00609 OUTPUT, +<a name="l00610"></a>00610 INPUT, +<a name="l00611"></a>00611 DUPLEX, +<a name="l00612"></a>00612 UNINITIALIZED = -75 +<a name="l00613"></a>00613 }; +<a name="l00614"></a>00614 +<a name="l00615"></a>00615 <span class="comment">// A protected structure used for buffer conversion.</span> +<a name="l00616"></a>00616 <span class="keyword">struct </span>ConvertInfo { +<a name="l00617"></a>00617 <span class="keywordtype">int</span> channels; +<a name="l00618"></a>00618 <span class="keywordtype">int</span> inJump, outJump; +<a name="l00619"></a>00619 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> inFormat, outFormat; +<a name="l00620"></a>00620 std::vector<int> inOffset; +<a name="l00621"></a>00621 std::vector<int> outOffset; +<a name="l00622"></a>00622 }; +<a name="l00623"></a>00623 +<a name="l00624"></a>00624 <span class="comment">// A protected structure for audio streams.</span> +<a name="l00625"></a>00625 <span class="keyword">struct </span>RtApiStream { +<a name="l00626"></a>00626 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00627"></a>00627 <span class="keywordtype">void</span> *apiHandle; <span class="comment">// void pointer for API specific stream handle information</span> +<a name="l00628"></a>00628 StreamMode mode; <span class="comment">// OUTPUT, INPUT, or DUPLEX.</span> +<a name="l00629"></a>00629 StreamState state; <span class="comment">// STOPPED, RUNNING, or CLOSED</span> +<a name="l00630"></a>00630 <span class="keywordtype">char</span> *userBuffer[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00631"></a>00631 <span class="keywordtype">char</span> *deviceBuffer; +<a name="l00632"></a>00632 <span class="keywordtype">bool</span> doConvertBuffer[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00633"></a>00633 <span class="keywordtype">bool</span> userInterleaved; +<a name="l00634"></a>00634 <span class="keywordtype">bool</span> deviceInterleaved[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00635"></a>00635 <span class="keywordtype">bool</span> doByteSwap[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00636"></a>00636 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate; +<a name="l00637"></a>00637 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferSize; +<a name="l00638"></a>00638 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nBuffers; +<a name="l00639"></a>00639 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nUserChannels[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00640"></a>00640 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nDeviceChannels[2]; <span class="comment">// Playback and record channels, respectively.</span> +<a name="l00641"></a>00641 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelOffset[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00642"></a>00642 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> latency[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00643"></a>00643 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> userFormat; +<a name="l00644"></a>00644 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> deviceFormat[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00645"></a>00645 StreamMutex mutex; +<a name="l00646"></a>00646 CallbackInfo callbackInfo; +<a name="l00647"></a>00647 ConvertInfo convertInfo[2]; +<a name="l00648"></a>00648 <span class="keywordtype">double</span> streamTime; <span class="comment">// Number of elapsed seconds since the stream started.</span> +<a name="l00649"></a>00649 +<a name="l00650"></a>00650 <span class="preprocessor">#if defined(HAVE_GETTIMEOFDAY)</span> +<a name="l00651"></a>00651 <span class="preprocessor"></span> <span class="keyword">struct </span>timeval lastTickTimestamp; +<a name="l00652"></a>00652 <span class="preprocessor">#endif</span> +<a name="l00653"></a>00653 <span class="preprocessor"></span> +<a name="l00654"></a>00654 RtApiStream() +<a name="l00655"></a>00655 :apiHandle(0), deviceBuffer(0) { device[0] = 11111; device[1] = 11111; } +<a name="l00656"></a>00656 }; +<a name="l00657"></a>00657 +<a name="l00658"></a>00658 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">short</span> Int16; +<a name="l00659"></a>00659 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">int</span> Int32; +<a name="l00660"></a>00660 <span class="keyword">typedef</span> <span class="keywordtype">float</span> Float32; +<a name="l00661"></a>00661 <span class="keyword">typedef</span> <span class="keywordtype">double</span> Float64; +<a name="l00662"></a>00662 +<a name="l00663"></a>00663 std::ostringstream errorStream_; +<a name="l00664"></a>00664 std::string errorText_; +<a name="l00665"></a>00665 <span class="keywordtype">bool</span> showWarnings_; +<a name="l00666"></a>00666 RtApiStream stream_; +<a name="l00667"></a>00667 +<a name="l00675"></a>00675 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00676"></a>00676 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00677"></a>00677 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00678"></a>00678 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00679"></a>00679 +<a name="l00681"></a>00681 <span class="keywordtype">void</span> tickStreamTime( <span class="keywordtype">void</span> ); +<a name="l00682"></a>00682 +<a name="l00684"></a>00684 <span class="keywordtype">void</span> clearStreamInfo(); +<a name="l00685"></a>00685 +<a name="l00690"></a>00690 <span class="keywordtype">void</span> verifyStream( <span class="keywordtype">void</span> ); +<a name="l00691"></a>00691 +<a name="l00693"></a>00693 <span class="keywordtype">void</span> error( <a class="code" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903ac" title="Defined RtError types.">RtError::Type</a> type ); +<a name="l00694"></a>00694 +<a name="l00699"></a>00699 <span class="keywordtype">void</span> convertBuffer( <span class="keywordtype">char</span> *outBuffer, <span class="keywordtype">char</span> *inBuffer, ConvertInfo &info ); +<a name="l00700"></a>00700 +<a name="l00702"></a>00702 <span class="keywordtype">void</span> byteSwapBuffer( <span class="keywordtype">char</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> samples, <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format ); +<a name="l00703"></a>00703 +<a name="l00705"></a>00705 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> formatBytes( <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format ); +<a name="l00706"></a>00706 +<a name="l00708"></a>00708 <span class="keywordtype">void</span> setConvertInfo( StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel ); +<a name="l00709"></a>00709 }; +<a name="l00710"></a>00710 +<a name="l00711"></a>00711 <span class="comment">// **************************************************************** //</span> <a name="l00712"></a>00712 <span class="comment">//</span> -<a name="l00713"></a>00713 <span class="comment">// **************************************************************** //</span> -<a name="l00714"></a>00714 -<a name="l00715"></a><a class="code" href="classRtAudio.html#a83687634795792b2c47e4ae1cf8a5246">00715</a> <span class="keyword">inline</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> <a class="code" href="classRtAudio.html#a83687634795792b2c47e4ae1cf8a5246" title="Returns the audio API specifier for the current instance of RtAudio.">RtAudio :: getCurrentApi</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getCurrentApi(); } -<a name="l00716"></a><a class="code" href="classRtAudio.html#a747ce2d73803641bbb66d6e78092aa1a">00716</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">RtAudio :: getDeviceCount</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getDeviceCount(); } -<a name="l00717"></a><a class="code" href="classRtAudio.html#a02d7ff44ad1d7eae22283a052f3dfda8">00717</a> <span class="keyword">inline</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> <a class="code" href="classRtAudio.html#a02d7ff44ad1d7eae22283a052f3dfda8" title="Return an RtAudio::DeviceInfo structure for a specified device number.">RtAudio :: getDeviceInfo</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ) { <span class="keywordflow">return</span> rtapi_->getDeviceInfo( device ); } -<a name="l00718"></a><a class="code" href="classRtAudio.html#aad8b94edd3cd379ee300b125750ac6ce">00718</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#aad8b94edd3cd379ee300b125750ac6ce" title="A function that returns the index of the default input device.">RtAudio :: getDefaultInputDevice</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getDefaultInputDevice(); } -<a name="l00719"></a><a class="code" href="classRtAudio.html#a3a3f3dbe13ea696b521e49cdaaa357bc">00719</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a3a3f3dbe13ea696b521e49cdaaa357bc" title="A function that returns the index of the default output device.">RtAudio :: getDefaultOutputDevice</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getDefaultOutputDevice(); } -<a name="l00720"></a><a class="code" href="classRtAudio.html#a90d599002ad32cf250a4cb866f2cc93a">00720</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a90d599002ad32cf250a4cb866f2cc93a" title="A function that closes a stream and frees any associated stream memory.">RtAudio :: closeStream</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->closeStream(); } -<a name="l00721"></a><a class="code" href="classRtAudio.html#aec017a89629ccef66a90b60be22a2f80">00721</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#aec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">RtAudio :: startStream</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->startStream(); } -<a name="l00722"></a><a class="code" href="classRtAudio.html#af4c241ff86936ecc8108f0d9dfe3efdd">00722</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#af4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">RtAudio :: stopStream</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->stopStream(); } -<a name="l00723"></a><a class="code" href="classRtAudio.html#ad0586b47cd6bb9591a80b4052815991f">00723</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#ad0586b47cd6bb9591a80b4052815991f" title="Stop a stream, discarding any samples remaining in the input/output queue.">RtAudio :: abortStream</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->abortStream(); } -<a name="l00724"></a><a class="code" href="classRtAudio.html#a3863e45ff81dbe97176de0ee7545917f">00724</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a3863e45ff81dbe97176de0ee7545917f" title="Returns true if a stream is open and false if not.">RtAudio :: isStreamOpen</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> rtapi_->isStreamOpen(); } -<a name="l00725"></a><a class="code" href="classRtAudio.html#a84cc8d9b7ab9bc5f37bcf48430ec5aea">00725</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a84cc8d9b7ab9bc5f37bcf48430ec5aea" title="Returns true if the stream is running and false if it is stopped or not open.">RtAudio :: isStreamRunning</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> rtapi_->isStreamRunning(); } -<a name="l00726"></a><a class="code" href="classRtAudio.html#a843c989d9f501c71bc2f2c5ca18df9f3">00726</a> <span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classRtAudio.html#a843c989d9f501c71bc2f2c5ca18df9f3" title="Returns the internal stream latency in sample frames.">RtAudio :: getStreamLatency</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->getStreamLatency(); } -<a name="l00727"></a><a class="code" href="classRtAudio.html#a28214b8b05d60b45c24ee6fae7b2a0b5">00727</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a28214b8b05d60b45c24ee6fae7b2a0b5" title="Returns actual sample rate in use by the stream.">RtAudio :: getStreamSampleRate</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->getStreamSampleRate(); }; -<a name="l00728"></a><a class="code" href="classRtAudio.html#a344e59a62353c5791db4621b985cb2ca">00728</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classRtAudio.html#a344e59a62353c5791db4621b985cb2ca" title="Returns the number of elapsed seconds since the stream was started.">RtAudio :: getStreamTime</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->getStreamTime(); } -<a name="l00729"></a><a class="code" href="classRtAudio.html#af0752ee51cce3dd90a3bd009f9fdbe77">00729</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#af0752ee51cce3dd90a3bd009f9fdbe77" title="Specify whether warning messages should be printed to stderr.">RtAudio :: showWarnings</a>( <span class="keywordtype">bool</span> value ) <span class="keywordflow">throw</span>() { rtapi_->showWarnings( value ); } -<a name="l00730"></a>00730 -<a name="l00731"></a>00731 <span class="comment">// RtApi Subclass prototypes.</span> +<a name="l00713"></a>00713 <span class="comment">// Inline RtAudio definitions.</span> +<a name="l00714"></a>00714 <span class="comment">//</span> +<a name="l00715"></a>00715 <span class="comment">// **************************************************************** //</span> +<a name="l00716"></a>00716 +<a name="l00717"></a><a class="code" href="classRtAudio.html#a83687634795792b2c47e4ae1cf8a5246">00717</a> <span class="keyword">inline</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> <a class="code" href="classRtAudio.html#a83687634795792b2c47e4ae1cf8a5246" title="Returns the audio API specifier for the current instance of RtAudio.">RtAudio :: getCurrentApi</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getCurrentApi(); } +<a name="l00718"></a><a class="code" href="classRtAudio.html#a747ce2d73803641bbb66d6e78092aa1a">00718</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">RtAudio :: getDeviceCount</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getDeviceCount(); } +<a name="l00719"></a><a class="code" href="classRtAudio.html#a02d7ff44ad1d7eae22283a052f3dfda8">00719</a> <span class="keyword">inline</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> <a class="code" href="classRtAudio.html#a02d7ff44ad1d7eae22283a052f3dfda8" title="Return an RtAudio::DeviceInfo structure for a specified device number.">RtAudio :: getDeviceInfo</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ) { <span class="keywordflow">return</span> rtapi_->getDeviceInfo( device ); } +<a name="l00720"></a><a class="code" href="classRtAudio.html#aad8b94edd3cd379ee300b125750ac6ce">00720</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#aad8b94edd3cd379ee300b125750ac6ce" title="A function that returns the index of the default input device.">RtAudio :: getDefaultInputDevice</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getDefaultInputDevice(); } +<a name="l00721"></a><a class="code" href="classRtAudio.html#a3a3f3dbe13ea696b521e49cdaaa357bc">00721</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a3a3f3dbe13ea696b521e49cdaaa357bc" title="A function that returns the index of the default output device.">RtAudio :: getDefaultOutputDevice</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getDefaultOutputDevice(); } +<a name="l00722"></a><a class="code" href="classRtAudio.html#a90d599002ad32cf250a4cb866f2cc93a">00722</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a90d599002ad32cf250a4cb866f2cc93a" title="A function that closes a stream and frees any associated stream memory.">RtAudio :: closeStream</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->closeStream(); } +<a name="l00723"></a><a class="code" href="classRtAudio.html#aec017a89629ccef66a90b60be22a2f80">00723</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#aec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">RtAudio :: startStream</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->startStream(); } +<a name="l00724"></a><a class="code" href="classRtAudio.html#af4c241ff86936ecc8108f0d9dfe3efdd">00724</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#af4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">RtAudio :: stopStream</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->stopStream(); } +<a name="l00725"></a><a class="code" href="classRtAudio.html#ad0586b47cd6bb9591a80b4052815991f">00725</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#ad0586b47cd6bb9591a80b4052815991f" title="Stop a stream, discarding any samples remaining in the input/output queue.">RtAudio :: abortStream</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->abortStream(); } +<a name="l00726"></a><a class="code" href="classRtAudio.html#a3863e45ff81dbe97176de0ee7545917f">00726</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a3863e45ff81dbe97176de0ee7545917f" title="Returns true if a stream is open and false if not.">RtAudio :: isStreamOpen</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> rtapi_->isStreamOpen(); } +<a name="l00727"></a><a class="code" href="classRtAudio.html#a84cc8d9b7ab9bc5f37bcf48430ec5aea">00727</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a84cc8d9b7ab9bc5f37bcf48430ec5aea" title="Returns true if the stream is running and false if it is stopped or not open.">RtAudio :: isStreamRunning</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> rtapi_->isStreamRunning(); } +<a name="l00728"></a><a class="code" href="classRtAudio.html#a843c989d9f501c71bc2f2c5ca18df9f3">00728</a> <span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classRtAudio.html#a843c989d9f501c71bc2f2c5ca18df9f3" title="Returns the internal stream latency in sample frames.">RtAudio :: getStreamLatency</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->getStreamLatency(); } +<a name="l00729"></a><a class="code" href="classRtAudio.html#a28214b8b05d60b45c24ee6fae7b2a0b5">00729</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a28214b8b05d60b45c24ee6fae7b2a0b5" title="Returns actual sample rate in use by the stream.">RtAudio :: getStreamSampleRate</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->getStreamSampleRate(); }; +<a name="l00730"></a><a class="code" href="classRtAudio.html#a344e59a62353c5791db4621b985cb2ca">00730</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classRtAudio.html#a344e59a62353c5791db4621b985cb2ca" title="Returns the number of elapsed seconds since the stream was started.">RtAudio :: getStreamTime</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->getStreamTime(); } +<a name="l00731"></a><a class="code" href="classRtAudio.html#af0752ee51cce3dd90a3bd009f9fdbe77">00731</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#af0752ee51cce3dd90a3bd009f9fdbe77" title="Specify whether warning messages should be printed to stderr.">RtAudio :: showWarnings</a>( <span class="keywordtype">bool</span> value ) <span class="keywordflow">throw</span>() { rtapi_->showWarnings( value ); } <a name="l00732"></a>00732 -<a name="l00733"></a>00733 <span class="preprocessor">#if defined(__MACOSX_CORE__)</span> -<a name="l00734"></a>00734 <span class="preprocessor"></span> -<a name="l00735"></a>00735 <span class="preprocessor">#include <CoreAudio/AudioHardware.h></span> -<a name="l00736"></a>00736 -<a name="l00737"></a>00737 <span class="keyword">class </span>RtApiCore: <span class="keyword">public</span> RtApi -<a name="l00738"></a>00738 { -<a name="l00739"></a>00739 <span class="keyword">public</span>: -<a name="l00740"></a>00740 -<a name="l00741"></a>00741 RtApiCore(); -<a name="l00742"></a>00742 ~RtApiCore(); -<a name="l00743"></a>00743 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a9fec92b8272244a87a6a11a717bd662d">RtAudio::MACOSX_CORE</a>; }; -<a name="l00744"></a>00744 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); -<a name="l00745"></a>00745 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); -<a name="l00746"></a>00746 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultOutputDevice( <span class="keywordtype">void</span> ); -<a name="l00747"></a>00747 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultInputDevice( <span class="keywordtype">void</span> ); -<a name="l00748"></a>00748 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); -<a name="l00749"></a>00749 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); -<a name="l00750"></a>00750 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); -<a name="l00751"></a>00751 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); -<a name="l00752"></a>00752 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); -<a name="l00753"></a>00753 -<a name="l00754"></a>00754 <span class="comment">// This function is intended for internal use only. It must be</span> -<a name="l00755"></a>00755 <span class="comment">// public because it is called by the internal callback handler,</span> -<a name="l00756"></a>00756 <span class="comment">// which is not a member of RtAudio. External use of this function</span> -<a name="l00757"></a>00757 <span class="comment">// will most likely produce highly undesireable results!</span> -<a name="l00758"></a>00758 <span class="keywordtype">bool</span> callbackEvent( AudioDeviceID deviceId, -<a name="l00759"></a>00759 <span class="keyword">const</span> AudioBufferList *inBufferList, -<a name="l00760"></a>00760 <span class="keyword">const</span> AudioBufferList *outBufferList ); -<a name="l00761"></a>00761 -<a name="l00762"></a>00762 <span class="keyword">private</span>: +<a name="l00733"></a>00733 <span class="comment">// RtApi Subclass prototypes.</span> +<a name="l00734"></a>00734 +<a name="l00735"></a>00735 <span class="preprocessor">#if defined(__MACOSX_CORE__)</span> +<a name="l00736"></a>00736 <span class="preprocessor"></span> +<a name="l00737"></a>00737 <span class="preprocessor">#include <CoreAudio/AudioHardware.h></span> +<a name="l00738"></a>00738 +<a name="l00739"></a>00739 <span class="keyword">class </span>RtApiCore: <span class="keyword">public</span> RtApi +<a name="l00740"></a>00740 { +<a name="l00741"></a>00741 <span class="keyword">public</span>: +<a name="l00742"></a>00742 +<a name="l00743"></a>00743 RtApiCore(); +<a name="l00744"></a>00744 ~RtApiCore(); +<a name="l00745"></a>00745 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a9fec92b8272244a87a6a11a717bd662d">RtAudio::MACOSX_CORE</a>; }; +<a name="l00746"></a>00746 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); +<a name="l00747"></a>00747 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00748"></a>00748 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultOutputDevice( <span class="keywordtype">void</span> ); +<a name="l00749"></a>00749 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultInputDevice( <span class="keywordtype">void</span> ); +<a name="l00750"></a>00750 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); +<a name="l00751"></a>00751 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); +<a name="l00752"></a>00752 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); +<a name="l00753"></a>00753 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); +<a name="l00754"></a>00754 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); +<a name="l00755"></a>00755 +<a name="l00756"></a>00756 <span class="comment">// This function is intended for internal use only. It must be</span> +<a name="l00757"></a>00757 <span class="comment">// public because it is called by the internal callback handler,</span> +<a name="l00758"></a>00758 <span class="comment">// which is not a member of RtAudio. External use of this function</span> +<a name="l00759"></a>00759 <span class="comment">// will most likely produce highly undesireable results!</span> +<a name="l00760"></a>00760 <span class="keywordtype">bool</span> callbackEvent( AudioDeviceID deviceId, +<a name="l00761"></a>00761 <span class="keyword">const</span> AudioBufferList *inBufferList, +<a name="l00762"></a>00762 <span class="keyword">const</span> AudioBufferList *outBufferList ); <a name="l00763"></a>00763 -<a name="l00764"></a>00764 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00765"></a>00765 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00766"></a>00766 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00767"></a>00767 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); -<a name="l00768"></a>00768 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* getErrorCode( OSStatus code ); -<a name="l00769"></a>00769 }; -<a name="l00770"></a>00770 -<a name="l00771"></a>00771 <span class="preprocessor">#endif</span> -<a name="l00772"></a>00772 <span class="preprocessor"></span> -<a name="l00773"></a>00773 <span class="preprocessor">#if defined(__UNIX_JACK__)</span> +<a name="l00764"></a>00764 <span class="keyword">private</span>: +<a name="l00765"></a>00765 +<a name="l00766"></a>00766 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00767"></a>00767 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00768"></a>00768 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00769"></a>00769 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00770"></a>00770 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* getErrorCode( OSStatus code ); +<a name="l00771"></a>00771 }; +<a name="l00772"></a>00772 +<a name="l00773"></a>00773 <span class="preprocessor">#endif</span> <a name="l00774"></a>00774 <span class="preprocessor"></span> -<a name="l00775"></a>00775 <span class="keyword">class </span>RtApiJack: <span class="keyword">public</span> RtApi -<a name="l00776"></a>00776 { -<a name="l00777"></a>00777 <span class="keyword">public</span>: -<a name="l00778"></a>00778 -<a name="l00779"></a>00779 RtApiJack(); -<a name="l00780"></a>00780 ~RtApiJack(); -<a name="l00781"></a>00781 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a4767e17c6edfbd827f91763915df4105">RtAudio::UNIX_JACK</a>; }; -<a name="l00782"></a>00782 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); -<a name="l00783"></a>00783 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); -<a name="l00784"></a>00784 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); -<a name="l00785"></a>00785 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); -<a name="l00786"></a>00786 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); -<a name="l00787"></a>00787 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); -<a name="l00788"></a>00788 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); -<a name="l00789"></a>00789 -<a name="l00790"></a>00790 <span class="comment">// This function is intended for internal use only. It must be</span> -<a name="l00791"></a>00791 <span class="comment">// public because it is called by the internal callback handler,</span> -<a name="l00792"></a>00792 <span class="comment">// which is not a member of RtAudio. External use of this function</span> -<a name="l00793"></a>00793 <span class="comment">// will most likely produce highly undesireable results!</span> -<a name="l00794"></a>00794 <span class="keywordtype">bool</span> callbackEvent( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> nframes ); -<a name="l00795"></a>00795 -<a name="l00796"></a>00796 <span class="keyword">private</span>: +<a name="l00775"></a>00775 <span class="preprocessor">#if defined(__UNIX_JACK__)</span> +<a name="l00776"></a>00776 <span class="preprocessor"></span> +<a name="l00777"></a>00777 <span class="keyword">class </span>RtApiJack: <span class="keyword">public</span> RtApi +<a name="l00778"></a>00778 { +<a name="l00779"></a>00779 <span class="keyword">public</span>: +<a name="l00780"></a>00780 +<a name="l00781"></a>00781 RtApiJack(); +<a name="l00782"></a>00782 ~RtApiJack(); +<a name="l00783"></a>00783 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a4767e17c6edfbd827f91763915df4105">RtAudio::UNIX_JACK</a>; }; +<a name="l00784"></a>00784 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); +<a name="l00785"></a>00785 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00786"></a>00786 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); +<a name="l00787"></a>00787 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); +<a name="l00788"></a>00788 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); +<a name="l00789"></a>00789 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); +<a name="l00790"></a>00790 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); +<a name="l00791"></a>00791 +<a name="l00792"></a>00792 <span class="comment">// This function is intended for internal use only. It must be</span> +<a name="l00793"></a>00793 <span class="comment">// public because it is called by the internal callback handler,</span> +<a name="l00794"></a>00794 <span class="comment">// which is not a member of RtAudio. External use of this function</span> +<a name="l00795"></a>00795 <span class="comment">// will most likely produce highly undesireable results!</span> +<a name="l00796"></a>00796 <span class="keywordtype">bool</span> callbackEvent( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> nframes ); <a name="l00797"></a>00797 -<a name="l00798"></a>00798 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00799"></a>00799 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00800"></a>00800 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00801"></a>00801 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); -<a name="l00802"></a>00802 }; -<a name="l00803"></a>00803 -<a name="l00804"></a>00804 <span class="preprocessor">#endif</span> -<a name="l00805"></a>00805 <span class="preprocessor"></span> -<a name="l00806"></a>00806 <span class="preprocessor">#if defined(__WINDOWS_ASIO__)</span> +<a name="l00798"></a>00798 <span class="keyword">private</span>: +<a name="l00799"></a>00799 +<a name="l00800"></a>00800 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00801"></a>00801 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00802"></a>00802 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00803"></a>00803 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00804"></a>00804 }; +<a name="l00805"></a>00805 +<a name="l00806"></a>00806 <span class="preprocessor">#endif</span> <a name="l00807"></a>00807 <span class="preprocessor"></span> -<a name="l00808"></a>00808 <span class="keyword">class </span>RtApiAsio: <span class="keyword">public</span> RtApi -<a name="l00809"></a>00809 { -<a name="l00810"></a>00810 <span class="keyword">public</span>: -<a name="l00811"></a>00811 -<a name="l00812"></a>00812 RtApiAsio(); -<a name="l00813"></a>00813 ~RtApiAsio(); -<a name="l00814"></a>00814 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a219517d1df90f94d07758481155bd469">RtAudio::WINDOWS_ASIO</a>; }; -<a name="l00815"></a>00815 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); -<a name="l00816"></a>00816 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); -<a name="l00817"></a>00817 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); -<a name="l00818"></a>00818 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); -<a name="l00819"></a>00819 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); -<a name="l00820"></a>00820 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); -<a name="l00821"></a>00821 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); -<a name="l00822"></a>00822 -<a name="l00823"></a>00823 <span class="comment">// This function is intended for internal use only. It must be</span> -<a name="l00824"></a>00824 <span class="comment">// public because it is called by the internal callback handler,</span> -<a name="l00825"></a>00825 <span class="comment">// which is not a member of RtAudio. External use of this function</span> -<a name="l00826"></a>00826 <span class="comment">// will most likely produce highly undesireable results!</span> -<a name="l00827"></a>00827 <span class="keywordtype">bool</span> callbackEvent( <span class="keywordtype">long</span> bufferIndex ); -<a name="l00828"></a>00828 -<a name="l00829"></a>00829 <span class="keyword">private</span>: +<a name="l00808"></a>00808 <span class="preprocessor">#if defined(__WINDOWS_ASIO__)</span> +<a name="l00809"></a>00809 <span class="preprocessor"></span> +<a name="l00810"></a>00810 <span class="keyword">class </span>RtApiAsio: <span class="keyword">public</span> RtApi +<a name="l00811"></a>00811 { +<a name="l00812"></a>00812 <span class="keyword">public</span>: +<a name="l00813"></a>00813 +<a name="l00814"></a>00814 RtApiAsio(); +<a name="l00815"></a>00815 ~RtApiAsio(); +<a name="l00816"></a>00816 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a219517d1df90f94d07758481155bd469">RtAudio::WINDOWS_ASIO</a>; }; +<a name="l00817"></a>00817 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); +<a name="l00818"></a>00818 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00819"></a>00819 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); +<a name="l00820"></a>00820 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); +<a name="l00821"></a>00821 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); +<a name="l00822"></a>00822 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); +<a name="l00823"></a>00823 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); +<a name="l00824"></a>00824 +<a name="l00825"></a>00825 <span class="comment">// This function is intended for internal use only. It must be</span> +<a name="l00826"></a>00826 <span class="comment">// public because it is called by the internal callback handler,</span> +<a name="l00827"></a>00827 <span class="comment">// which is not a member of RtAudio. External use of this function</span> +<a name="l00828"></a>00828 <span class="comment">// will most likely produce highly undesireable results!</span> +<a name="l00829"></a>00829 <span class="keywordtype">bool</span> callbackEvent( <span class="keywordtype">long</span> bufferIndex ); <a name="l00830"></a>00830 -<a name="l00831"></a>00831 std::vector<RtAudio::DeviceInfo> devices_; -<a name="l00832"></a>00832 <span class="keywordtype">void</span> saveDeviceInfo( <span class="keywordtype">void</span> ); -<a name="l00833"></a>00833 <span class="keywordtype">bool</span> coInitialized_; -<a name="l00834"></a>00834 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00835"></a>00835 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00836"></a>00836 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00837"></a>00837 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); -<a name="l00838"></a>00838 }; -<a name="l00839"></a>00839 -<a name="l00840"></a>00840 <span class="preprocessor">#endif</span> -<a name="l00841"></a>00841 <span class="preprocessor"></span> -<a name="l00842"></a>00842 <span class="preprocessor">#if defined(__WINDOWS_DS__)</span> +<a name="l00831"></a>00831 <span class="keyword">private</span>: +<a name="l00832"></a>00832 +<a name="l00833"></a>00833 std::vector<RtAudio::DeviceInfo> devices_; +<a name="l00834"></a>00834 <span class="keywordtype">void</span> saveDeviceInfo( <span class="keywordtype">void</span> ); +<a name="l00835"></a>00835 <span class="keywordtype">bool</span> coInitialized_; +<a name="l00836"></a>00836 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00837"></a>00837 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00838"></a>00838 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00839"></a>00839 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00840"></a>00840 }; +<a name="l00841"></a>00841 +<a name="l00842"></a>00842 <span class="preprocessor">#endif</span> <a name="l00843"></a>00843 <span class="preprocessor"></span> -<a name="l00844"></a>00844 <span class="keyword">class </span>RtApiDs: <span class="keyword">public</span> RtApi -<a name="l00845"></a>00845 { -<a name="l00846"></a>00846 <span class="keyword">public</span>: -<a name="l00847"></a>00847 -<a name="l00848"></a>00848 RtApiDs(); -<a name="l00849"></a>00849 ~RtApiDs(); -<a name="l00850"></a>00850 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a28478830f42c2fd61e6c7ad498901931">RtAudio::WINDOWS_DS</a>; }; -<a name="l00851"></a>00851 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); -<a name="l00852"></a>00852 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultOutputDevice( <span class="keywordtype">void</span> ); -<a name="l00853"></a>00853 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultInputDevice( <span class="keywordtype">void</span> ); -<a name="l00854"></a>00854 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); -<a name="l00855"></a>00855 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); -<a name="l00856"></a>00856 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); -<a name="l00857"></a>00857 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); -<a name="l00858"></a>00858 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); -<a name="l00859"></a>00859 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); -<a name="l00860"></a>00860 -<a name="l00861"></a>00861 <span class="comment">// This function is intended for internal use only. It must be</span> -<a name="l00862"></a>00862 <span class="comment">// public because it is called by the internal callback handler,</span> -<a name="l00863"></a>00863 <span class="comment">// which is not a member of RtAudio. External use of this function</span> -<a name="l00864"></a>00864 <span class="comment">// will most likely produce highly undesireable results!</span> -<a name="l00865"></a>00865 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">void</span> ); -<a name="l00866"></a>00866 -<a name="l00867"></a>00867 <span class="keyword">private</span>: +<a name="l00844"></a>00844 <span class="preprocessor">#if defined(__WINDOWS_DS__)</span> +<a name="l00845"></a>00845 <span class="preprocessor"></span> +<a name="l00846"></a>00846 <span class="keyword">class </span>RtApiDs: <span class="keyword">public</span> RtApi +<a name="l00847"></a>00847 { +<a name="l00848"></a>00848 <span class="keyword">public</span>: +<a name="l00849"></a>00849 +<a name="l00850"></a>00850 RtApiDs(); +<a name="l00851"></a>00851 ~RtApiDs(); +<a name="l00852"></a>00852 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a28478830f42c2fd61e6c7ad498901931">RtAudio::WINDOWS_DS</a>; }; +<a name="l00853"></a>00853 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); +<a name="l00854"></a>00854 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultOutputDevice( <span class="keywordtype">void</span> ); +<a name="l00855"></a>00855 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultInputDevice( <span class="keywordtype">void</span> ); +<a name="l00856"></a>00856 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00857"></a>00857 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); +<a name="l00858"></a>00858 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); +<a name="l00859"></a>00859 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); +<a name="l00860"></a>00860 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); +<a name="l00861"></a>00861 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); +<a name="l00862"></a>00862 +<a name="l00863"></a>00863 <span class="comment">// This function is intended for internal use only. It must be</span> +<a name="l00864"></a>00864 <span class="comment">// public because it is called by the internal callback handler,</span> +<a name="l00865"></a>00865 <span class="comment">// which is not a member of RtAudio. External use of this function</span> +<a name="l00866"></a>00866 <span class="comment">// will most likely produce highly undesireable results!</span> +<a name="l00867"></a>00867 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">void</span> ); <a name="l00868"></a>00868 -<a name="l00869"></a>00869 <span class="keywordtype">bool</span> coInitialized_; -<a name="l00870"></a>00870 <span class="keywordtype">bool</span> buffersRolling; -<a name="l00871"></a>00871 <span class="keywordtype">long</span> duplexPrerollBytes; -<a name="l00872"></a>00872 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00873"></a>00873 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00874"></a>00874 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00875"></a>00875 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); -<a name="l00876"></a>00876 }; -<a name="l00877"></a>00877 -<a name="l00878"></a>00878 <span class="preprocessor">#endif</span> -<a name="l00879"></a>00879 <span class="preprocessor"></span> -<a name="l00880"></a>00880 <span class="preprocessor">#if defined(__LINUX_ALSA__)</span> +<a name="l00869"></a>00869 <span class="keyword">private</span>: +<a name="l00870"></a>00870 +<a name="l00871"></a>00871 <span class="keywordtype">bool</span> coInitialized_; +<a name="l00872"></a>00872 <span class="keywordtype">bool</span> buffersRolling; +<a name="l00873"></a>00873 <span class="keywordtype">long</span> duplexPrerollBytes; +<a name="l00874"></a>00874 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00875"></a>00875 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00876"></a>00876 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00877"></a>00877 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00878"></a>00878 }; +<a name="l00879"></a>00879 +<a name="l00880"></a>00880 <span class="preprocessor">#endif</span> <a name="l00881"></a>00881 <span class="preprocessor"></span> -<a name="l00882"></a>00882 <span class="keyword">class </span>RtApiAlsa: <span class="keyword">public</span> RtApi -<a name="l00883"></a>00883 { -<a name="l00884"></a>00884 <span class="keyword">public</span>: -<a name="l00885"></a>00885 -<a name="l00886"></a>00886 RtApiAlsa(); -<a name="l00887"></a>00887 ~RtApiAlsa(); -<a name="l00888"></a>00888 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi() { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849aa7a2ba095c2806caa893b6fb8fc3a1a8">RtAudio::LINUX_ALSA</a>; }; -<a name="l00889"></a>00889 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); -<a name="l00890"></a>00890 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); -<a name="l00891"></a>00891 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); -<a name="l00892"></a>00892 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); -<a name="l00893"></a>00893 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); -<a name="l00894"></a>00894 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); -<a name="l00895"></a>00895 -<a name="l00896"></a>00896 <span class="comment">// This function is intended for internal use only. It must be</span> -<a name="l00897"></a>00897 <span class="comment">// public because it is called by the internal callback handler,</span> -<a name="l00898"></a>00898 <span class="comment">// which is not a member of RtAudio. External use of this function</span> -<a name="l00899"></a>00899 <span class="comment">// will most likely produce highly undesireable results!</span> -<a name="l00900"></a>00900 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">void</span> ); -<a name="l00901"></a>00901 -<a name="l00902"></a>00902 <span class="keyword">private</span>: +<a name="l00882"></a>00882 <span class="preprocessor">#if defined(__LINUX_ALSA__)</span> +<a name="l00883"></a>00883 <span class="preprocessor"></span> +<a name="l00884"></a>00884 <span class="keyword">class </span>RtApiAlsa: <span class="keyword">public</span> RtApi +<a name="l00885"></a>00885 { +<a name="l00886"></a>00886 <span class="keyword">public</span>: +<a name="l00887"></a>00887 +<a name="l00888"></a>00888 RtApiAlsa(); +<a name="l00889"></a>00889 ~RtApiAlsa(); +<a name="l00890"></a>00890 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi() { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849aa7a2ba095c2806caa893b6fb8fc3a1a8">RtAudio::LINUX_ALSA</a>; }; +<a name="l00891"></a>00891 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); +<a name="l00892"></a>00892 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00893"></a>00893 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); +<a name="l00894"></a>00894 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); +<a name="l00895"></a>00895 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); +<a name="l00896"></a>00896 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); +<a name="l00897"></a>00897 +<a name="l00898"></a>00898 <span class="comment">// This function is intended for internal use only. It must be</span> +<a name="l00899"></a>00899 <span class="comment">// public because it is called by the internal callback handler,</span> +<a name="l00900"></a>00900 <span class="comment">// which is not a member of RtAudio. External use of this function</span> +<a name="l00901"></a>00901 <span class="comment">// will most likely produce highly undesireable results!</span> +<a name="l00902"></a>00902 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">void</span> ); <a name="l00903"></a>00903 -<a name="l00904"></a>00904 std::vector<RtAudio::DeviceInfo> devices_; -<a name="l00905"></a>00905 <span class="keywordtype">void</span> saveDeviceInfo( <span class="keywordtype">void</span> ); -<a name="l00906"></a>00906 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00907"></a>00907 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00908"></a>00908 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00909"></a>00909 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); -<a name="l00910"></a>00910 }; -<a name="l00911"></a>00911 -<a name="l00912"></a>00912 <span class="preprocessor">#endif</span> -<a name="l00913"></a>00913 <span class="preprocessor"></span> -<a name="l00914"></a>00914 <span class="preprocessor">#if defined(__LINUX_OSS__)</span> +<a name="l00904"></a>00904 <span class="keyword">private</span>: +<a name="l00905"></a>00905 +<a name="l00906"></a>00906 std::vector<RtAudio::DeviceInfo> devices_; +<a name="l00907"></a>00907 <span class="keywordtype">void</span> saveDeviceInfo( <span class="keywordtype">void</span> ); +<a name="l00908"></a>00908 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00909"></a>00909 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00910"></a>00910 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00911"></a>00911 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00912"></a>00912 }; +<a name="l00913"></a>00913 +<a name="l00914"></a>00914 <span class="preprocessor">#endif</span> <a name="l00915"></a>00915 <span class="preprocessor"></span> -<a name="l00916"></a>00916 <span class="keyword">class </span>RtApiOss: <span class="keyword">public</span> RtApi -<a name="l00917"></a>00917 { -<a name="l00918"></a>00918 <span class="keyword">public</span>: -<a name="l00919"></a>00919 -<a name="l00920"></a>00920 RtApiOss(); -<a name="l00921"></a>00921 ~RtApiOss(); -<a name="l00922"></a>00922 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi() { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a39c84615e61de75e6a4e865596d62c82">RtAudio::LINUX_OSS</a>; }; +<a name="l00916"></a>00916 <span class="preprocessor">#if defined(__LINUX_PULSE__)</span> +<a name="l00917"></a>00917 <span class="preprocessor"></span> +<a name="l00918"></a>00918 <span class="keyword">class </span>RtApiPulse: <span class="keyword">public</span> RtApi +<a name="l00919"></a>00919 { +<a name="l00920"></a>00920 <span class="keyword">public</span>: +<a name="l00921"></a>00921 ~RtApiPulse(); +<a name="l00922"></a>00922 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi() { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849adc17dff310e85d303fb326c837c08d77">RtAudio::LINUX_PULSE</a>; }; <a name="l00923"></a>00923 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); <a name="l00924"></a>00924 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); <a name="l00925"></a>00925 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); @@ -588,54 +588,89 @@ <a name="l00935"></a>00935 <a name="l00936"></a>00936 <span class="keyword">private</span>: <a name="l00937"></a>00937 -<a name="l00938"></a>00938 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00939"></a>00939 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00940"></a>00940 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00941"></a>00941 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); -<a name="l00942"></a>00942 }; -<a name="l00943"></a>00943 -<a name="l00944"></a>00944 <span class="preprocessor">#endif</span> -<a name="l00945"></a>00945 <span class="preprocessor"></span> -<a name="l00946"></a>00946 <span class="preprocessor">#if defined(__RTAUDIO_DUMMY__)</span> +<a name="l00938"></a>00938 std::vector<RtAudio::DeviceInfo> devices_; +<a name="l00939"></a>00939 <span class="keywordtype">void</span> saveDeviceInfo( <span class="keywordtype">void</span> ); +<a name="l00940"></a>00940 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00941"></a>00941 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00942"></a>00942 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00943"></a>00943 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00944"></a>00944 }; +<a name="l00945"></a>00945 +<a name="l00946"></a>00946 <span class="preprocessor">#endif</span> <a name="l00947"></a>00947 <span class="preprocessor"></span> -<a name="l00948"></a>00948 <span class="keyword">class </span>RtApiDummy: <span class="keyword">public</span> RtApi -<a name="l00949"></a>00949 { -<a name="l00950"></a>00950 <span class="keyword">public</span>: -<a name="l00951"></a>00951 -<a name="l00952"></a>00952 RtApiDummy() { errorText_ = <span class="stringliteral">"RtApiDummy: This class provides no functionality."</span>; error( <a class="code" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903aca3a1603c24a56cbdaf5f8ae4ddcb86398">RtError::WARNING</a> ); }; -<a name="l00953"></a>00953 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849ab06b8fd88bf18c9a2b8271f6961ae2d1">RtAudio::RTAUDIO_DUMMY</a>; }; -<a name="l00954"></a>00954 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> 0; }; -<a name="l00955"></a>00955 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ) { <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> info; <span class="keywordflow">return</span> info; }; -<a name="l00956"></a>00956 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ) {}; -<a name="l00957"></a>00957 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ) {}; -<a name="l00958"></a>00958 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ) {}; -<a name="l00959"></a>00959 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ) {}; -<a name="l00960"></a>00960 -<a name="l00961"></a>00961 <span class="keyword">private</span>: -<a name="l00962"></a>00962 -<a name="l00963"></a>00963 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00964"></a>00964 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00965"></a>00965 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00966"></a>00966 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }; -<a name="l00967"></a>00967 }; -<a name="l00968"></a>00968 -<a name="l00969"></a>00969 <span class="preprocessor">#endif</span> -<a name="l00970"></a>00970 <span class="preprocessor"></span> -<a name="l00971"></a>00971 <span class="preprocessor">#endif</span> -<a name="l00972"></a>00972 <span class="preprocessor"></span> -<a name="l00973"></a>00973 <span class="comment">// Indentation settings for Vim and Emacs</span> -<a name="l00974"></a>00974 <span class="comment">//</span> -<a name="l00975"></a>00975 <span class="comment">// Local Variables:</span> -<a name="l00976"></a>00976 <span class="comment">// c-basic-offset: 2</span> -<a name="l00977"></a>00977 <span class="comment">// indent-tabs-mode: nil</span> -<a name="l00978"></a>00978 <span class="comment">// End:</span> -<a name="l00979"></a>00979 <span class="comment">//</span> -<a name="l00980"></a>00980 <span class="comment">// vim: et sts=2 sw=2</span> +<a name="l00948"></a>00948 +<a name="l00949"></a>00949 <span class="preprocessor">#if defined(__LINUX_OSS__)</span> +<a name="l00950"></a>00950 <span class="preprocessor"></span> +<a name="l00951"></a>00951 <span class="keyword">class </span>RtApiOss: <span class="keyword">public</span> RtApi +<a name="l00952"></a>00952 { +<a name="l00953"></a>00953 <span class="keyword">public</span>: +<a name="l00954"></a>00954 +<a name="l00955"></a>00955 RtApiOss(); +<a name="l00956"></a>00956 ~RtApiOss(); +<a name="l00957"></a>00957 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi() { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a39c84615e61de75e6a4e865596d62c82">RtAudio::LINUX_OSS</a>; }; +<a name="l00958"></a>00958 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); +<a name="l00959"></a>00959 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00960"></a>00960 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); +<a name="l00961"></a>00961 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); +<a name="l00962"></a>00962 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); +<a name="l00963"></a>00963 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); +<a name="l00964"></a>00964 +<a name="l00965"></a>00965 <span class="comment">// This function is intended for internal use only. It must be</span> +<a name="l00966"></a>00966 <span class="comment">// public because it is called by the internal callback handler,</span> +<a name="l00967"></a>00967 <span class="comment">// which is not a member of RtAudio. External use of this function</span> +<a name="l00968"></a>00968 <span class="comment">// will most likely produce highly undesireable results!</span> +<a name="l00969"></a>00969 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">void</span> ); +<a name="l00970"></a>00970 +<a name="l00971"></a>00971 <span class="keyword">private</span>: +<a name="l00972"></a>00972 +<a name="l00973"></a>00973 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00974"></a>00974 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00975"></a>00975 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00976"></a>00976 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00977"></a>00977 }; +<a name="l00978"></a>00978 +<a name="l00979"></a>00979 <span class="preprocessor">#endif</span> +<a name="l00980"></a>00980 <span class="preprocessor"></span> +<a name="l00981"></a>00981 <span class="preprocessor">#if defined(__RTAUDIO_DUMMY__)</span> +<a name="l00982"></a>00982 <span class="preprocessor"></span> +<a name="l00983"></a>00983 <span class="keyword">class </span>RtApiDummy: <span class="keyword">public</span> RtApi +<a name="l00984"></a>00984 { +<a name="l00985"></a>00985 <span class="keyword">public</span>: +<a name="l00986"></a>00986 +<a name="l00987"></a>00987 RtApiDummy() { errorText_ = <span class="stringliteral">"RtApiDummy: This class provides no functionality."</span>; error( <a class="code" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903aca3a1603c24a56cbdaf5f8ae4ddcb86398">RtError::WARNING</a> ); }; +<a name="l00988"></a>00988 <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849ab06b8fd88bf18c9a2b8271f6961ae2d1">RtAudio::RTAUDIO_DUMMY</a>; }; +<a name="l00989"></a>00989 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> 0; }; +<a name="l00990"></a>00990 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ) { <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> info; <span class="keywordflow">return</span> info; }; +<a name="l00991"></a>00991 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ) {}; +<a name="l00992"></a>00992 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ) {}; +<a name="l00993"></a>00993 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ) {}; +<a name="l00994"></a>00994 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ) {}; +<a name="l00995"></a>00995 +<a name="l00996"></a>00996 <span class="keyword">private</span>: +<a name="l00997"></a>00997 +<a name="l00998"></a>00998 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00999"></a>00999 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l01000"></a>01000 <a class="code" href="RtAudio_8h.html#aafca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l01001"></a>01001 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }; +<a name="l01002"></a>01002 }; +<a name="l01003"></a>01003 +<a name="l01004"></a>01004 <span class="preprocessor">#endif</span> +<a name="l01005"></a>01005 <span class="preprocessor"></span> +<a name="l01006"></a>01006 <span class="preprocessor">#endif</span> +<a name="l01007"></a>01007 <span class="preprocessor"></span> +<a name="l01008"></a>01008 <span class="comment">// Indentation settings for Vim and Emacs</span> +<a name="l01009"></a>01009 <span class="comment">//</span> +<a name="l01010"></a>01010 <span class="comment">// Local Variables:</span> +<a name="l01011"></a>01011 <span class="comment">// c-basic-offset: 2</span> +<a name="l01012"></a>01012 <span class="comment">// indent-tabs-mode: nil</span> +<a name="l01013"></a>01013 <span class="comment">// End:</span> +<a name="l01014"></a>01014 <span class="comment">//</span> +<a name="l01015"></a>01015 <span class="comment">// vim: et sts=2 sw=2</span> </pre></div></div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/RtError_8h_source.html b/doc/html/RtError_8h_source.html index 08d41e3..0575322 100644 --- a/doc/html/RtError_8h_source.html +++ b/doc/html/RtError_8h_source.html @@ -58,7 +58,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/acknowledge.html b/doc/html/acknowledge.html index 88b81e2..ad4d30a 100644 --- a/doc/html/acknowledge.html +++ b/doc/html/acknowledge.html @@ -15,16 +15,34 @@ <h1><a class="anchor" id="acknowledge">Acknowledgements </a></h1><p>Many thanks to the following people for providing bug fixes and improvements: </p> <ul> <li> +Stefan Arisona </li> +<li> +Vincent Bénony </li> +<li> +Rasmus Ekman </li> +<li> Anders Ervik </li> <li> Robin Davies (Windows DS and ASIO) </li> <li> +Martin Koegler </li> +<li> +Dmitry Kostjuchenko </li> +<li> +Oliver Larkin </li> +<li> Antoine Lefebvre </li> <li> +Carlos Luna </li> +<li> Dominic Mazzoni </li> <li> Tristan Matthews </li> <li> +Peter Meerwald (PulseAudio) </li> +<li> +Benjamin Schroeder </li> +<li> Ryan Williams (Windows non-MS compiler ASIO support) </li> <li> <p class="startli">Ed Wildgoose (Linux ALSA and Jack)</p> @@ -37,7 +55,7 @@ Ryan Williams (Windows non-MS compiler ASIO support) </li> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/annotated.html b/doc/html/annotated.html index 7564a45..1136f27 100644 --- a/doc/html/annotated.html +++ b/doc/html/annotated.html @@ -21,7 +21,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/apinotes.html b/doc/html/apinotes.html index c3909bc..0747147 100644 --- a/doc/html/apinotes.html +++ b/doc/html/apinotes.html @@ -15,10 +15,9 @@ <h1><a class="anchor" id="apinotes">API Notes </a></h1><p><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> is designed to provide a common API across the various supported operating systems and audio libraries. Despite that, some issues should be mentioned with regard to each.</p> <h2><a class="anchor" id="linux"> Linux:</a></h2> -<p><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> for Linux was developed under Redhat distributions 7.0 - Fedora. Three different audio APIs are supported on Linux platforms: <a href="http://www.opensound.com/oss.html">OSS</a> (versions >= 4.0), <a href="http://www.alsa-project.org/">ALSA</a>, and <a href="http://jackit.sourceforge.net/">Jack</a>. Note that <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> now only supports the newer version 4.0 OSS API. The ALSA API is now part of the Linux kernel and offers significantly better functionality than the OSS API. <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> provides support for the 1.0 and higher versions of ALSA. Jack is a low-latency audio server written primarily for the GNU/Linux operating system. It can connect a number of different applications to an audio device, as well as allow them to share audio between themselves. Input/output latency on the order of 15 milliseconds can typically be achieved using any of the Linux APIs by fine-tuning the <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> buffer parameters (without kernel modifications). Latencies on the order of 5 milliseconds or less can be achieved using a low-latency kernel patch and increasing FIFO scheduling priority. The pthread library, which is used for callback functionality, is a standard component of all Linux distributions.</p> +<p><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> for Linux was developed under Redhat distributions 7.0 - Fedora. Four different audio APIs are supported on Linux platforms: <a href="http://www.opensound.com/oss.html">OSS</a> (versions >= 4.0), <a href="http://www.alsa-project.org/">ALSA</a>, <a href="http://jackit.sourceforge.net/">Jack</a>, and <a href="http://www.freedesktop.org/wiki/Software/PulseAudio">PulseAudio</a>. Note that <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> now only supports the newer version 4.0 OSS API. The ALSA API is now part of the Linux kernel and offers significantly better functionality than the OSS API. <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> provides support for the 1.0 and higher versions of ALSA. Jack is a low-latency audio server written primarily for the GNU/Linux operating system. It can connect a number of different applications to an audio device, as well as allow them to share audio between themselves. Input/output latency on the order of 15 milliseconds can typically be achieved using any of the Linux APIs by fine-tuning the <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> buffer parameters (without kernel modifications). Latencies on the order of 5 milliseconds or less can be achieved using a low-latency kernel patch and increasing FIFO scheduling priority. The pthread library, which is used for callback functionality, is a standard component of all Linux distributions.</p> <p>The ALSA library includes OSS emulation support. That means that you can run programs compiled for the OSS API even when using the ALSA drivers and library. It should be noted however that OSS emulation under ALSA is not perfect. Specifically, channel number queries seem to consistently produce invalid results. While OSS emulation is successful for the majority of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> tests, it is recommended that the native ALSA implementation of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> be used on systems which have ALSA drivers installed.</p> <p>The ALSA implementation of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> makes no use of the ALSA "plug" interface. All necessary data format conversions, channel compensation, de-interleaving, and byte-swapping is handled by internal <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> routines.</p> -<p>At the moment, only one <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> instance can be connected to the Jack server.</p> <h2><a class="anchor" id="macosx"> Macintosh OS-X (CoreAudio and Jack):</a></h2> <p>The Apple CoreAudio API is designed to use a separate callback procedure for each of its audio devices. A single <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> duplex stream using two different devices is supported, though it cannot be guaranteed to always behave correctly because we cannot synchronize these two callbacks. The <em>numberOfBuffers</em> parameter to the <a class="el" href="classRtAudio.html#afacc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">RtAudio::openStream()</a> function has no affect in this implementation.</p> @@ -39,7 +38,7 @@ Windows (ASIO):</a></h2> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/classRtAudio-members.html b/doc/html/classRtAudio-members.html index ed75476..9df26e1 100644 --- a/doc/html/classRtAudio-members.html +++ b/doc/html/classRtAudio-members.html @@ -27,6 +27,7 @@ <tr class="memlist"><td><a class="el" href="classRtAudio.html#a84cc8d9b7ab9bc5f37bcf48430ec5aea">isStreamRunning</a>(void) const </td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> <tr class="memlist"><td><a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849aa7a2ba095c2806caa893b6fb8fc3a1a8">LINUX_ALSA</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> <tr class="memlist"><td><a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a39c84615e61de75e6a4e865596d62c82">LINUX_OSS</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849adc17dff310e85d303fb326c837c08d77">LINUX_PULSE</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> <tr class="memlist"><td><a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a9fec92b8272244a87a6a11a717bd662d">MACOSX_CORE</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> <tr class="memlist"><td><a class="el" href="classRtAudio.html#afacc99740fa4c5606fb35467cdea6da8">openStream</a>(RtAudio::StreamParameters *outputParameters, RtAudio::StreamParameters *inputParameters, RtAudioFormat format, unsigned int sampleRate, unsigned int *bufferFrames, RtAudioCallback callback, void *userData=NULL, RtAudio::StreamOptions *options=NULL)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> <tr class="memlist"><td><a class="el" href="classRtAudio.html#afd0bfa26deae9804e18faff59d0273d9">RtAudio</a>(RtAudio::Api api=UNSPECIFIED)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> @@ -43,7 +44,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/classRtAudio.html b/doc/html/classRtAudio.html index c9ffc32..fb67084 100644 --- a/doc/html/classRtAudio.html +++ b/doc/html/classRtAudio.html @@ -29,13 +29,15 @@ <tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849">Api</a> { <br/> <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849aa49af3ac767106158bc6cad74fb214ae">UNSPECIFIED</a>, <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849aa7a2ba095c2806caa893b6fb8fc3a1a8">LINUX_ALSA</a>, +<a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849adc17dff310e85d303fb326c837c08d77">LINUX_PULSE</a>, <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a39c84615e61de75e6a4e865596d62c82">LINUX_OSS</a>, -<a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a4767e17c6edfbd827f91763915df4105">UNIX_JACK</a>, <br/> - <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a9fec92b8272244a87a6a11a717bd662d">MACOSX_CORE</a>, + <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a4767e17c6edfbd827f91763915df4105">UNIX_JACK</a>, +<a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a9fec92b8272244a87a6a11a717bd662d">MACOSX_CORE</a>, <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a219517d1df90f94d07758481155bd469">WINDOWS_ASIO</a>, <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a28478830f42c2fd61e6c7ad498901931">WINDOWS_DS</a>, -<a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849ab06b8fd88bf18c9a2b8271f6961ae2d1">RTAUDIO_DUMMY</a> +<br/> + <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849ab06b8fd88bf18c9a2b8271f6961ae2d1">RTAUDIO_DUMMY</a> <br/> }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Audio API specifier arguments. </p> @@ -89,7 +91,7 @@ void </td><td class="memItemRight" valign="bottom"><a class="el" href="clas <p>Realtime audio i/o C++ classes. </p> <p><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> provides a common API (Application Programming Interface) for realtime audio input/output across Linux (native ALSA, Jack, and OSS), Macintosh OS X (CoreAudio and Jack), and Windows (DirectSound and ASIO) operating systems.</p> <p><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> WWW site: <a href="http://www.music.mcgill.ca/~gary/rtaudio/">http://www.music.mcgill.ca/~gary/rtaudio/</a></p> -<p><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>: realtime audio i/o C++ classes Copyright (c) 2001-2011 Gary P. Scavone</p> +<p><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>: realtime audio i/o C++ classes Copyright (c) 2001-2012 Gary P. Scavone</p> <p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p> <p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p> <p>Any person wishing to distribute modifications to the Software is asked to send the modifications to the original developer so that they can be incorporated into the canonical version. This is, however, not a binding provision of this license.</p> @@ -114,6 +116,9 @@ void </td><td class="memItemRight" valign="bottom"><a class="el" href="clas <tr><td valign="top"><em><a class="anchor" id="ac9b6f625da88249d08a8409a9db0d849aa7a2ba095c2806caa893b6fb8fc3a1a8"></a><!-- doxytag: member="LINUX_ALSA" ref="ac9b6f625da88249d08a8409a9db0d849aa7a2ba095c2806caa893b6fb8fc3a1a8" args="" -->LINUX_ALSA</em> </td><td> <p>The Advanced Linux Sound Architecture API. </p> </td></tr> +<tr><td valign="top"><em><a class="anchor" id="ac9b6f625da88249d08a8409a9db0d849adc17dff310e85d303fb326c837c08d77"></a><!-- doxytag: member="LINUX_PULSE" ref="ac9b6f625da88249d08a8409a9db0d849adc17dff310e85d303fb326c837c08d77" args="" -->LINUX_PULSE</em> </td><td> +<p>The Linux PulseAudio API. </p> +</td></tr> <tr><td valign="top"><em><a class="anchor" id="ac9b6f625da88249d08a8409a9db0d849a39c84615e61de75e6a4e865596d62c82"></a><!-- doxytag: member="LINUX_OSS" ref="ac9b6f625da88249d08a8409a9db0d849a39c84615e61de75e6a4e865596d62c82" args="" -->LINUX_OSS</em> </td><td> <p>The Linux Open Sound System API. </p> </td></tr> @@ -522,7 +527,7 @@ void </td><td class="memItemRight" valign="bottom"><a class="el" href="clas <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/classRtError-members.html b/doc/html/classRtError-members.html index 70bf786..c4ae4a9 100644 --- a/doc/html/classRtError-members.html +++ b/doc/html/classRtError-members.html @@ -33,7 +33,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/classRtError.html b/doc/html/classRtError.html index 7558d31..c98abd7 100644 --- a/doc/html/classRtError.html +++ b/doc/html/classRtError.html @@ -120,7 +120,7 @@ virtual const char * </td><td class="memItemRight" valign="bottom"><a class <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/classes.html b/doc/html/classes.html index ca47b03..ca00c5d 100644 --- a/doc/html/classes.html +++ b/doc/html/classes.html @@ -20,7 +20,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/compiling.html b/doc/html/compiling.html index 39cde7b..e6207ca 100644 --- a/doc/html/compiling.html +++ b/doc/html/compiling.html @@ -24,6 +24,8 @@ Compiling</a></h2> <tr> <td>Linux </td><td>ALSA </td><td>RtApiAlsa </td><td>__LINUX_ALSA__ </td><td><code>asound, pthread</code> </td><td><code>g++ -Wall -D__LINUX_ALSA__ -o audioprobe audioprobe.cpp RtAudio.cpp -lasound -lpthread</code> </td></tr> <tr> +<td>Linux </td><td>PulseAudio </td><td>RtApiPulse </td><td>__LINUX_PULSE__ </td><td><code>pthread</code> </td><td><code>g++ -Wall -D__LINUX_PULSE__ -o audioprobe audioprobe.cpp RtAudio.cpp -lpthread</code> </td></tr> +<tr> <td>Linux </td><td>OSS </td><td>RtApiOss </td><td>__LINUX_OSS__ </td><td><code>pthread</code> </td><td><code>g++ -Wall -D__LINUX_OSS__ -o audioprobe audioprobe.cpp RtAudio.cpp -lpthread</code> </td></tr> <tr> <td>Linux or Macintosh OS-X </td><td>Jack Audio Server </td><td>RtApiJack </td><td>__UNIX_JACK__ </td><td><code>jack, pthread</code> </td><td><p class="starttd"><code>g++ -Wall -D__UNIX_JACK__ -o audioprobe audioprobe.cpp RtAudio.cpp `pkg-config --cflags --libs jack` -lpthread</code> </p> @@ -41,7 +43,7 @@ Compiling</a></h2> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/duplex.html b/doc/html/duplex.html index c2ba304..d43281b 100644 --- a/doc/html/duplex.html +++ b/doc/html/duplex.html @@ -83,7 +83,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/errors.html b/doc/html/errors.html index 1d434d3..f04dc1e 100644 --- a/doc/html/errors.html +++ b/doc/html/errors.html @@ -17,7 +17,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/files.html b/doc/html/files.html index 92314be..74a8f45 100644 --- a/doc/html/files.html +++ b/doc/html/files.html @@ -18,7 +18,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/functions.html b/doc/html/functions.html index a41b82c..c9cab16 100644 --- a/doc/html/functions.html +++ b/doc/html/functions.html @@ -157,6 +157,9 @@ Here is a list of all documented class members with links to the class documenta <li>LINUX_OSS : <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a39c84615e61de75e6a4e865596d62c82">RtAudio</a> </li> +<li>LINUX_PULSE +: <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849adc17dff310e85d303fb326c837c08d77">RtAudio</a> +</li> </ul> @@ -296,7 +299,7 @@ Here is a list of all documented class members with links to the class documenta <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html index e8b38d8..0837025 100644 --- a/doc/html/functions_enum.html +++ b/doc/html/functions_enum.html @@ -31,7 +31,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html index ab5a68f..17b4de9 100644 --- a/doc/html/functions_eval.html +++ b/doc/html/functions_eval.html @@ -41,6 +41,9 @@ <li>LINUX_OSS : <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a39c84615e61de75e6a4e865596d62c82">RtAudio</a> </li> +<li>LINUX_PULSE +: <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849adc17dff310e85d303fb326c837c08d77">RtAudio</a> +</li> <li>MACOSX_CORE : <a class="el" href="classRtAudio.html#ac9b6f625da88249d08a8409a9db0d849a9fec92b8272244a87a6a11a717bd662d">RtAudio</a> </li> @@ -80,7 +83,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html index 71627bd..c8f46a0 100644 --- a/doc/html/functions_func.html +++ b/doc/html/functions_func.html @@ -100,7 +100,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html index 1f5d092..4fd1758 100644 --- a/doc/html/functions_vars.html +++ b/doc/html/functions_vars.html @@ -73,7 +73,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/globals.html b/doc/html/globals.html index 62a95b7..f2ff3da 100644 --- a/doc/html/globals.html +++ b/doc/html/globals.html @@ -34,7 +34,7 @@ Here is a list of all documented file members with links to the documentation:<u <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/globals_type.html b/doc/html/globals_type.html index 9207899..7592545 100644 --- a/doc/html/globals_type.html +++ b/doc/html/globals_type.html @@ -34,7 +34,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/index.html b/doc/html/index.html index a0f4e09..e7e82f5 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -10,7 +10,7 @@ <HR> <!-- Generated by Doxygen 1.6.2 --> <div class="contents"> -<h1>The <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> Home Page </h1><h3 class="version">4.0.10 </h3><p><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> is a set of C++ classes that provide a common API (Application Programming Interface) for realtime audio input/output across Linux, Macintosh OS-X and Windows (DirectSound and ASIO) operating systems. <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> significantly simplifies the process of interacting with computer audio hardware. It was designed with the following objectives:</p> +<h1>The <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> Home Page </h1><h3 class="version">4.0.11 </h3><p><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> is a set of C++ classes that provide a common API (Application Programming Interface) for realtime audio input/output across Linux, Macintosh OS-X and Windows operating systems. <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> significantly simplifies the process of interacting with computer audio hardware. It was designed with the following objectives:</p> <ul> <li> object-oriented C++ design </li> @@ -47,7 +47,7 @@ What's New (Version 4.0)</a></h2> <p>Devices are now re-enumerated every time the <a class="el" href="classRtAudio.html#a747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">RtAudio::getDeviceCount()</a>, <a class="el" href="classRtAudio.html#a02d7ff44ad1d7eae22283a052f3dfda8" title="Return an RtAudio::DeviceInfo structure for a specified device number.">RtAudio::getDeviceInfo()</a>, and <a class="el" href="classRtAudio.html#afacc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">RtAudio::openStream()</a> functions are called. This allows for the proper identification of hot-pluggable (USB, Firewire, ...) devices that are connected after an <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> instance is created.</p> <h2><a class="anchor" id="download"> Download</a></h2> -<p>Latest Release (30 August 2011): <a href="http://www.music.mcgill.ca/~gary/rtaudio/release/rtaudio-4.0.10.tar.gz">Version 4.0.10</a></p> +<p>Latest Release (14 June 2012): <a href="http://www.music.mcgill.ca/~gary/rtaudio/release/rtaudio-4.0.11.tar.gz">Version 4.0.11</a></p> <h2><a class="anchor" id="documentation"> Documentation Links</a></h2> <ol type="1"> @@ -70,7 +70,7 @@ Documentation Links</a></h2> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/license.html b/doc/html/license.html index 530fc58..9c481b4 100644 --- a/doc/html/license.html +++ b/doc/html/license.html @@ -13,7 +13,7 @@ <h1><a class="anchor" id="license">License </a></h1><p><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>: a set of realtime audio i/o C++ classes<br/> - Copyright (c) 2001-2011 Gary P. Scavone</p> + Copyright (c) 2001-2012 Gary P. Scavone</p> <p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p> <p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p> <p>Any person wishing to distribute modifications to the Software is asked to send the modifications to the original developer so that they can be incorporated into the canonical version. This is, however, not a binding provision of this license.</p> @@ -22,7 +22,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/multi.html b/doc/html/multi.html index bbcd278..270de6e 100644 --- a/doc/html/multi.html +++ b/doc/html/multi.html @@ -18,7 +18,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/pages.html b/doc/html/pages.html index 4d8bc83..2281ef8 100644 --- a/doc/html/pages.html +++ b/doc/html/pages.html @@ -38,7 +38,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/playback.html b/doc/html/playback.html index d938956..6830cae 100644 --- a/doc/html/playback.html +++ b/doc/html/playback.html @@ -89,7 +89,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/probe.html b/doc/html/probe.html index 3f5d2c9..c3ecc26 100644 --- a/doc/html/probe.html +++ b/doc/html/probe.html @@ -67,7 +67,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/recording.html b/doc/html/recording.html index 778fba3..17b1a50 100644 --- a/doc/html/recording.html +++ b/doc/html/recording.html @@ -75,7 +75,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/settings.html b/doc/html/settings.html index d030ef9..2a26328 100644 --- a/doc/html/settings.html +++ b/doc/html/settings.html @@ -50,7 +50,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/structRtAudio_1_1DeviceInfo-members.html b/doc/html/structRtAudio_1_1DeviceInfo-members.html index 3fef735..93e417f 100644 --- a/doc/html/structRtAudio_1_1DeviceInfo-members.html +++ b/doc/html/structRtAudio_1_1DeviceInfo-members.html @@ -24,7 +24,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/structRtAudio_1_1DeviceInfo.html b/doc/html/structRtAudio_1_1DeviceInfo.html index 59feb30..598d81b 100644 --- a/doc/html/structRtAudio_1_1DeviceInfo.html +++ b/doc/html/structRtAudio_1_1DeviceInfo.html @@ -167,7 +167,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/structRtAudio_1_1StreamOptions-members.html b/doc/html/structRtAudio_1_1StreamOptions-members.html index f17637e..99d2e80 100644 --- a/doc/html/structRtAudio_1_1StreamOptions-members.html +++ b/doc/html/structRtAudio_1_1StreamOptions-members.html @@ -19,7 +19,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/structRtAudio_1_1StreamOptions.html b/doc/html/structRtAudio_1_1StreamOptions.html index 2d8a3ad..ddc0dcb 100644 --- a/doc/html/structRtAudio_1_1StreamOptions.html +++ b/doc/html/structRtAudio_1_1StreamOptions.html @@ -107,7 +107,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/structRtAudio_1_1StreamParameters-members.html b/doc/html/structRtAudio_1_1StreamParameters-members.html index b0a7c2d..812d41a 100644 --- a/doc/html/structRtAudio_1_1StreamParameters-members.html +++ b/doc/html/structRtAudio_1_1StreamParameters-members.html @@ -18,7 +18,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/structRtAudio_1_1StreamParameters.html b/doc/html/structRtAudio_1_1StreamParameters.html index 7498652..42c0d11 100644 --- a/doc/html/structRtAudio_1_1StreamParameters.html +++ b/doc/html/structRtAudio_1_1StreamParameters.html @@ -77,7 +77,7 @@ <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2010 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> |
