mirror of
https://github.com/thestk/stk
synced 2026-04-19 22:16:54 +00:00
Release 4.1.2 tarball
This commit is contained in:
committed by
Stephen Sinclair
parent
d12ef806ac
commit
5d63b50e85
@@ -5,331 +5,536 @@
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
<CENTER>
|
||||
<img src="princeton.gif"> <img src="ccrma.gif"><P>
|
||||
<img src="princeton.gif"> <img src="ccrma.gif"> <img src="mcgill.gif"><P>
|
||||
<a class="qindex" href="index.html">Home</a> <a class="qindex" href="information.html">Information</a> <a class="qindex" href="classes.html">Classes</a> <a class="qindex" href="download.html">Download</a> <a class="qindex" href="usage.html">Usage</a> <a class="qindex" href="maillist.html">Mail List</a> <a class="qindex" href="system.html">Requirements</a> <a class="qindex" href="links.html">Links</a> <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
|
||||
<HR>
|
||||
<!-- Generated by Doxygen 1.2.8.1 -->
|
||||
<h1>RtAudio.h</h1><div class="fragment"><pre>00001 <font class="comment">/************************************************************************/</font>
|
||||
00038 <font class="comment">/************************************************************************/</font>
|
||||
<!-- Generated by Doxygen 1.3.6 -->
|
||||
<h1>RtAudio.h</h1><div class="fragment"><pre>00001 <span class="comment">/************************************************************************/</span>
|
||||
00038 <span class="comment">/************************************************************************/</span>
|
||||
00039
|
||||
00040 <font class="preprocessor">#if !defined(__RTAUDIO_H)</font>
|
||||
00041 <font class="preprocessor"></font><font class="preprocessor">#define __RTAUDIO_H</font>
|
||||
00042 <font class="preprocessor"></font>
|
||||
00043 <font class="preprocessor">#include <map></font>
|
||||
00044
|
||||
00045 <font class="preprocessor">#if defined(__LINUX_ALSA__)</font>
|
||||
00046 <font class="preprocessor"></font><font class="preprocessor"> #include <alsa/asoundlib.h></font>
|
||||
00047 <font class="preprocessor"> #include <pthread.h></font>
|
||||
00048 <font class="preprocessor"> #include <unistd.h></font>
|
||||
00049
|
||||
00050 <font class="keyword">typedef</font> snd_pcm_t *AUDIO_HANDLE;
|
||||
00051 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID;
|
||||
00052 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE;
|
||||
00053 <font class="keyword">typedef</font> pthread_mutex_t MUTEX;
|
||||
00054
|
||||
00055 <font class="preprocessor">#elif defined(__LINUX_OSS__)</font>
|
||||
00056 <font class="preprocessor"></font><font class="preprocessor"> #include <pthread.h></font>
|
||||
00057 <font class="preprocessor"> #include <unistd.h></font>
|
||||
00058
|
||||
00059 <font class="keyword">typedef</font> <font class="keywordtype">int</font> AUDIO_HANDLE;
|
||||
00060 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID;
|
||||
00061 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE;
|
||||
00062 <font class="keyword">typedef</font> pthread_mutex_t MUTEX;
|
||||
00063
|
||||
00064 <font class="preprocessor">#elif defined(__WINDOWS_DS__)</font>
|
||||
00065 <font class="preprocessor"></font><font class="preprocessor"> #include <windows.h></font>
|
||||
00066 <font class="preprocessor"> #include <process.h></font>
|
||||
00067
|
||||
00068 <font class="comment">// The following struct is used to hold the extra variables</font>
|
||||
00069 <font class="comment">// specific to the DirectSound implementation.</font>
|
||||
00070 <font class="keyword">typedef</font> <font class="keyword">struct </font>{
|
||||
00071 <font class="keywordtype">void</font> * object;
|
||||
00072 <font class="keywordtype">void</font> * buffer;
|
||||
00073 UINT bufferPointer;
|
||||
00074 } AUDIO_HANDLE;
|
||||
00040 <span class="comment">// RtAudio: Version 3.0, 1 March 2004</span>
|
||||
00041
|
||||
00042 <span class="preprocessor">#ifndef __RTAUDIO_H</span>
|
||||
00043 <span class="preprocessor"></span><span class="preprocessor">#define __RTAUDIO_H</span>
|
||||
00044 <span class="preprocessor"></span>
|
||||
00045 <span class="preprocessor">#include "RtError.h"</span>
|
||||
00046 <span class="preprocessor">#include <string></span>
|
||||
00047 <span class="preprocessor">#include <vector></span>
|
||||
00048
|
||||
00049 <span class="comment">// Operating system dependent thread functionality.</span>
|
||||
00050 <span class="preprocessor">#if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__)</span>
|
||||
00051 <span class="preprocessor"></span><span class="preprocessor"> #include <windows.h></span>
|
||||
00052 <span class="preprocessor"> #include <process.h></span>
|
||||
00053
|
||||
00054 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ThreadHandle;
|
||||
00055 <span class="keyword">typedef</span> CRITICAL_SECTION StreamMutex;
|
||||
00056
|
||||
00057 <span class="preprocessor">#else // Various unix flavors with pthread support.</span>
|
||||
00058 <span class="preprocessor"></span><span class="preprocessor"> #include <pthread.h></span>
|
||||
00059
|
||||
00060 <span class="keyword">typedef</span> pthread_t ThreadHandle;
|
||||
00061 <span class="keyword">typedef</span> pthread_mutex_t StreamMutex;
|
||||
00062
|
||||
00063 <span class="preprocessor">#endif</span>
|
||||
00064 <span class="preprocessor"></span>
|
||||
00065 <span class="comment">// This global structure type is used to pass callback information</span>
|
||||
00066 <span class="comment">// between the private RtAudio stream structure and global callback</span>
|
||||
00067 <span class="comment">// handling functions.</span>
|
||||
00068 <span class="keyword">struct </span>CallbackInfo {
|
||||
00069 <span class="keywordtype">void</span> *object; <span class="comment">// Used as a "this" pointer.</span>
|
||||
00070 ThreadHandle thread;
|
||||
00071 <span class="keywordtype">bool</span> usingCallback;
|
||||
00072 <span class="keywordtype">void</span> *callback;
|
||||
00073 <span class="keywordtype">void</span> *userData;
|
||||
00074 <span class="keywordtype">void</span> *apiInfo; <span class="comment">// void pointer for API specific callback information</span>
|
||||
00075
|
||||
00076 <font class="keyword">typedef</font> LPGUID DEVICE_ID;
|
||||
00077 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> THREAD_HANDLE;
|
||||
00078 <font class="keyword">typedef</font> CRITICAL_SECTION MUTEX;
|
||||
00079
|
||||
00080 <font class="preprocessor">#elif defined(__WINDOWS_ASIO__)</font>
|
||||
00081 <font class="preprocessor"></font><font class="preprocessor"> #include <windows.h></font>
|
||||
00082 <font class="preprocessor"> #include <process.h></font>
|
||||
00083
|
||||
00084 <font class="keyword">typedef</font> <font class="keywordtype">int</font> AUDIO_HANDLE;
|
||||
00085 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID;
|
||||
00086 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> THREAD_HANDLE;
|
||||
00087 <font class="keyword">typedef</font> CRITICAL_SECTION MUTEX;
|
||||
00088
|
||||
00089 <font class="preprocessor">#elif defined(__IRIX_AL__)</font>
|
||||
00090 <font class="preprocessor"></font><font class="preprocessor"> #include <dmedia/audio.h></font>
|
||||
00091 <font class="preprocessor"> #include <pthread.h></font>
|
||||
00092 <font class="preprocessor"> #include <unistd.h></font>
|
||||
00093
|
||||
00094 <font class="keyword">typedef</font> ALport AUDIO_HANDLE;
|
||||
00095 <font class="keyword">typedef</font> <font class="keywordtype">long</font> DEVICE_ID;
|
||||
00096 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE;
|
||||
00097 <font class="keyword">typedef</font> pthread_mutex_t MUTEX;
|
||||
00098
|
||||
00099 <font class="preprocessor">#elif defined(__MACOSX_CORE__)</font>
|
||||
00100 <font class="preprocessor"></font>
|
||||
00101 <font class="preprocessor"> #include <CoreAudio/AudioHardware.h></font>
|
||||
00102 <font class="preprocessor"> #include <pthread.h></font>
|
||||
00103
|
||||
00104 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> AUDIO_HANDLE;
|
||||
00105 <font class="keyword">typedef</font> AudioDeviceID DEVICE_ID;
|
||||
00106 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE;
|
||||
00107 <font class="keyword">typedef</font> pthread_mutex_t MUTEX;
|
||||
00108
|
||||
00109 <font class="preprocessor">#endif</font>
|
||||
00110 <font class="preprocessor"></font>
|
||||
00111
|
||||
00112 <font class="comment">/************************************************************************/</font>
|
||||
00125 <font class="comment">/************************************************************************/</font>
|
||||
00126
|
||||
00127 <font class="keyword">class </font><a class="code" href="classRtError.html">RtError</a>
|
||||
00128 {
|
||||
00129 <font class="keyword">public</font>:
|
||||
<a name="l00131"></a><a class="code" href="classRtError.html#s11">00131</a> <font class="keyword">enum</font> TYPE {
|
||||
00132 WARNING,
|
||||
00133 DEBUG_WARNING,
|
||||
00134 UNSPECIFIED,
|
||||
00135 NO_DEVICES_FOUND,
|
||||
00136 INVALID_DEVICE,
|
||||
00137 INVALID_STREAM,
|
||||
00138 MEMORY_ERROR,
|
||||
00139 INVALID_PARAMETER,
|
||||
00140 DRIVER_ERROR,
|
||||
00141 SYSTEM_ERROR,
|
||||
00142 THREAD_ERROR
|
||||
00143 };
|
||||
00144
|
||||
00145 <font class="keyword">protected</font>:
|
||||
00146 <font class="keywordtype">char</font> error_message[256];
|
||||
00147 TYPE type;
|
||||
00076 <span class="comment">// Default constructor.</span>
|
||||
00077 CallbackInfo()
|
||||
00078 :object(0), usingCallback(false), callback(0),
|
||||
00079 userData(0), apiInfo(0) {}
|
||||
00080 };
|
||||
00081
|
||||
00082 <span class="comment">// Support for signed integers and floats. Audio data fed to/from</span>
|
||||
00083 <span class="comment">// the tickStream() routine is assumed to ALWAYS be in host</span>
|
||||
00084 <span class="comment">// byte order. The internal routines will automatically take care of</span>
|
||||
00085 <span class="comment">// any necessary byte-swapping between the host format and the</span>
|
||||
00086 <span class="comment">// soundcard. Thus, endian-ness is not a concern in the following</span>
|
||||
00087 <span class="comment">// format definitions.</span>
|
||||
00088 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> RtAudioFormat;
|
||||
00089 <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_SINT8 = 0x1;
|
||||
00090 <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_SINT16 = 0x2;
|
||||
00091 <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_SINT24 = 0x4;
|
||||
00092 <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_SINT32 = 0x8;
|
||||
00093 <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_FLOAT32 = 0x10;
|
||||
00094 <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_FLOAT64 = 0x20;
|
||||
00096 <span class="keyword">typedef</span> int (*RtAudioCallback)(<span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> bufferSize, <span class="keywordtype">void</span> *userData);
|
||||
00097
|
||||
<a name="l00099"></a><a class="code" href="structRtAudioDeviceInfo.html">00099</a> <span class="keyword">struct </span><a class="code" href="structRtAudioDeviceInfo.html">RtAudioDeviceInfo</a> {
|
||||
<a name="l00100"></a><a class="code" href="structRtAudioDeviceInfo.html#o0">00100</a> std::string <a class="code" href="structRtAudioDeviceInfo.html#o0">name</a>;
|
||||
<a name="l00101"></a><a class="code" href="structRtAudioDeviceInfo.html#o1">00101</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudioDeviceInfo.html#o1">probed</a>;
|
||||
<a name="l00102"></a><a class="code" href="structRtAudioDeviceInfo.html#o2">00102</a> <span class="keywordtype">int</span> <a class="code" href="structRtAudioDeviceInfo.html#o2">outputChannels</a>;
|
||||
<a name="l00103"></a><a class="code" href="structRtAudioDeviceInfo.html#o3">00103</a> <span class="keywordtype">int</span> <a class="code" href="structRtAudioDeviceInfo.html#o3">inputChannels</a>;
|
||||
<a name="l00104"></a><a class="code" href="structRtAudioDeviceInfo.html#o4">00104</a> <span class="keywordtype">int</span> <a class="code" href="structRtAudioDeviceInfo.html#o4">duplexChannels</a>;
|
||||
<a name="l00105"></a><a class="code" href="structRtAudioDeviceInfo.html#o5">00105</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudioDeviceInfo.html#o5">isDefault</a>;
|
||||
<a name="l00106"></a><a class="code" href="structRtAudioDeviceInfo.html#o6">00106</a> std::vector<int> <a class="code" href="structRtAudioDeviceInfo.html#o6">sampleRates</a>;
|
||||
<a name="l00107"></a><a class="code" href="structRtAudioDeviceInfo.html#o7">00107</a> RtAudioFormat <a class="code" href="structRtAudioDeviceInfo.html#o7">nativeFormats</a>;
|
||||
00109 <span class="comment">// Default constructor.</span>
|
||||
00110 <a class="code" href="structRtAudioDeviceInfo.html">RtAudioDeviceInfo</a>()
|
||||
00111 :<a class="code" href="structRtAudioDeviceInfo.html#o1">probed</a>(false), <a class="code" href="structRtAudioDeviceInfo.html#o2">outputChannels</a>(0), <a class="code" href="structRtAudioDeviceInfo.html#o3">inputChannels</a>(0),
|
||||
00112 <a class="code" href="structRtAudioDeviceInfo.html#o4">duplexChannels</a>(0), <a class="code" href="structRtAudioDeviceInfo.html#o5">isDefault</a>(false), <a class="code" href="structRtAudioDeviceInfo.html#o7">nativeFormats</a>(0) {}
|
||||
00113 };
|
||||
00114
|
||||
00115 <span class="comment">// **************************************************************** //</span>
|
||||
00116 <span class="comment">//</span>
|
||||
00117 <span class="comment">// RtApi class declaration.</span>
|
||||
00118 <span class="comment">//</span>
|
||||
00119 <span class="comment">// Note that RtApi is an abstract base class and cannot be</span>
|
||||
00120 <span class="comment">// explicitly instantiated. The class RtAudio will create an</span>
|
||||
00121 <span class="comment">// instance of an RtApi subclass (RtApiOss, RtApiAlsa,</span>
|
||||
00122 <span class="comment">// RtApiJack, RtApiCore, RtApiAl, RtApiDs, or RtApiAsio).</span>
|
||||
00123 <span class="comment">//</span>
|
||||
00124 <span class="comment">// **************************************************************** //</span>
|
||||
00125
|
||||
00126 <span class="keyword">class </span>RtApi
|
||||
00127 {
|
||||
00128 <span class="keyword">public</span>:
|
||||
00129
|
||||
00130 RtApi();
|
||||
00131 <span class="keyword">virtual</span> ~RtApi();
|
||||
00132 <span class="keywordtype">void</span> openStream( <span class="keywordtype">int</span> outputDevice, <span class="keywordtype">int</span> outputChannels,
|
||||
00133 <span class="keywordtype">int</span> inputDevice, <span class="keywordtype">int</span> inputChannels,
|
||||
00134 RtAudioFormat format, <span class="keywordtype">int</span> sampleRate,
|
||||
00135 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
|
||||
00136 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData ) = 0;
|
||||
00137 <span class="keyword">virtual</span> <span class="keywordtype">void</span> cancelStreamCallback() = 0;
|
||||
00138 <span class="keywordtype">int</span> getDeviceCount(<span class="keywordtype">void</span>);
|
||||
00139 <a class="code" href="structRtAudioDeviceInfo.html">RtAudioDeviceInfo</a> getDeviceInfo( <span class="keywordtype">int</span> device );
|
||||
00140 <span class="keywordtype">char</span> * <span class="keyword">const</span> getStreamBuffer();
|
||||
00141 <span class="keyword">virtual</span> <span class="keywordtype">void</span> tickStream() = 0;
|
||||
00142 <span class="keyword">virtual</span> <span class="keywordtype">void</span> closeStream();
|
||||
00143 <span class="keyword">virtual</span> <span class="keywordtype">void</span> startStream() = 0;
|
||||
00144 <span class="keyword">virtual</span> <span class="keywordtype">void</span> stopStream() = 0;
|
||||
00145 <span class="keyword">virtual</span> <span class="keywordtype">void</span> abortStream() = 0;
|
||||
00146
|
||||
00147 <span class="keyword">protected</span>:
|
||||
00148
|
||||
00149 <font class="keyword">public</font>:
|
||||
00151 <a class="code" href="classRtError.html#a0">RtError</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *p, TYPE tipe = RtError::UNSPECIFIED);
|
||||
00152
|
||||
00154 <font class="keyword">virtual</font> <a class="code" href="classRtError.html#a1">~RtError</a>(<font class="keywordtype">void</font>);
|
||||
00155
|
||||
00157 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classRtError.html#a2">printMessage</a>(<font class="keywordtype">void</font>);
|
||||
00158
|
||||
<a name="l00160"></a><a class="code" href="classRtError.html#a3">00160</a> <font class="keyword">virtual</font> <font class="keyword">const</font> TYPE& <a class="code" href="classRtError.html#a3">getType</a>(<font class="keywordtype">void</font>)<font class="keyword"> </font>{ <font class="keywordflow">return</font> type; }
|
||||
00161
|
||||
<a name="l00163"></a><a class="code" href="classRtError.html#a4">00163</a> <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="classRtError.html#a4">getMessage</a>(<font class="keywordtype">void</font>)<font class="keyword"> </font>{ <font class="keywordflow">return</font> error_message; }
|
||||
00164 };
|
||||
00149 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAX_SAMPLE_RATES;
|
||||
00150 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SAMPLE_RATES[];
|
||||
00151
|
||||
00152 <span class="keyword">enum</span> { FAILURE, SUCCESS };
|
||||
00153
|
||||
00154 <span class="keyword">enum</span> StreamMode {
|
||||
00155 OUTPUT,
|
||||
00156 INPUT,
|
||||
00157 DUPLEX,
|
||||
00158 UNINITIALIZED = -75
|
||||
00159 };
|
||||
00160
|
||||
00161 <span class="keyword">enum</span> StreamState {
|
||||
00162 STREAM_STOPPED,
|
||||
00163 STREAM_RUNNING
|
||||
00164 };
|
||||
00165
|
||||
00166
|
||||
00167 <font class="comment">// This public structure type is used to pass callback information</font>
|
||||
00168 <font class="comment">// between the private RtAudio stream structure and global callback</font>
|
||||
00169 <font class="comment">// handling functions.</font>
|
||||
00170 <font class="keyword">typedef</font> <font class="keyword">struct </font>{
|
||||
00171 <font class="keywordtype">void</font> *object; <font class="comment">// Used as a "this" pointer.</font>
|
||||
00172 <font class="keywordtype">int</font> streamId;
|
||||
00173 DEVICE_ID device[2];
|
||||
00174 THREAD_HANDLE thread;
|
||||
00175 <font class="keywordtype">void</font> *callback;
|
||||
00176 <font class="keywordtype">void</font> *buffers;
|
||||
00177 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> waitTime;
|
||||
00178 <font class="keywordtype">bool</font> blockTick;
|
||||
00179 <font class="keywordtype">bool</font> stopStream;
|
||||
00180 <font class="keywordtype">bool</font> usingCallback;
|
||||
00181 <font class="keywordtype">void</font> *userData;
|
||||
00182 } CALLBACK_INFO;
|
||||
00183
|
||||
00184
|
||||
00185 <font class="comment">// *************************************************** //</font>
|
||||
00186 <font class="comment">//</font>
|
||||
00187 <font class="comment">// RtAudio class declaration.</font>
|
||||
00188 <font class="comment">//</font>
|
||||
00189 <font class="comment">// *************************************************** //</font>
|
||||
00190
|
||||
00191 <font class="keyword">class </font><a class="code" href="classRtAudio.html">RtAudio</a>
|
||||
00192 {
|
||||
00193 <font class="keyword">public</font>:
|
||||
00194
|
||||
00195 <font class="comment">// Support for signed integers and floats. Audio data fed to/from</font>
|
||||
00196 <font class="comment">// the tickStream() routine is assumed to ALWAYS be in host</font>
|
||||
00197 <font class="comment">// byte order. The internal routines will automatically take care of</font>
|
||||
00198 <font class="comment">// any necessary byte-swapping between the host format and the</font>
|
||||
00199 <font class="comment">// soundcard. Thus, endian-ness is not a concern in the following</font>
|
||||
00200 <font class="comment">// format definitions.</font>
|
||||
00201 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> RTAUDIO_FORMAT;
|
||||
<a name="l00202"></a><a class="code" href="classRtAudio.html#p0">00202</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT8;
|
||||
<a name="l00203"></a><a class="code" href="classRtAudio.html#p1">00203</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT16;
|
||||
<a name="l00204"></a><a class="code" href="classRtAudio.html#p2">00204</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT24;
|
||||
<a name="l00205"></a><a class="code" href="classRtAudio.html#p3">00205</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT32;
|
||||
<a name="l00206"></a><a class="code" href="classRtAudio.html#p4">00206</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_FLOAT32;
|
||||
<a name="l00207"></a><a class="code" href="classRtAudio.html#p5">00207</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_FLOAT64;
|
||||
00209 <font class="comment">//static const int MAX_SAMPLE_RATES = 14;</font>
|
||||
00210 <font class="keyword">enum</font> { MAX_SAMPLE_RATES = 14 };
|
||||
00211
|
||||
00212 <font class="keyword">typedef</font> int (*RTAUDIO_CALLBACK)(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">int</font> bufferSize, <font class="keywordtype">void</font> *userData);
|
||||
00213
|
||||
<a name="l00215"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html">00215</a> <font class="keyword">typedef</font> <font class="keyword">struct </font>{
|
||||
<a name="l00216"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m0">00216</a> <font class="keywordtype">char</font> name[128];
|
||||
00217 DEVICE_ID id[2]; <font class="comment">/* No value reported by getDeviceInfo(). */</font>
|
||||
<a name="l00218"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m2">00218</a> <font class="keywordtype">bool</font> probed;
|
||||
<a name="l00219"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m3">00219</a> <font class="keywordtype">int</font> maxOutputChannels;
|
||||
<a name="l00220"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m4">00220</a> <font class="keywordtype">int</font> maxInputChannels;
|
||||
<a name="l00221"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m5">00221</a> <font class="keywordtype">int</font> maxDuplexChannels;
|
||||
<a name="l00222"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m6">00222</a> <font class="keywordtype">int</font> minOutputChannels;
|
||||
<a name="l00223"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m7">00223</a> <font class="keywordtype">int</font> minInputChannels;
|
||||
<a name="l00224"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m8">00224</a> <font class="keywordtype">int</font> minDuplexChannels;
|
||||
<a name="l00225"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m9">00225</a> <font class="keywordtype">bool</font> hasDuplexSupport;
|
||||
<a name="l00226"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m10">00226</a> <font class="keywordtype">bool</font> isDefault;
|
||||
<a name="l00227"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m11">00227</a> <font class="keywordtype">int</font> nSampleRates;
|
||||
<a name="l00228"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m12">00228</a> <font class="keywordtype">int</font> sampleRates[MAX_SAMPLE_RATES];
|
||||
<a name="l00229"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m13">00229</a> RTAUDIO_FORMAT nativeFormats;
|
||||
00230 } RTAUDIO_DEVICE;
|
||||
00166 <span class="comment">// A protected structure for audio streams.</span>
|
||||
00167 <span class="keyword">struct </span>RtApiStream {
|
||||
00168 <span class="keywordtype">int</span> device[2]; <span class="comment">// Playback and record, respectively.</span>
|
||||
00169 <span class="keywordtype">void</span> *apiHandle; <span class="comment">// void pointer for API specific stream handle information</span>
|
||||
00170 StreamMode mode; <span class="comment">// OUTPUT, INPUT, or DUPLEX.</span>
|
||||
00171 StreamState state; <span class="comment">// STOPPED or RUNNING</span>
|
||||
00172 <span class="keywordtype">char</span> *userBuffer;
|
||||
00173 <span class="keywordtype">char</span> *deviceBuffer;
|
||||
00174 <span class="keywordtype">bool</span> doConvertBuffer[2]; <span class="comment">// Playback and record, respectively.</span>
|
||||
00175 <span class="keywordtype">bool</span> deInterleave[2]; <span class="comment">// Playback and record, respectively.</span>
|
||||
00176 <span class="keywordtype">bool</span> doByteSwap[2]; <span class="comment">// Playback and record, respectively.</span>
|
||||
00177 <span class="keywordtype">int</span> sampleRate;
|
||||
00178 <span class="keywordtype">int</span> bufferSize;
|
||||
00179 <span class="keywordtype">int</span> nBuffers;
|
||||
00180 <span class="keywordtype">int</span> nUserChannels[2]; <span class="comment">// Playback and record, respectively.</span>
|
||||
00181 <span class="keywordtype">int</span> nDeviceChannels[2]; <span class="comment">// Playback and record channels, respectively.</span>
|
||||
00182 RtAudioFormat userFormat;
|
||||
00183 RtAudioFormat deviceFormat[2]; <span class="comment">// Playback and record, respectively.</span>
|
||||
00184 StreamMutex mutex;
|
||||
00185 CallbackInfo callbackInfo;
|
||||
00186
|
||||
00187 RtApiStream()
|
||||
00188 :apiHandle(0), userBuffer(0), deviceBuffer(0) {}
|
||||
00189 <span class="comment">// :apiHandle(0), mode(UNINITIALIZED), state(STREAM_STOPPED),</span>
|
||||
00190 <span class="comment">// userBuffer(0), deviceBuffer(0) {}</span>
|
||||
00191 };
|
||||
00192
|
||||
00193 <span class="comment">// A protected device structure for audio devices.</span>
|
||||
00194 <span class="keyword">struct </span>RtApiDevice {
|
||||
00195 std::string name;
|
||||
00196 <span class="keywordtype">bool</span> probed;
|
||||
00197 <span class="keywordtype">void</span> *apiDeviceId; <span class="comment">// void pointer for API specific device information</span>
|
||||
00198 <span class="keywordtype">int</span> maxOutputChannels;
|
||||
00199 <span class="keywordtype">int</span> maxInputChannels;
|
||||
00200 <span class="keywordtype">int</span> maxDuplexChannels;
|
||||
00201 <span class="keywordtype">int</span> minOutputChannels;
|
||||
00202 <span class="keywordtype">int</span> minInputChannels;
|
||||
00203 <span class="keywordtype">int</span> minDuplexChannels;
|
||||
00204 <span class="keywordtype">bool</span> hasDuplexSupport;
|
||||
00205 <span class="keywordtype">bool</span> isDefault;
|
||||
00206 std::vector<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
|
||||
00233
|
||||
00239 <a class="code" href="classRtAudio.html#a0">RtAudio</a>();
|
||||
00240
|
||||
00242
|
||||
00253 <a class="code" href="classRtAudio.html#a0">RtAudio</a>(<font class="keywordtype">int</font> *streamId,
|
||||
00254 <font class="keywordtype">int</font> outputDevice, <font class="keywordtype">int</font> outputChannels,
|
||||
00255 <font class="keywordtype">int</font> inputDevice, <font class="keywordtype">int</font> inputChannels,
|
||||
00256 RTAUDIO_FORMAT format, <font class="keywordtype">int</font> sampleRate,
|
||||
00257 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers);
|
||||
00258
|
||||
00260
|
||||
00264 <a class="code" href="classRtAudio.html#a2">~RtAudio</a>();
|
||||
00240 <span class="keyword">virtual</span> <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
|
||||
00241
|
||||
00250 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
|
||||
00251 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
|
||||
00252 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
|
||||
00253
|
||||
00258 <span class="keyword">virtual</span> <span class="keywordtype">int</span> getDefaultInputDevice(<span class="keywordtype">void</span>);
|
||||
00259
|
||||
00264 <span class="keyword">virtual</span> <span class="keywordtype">int</span> getDefaultOutputDevice(<span class="keywordtype">void</span>);
|
||||
00265
|
||||
00267
|
||||
00294 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a3">openStream</a>(<font class="keywordtype">int</font> outputDevice, <font class="keywordtype">int</font> outputChannels,
|
||||
00295 <font class="keywordtype">int</font> inputDevice, <font class="keywordtype">int</font> inputChannels,
|
||||
00296 RTAUDIO_FORMAT format, <font class="keywordtype">int</font> sampleRate,
|
||||
00297 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers);
|
||||
00298
|
||||
00300
|
||||
00319 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a4">setStreamCallback</a>(<font class="keywordtype">int</font> streamId, RTAUDIO_CALLBACK callback, <font class="keywordtype">void</font> *userData);
|
||||
00320
|
||||
00322
|
||||
00329 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a5">cancelStreamCallback</a>(<font class="keywordtype">int</font> streamId);
|
||||
00330
|
||||
00332 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a6">getDeviceCount</a>(<font class="keywordtype">void</font>);
|
||||
00333
|
||||
00335
|
||||
00343 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a7">getDeviceInfo</a>(<font class="keywordtype">int</font> device, RTAUDIO_DEVICE *info);
|
||||
00344
|
||||
00346
|
||||
00351 <font class="keywordtype">char</font> * <font class="keyword">const</font> <a class="code" href="classRtAudio.html#a8">getStreamBuffer</a>(<font class="keywordtype">int</font> streamId);
|
||||
00352
|
||||
00354
|
||||
00359 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a9">tickStream</a>(<font class="keywordtype">int</font> streamId);
|
||||
00267 <span class="keywordtype">void</span> clearDeviceInfo( RtApiDevice *info );
|
||||
00268
|
||||
00270 <span class="keywordtype">void</span> clearStreamInfo();
|
||||
00271
|
||||
00273 <span class="keywordtype">void</span> error( RtError::Type type );
|
||||
00274
|
||||
00279 <span class="keywordtype">void</span> verifyStream();
|
||||
00280
|
||||
00285 <span class="keywordtype">void</span> convertStreamBuffer( StreamMode mode );
|
||||
00286
|
||||
00288 <span class="keywordtype">void</span> byteSwapBuffer( <span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> samples, RtAudioFormat format );
|
||||
00289
|
||||
00291 <span class="keywordtype">int</span> formatBytes( RtAudioFormat format );
|
||||
00292 };
|
||||
00293
|
||||
00294
|
||||
00295 <span class="comment">// **************************************************************** //</span>
|
||||
00296 <span class="comment">//</span>
|
||||
00297 <span class="comment">// RtAudio class declaration.</span>
|
||||
00298 <span class="comment">//</span>
|
||||
00299 <span class="comment">// RtAudio is a "controller" used to select an available audio i/o</span>
|
||||
00300 <span class="comment">// interface. It presents a common API for the user to call but all</span>
|
||||
00301 <span class="comment">// functionality is implemented by the class RtAudioApi and its</span>
|
||||
00302 <span class="comment">// subclasses. RtAudio creates an instance of an RtAudioApi subclass</span>
|
||||
00303 <span class="comment">// based on the user's API choice. If no choice is made, RtAudio</span>
|
||||
00304 <span class="comment">// attempts to make a "logical" API selection.</span>
|
||||
00305 <span class="comment">//</span>
|
||||
00306 <span class="comment">// **************************************************************** //</span>
|
||||
00307
|
||||
<a name="l00308"></a><a class="code" href="classRtAudio.html">00308</a> <span class="keyword">class </span><a class="code" href="classRtAudio.html">RtAudio</a>
|
||||
00309 {
|
||||
00310 <span class="keyword">public</span>:
|
||||
00311
|
||||
<a name="l00313"></a><a class="code" href="classRtAudio.html#w8">00313</a> <span class="keyword">enum</span> <a class="code" href="classRtAudio.html#w8">RtAudioApi</a> {
|
||||
00314 <a class="code" href="classRtAudio.html#w8w0">UNSPECIFIED</a>,
|
||||
00315 <a class="code" href="classRtAudio.html#w8w1">LINUX_ALSA</a>,
|
||||
00316 <a class="code" href="classRtAudio.html#w8w2">LINUX_OSS</a>,
|
||||
00317 <a class="code" href="classRtAudio.html#w8w3">LINUX_JACK</a>,
|
||||
00318 <a class="code" href="classRtAudio.html#w8w4">MACOSX_CORE</a>,
|
||||
00319 <a class="code" href="classRtAudio.html#w8w5">IRIX_AL</a>,
|
||||
00320 <a class="code" href="classRtAudio.html#w8w6">WINDOWS_ASIO</a>,
|
||||
00321 <a class="code" href="classRtAudio.html#w8w7">WINDOWS_DS</a>
|
||||
00322 };
|
||||
00323
|
||||
00325
|
||||
00335 <a class="code" href="classRtAudio.html#a0">RtAudio</a>( RtAudioApi api=UNSPECIFIED );
|
||||
00336
|
||||
00338
|
||||
00349 <a class="code" href="classRtAudio.html#a0">RtAudio</a>( <span class="keywordtype">int</span> outputDevice, <span class="keywordtype">int</span> outputChannels,
|
||||
00350 <span class="keywordtype">int</span> inputDevice, <span class="keywordtype">int</span> inputChannels,
|
||||
00351 RtAudioFormat format, <span class="keywordtype">int</span> sampleRate,
|
||||
00352 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers, RtAudioApi api=UNSPECIFIED );
|
||||
00353
|
||||
00355
|
||||
00359 <a class="code" href="classRtAudio.html#a2">~RtAudio</a>();
|
||||
00360
|
||||
00362
|
||||
00366 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a10">closeStream</a>(<font class="keywordtype">int</font> streamId);
|
||||
00367
|
||||
00369
|
||||
00373 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a11">startStream</a>(<font class="keywordtype">int</font> streamId);
|
||||
00374
|
||||
00376
|
||||
00380 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a12">stopStream</a>(<font class="keywordtype">int</font> streamId);
|
||||
00381
|
||||
00383
|
||||
00387 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a13">abortStream</a>(<font class="keywordtype">int</font> streamId);
|
||||
00388
|
||||
00390
|
||||
00395 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a14">streamWillBlock</a>(<font class="keywordtype">int</font> streamId);
|
||||
00396
|
||||
00397 <font class="preprocessor">#if (defined(__MACOSX_CORE__) || defined(__WINDOWS_ASIO__))</font>
|
||||
00398 <font class="preprocessor"></font> <font class="comment">// This function is intended for internal use only. It must be</font>
|
||||
00399 <font class="comment">// public because it is called by the internal callback handler,</font>
|
||||
00400 <font class="comment">// which is not a member of RtAudio. External use of this function</font>
|
||||
00401 <font class="comment">// will most likely produce highly undesireable results!</font>
|
||||
00402 <font class="keywordtype">void</font> callbackEvent(<font class="keywordtype">int</font> streamId, DEVICE_ID deviceId, <font class="keywordtype">void</font> *inData, <font class="keywordtype">void</font> *outData);
|
||||
00403 <font class="preprocessor">#endif</font>
|
||||
00404 <font class="preprocessor"></font>
|
||||
00405 <font class="keyword">protected</font>:
|
||||
00406
|
||||
00407 <font class="keyword">private</font>:
|
||||
00408
|
||||
00409 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> SAMPLE_RATES[MAX_SAMPLE_RATES];
|
||||
00410
|
||||
00411 <font class="keyword">enum</font> { FAILURE, SUCCESS };
|
||||
00412
|
||||
00413 <font class="keyword">enum</font> STREAM_MODE {
|
||||
00414 OUTPUT,
|
||||
00415 INPUT,
|
||||
00416 DUPLEX,
|
||||
00417 UNINITIALIZED = -75
|
||||
00418 };
|
||||
00419
|
||||
00420 <font class="keyword">enum</font> STREAM_STATE {
|
||||
00421 STREAM_STOPPED,
|
||||
00422 STREAM_RUNNING
|
||||
00423 };
|
||||
00388 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a3">openStream</a>( <span class="keywordtype">int</span> outputDevice, <span class="keywordtype">int</span> outputChannels,
|
||||
00389 <span class="keywordtype">int</span> inputDevice, <span class="keywordtype">int</span> inputChannels,
|
||||
00390 RtAudioFormat format, <span class="keywordtype">int</span> sampleRate,
|
||||
00391 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
|
||||
00392
|
||||
00394
|
||||
<a name="l00413"></a><a class="code" href="classRtAudio.html#a4">00413</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a4">setStreamCallback</a>(RtAudioCallback callback, <span class="keywordtype">void</span> *userData) { rtapi_->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
|
||||
00425 <font class="keyword">typedef</font> <font class="keyword">struct </font>{
|
||||
00426 <font class="keywordtype">int</font> device[2]; <font class="comment">// Playback and record, respectively.</font>
|
||||
00427 STREAM_MODE mode; <font class="comment">// OUTPUT, INPUT, or DUPLEX.</font>
|
||||
00428 AUDIO_HANDLE handle[2]; <font class="comment">// Playback and record handles, respectively.</font>
|
||||
00429 STREAM_STATE state; <font class="comment">// STOPPED or RUNNING</font>
|
||||
00430 <font class="keywordtype">char</font> *userBuffer;
|
||||
00431 <font class="keywordtype">char</font> *deviceBuffer;
|
||||
00432 <font class="keywordtype">bool</font> doConvertBuffer[2]; <font class="comment">// Playback and record, respectively.</font>
|
||||
00433 <font class="keywordtype">bool</font> deInterleave[2]; <font class="comment">// Playback and record, respectively.</font>
|
||||
00434 <font class="keywordtype">bool</font> doByteSwap[2]; <font class="comment">// Playback and record, respectively.</font>
|
||||
00435 <font class="keywordtype">int</font> sampleRate;
|
||||
00436 <font class="keywordtype">int</font> bufferSize;
|
||||
00437 <font class="keywordtype">int</font> nBuffers;
|
||||
00438 <font class="keywordtype">int</font> nUserChannels[2]; <font class="comment">// Playback and record, respectively.</font>
|
||||
00439 <font class="keywordtype">int</font> nDeviceChannels[2]; <font class="comment">// Playback and record channels, respectively.</font>
|
||||
00440 RTAUDIO_FORMAT userFormat;
|
||||
00441 RTAUDIO_FORMAT deviceFormat[2]; <font class="comment">// Playback and record, respectively.</font>
|
||||
00442 MUTEX mutex;
|
||||
00443 CALLBACK_INFO callbackInfo;
|
||||
00444 } RTAUDIO_STREAM;
|
||||
00445
|
||||
00446 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">short</font> INT16;
|
||||
00447 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">int</font> INT32;
|
||||
00448 <font class="keyword">typedef</font> <font class="keywordtype">float</font> FLOAT32;
|
||||
00449 <font class="keyword">typedef</font> <font class="keywordtype">double</font> FLOAT64;
|
||||
00450
|
||||
00451 <font class="keywordtype">char</font> message[256];
|
||||
00452 <font class="keywordtype">int</font> nDevices;
|
||||
00453 RTAUDIO_DEVICE *devices;
|
||||
<a name="l00426"></a><a class="code" href="classRtAudio.html#a6">00426</a> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a6">getDeviceCount</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> rtapi_->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
|
||||
00455 std::map<int, void *> streams;
|
||||
00456
|
||||
00458 <font class="keywordtype">void</font> error(RtError::TYPE type);
|
||||
00459
|
||||
00464 <font class="keywordtype">void</font> initialize(<font class="keywordtype">void</font>);
|
||||
00465
|
||||
00470 <font class="keywordtype">int</font> getDefaultInputDevice(<font class="keywordtype">void</font>);
|
||||
00471
|
||||
00476 <font class="keywordtype">int</font> getDefaultOutputDevice(<font class="keywordtype">void</font>);
|
||||
<a name="l00460"></a><a class="code" href="classRtAudio.html#a10">00460</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a10">closeStream</a>() { rtapi_->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
|
||||
00479 <font class="keywordtype">void</font> clearDeviceInfo(RTAUDIO_DEVICE *info);
|
||||
00480
|
||||
00488 <font class="keywordtype">void</font> probeDeviceInfo(RTAUDIO_DEVICE *info);
|
||||
00489
|
||||
00496 <font class="keywordtype">bool</font> probeDeviceOpen(<font class="keywordtype">int</font> device, RTAUDIO_STREAM *stream,
|
||||
00497 STREAM_MODE mode, <font class="keywordtype">int</font> channels,
|
||||
00498 <font class="keywordtype">int</font> sampleRate, RTAUDIO_FORMAT format,
|
||||
00499 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers);
|
||||
00500
|
||||
00507 <font class="keywordtype">void</font> *verifyStream(<font class="keywordtype">int</font> streamId);
|
||||
00508
|
||||
00513 <font class="keywordtype">void</font> convertStreamBuffer(RTAUDIO_STREAM *stream, STREAM_MODE mode);
|
||||
00514
|
||||
00516 <font class="keywordtype">void</font> byteSwapBuffer(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">int</font> samples, RTAUDIO_FORMAT format);
|
||||
00517
|
||||
00519 <font class="keywordtype">int</font> formatBytes(RTAUDIO_FORMAT format);
|
||||
00520 };
|
||||
00521
|
||||
00522 <font class="comment">// Define the following flag to have extra information spewed to stderr.</font>
|
||||
00523 <font class="comment">//#define __RTAUDIO_DEBUG__</font>
|
||||
00524
|
||||
00525 <font class="preprocessor">#endif</font>
|
||||
</font></pre></div><HR>
|
||||
<a name="l00481"></a><a class="code" href="classRtAudio.html#a13">00481</a> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a13">abortStream</a>() { rtapi_->abortStream(); };
|
||||
00482
|
||||
00483
|
||||
00484 <span class="keyword">protected</span>:
|
||||
00485
|
||||
00486 <span class="keywordtype">void</span> initialize( RtAudioApi api );
|
||||
00487
|
||||
00488 RtApi *rtapi_;
|
||||
00489 };
|
||||
00490
|
||||
00491
|
||||
00492 <span class="comment">// RtApi Subclass prototypes.</span>
|
||||
00493
|
||||
00494 <span class="preprocessor">#if defined(__LINUX_ALSA__)</span>
|
||||
00495 <span class="preprocessor"></span>
|
||||
00496 <span class="keyword">class </span>RtApiAlsa: <span class="keyword">public</span> RtApi
|
||||
00497 {
|
||||
00498 <span class="keyword">public</span>:
|
||||
00499
|
||||
00500 RtApiAlsa();
|
||||
00501 ~RtApiAlsa();
|
||||
00502 <span class="keywordtype">void</span> tickStream();
|
||||
00503 <span class="keywordtype">void</span> closeStream();
|
||||
00504 <span class="keywordtype">void</span> startStream();
|
||||
00505 <span class="keywordtype">void</span> stopStream();
|
||||
00506 <span class="keywordtype">void</span> abortStream();
|
||||
00507 <span class="keywordtype">int</span> streamWillBlock();
|
||||
00508 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
|
||||
00509 <span class="keywordtype">void</span> cancelStreamCallback();
|
||||
00510
|
||||
00511 <span class="keyword">private</span>:
|
||||
00512
|
||||
00513 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
|
||||
00514 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
|
||||
00515 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
|
||||
00516 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
|
||||
00517 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
|
||||
00518 };
|
||||
00519
|
||||
00520 <span class="preprocessor">#endif</span>
|
||||
00521 <span class="preprocessor"></span>
|
||||
00522 <span class="preprocessor">#if defined(__LINUX_JACK__)</span>
|
||||
00523 <span class="preprocessor"></span>
|
||||
00524 <span class="keyword">class </span>RtApiJack: <span class="keyword">public</span> RtApi
|
||||
00525 {
|
||||
00526 <span class="keyword">public</span>:
|
||||
00527
|
||||
00528 RtApiJack();
|
||||
00529 ~RtApiJack();
|
||||
00530 <span class="keywordtype">void</span> tickStream();
|
||||
00531 <span class="keywordtype">void</span> closeStream();
|
||||
00532 <span class="keywordtype">void</span> startStream();
|
||||
00533 <span class="keywordtype">void</span> stopStream();
|
||||
00534 <span class="keywordtype">void</span> abortStream();
|
||||
00535 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
|
||||
00536 <span class="keywordtype">void</span> cancelStreamCallback();
|
||||
00537 <span class="comment">// This function is intended for internal use only. It must be</span>
|
||||
00538 <span class="comment">// public because it is called by the internal callback handler,</span>
|
||||
00539 <span class="comment">// which is not a member of RtAudio. External use of this function</span>
|
||||
00540 <span class="comment">// will most likely produce highly undesireable results!</span>
|
||||
00541 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> nframes );
|
||||
00542
|
||||
00543 <span class="keyword">private</span>:
|
||||
00544
|
||||
00545 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
|
||||
00546 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
|
||||
00547 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
|
||||
00548 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
|
||||
00549 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
|
||||
00550 };
|
||||
00551
|
||||
00552 <span class="preprocessor">#endif</span>
|
||||
00553 <span class="preprocessor"></span>
|
||||
00554 <span class="preprocessor">#if defined(__LINUX_OSS__)</span>
|
||||
00555 <span class="preprocessor"></span>
|
||||
00556 <span class="keyword">class </span>RtApiOss: <span class="keyword">public</span> RtApi
|
||||
00557 {
|
||||
00558 <span class="keyword">public</span>:
|
||||
00559
|
||||
00560 RtApiOss();
|
||||
00561 ~RtApiOss();
|
||||
00562 <span class="keywordtype">void</span> tickStream();
|
||||
00563 <span class="keywordtype">void</span> closeStream();
|
||||
00564 <span class="keywordtype">void</span> startStream();
|
||||
00565 <span class="keywordtype">void</span> stopStream();
|
||||
00566 <span class="keywordtype">void</span> abortStream();
|
||||
00567 <span class="keywordtype">int</span> streamWillBlock();
|
||||
00568 <span class="keywordtype">void</span> setStreamCallback( RtAudioCallback callback, <span class="keywordtype">void</span> *userData );
|
||||
00569 <span class="keywordtype">void</span> cancelStreamCallback();
|
||||
00570
|
||||
00571 <span class="keyword">private</span>:
|
||||
00572
|
||||
00573 <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);
|
||||
00574 <span class="keywordtype">void</span> probeDeviceInfo( RtApiDevice *info );
|
||||
00575 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">int</span> channels,
|
||||
00576 <span class="keywordtype">int</span> sampleRate, RtAudioFormat format,
|
||||
00577 <span class="keywordtype">int</span> *bufferSize, <span class="keywordtype">int</span> numberOfBuffers );
|
||||
00578 };
|
||||
00579
|
||||
00580 <span class="preprocessor">#endif</span>
|
||||
00581 <span class="preprocessor"></span>
|
||||
00582 <span class="preprocessor">#if defined(__MACOSX_CORE__)</span>
|
||||
00583 <span class="preprocessor"></span>
|
||||
00584 <span class="preprocessor">#include <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>
|
||||
</pre></div><HR>
|
||||
|
||||
<table>
|
||||
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
|
||||
<tr><td>©1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
|
||||
<tr><td>©1995-2004 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
|
||||
</table>
|
||||
|
||||
</BODY>
|
||||
|
||||
Reference in New Issue
Block a user