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