From: Gary Scavone Date: Thu, 10 Oct 2013 23:52:05 +0000 (+0200) Subject: Release 4.0.3 tarball X-Git-Tag: 4.0.3 X-Git-Url: https://git.carlh.net/gitweb/?a=commitdiff_plain;h=1c8dcf10265b9e8205dc94e6575d06fccbd6c07a;hp=2572d0d544acf19943ae955059e1b64b0968a3ba;p=rtaudio.git Release 4.0.3 tarball --- diff --git a/configure b/configure index b9561b5..936dc90 100755 --- a/configure +++ b/configure @@ -311,7 +311,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS GXX CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX RANLIB ac_ct_RANLIB AR CPP EGREP debug cflags object_path warn build build_cpu build_vendor build_os host host_cpu host_vendor host_os sound_api audio_apis frameworks LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS GXX CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX RANLIB ac_ct_RANLIB AR CPP EGREP debug cflags object_path warn build build_cpu build_vendor build_os host host_cpu host_vendor host_os sound_api audio_apis frameworks objects LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -866,6 +866,8 @@ Optional Packages: --with-oss = choose OSS API support (linux only) --with-jack = choose JACK server support (unix only) --with-core = choose CoreAudio API support (mac only) + --with-asio = choose ASIO API support (windoze only) + --with-ds = choose DirectSound API support (windoze only) Some influential environment variables: CC C compiler command @@ -2747,90 +2749,8 @@ echo "$as_me: error: \"Could not find ar - needed to create a library\"" >&2;} { (exit 1); exit 1; }; }; fi -# Checks for libraries. - - -echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 -echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 -if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char pthread_create (); -int -main () -{ -pthread_create (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_pthread_pthread_create=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_pthread_pthread_create=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 -echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6 -if test $ac_cv_lib_pthread_pthread_create = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBPTHREAD 1 -_ACEOF - - LIBS="-lpthread $LIBS" - -else - { { echo "$as_me:$LINENO: error: RtAudio requires the pthread library!" >&5 -echo "$as_me: error: RtAudio requires the pthread library!" >&2;} - { (exit 1); exit 1; }; } -fi - - - - # Checks for header files. + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3792,6 +3712,84 @@ echo "${ECHO_T}using OSS" >&6 audio_apis=-D__LINUX_OSS__ cflags=$cflags" -lossaudio" + +echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 +echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 +if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pthread_create (); +int +main () +{ +pthread_create (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pthread_pthread_create=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_pthread_pthread_create=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6 +if test $ac_cv_lib_pthread_pthread_create = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBPTHREAD 1 +_ACEOF + + LIBS="-lpthread $LIBS" + +else + { { echo "$as_me:$LINENO: error: RtAudio requires the pthread library!" >&5 +echo "$as_me: error: RtAudio requires the pthread library!" >&2;} + { (exit 1); exit 1; }; } +fi + ;; *-*-linux*) @@ -3967,7 +3965,7 @@ fi audio_apis="-D__UNIX_JACK__" fi - # Look for Alsa flag + # Look for ALSA flag # Check whether --with-alsa or --without-alsa was given. if test "${with_alsa+set}" = set; then @@ -4071,30 +4069,100 @@ fi; audio_apis="-D__LINUX_OSS__ $audio_apis" fi - # If no audio api flags specified, use OSS + # If no audio api flags specified, use ALSA if test $sound_api = _NO_API_; then - sound_api=-D__LINUX_OSS__ + echo "$as_me:$LINENO: result: using ALSA" >&5 +echo "${ECHO_T}using ALSA" >&6 + audio_apis=-D__LINUX_ALSA__ - echo "$as_me:$LINENO: result: using OSS" >&5 -echo "${ECHO_T}using OSS" >&6 - audio_apis=-D__LINUX_OSS__ - fi - ;; +echo "$as_me:$LINENO: checking for snd_pcm_open in -lasound" >&5 +echo $ECHO_N "checking for snd_pcm_open in -lasound... $ECHO_C" >&6 +if test "${ac_cv_lib_asound_snd_pcm_open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lasound $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ - *-sgi*) - audio_apis="-D__IRIX_AL__ -LANG:std -w" +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char snd_pcm_open (); +int +main () +{ +snd_pcm_open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_asound_snd_pcm_open=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_asound_snd_pcm_open=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_asound_snd_pcm_open" >&5 +echo "${ECHO_T}$ac_cv_lib_asound_snd_pcm_open" >&6 +if test $ac_cv_lib_asound_snd_pcm_open = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBASOUND 1 +_ACEOF + + LIBS="-lasound $LIBS" + +else + { { echo "$as_me:$LINENO: error: ALSA support requires the asound library!" >&5 +echo "$as_me: error: ALSA support requires the asound library!" >&2;} + { (exit 1); exit 1; }; } +fi + + fi - echo "$as_me:$LINENO: result: using IRIX AL" >&5 -echo "${ECHO_T}using IRIX AL" >&6 -echo "$as_me:$LINENO: checking for alOpenPort in -laudio" >&5 -echo $ECHO_N "checking for alOpenPort in -laudio... $ECHO_C" >&6 -if test "${ac_cv_lib_audio_alOpenPort+set}" = set; then +echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 +echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 +if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-laudio $LIBS" +LIBS="-lpthread $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4108,11 +4176,11 @@ extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char alOpenPort (); +char pthread_create (); int main () { -alOpenPort (); +pthread_create (); ; return 0; } @@ -4139,29 +4207,29 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_lib_audio_alOpenPort=yes + ac_cv_lib_pthread_pthread_create=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_audio_alOpenPort=no +ac_cv_lib_pthread_pthread_create=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_audio_alOpenPort" >&5 -echo "${ECHO_T}$ac_cv_lib_audio_alOpenPort" >&6 -if test $ac_cv_lib_audio_alOpenPort = yes; then +echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6 +if test $ac_cv_lib_pthread_pthread_create = yes; then cat >>confdefs.h <<_ACEOF -#define HAVE_LIBAUDIO 1 +#define HAVE_LIBPTHREAD 1 _ACEOF - LIBS="-laudio $LIBS" + LIBS="-lpthread $LIBS" else - { { echo "$as_me:$LINENO: error: IRIX audio support requires the audio library!" >&5 -echo "$as_me: error: IRIX audio support requires the audio library!" >&2;} + { { echo "$as_me:$LINENO: error: RtAudio requires the pthread library!" >&5 +echo "$as_me: error: RtAudio requires the pthread library!" >&2;} { (exit 1); exit 1; }; } fi @@ -4577,6 +4645,129 @@ fi frameworks="-framework CoreAudio -framework CoreFoundation" fi + + +echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 +echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 +if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pthread_create (); +int +main () +{ +pthread_create (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pthread_pthread_create=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_pthread_pthread_create=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6 +if test $ac_cv_lib_pthread_pthread_create = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBPTHREAD 1 +_ACEOF + + LIBS="-lpthread $LIBS" + +else + { { echo "$as_me:$LINENO: error: RtAudio requires the pthread library!" >&5 +echo "$as_me: error: RtAudio requires the pthread library!" >&2;} + { (exit 1); exit 1; }; } +fi + + ;; + + *-mingw32*) + sound_api=_NO_API_ + + +# Check whether --with-asio or --without-asio was given. +if test "${with_asio+set}" = set; then + withval="$with_asio" + sound_api=-D__WINDOWS_ASIO__ + echo "$as_me:$LINENO: result: using ASIO" >&5 +echo "${ECHO_T}using ASIO" >&6 +fi; + if test $sound_api = -D__WINDOWS_ASIO__; then + audio_apis="-D__WINDOWS_ASIO__" + objects="asio.o asiodrivers.o asiolist.o iasiothiscallresolver.o" + + fi + + # Look for DirectSound flag + +# Check whether --with-ds or --without-ds was given. +if test "${with_ds+set}" = set; then + withval="$with_ds" + sound_api=-D__WINDOWS_DS__ + echo "$as_me:$LINENO: result: using DirectSound" >&5 +echo "${ECHO_T}using DirectSound" >&6 +fi; + if test $sound_api = -D__WINDOWS_DS__; then + audio_apis="-D__WINDOWS_DS__ $audio_apis" + LIBS="-ldsound -lwinmm $LIBS" + fi + + # If no audio api flags specified, use DirectSound + if test $sound_api = _NO_API_; then + sound_api=-D__WINDOWS_DS__ + + echo "$as_me:$LINENO: result: using DirectSound" >&5 +echo "${ECHO_T}using DirectSound" >&6 + audio_apis="-D__WINDOWS_DS__" + LIBS="-ldsound -lwinmm $LIBS" + fi + + LIBS="-lole32 $LIBS" ;; *) @@ -5306,6 +5497,7 @@ s,@host_os@,$host_os,;t t s,@sound_api@,$sound_api,;t t s,@audio_apis@,$audio_apis,;t t s,@frameworks@,$frameworks,;t t +s,@objects@,$objects,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF diff --git a/doc/html/RtAudio_8h-source.html b/doc/html/RtAudio_8h-source.html index 87f9fe0..081a6e9 100644 --- a/doc/html/RtAudio_8h-source.html +++ b/doc/html/RtAudio_8h-source.html @@ -12,7 +12,7 @@

RtAudio.h

Go to the documentation of this file.
00001 /************************************************************************/
 00039 /************************************************************************/
 00040 
-00045 // RtAudio: Version 4.0
+00045 // RtAudio: Version 4.0.3
 00046 
 00047 #ifndef __RTAUDIO_H
 00048 #define __RTAUDIO_H
@@ -358,20 +358,20 @@
 00679 //
 00680 // **************************************************************** //
 00681 
-00682 inline RtAudio::Api RtAudio :: getCurrentApi( void ) throw() { return rtapi_->getCurrentApi(); };
-00683 inline unsigned int RtAudio :: getDeviceCount( void ) throw() { return rtapi_->getDeviceCount(); };
-00684 inline RtAudio::DeviceInfo RtAudio :: getDeviceInfo( unsigned int device ) { return rtapi_->getDeviceInfo( device ); };
-00685 inline unsigned int RtAudio :: getDefaultInputDevice( void ) throw() { return rtapi_->getDefaultInputDevice(); };
-00686 inline unsigned int RtAudio :: getDefaultOutputDevice( void ) throw() { return rtapi_->getDefaultOutputDevice(); };
-00687 inline void RtAudio :: closeStream( void ) throw() { return rtapi_->closeStream(); };
-00688 inline void RtAudio :: startStream( void ) { return rtapi_->startStream(); };
-00689 inline void RtAudio :: stopStream( void )  { return rtapi_->stopStream(); };
-00690 inline void RtAudio :: abortStream( void ) { return rtapi_->abortStream(); };
-00691 inline bool RtAudio :: isStreamOpen( void ) throw() { return rtapi_->isStreamOpen(); };
-00692 inline bool RtAudio :: isStreamRunning( void ) throw() { return rtapi_->isStreamRunning(); };
-00693 inline long RtAudio :: getStreamLatency( void ) { return rtapi_->getStreamLatency(); };
-00694 inline double RtAudio :: getStreamTime( void ) { return rtapi_->getStreamTime(); };
-00695 inline void RtAudio :: showWarnings( bool value ) throw() { rtapi_->showWarnings( value ); };
+00682 inline RtAudio::Api RtAudio :: getCurrentApi( void ) throw() { return rtapi_->getCurrentApi(); }
+00683 inline unsigned int RtAudio :: getDeviceCount( void ) throw() { return rtapi_->getDeviceCount(); }
+00684 inline RtAudio::DeviceInfo RtAudio :: getDeviceInfo( unsigned int device ) { return rtapi_->getDeviceInfo( device ); }
+00685 inline unsigned int RtAudio :: getDefaultInputDevice( void ) throw() { return rtapi_->getDefaultInputDevice(); }
+00686 inline unsigned int RtAudio :: getDefaultOutputDevice( void ) throw() { return rtapi_->getDefaultOutputDevice(); }
+00687 inline void RtAudio :: closeStream( void ) throw() { return rtapi_->closeStream(); }
+00688 inline void RtAudio :: startStream( void ) { return rtapi_->startStream(); }
+00689 inline void RtAudio :: stopStream( void )  { return rtapi_->stopStream(); }
+00690 inline void RtAudio :: abortStream( void ) { return rtapi_->abortStream(); }
+00691 inline bool RtAudio :: isStreamOpen( void ) throw() { return rtapi_->isStreamOpen(); }
+00692 inline bool RtAudio :: isStreamRunning( void ) throw() { return rtapi_->isStreamRunning(); }
+00693 inline long RtAudio :: getStreamLatency( void ) { return rtapi_->getStreamLatency(); }
+00694 inline double RtAudio :: getStreamTime( void ) { return rtapi_->getStreamTime(); }
+00695 inline void RtAudio :: showWarnings( bool value ) throw() { rtapi_->showWarnings( value ); }
 00696 
 00697 // RtApi Subclass prototypes.
 00698 
@@ -473,152 +473,154 @@
 00794 
 00795   private:
 00796 
-00797   bool coInitialized_;
-00798   bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels, 
-00799                         unsigned int firstChannel, unsigned int sampleRate,
-00800                         RtAudioFormat format, unsigned int *bufferSize,
-00801                         RtAudio::StreamOptions *options );
-00802 };
-00803 
-00804 #endif
-00805 
-00806 #if defined(__WINDOWS_DS__)
+00797   std::vector<RtAudio::DeviceInfo> devices_;
+00798   void saveDeviceInfo( void );
+00799   bool coInitialized_;
+00800   bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels, 
+00801                         unsigned int firstChannel, unsigned int sampleRate,
+00802                         RtAudioFormat format, unsigned int *bufferSize,
+00803                         RtAudio::StreamOptions *options );
+00804 };
+00805 
+00806 #endif
 00807 
-00808 class RtApiDs: public RtApi
-00809 {
-00810 public:
-00811 
-00812   RtApiDs();
-00813   ~RtApiDs();
-00814   RtAudio::Api getCurrentApi( void ) { return RtAudio::WINDOWS_DS; };
-00815   unsigned int getDeviceCount( void );
-00816   unsigned int getDefaultOutputDevice( void );
-00817   unsigned int getDefaultInputDevice( void );
-00818   RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
-00819   void closeStream( void );
-00820   void startStream( void );
-00821   void stopStream( void );
-00822   void abortStream( void );
-00823   long getStreamLatency( void );
-00824 
-00825   // This function is intended for internal use only.  It must be
-00826   // public because it is called by the internal callback handler,
-00827   // which is not a member of RtAudio.  External use of this function
-00828   // will most likely produce highly undesireable results!
-00829   void callbackEvent( void );
-00830 
-00831   private:
+00808 #if defined(__WINDOWS_DS__)
+00809 
+00810 class RtApiDs: public RtApi
+00811 {
+00812 public:
+00813 
+00814   RtApiDs();
+00815   ~RtApiDs();
+00816   RtAudio::Api getCurrentApi( void ) { return RtAudio::WINDOWS_DS; };
+00817   unsigned int getDeviceCount( void );
+00818   unsigned int getDefaultOutputDevice( void );
+00819   unsigned int getDefaultInputDevice( void );
+00820   RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
+00821   void closeStream( void );
+00822   void startStream( void );
+00823   void stopStream( void );
+00824   void abortStream( void );
+00825   long getStreamLatency( void );
+00826 
+00827   // This function is intended for internal use only.  It must be
+00828   // public because it is called by the internal callback handler,
+00829   // which is not a member of RtAudio.  External use of this function
+00830   // will most likely produce highly undesireable results!
+00831   void callbackEvent( void );
 00832 
-00833   bool coInitialized_;
-00834   bool buffersRolling;
-00835   long duplexPrerollBytes;
-00836   bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels, 
-00837                         unsigned int firstChannel, unsigned int sampleRate,
-00838                         RtAudioFormat format, unsigned int *bufferSize,
-00839                         RtAudio::StreamOptions *options );
-00840 };
-00841 
-00842 #endif
-00843 
-00844 #if defined(__LINUX_ALSA__)
+00833   private:
+00834 
+00835   bool coInitialized_;
+00836   bool buffersRolling;
+00837   long duplexPrerollBytes;
+00838   bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels, 
+00839                         unsigned int firstChannel, unsigned int sampleRate,
+00840                         RtAudioFormat format, unsigned int *bufferSize,
+00841                         RtAudio::StreamOptions *options );
+00842 };
+00843 
+00844 #endif
 00845 
-00846 class RtApiAlsa: public RtApi
-00847 {
-00848 public:
-00849 
-00850   RtApiAlsa();
-00851   ~RtApiAlsa();
-00852   RtAudio::Api getCurrentApi() { return RtAudio::LINUX_ALSA; };
-00853   unsigned int getDeviceCount( void );
-00854   RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
-00855   void closeStream( void );
-00856   void startStream( void );
-00857   void stopStream( void );
-00858   void abortStream( void );
-00859 
-00860   // This function is intended for internal use only.  It must be
-00861   // public because it is called by the internal callback handler,
-00862   // which is not a member of RtAudio.  External use of this function
-00863   // will most likely produce highly undesireable results!
-00864   void callbackEvent( void );
-00865 
-00866   private:
+00846 #if defined(__LINUX_ALSA__)
+00847 
+00848 class RtApiAlsa: public RtApi
+00849 {
+00850 public:
+00851 
+00852   RtApiAlsa();
+00853   ~RtApiAlsa();
+00854   RtAudio::Api getCurrentApi() { return RtAudio::LINUX_ALSA; };
+00855   unsigned int getDeviceCount( void );
+00856   RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
+00857   void closeStream( void );
+00858   void startStream( void );
+00859   void stopStream( void );
+00860   void abortStream( void );
+00861 
+00862   // This function is intended for internal use only.  It must be
+00863   // public because it is called by the internal callback handler,
+00864   // which is not a member of RtAudio.  External use of this function
+00865   // will most likely produce highly undesireable results!
+00866   void callbackEvent( void );
 00867 
-00868   bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels, 
-00869                         unsigned int firstChannel, unsigned int sampleRate,
-00870                         RtAudioFormat format, unsigned int *bufferSize,
-00871                         RtAudio::StreamOptions *options );
-00872 };
-00873 
-00874 #endif
-00875 
-00876 #if defined(__LINUX_OSS__)
+00868   private:
+00869 
+00870   bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels, 
+00871                         unsigned int firstChannel, unsigned int sampleRate,
+00872                         RtAudioFormat format, unsigned int *bufferSize,
+00873                         RtAudio::StreamOptions *options );
+00874 };
+00875 
+00876 #endif
 00877 
-00878 class RtApiOss: public RtApi
-00879 {
-00880 public:
-00881 
-00882   RtApiOss();
-00883   ~RtApiOss();
-00884   RtAudio::Api getCurrentApi() { return RtAudio::LINUX_OSS; };
-00885   unsigned int getDeviceCount( void );
-00886   RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
-00887   void closeStream( void );
-00888   void startStream( void );
-00889   void stopStream( void );
-00890   void abortStream( void );
-00891 
-00892   // This function is intended for internal use only.  It must be
-00893   // public because it is called by the internal callback handler,
-00894   // which is not a member of RtAudio.  External use of this function
-00895   // will most likely produce highly undesireable results!
-00896   void callbackEvent( void );
-00897 
-00898   private:
+00878 #if defined(__LINUX_OSS__)
+00879 
+00880 class RtApiOss: public RtApi
+00881 {
+00882 public:
+00883 
+00884   RtApiOss();
+00885   ~RtApiOss();
+00886   RtAudio::Api getCurrentApi() { return RtAudio::LINUX_OSS; };
+00887   unsigned int getDeviceCount( void );
+00888   RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
+00889   void closeStream( void );
+00890   void startStream( void );
+00891   void stopStream( void );
+00892   void abortStream( void );
+00893 
+00894   // This function is intended for internal use only.  It must be
+00895   // public because it is called by the internal callback handler,
+00896   // which is not a member of RtAudio.  External use of this function
+00897   // will most likely produce highly undesireable results!
+00898   void callbackEvent( void );
 00899 
-00900   bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels, 
-00901                         unsigned int firstChannel, unsigned int sampleRate,
-00902                         RtAudioFormat format, unsigned int *bufferSize,
-00903                         RtAudio::StreamOptions *options );
-00904 };
-00905 
-00906 #endif
-00907 
-00908 #if defined(__RTAUDIO_DUMMY__)
+00900   private:
+00901 
+00902   bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels, 
+00903                         unsigned int firstChannel, unsigned int sampleRate,
+00904                         RtAudioFormat format, unsigned int *bufferSize,
+00905                         RtAudio::StreamOptions *options );
+00906 };
+00907 
+00908 #endif
 00909 
-00910 class RtApiDummy: public RtApi
-00911 {
-00912 public:
-00913 
-00914   RtApiDummy() { errorText_ = "RtApiDummy: This class provides no functionality."; error( RtError::WARNING ); };
-00915   RtAudio::Api getCurrentApi( void ) { return RtAudio::RTAUDIO_DUMMY; };
-00916   unsigned int getDeviceCount( void ) { return 0; };
-00917   RtAudio::DeviceInfo getDeviceInfo( unsigned int device ) { RtAudio::DeviceInfo info; return info; };
-00918   void closeStream( void ) {};
-00919   void startStream( void ) {};
-00920   void stopStream( void ) {};
-00921   void abortStream( void ) {};
-00922 
-00923   private:
+00910 #if defined(__RTAUDIO_DUMMY__)
+00911 
+00912 class RtApiDummy: public RtApi
+00913 {
+00914 public:
+00915 
+00916   RtApiDummy() { errorText_ = "RtApiDummy: This class provides no functionality."; error( RtError::WARNING ); };
+00917   RtAudio::Api getCurrentApi( void ) { return RtAudio::RTAUDIO_DUMMY; };
+00918   unsigned int getDeviceCount( void ) { return 0; };
+00919   RtAudio::DeviceInfo getDeviceInfo( unsigned int device ) { RtAudio::DeviceInfo info; return info; };
+00920   void closeStream( void ) {};
+00921   void startStream( void ) {};
+00922   void stopStream( void ) {};
+00923   void abortStream( void ) {};
 00924 
-00925   bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels, 
-00926                         unsigned int firstChannel, unsigned int sampleRate,
-00927                         RtAudioFormat format, unsigned int *bufferSize,
-00928                         RtAudio::StreamOptions *options ) { return false; };
-00929 };
-00930 
-00931 #endif
-00932 
+00925   private:
+00926 
+00927   bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels, 
+00928                         unsigned int firstChannel, unsigned int sampleRate,
+00929                         RtAudioFormat format, unsigned int *bufferSize,
+00930                         RtAudio::StreamOptions *options ) { return false; };
+00931 };
+00932 
 00933 #endif
 00934 
-00935 // Indentation settings for Vim and Emacs
-00936 //
-00937 // Local Variables:
-00938 // c-basic-offset: 2
-00939 // indent-tabs-mode: nil
-00940 // End:
-00941 //
-00942 // vim: et sts=2 sw=2
+00935 #endif
+00936 
+00937 // Indentation settings for Vim and Emacs
+00938 //
+00939 // Local Variables:
+00940 // c-basic-offset: 2
+00941 // indent-tabs-mode: nil
+00942 // End:
+00943 //
+00944 // vim: et sts=2 sw=2
 

diff --git a/doc/html/apinotes.html b/doc/html/apinotes.html index 983f063..5692bfe 100644 --- a/doc/html/apinotes.html +++ b/doc/html/apinotes.html @@ -20,9 +20,11 @@ The Apple CoreAudio API is designed to use a separate callback procedure for eac It is not possible to have multiple instances of RtAudio accessing the same CoreAudio device.

The RtAudio Jack support can be compiled on Macintosh OS-X systems, as well as in Linux.

Windows (DirectSound):

+The configure script provides support for the MinGW compiler. DirectSound support is specified with the "--with-ds" flag.

In order to compile RtAudio under Windows for the DirectSound API, you must have the header and source files for DirectSound version 5.0 or higher. As far as I know, there is no DirectSoundCapture support for Windows NT. Audio output latency with DirectSound can be reasonably good, especially since RtAudio version 3.0.2. Input audio latency still tends to be bad but better since version 3.0.2. RtAudio was originally developed with Visual C++ version 6.0 but has been tested with .NET.

The DirectSound version of RtAudio can be compiled with or without the UNICODE preprocessor definition.

Windows (ASIO):

+ASIO support using MinGW and the configure script is specified with the "--with-asio" flag.

The Steinberg ASIO audio API allows only a single device driver to be loaded and accessed at a time. ASIO device drivers must be supplied by audio hardware manufacturers, though ASIO emulation is possible on top of systems with DirectSound drivers. The numberOfBuffers parameter to the RtAudio::openStream() function has no affect in this implementation.

A number of ASIO source and header files are required for use with RtAudio. Specifically, an RtAudio project must include the following files: asio.h,cpp; asiodrivers.h,cpp; asiolist.h,cpp; asiodrvr.h; asiosys.h; ginclude.h; iasiodrv.h; iasiothiscallresolver.h,cpp. The Visual C++ projects found in /tests/Windows/ compile both ASIO and DirectSound support.

The Steinberg provided asiolist class does not compile when the preprocessor definition UNICODE is defined. Note that this could be an issue when using RtAudio with Qt, though Qt programs appear to compile without the UNICODE definition (try DEFINES -= UNICODE in your .pro file). RtAudio with ASIO support has been tested using the MinGW compiler under Windows XP, as well as in the Visual Studio environment.


diff --git a/doc/html/compiling.html b/doc/html/compiling.html index 9346457..b83348f 100644 --- a/doc/html/compiling.html +++ b/doc/html/compiling.html @@ -11,28 +11,28 @@

Debugging & Compiling

Debugging

-If you are having problems getting RtAudio to run on your system, make sure to pass a value of true to the RtAudio::showWarnings() function (this is the default setting). A variety of warning messages will be displayed which may help in determining the problem. Also, try using the programs included in the tests directory. The program probe displays the queried capabilities of all hardware devices found for all APIs compiled. When using the ALSA API, further information can be displayed by defining the preprocessor definition __RTAUDIO_DEBUG__.

+If you are having problems getting RtAudio to run on your system, make sure to pass a value of true to the RtAudio::showWarnings() function (this is the default setting). A variety of warning messages will be displayed which may help in determining the problem. Also, try using the programs included in the tests directory. The program audioprobe displays the queried capabilities of all hardware devices found for all APIs compiled. When using the ALSA API, further information can be displayed by defining the preprocessor definition __RTAUDIO_DEBUG__.

Compiling

In order to compile RtAudio for a specific OS and audio API, it is necessary to supply the appropriate preprocessor definition and library within the compiler statement:

- + - + - - +
OS: Audio API: C++ Class: Preprocessor Definition: Library or Framework: Example Compiler Statement:
Linux ALSA RtApiAlsa __LINUX_ALSA__ asound, pthread g++ -Wall -D__LINUX_ALSA__ -o probe probe.cpp RtAudio.cpp -lasound -lpthread
Linux ALSA RtApiAlsa __LINUX_ALSA__ asound, pthread g++ -Wall -D__LINUX_ALSA__ -o audioprobe audioprobe.cpp RtAudio.cpp -lasound -lpthread
Linux OSS RtApiOss __LINUX_OSS__ pthread g++ -Wall -D__LINUX_OSS__ -o probe probe.cpp RtAudio.cpp -lpthread
Linux OSS RtApiOss __LINUX_OSS__ pthread g++ -Wall -D__LINUX_OSS__ -o audioprobe audioprobe.cpp RtAudio.cpp -lpthread
Linux or Macintosh OS-X Jack Audio Server RtApiJack __UNIX_JACK__ jack, pthread g++ -Wall -D__UNIX_JACK__ -o probe probe.cpp RtAudio.cpp `pkg-config --cflags --libs jack` -lpthread

+

Linux or Macintosh OS-X Jack Audio Server RtApiJack __UNIX_JACK__ jack, pthread g++ -Wall -D__UNIX_JACK__ -o audioprobe audioprobe.cpp RtAudio.cpp `pkg-config --cflags --libs jack` -lpthread

Macintosh OS-X CoreAudio RtApiCore __MACOSX_CORE__ pthread, CoreAudio g++ -Wall -D__MACOSX_CORE__ -o probe probe.cpp RtAudio.cpp -framework CoreAudio -lpthread
Macintosh OS-X CoreAudio RtApiCore __MACOSX_CORE__ pthread, CoreAudio g++ -Wall -D__MACOSX_CORE__ -o audioprobe audioprobe.cpp RtAudio.cpp -framework CoreAudio -lpthread
Windows Direct Sound RtApiDs __WINDOWS_DS__ dsound.lib (ver. 5.0 or higher), multithreaded compiler specific
Windows ASIO RtApiAsio __WINDOWS_ASIO__ various ASIO header and source files compiler specific

-The example compiler statements above could be used to compile the probe.cpp example file, assuming that probe.cpp, RtAudio.h, RtError.h, and RtAudio.cpp all exist in the same directory.


+The example compiler statements above could be used to compile the audioprobe.cpp example file, assuming that audioprobe.cpp, RtAudio.h, RtError.h, and RtAudio.cpp all exist in the same directory.
diff --git a/doc/html/index.html b/doc/html/index.html index d973fcd..b820765 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -11,7 +11,7 @@

The RtAudio Home Page

-

4.0

RtAudio is a set of C++ classes that provide a common API (Application Programming Interface) for realtime audio input/output across Linux, Macintosh OS-X and Windows (DirectSound and ASIO) operating systems. RtAudio significantly simplifies the process of interacting with computer audio hardware. It was designed with the following objectives:

+

4.0.3

RtAudio is a set of C++ classes that provide a common API (Application Programming Interface) for realtime audio input/output across Linux, Macintosh OS-X and Windows (DirectSound and ASIO) operating systems. RtAudio significantly simplifies the process of interacting with computer audio hardware. It was designed with the following objectives:

©2001-2007 Gary P. Scavone, McGill University. All Rights Reserved.
Maintained by Gary P. Scavone.