diff options
44 files changed, 5762 insertions, 4573 deletions
@@ -1,10 +1,11 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for RtAudio 4.0. +# Generated by GNU Autoconf 2.60 for RtAudio 4.0. # # Report bugs to <gary@music.mcgill.ca>. # -# Copyright (C) 2003 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## @@ -18,11 +19,35 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi +BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset @@ -31,8 +56,43 @@ else fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' @@ -46,18 +106,19 @@ do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - $as_unset $as_var + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -65,157 +126,386 @@ fi # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` +# CDPATH. +$as_unset CDPATH -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. fi +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in + case $as_dir in /*) - if ("$as_dir/$as_base" -c ' + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || + chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -224,7 +514,19 @@ else as_mkdir_p=false fi -as_executable_p="test -f" +# Find out whether ``test -x'' works. Don't use a zero-byte file, as +# systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + as_executable_p="test -x" +else + as_executable_p=: +fi +rm -f conf$$.file # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -233,39 +535,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH +exec 7<&0 </dev/null 6>&1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -exec 6>&1 - # # Initializations. # ac_default_prefix=/usr/local +ac_clean_files= ac_config_libobj_dir=. +LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - # Identity of this package. PACKAGE_NAME='RtAudio' PACKAGE_TARNAME='rtaudio' @@ -302,17 +592,95 @@ ac_includes_default="\ #endif #if HAVE_INTTYPES_H # include <inttypes.h> -#else -# if HAVE_STDINT_H -# include <stdint.h> -# endif +#endif +#if HAVE_STDINT_H +# include <stdint.h> #endif #if HAVE_UNISTD_H # include <unistd.h> #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 objects 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 +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +GXX +CXX +CXXFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CXX +EXEEXT +OBJEXT +RANLIB +AR +CC +CFLAGS +ac_ct_CC +CPP +GREP +EGREP +cppflag +cxxflag +object_path +api +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +objects +LIBOBJS +LTLIBOBJS' ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CXX +CXXFLAGS +LDFLAGS +CPPFLAGS +CCC +CC +CFLAGS +CPP' + # Initialize some variables set by options. ac_init_help= @@ -339,34 +707,48 @@ x_libraries=NONE # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' +datarootdir='${prefix}/share' +datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' ac_prev= +ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" + eval $ac_prev=\$ac_option ac_prev= continue fi - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_option in + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -388,12 +770,18 @@ do --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) + -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. @@ -401,7 +789,17 @@ do { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` @@ -410,11 +808,7 @@ do { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; + eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -441,6 +835,12 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -465,13 +865,16 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) + | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -536,6 +939,16 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -592,11 +1005,7 @@ do { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; + eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` @@ -605,7 +1014,7 @@ do { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; + eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. @@ -636,8 +1045,7 @@ Try \`$0 --help' for more information." >&2 expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" + eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) @@ -657,27 +1065,19 @@ if test -n "$ac_prev"; then { (exit 1); exit 1; }; } fi -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir do - eval ac_val=$`echo $ac_var` + eval ac_val=\$$ac_var case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -704,82 +1104,76 @@ test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then + if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } - fi fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CXX_set=${CXX+set} -ac_env_CXX_value=$CXX -ac_cv_env_CXX_set=${CXX+set} -ac_cv_env_CXX_value=$CXX -ac_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_env_CXXFLAGS_value=$CXXFLAGS -ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_cv_env_CXXFLAGS_value=$CXXFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done # # Report the --help message. @@ -808,9 +1202,6 @@ Configuration: -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] -_ACEOF - - cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -828,15 +1219,22 @@ Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/rtaudio] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -870,14 +1268,14 @@ Optional Packages: --with-ds = choose DirectSound API support (windoze only) Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have - headers in a nonstandard directory <include dir> CXX C++ compiler command CXXFLAGS C++ compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if + you have headers in a nonstandard directory <include dir> + CC C compiler command + CFLAGS C compiler flags CPP C preprocessor Use these variables to override the choices made by `configure' or to help @@ -885,120 +1283,86 @@ it to find libraries and programs with nonstandard names/locations. Report bugs to <gary@music.mcgill.ca>. _ACEOF +ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. - ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue + test -d "$ac_dir" || continue ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } done fi -test -n "$ac_init_help" && exit 0 +test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF RtAudio configure 4.0 -generated by GNU Autoconf 2.59 +generated by GNU Autoconf 2.60 -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF - exit 0 + exit fi -exec 5>config.log -cat >&5 <<_ACEOF +cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by RtAudio $as_me 4.0, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.60. Invocation command line was $ $0 $@ _ACEOF +exec 5>>config.log { cat <<_ASUNAME ## --------- ## @@ -1017,7 +1381,7 @@ uname -v = `(uname -v) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` @@ -1031,6 +1395,7 @@ do test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done +IFS=$as_save_IFS } >&5 @@ -1052,7 +1417,6 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= -ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1063,7 +1427,7 @@ do -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in @@ -1085,9 +1449,7 @@ do -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " + ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done @@ -1098,8 +1460,8 @@ $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_ # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1112,20 +1474,34 @@ trap 'exit_status=$? _ASBOX echo # The following way of writing the cache mishandles newlines in values, -{ +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} + esac | + sort +) echo cat <<\_ASBOX @@ -1136,22 +1512,28 @@ _ASBOX echo for ac_var in $ac_subst_vars do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## +## ------------------- ## +## File substitutions. ## +## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1163,26 +1545,24 @@ _ASBOX ## ----------- ## _ASBOX echo - sed "/^$/d" confdefs.h | sort + cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status - ' 0 +' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h +rm -f -r conftest* confdefs.h # Predefined preprocessor variables. @@ -1213,14 +1593,17 @@ _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" fi -for ac_site_file in $CONFIG_SITE; do +shift +for ac_site_file +do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} @@ -1236,8 +1619,8 @@ if test -r "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; esac fi else @@ -1249,12 +1632,11 @@ fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 @@ -1279,8 +1661,7 @@ echo "$as_me: current value: $ac_new_val" >&2;} # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1297,15 +1678,6 @@ echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start ov { (exit 1); exit 1; }; } fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - @@ -1330,246 +1702,74 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu - ac_config_files="$ac_config_files rtaudio-config Makefile tests/Makefile" - - -# Fill GXX with something before test. -GXX="no" - - -# Checks for programs. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 +ac_aux_dir= +for ac_dir in config "$srcdir"/config; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break fi done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&2;} + { (exit 1); exit 1; }; } fi - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi +ac_config_files="$ac_config_files rtaudio-config Makefile tests/Makefile" - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done +# Fill GXX with something before test. +GXX="no" -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl +# Checks for programs. +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -1577,41 +1777,43 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - test -n "$CC" && break + + test -n "$CXX" && break done fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -1619,56 +1821,79 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - test -n "$ac_ct_CC" && break + + test -n "$ac_ct_CXX" && break done - CC=$ac_ct_CC + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi fi + fi fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 +echo "$as_me:$LINENO: checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } @@ -1693,71 +1918,99 @@ ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5 +echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. break;; * ) break;; esac done +test "$ac_cv_exeext" = no && ac_cv_exeext= + else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +{ { echo "$as_me:$LINENO: error: C++ compiler cannot create executables See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables +echo "$as_me: error: C++ compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5 +echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -1766,32 +2019,37 @@ if test "$cross_compiling" != yes; then if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. + { { echo "$as_me:$LINENO: error: cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. +echo "$as_me: error: cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then @@ -1802,9 +2060,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext break;; * ) break;; esac @@ -1818,14 +2075,14 @@ See \`config.log' for more details." >&2;} fi rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1845,14 +2102,20 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac @@ -1870,13 +2133,13 @@ fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then +{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -1898,24 +2161,36 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -1924,24 +2199,28 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then +{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat >conftest.$ac_ext <<_ACEOF + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -1957,242 +2236,91 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes + ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; int main () { -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 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_objext' - { (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_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 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_objext' - { (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 - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include <stdlib.h> -int -main () -{ -exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2201,90 +2329,452 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_declaration + int main () { -exit (42); + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - break + ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h +done +IFS=$as_save_IFS + fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $AR in + [\\/]* | ?:[\\/]*) + ac_cv_path_AR="$AR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_path_AR" && ac_cv_path_AR="no" + ;; +esac +fi +AR=$ac_cv_path_AR +if test -n "$AR"; then + { echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +if [ $AR = "no" ] ; then + { { echo "$as_me:$LINENO: error: \"Could not find ar - needed to create a library\"" >&5 +echo "$as_me: error: \"Could not find ar - needed to create a library\"" >&2;} + { (exit 1); exit 1; }; }; fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +# Checks for header files. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -n "$ac_tool_prefix"; then - for ac_prog in $CCC g++ CC c++ cxx + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CXX+set}" = set; then +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -2292,41 +2782,43 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - test -n "$CXX" && break + + test -n "$CC" && break done fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in $CCC g++ CC c++ cxx +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -2334,56 +2826,93 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6 +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - test -n "$ac_ct_CXX" && break + + test -n "$ac_ct_CC" && break done -test -n "$ac_ct_CXX" || ac_ct_CXX="g++" - CXX=$ac_ct_CXX + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi fi +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C++ compiler version" >&5 +echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 -if test "${ac_cv_cxx_compiler_gnu+set}" = set; then +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -2405,24 +2934,36 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2431,24 +2972,28 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 -GXX=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -CXXFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cxx_g+set}" = set; then +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat >conftest.$ac_ext <<_ACEOF + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2464,96 +3009,91 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_prog_cxx_g=yes + ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cxx_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_declaration -#include <stdlib.h> + int main () { -exit (42); + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2562,202 +3102,237 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_declaration + int main () { -exit (42); + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - break + ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= fi -done -done - - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} - RANLIB=$ac_ct_RANLIB +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_c89=$ac_arg else - RANLIB="$ac_cv_prog_RANLIB" + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -# Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $AR in - [\\/]* | ?:[\\/]*) - ac_cv_path_AR="$AR" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break done +rm -f conftest.$ac_ext +CC=$ac_save_CC - test -z "$ac_cv_path_AR" && ac_cv_path_AR="no" - ;; -esac fi -AR=$ac_cv_path_AR +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; +esac -if test -n "$AR"; then - echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -if [ $AR = "no" ] ; then - { { echo "$as_me:$LINENO: error: \"Could not find ar - needed to create a library\"" >&5 -echo "$as_me: error: \"Could not find ar - needed to create a library\"" >&2;} - { (exit 1); exit 1; }; }; -fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu -# Checks for header files. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2791,8 +3366,13 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -2817,9 +3397,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2829,8 +3410,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -2857,6 +3443,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -2874,8 +3461,8 @@ fi else ac_cv_prog_CPP=$CPP fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -2898,8 +3485,13 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -2924,9 +3516,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2936,8 +3529,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -2964,6 +3562,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -2986,23 +3585,170 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_executable_p "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_executable_p "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3026,24 +3772,36 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3052,9 +3810,10 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -3110,6 +3869,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ctype.h> +#include <stdlib.h> #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -3129,18 +3889,27 @@ main () for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); + return 2; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3153,12 +3922,14 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -3181,9 +3952,9 @@ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -3197,24 +3968,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3223,12 +4006,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -3244,18 +4029,19 @@ done for ac_header in sys/ioctl.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3266,24 +4052,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3292,15 +4090,16 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3309,8 +4108,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3334,9 +4138,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -3360,25 +4165,24 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ----------------------------------- ## ## Report this to gary@music.mcgill.ca ## ## ----------------------------------- ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -3391,137 +4195,29 @@ fi done -# Checks for typedefs, structures, and compiler characteristics. -echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 -if test "${ac_cv_c_const+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset x; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *ccp; - char **p; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - ccp = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++ccp; - p = (char**) ccp; - ccp = (char const *const *) p; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - } -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 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_objext' - { (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_c_const=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c_const=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6 -if test $ac_cv_c_const = no; then - -cat >>confdefs.h <<\_ACEOF -#define const -_ACEOF - -fi - - # Check for debug -echo "$as_me:$LINENO: checking whether to compile debug version" >&5 -echo $ECHO_N "checking whether to compile debug version... $ECHO_C" >&6 -# Check whether --enable-debug or --disable-debug was given. +{ echo "$as_me:$LINENO: checking whether to compile debug version" >&5 +echo $ECHO_N "checking whether to compile debug version... $ECHO_C" >&6; } +# Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then - enableval="$enable_debug" - debug=-D__RTAUDIO_DEBUG__ - cflags=-g + enableval=$enable_debug; cppflag=-D__RTAUDIO_DEBUG__ + cxxflag=-g object_path=Debug - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else - debug= - cflags=-O2 + cppflag= + cxxflag=-O2 object_path=Release - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi; + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + # Checks for functions -echo "$as_me:$LINENO: checking for gettimeofday" >&5 -echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for gettimeofday" >&5 +echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6; } if test "${ac_cv_func_gettimeofday+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3548,53 +4244,59 @@ cat >>conftest.$ac_ext <<_ACEOF #undef gettimeofday -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #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 gettimeofday (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday) +#if defined __stub_gettimeofday || defined __stub___gettimeofday choke me -#else -char (*f) () = gettimeofday; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != gettimeofday; +return gettimeofday (); ; 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 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3603,120 +4305,131 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_gettimeofday=no + ac_cv_func_gettimeofday=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_gettimeofday" >&5 -echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_gettimeofday" >&5 +echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6; } if test $ac_cv_func_gettimeofday = yes; then - CFLAGS=$CFLAGS" -DHAVE_GETTIMEOFDAY" + cppflag="$cppflag -DHAVE_GETTIMEOFDAY" fi +# For -I and -D flags +CPPFLAGS="$CPPFLAGS $cppflag" + +# For debugging and optimization ... overwrite default because it has both -g and -O2 +#CXXFLAGS="$CXXFLAGS $cxxflag" +CXXFLAGS="$cxxflag" + # Check compiler and use -Wall if gnu. if test $GXX = "yes" ; then - warn=-Wall + cxxflag=-Wall fi -CFLAGS="$CFLAGS $cflags" +CXXFLAGS="$CXXFLAGS $cxxflag" # Checks for package options and external software -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. +api="" # Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6; } if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6; } if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } +fi fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking for audio API" >&5 -echo $ECHO_N "checking for audio API... $ECHO_C" >&6 +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ echo "$as_me:$LINENO: checking for audio API" >&5 +echo $ECHO_N "checking for audio API... $ECHO_C" >&6; } case $host in *-*-netbsd*) - sound_api=-D__LINUX_OSS__ - - echo "$as_me:$LINENO: result: using OSS" >&5 -echo "${ECHO_T}using OSS" >&6 - audio_apis=-D__LINUX_OSS__ + { echo "$as_me:$LINENO: result: using OSS" >&5 +echo "${ECHO_T}using OSS" >&6; } + api="$api -D__LINUX_OSS__" + LIBS="$LIBS -lossaudio" - 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 +{ 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 @@ -3729,40 +4442,52 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #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 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 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3771,14 +4496,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_pthread_pthread_create=no + ac_cv_lib_pthread_pthread_create=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core 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 +{ 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 @@ -3795,22 +4521,17 @@ fi ;; *-*-linux*) - sound_api=_NO_API_ - -# Check whether --with-jack or --without-jack was given. +# Check whether --with-jack was given. if test "${with_jack+set}" = set; then - withval="$with_jack" - sound_api=-D__UNIX_JACK__ - echo "$as_me:$LINENO: result: using JACK" >&5 -echo "${ECHO_T}using JACK" >&6 -fi; - if test $sound_api = -D__UNIX_JACK__; then - TEMP_LIBS=$LIBS - -echo "$as_me:$LINENO: checking for jack_client_new in -ljack" >&5 -echo $ECHO_N "checking for jack_client_new in -ljack... $ECHO_C" >&6 -if test "${ac_cv_lib_jack_jack_client_new+set}" = set; then + withval=$with_jack; + api="$api -D__UNIX_JACK__" + { echo "$as_me:$LINENO: result: using JACK" >&5 +echo "${ECHO_T}using JACK" >&6; } + +{ echo "$as_me:$LINENO: checking for jack_client_open in -ljack" >&5 +echo $ECHO_N "checking for jack_client_open in -ljack... $ECHO_C" >&6; } +if test "${ac_cv_lib_jack_jack_client_open+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS @@ -3822,57 +4543,70 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #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 jack_client_new (); +char jack_client_open (); int main () { -jack_client_new (); +return jack_client_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 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_lib_jack_jack_client_new=yes + ac_cv_lib_jack_jack_client_open=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_jack_jack_client_new=no + ac_cv_lib_jack_jack_client_open=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core 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_jack_jack_client_new" >&5 -echo "${ECHO_T}$ac_cv_lib_jack_jack_client_new" >&6 -if test $ac_cv_lib_jack_jack_client_new = yes; then +{ echo "$as_me:$LINENO: result: $ac_cv_lib_jack_jack_client_open" >&5 +echo "${ECHO_T}$ac_cv_lib_jack_jack_client_open" >&6; } +if test $ac_cv_lib_jack_jack_client_open = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBJACK 1 _ACEOF @@ -3886,8 +4620,8 @@ echo "$as_me: error: JACK support requires the jack library!" >&2;} 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 +{ 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 @@ -3900,40 +4634,52 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #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 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 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3942,14 +4688,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_asound_snd_pcm_open=no + ac_cv_lib_asound_snd_pcm_open=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core 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 +{ 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 @@ -3963,23 +4710,20 @@ echo "$as_me: error: Jack support also requires the asound library!" >&2;} { (exit 1); exit 1; }; } fi - LIBS="`pkg-config --CFLAGS --libs jack` $TEMP_LIBS -lasound" - audio_apis="-D__UNIX_JACK__" - fi +fi + # Look for ALSA flag -# Check whether --with-alsa or --without-alsa was given. +# Check whether --with-alsa was given. if test "${with_alsa+set}" = set; then - withval="$with_alsa" - sound_api=-D__LINUX_ALSA__ - echo "$as_me:$LINENO: result: using ALSA" >&5 -echo "${ECHO_T}using ALSA" >&6 -fi; - if test $sound_api = -D__LINUX_ALSA__; then - -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 + withval=$with_alsa; + api="$api -D__LINUX_ALSA__" + { echo "$as_me:$LINENO: result: using ALSA" >&5 +echo "${ECHO_T}using ALSA" >&6; } + +{ 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 @@ -3992,40 +4736,52 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #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 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 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4034,14 +4790,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_asound_snd_pcm_open=no + ac_cv_lib_asound_snd_pcm_open=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core 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 +{ 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 @@ -4055,31 +4812,29 @@ echo "$as_me: error: ALSA support requires the asound library!" >&2;} { (exit 1); exit 1; }; } fi - audio_apis="-D__LINUX_ALSA__ $audio_apis" - fi +fi + # Look for OSS flag -# Check whether --with-oss or --without-oss was given. +# Check whether --with-oss was given. if test "${with_oss+set}" = set; then - withval="$with_oss" - sound_api=-D__LINUX_OSS__ - echo "$as_me:$LINENO: result: using OSS" >&5 -echo "${ECHO_T}using OSS" >&6 -fi; - if test $sound_api = -D__LINUX_OSS__; then - audio_apis="-D__LINUX_OSS__ $audio_apis" - fi + withval=$with_oss; + api="$api -D__LINUX_OSS__" + { echo "$as_me:$LINENO: result: using OSS" >&5 +echo "${ECHO_T}using OSS" >&6; } +fi + # If no audio api flags specified, use ALSA - if test $sound_api = _NO_API_; then - echo "$as_me:$LINENO: result: using ALSA" >&5 -echo "${ECHO_T}using ALSA" >&6 - audio_apis=-D__LINUX_ALSA__ + if test "$api" == ""; then + { echo "$as_me:$LINENO: result: using ALSA" >&5 +echo "${ECHO_T}using ALSA" >&6; } + api=-D__LINUX_ALSA__ -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 +{ 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 @@ -4092,40 +4847,52 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #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 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 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4134,14 +4901,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_asound_snd_pcm_open=no + ac_cv_lib_asound_snd_pcm_open=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core 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 +{ 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 @@ -4158,8 +4926,8 @@ fi fi -echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 -echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 +{ 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 @@ -4172,40 +4940,52 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #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 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 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4214,14 +4994,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_pthread_pthread_create=no + ac_cv_lib_pthread_pthread_create=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core 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 +{ 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 @@ -4238,20 +5019,16 @@ fi ;; *-apple*) - sound_api=_NO_API_ - -# Check whether --with-jack or --without-jack was given. +# Check whether --with-jack was given. if test "${with_jack+set}" = set; then - withval="$with_jack" - sound_api=-D__UNIX_JACK__ - echo "$as_me:$LINENO: result: using JACK" >&5 -echo "${ECHO_T}using JACK" >&6 -fi; - if test $sound_api = -D__UNIX_JACK__; then - -echo "$as_me:$LINENO: checking for jack_client_new in -ljack" >&5 -echo $ECHO_N "checking for jack_client_new in -ljack... $ECHO_C" >&6 + withval=$with_jack; + api="$api -D__UNIX_JACK__" + { echo "$as_me:$LINENO: result: using JACK" >&5 +echo "${ECHO_T}using JACK" >&6; } + +{ echo "$as_me:$LINENO: checking for jack_client_new in -ljack" >&5 +echo $ECHO_N "checking for jack_client_new in -ljack... $ECHO_C" >&6; } if test "${ac_cv_lib_jack_jack_client_new+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4264,40 +5041,52 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #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 jack_client_new (); int main () { -jack_client_new (); +return jack_client_new (); ; 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 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4306,14 +5095,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_jack_jack_client_new=no + ac_cv_lib_jack_jack_client_new=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core 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_jack_jack_client_new" >&5 -echo "${ECHO_T}$ac_cv_lib_jack_jack_client_new" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_jack_jack_client_new" >&5 +echo "${ECHO_T}$ac_cv_lib_jack_jack_client_new" >&6; } if test $ac_cv_lib_jack_jack_client_new = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBJACK 1 @@ -4327,31 +5117,29 @@ echo "$as_me: error: JACK support requires the jack library!" >&2;} { (exit 1); exit 1; }; } fi - audio_apis="-D__UNIX_JACK__" - fi +fi + # Look for Core flag -# Check whether --with-core or --without-core was given. +# Check whether --with-core was given. if test "${with_core+set}" = set; then - withval="$with_core" - sound_api=-D__MACOSX_CORE__ - echo "$as_me:$LINENO: result: using CoreAudio" >&5 -echo "${ECHO_T}using CoreAudio" >&6 -fi; - if test $sound_api = -D__MACOSX_CORE__; then + withval=$with_core; + api="$api -D__MACOSX_CORE__" + { echo "$as_me:$LINENO: result: using CoreAudio" >&5 +echo "${ECHO_T}using CoreAudio" >&6; } if test "${ac_cv_header_CoreAudio_CoreAudio_h+set}" = set; then - echo "$as_me:$LINENO: checking for CoreAudio/CoreAudio.h" >&5 -echo $ECHO_N "checking for CoreAudio/CoreAudio.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for CoreAudio/CoreAudio.h" >&5 +echo $ECHO_N "checking for CoreAudio/CoreAudio.h... $ECHO_C" >&6; } if test "${ac_cv_header_CoreAudio_CoreAudio_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_CoreAudio_CoreAudio_h" >&5 -echo "${ECHO_T}$ac_cv_header_CoreAudio_CoreAudio_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_CoreAudio_CoreAudio_h" >&5 +echo "${ECHO_T}$ac_cv_header_CoreAudio_CoreAudio_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking CoreAudio/CoreAudio.h usability" >&5 -echo $ECHO_N "checking CoreAudio/CoreAudio.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking CoreAudio/CoreAudio.h usability" >&5 +echo $ECHO_N "checking CoreAudio/CoreAudio.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4362,24 +5150,36 @@ $ac_includes_default #include <CoreAudio/CoreAudio.h> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4388,15 +5188,16 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking CoreAudio/CoreAudio.h presence" >&5 -echo $ECHO_N "checking CoreAudio/CoreAudio.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking CoreAudio/CoreAudio.h presence" >&5 +echo $ECHO_N "checking CoreAudio/CoreAudio.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4405,8 +5206,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <CoreAudio/CoreAudio.h> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -4430,9 +5236,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -4456,25 +5263,23 @@ echo "$as_me: WARNING: CoreAudio/CoreAudio.h: section \"Present But Cannot B echo "$as_me: WARNING: CoreAudio/CoreAudio.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: CoreAudio/CoreAudio.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: CoreAudio/CoreAudio.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ----------------------------------- ## ## Report this to gary@music.mcgill.ca ## ## ----------------------------------- ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for CoreAudio/CoreAudio.h" >&5 -echo $ECHO_N "checking for CoreAudio/CoreAudio.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for CoreAudio/CoreAudio.h" >&5 +echo $ECHO_N "checking for CoreAudio/CoreAudio.h... $ECHO_C" >&6; } if test "${ac_cv_header_CoreAudio_CoreAudio_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_CoreAudio_CoreAudio_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_CoreAudio_CoreAudio_h" >&5 -echo "${ECHO_T}$ac_cv_header_CoreAudio_CoreAudio_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_CoreAudio_CoreAudio_h" >&5 +echo "${ECHO_T}$ac_cv_header_CoreAudio_CoreAudio_h" >&6; } fi if test $ac_cv_header_CoreAudio_CoreAudio_h = yes; then @@ -4486,29 +5291,28 @@ echo "$as_me: error: CoreAudio header files not found!" >&2;} fi - frameworks="-framework CoreAudio -framework CoreFoundation" + LIBS="$LIBS -framework CoreAudio -framework CoreFoundation" +fi - audio_apis="-D__MACOSX_CORE__ $audio_apis" - fi # If no audio api flags specified, use CoreAudio - if test $sound_api = _NO_API_; then - sound_api=-D__MACOSX_CORE__ + if test "$api" == ""; then + api=-D__MACOSX_CORE__ - echo "$as_me:$LINENO: result: using CoreAudio" >&5 -echo "${ECHO_T}using CoreAudio" >&6 + { echo "$as_me:$LINENO: result: using CoreAudio" >&5 +echo "${ECHO_T}using CoreAudio" >&6; } if test "${ac_cv_header_CoreAudio_CoreAudio_h+set}" = set; then - echo "$as_me:$LINENO: checking for CoreAudio/CoreAudio.h" >&5 -echo $ECHO_N "checking for CoreAudio/CoreAudio.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for CoreAudio/CoreAudio.h" >&5 +echo $ECHO_N "checking for CoreAudio/CoreAudio.h... $ECHO_C" >&6; } if test "${ac_cv_header_CoreAudio_CoreAudio_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_CoreAudio_CoreAudio_h" >&5 -echo "${ECHO_T}$ac_cv_header_CoreAudio_CoreAudio_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_CoreAudio_CoreAudio_h" >&5 +echo "${ECHO_T}$ac_cv_header_CoreAudio_CoreAudio_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking CoreAudio/CoreAudio.h usability" >&5 -echo $ECHO_N "checking CoreAudio/CoreAudio.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking CoreAudio/CoreAudio.h usability" >&5 +echo $ECHO_N "checking CoreAudio/CoreAudio.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4519,24 +5323,36 @@ $ac_includes_default #include <CoreAudio/CoreAudio.h> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4545,15 +5361,16 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking CoreAudio/CoreAudio.h presence" >&5 -echo $ECHO_N "checking CoreAudio/CoreAudio.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking CoreAudio/CoreAudio.h presence" >&5 +echo $ECHO_N "checking CoreAudio/CoreAudio.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4562,8 +5379,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <CoreAudio/CoreAudio.h> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -4587,9 +5409,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -4613,30 +5436,27 @@ echo "$as_me: WARNING: CoreAudio/CoreAudio.h: section \"Present But Cannot B echo "$as_me: WARNING: CoreAudio/CoreAudio.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: CoreAudio/CoreAudio.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: CoreAudio/CoreAudio.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ----------------------------------- ## ## Report this to gary@music.mcgill.ca ## ## ----------------------------------- ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for CoreAudio/CoreAudio.h" >&5 -echo $ECHO_N "checking for CoreAudio/CoreAudio.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for CoreAudio/CoreAudio.h" >&5 +echo $ECHO_N "checking for CoreAudio/CoreAudio.h... $ECHO_C" >&6; } if test "${ac_cv_header_CoreAudio_CoreAudio_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_CoreAudio_CoreAudio_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_CoreAudio_CoreAudio_h" >&5 -echo "${ECHO_T}$ac_cv_header_CoreAudio_CoreAudio_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_CoreAudio_CoreAudio_h" >&5 +echo "${ECHO_T}$ac_cv_header_CoreAudio_CoreAudio_h" >&6; } fi if test $ac_cv_header_CoreAudio_CoreAudio_h = yes; then - audio_apis=-D__MACOSX_CORE__ - + : else { { echo "$as_me:$LINENO: error: CoreAudio header files not found!" >&5 echo "$as_me: error: CoreAudio header files not found!" >&2;} @@ -4644,13 +5464,13 @@ echo "$as_me: error: CoreAudio header files not found!" >&2;} fi - frameworks="-framework CoreAudio -framework CoreFoundation" + LIBS="-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 +{ 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 @@ -4663,40 +5483,52 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #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 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 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4705,14 +5537,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_pthread_pthread_create=no + ac_cv_lib_pthread_pthread_create=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core 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 +{ 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 @@ -4729,43 +5562,36 @@ fi ;; *-mingw32*) - sound_api=_NO_API_ - -# Check whether --with-asio or --without-asio was given. +# Check whether --with-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__" + withval=$with_asio; + api="$api -D__WINDOWS_ASIO__" + { echo "$as_me:$LINENO: result: using ASIO" >&5 +echo "${ECHO_T}using ASIO" >&6; } objects="asio.o asiodrivers.o asiolist.o iasiothiscallresolver.o" - fi +fi + # Look for DirectSound flag -# Check whether --with-ds or --without-ds was given. +# Check whether --with-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" + withval=$with_ds; + api="$api -D__WINDOWS_DS__" + { echo "$as_me:$LINENO: result: using DirectSound" >&5 +echo "${ECHO_T}using DirectSound" >&6; } LIBS="-ldsound -lwinmm $LIBS" - fi +fi + # If no audio api flags specified, use DirectSound - if test $sound_api = _NO_API_; then - sound_api=-D__WINDOWS_DS__ + if test "$api" == ""; then + api=-D__WINDOWS_DS__ - echo "$as_me:$LINENO: result: using DirectSound" >&5 -echo "${ECHO_T}using DirectSound" >&6 - audio_apis="-D__WINDOWS_DS__" + { echo "$as_me:$LINENO: result: using DirectSound" >&5 +echo "${ECHO_T}using DirectSound" >&6; } LIBS="-ldsound -lwinmm $LIBS" fi @@ -4780,57 +5606,7 @@ echo "$as_me: error: Unknown system type for realtime support!" >&2;} ;; esac -# Checks for library functions. -if test $ac_cv_c_compiler_gnu = yes; then - echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 -echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 -if test "${ac_cv_prog_gcc_traditional+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_pattern="Autoconf.*'x'" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sgtty.h> -Autoconf TIOCGETP -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -else - ac_cv_prog_gcc_traditional=no -fi -rm -f conftest* - - - if test $ac_cv_prog_gcc_traditional = no; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <termio.h> -Autoconf TCGETA -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -fi -rm -f conftest* - - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 -echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 - if test $ac_cv_prog_gcc_traditional = yes; then - CC="$CC -traditional" - fi -fi - +CPPFLAGS="$CPPFLAGS $api" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -4850,39 +5626,58 @@ _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. +# So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -{ +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; + ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} | + esac | + sort +) | sed ' + /^ac_cv_env_/b end t clear - : clear + :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - echo "not updating unwritable cache $cache_file" + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -4891,63 +5686,48 @@ test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, +# take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF +ac_script=' t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -4985,11 +5765,35 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi +BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset @@ -4998,8 +5802,43 @@ else fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' @@ -5013,18 +5852,19 @@ do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - $as_unset $as_var + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -5032,159 +5872,120 @@ fi # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` +# CDPATH. +$as_unset CDPATH -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -5193,7 +5994,19 @@ else as_mkdir_p=false fi -as_executable_p="test -f" +# Find out whether ``test -x'' works. Don't use a zero-byte file, as +# systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + as_executable_p="test -x" +else + as_executable_p=: +fi +rm -f conf$$.file # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -5202,31 +6015,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - exec 6>&1 -# Open the log real soon, to keep \$[0] and so on meaningful, and to +# Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - +# values after options handling. +ac_log=" This file was extended by RtAudio $as_me 4.0, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.60. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -5234,30 +6030,18 @@ generated by GNU Autoconf 2.59. Invocation command line was CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + _ACEOF +cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi +config_files="$ac_config_files" -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi +_ACEOF cat >>$CONFIG_STATUS <<\_ACEOF - ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. @@ -5276,18 +6060,20 @@ Configuration files: $config_files Report bugs to <bug-autoconf@gnu.org>." -_ACEOF +_ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ RtAudio config.status 4.0 -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.60, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir + +ac_pwd='$ac_pwd' +srcdir='$srcdir' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF @@ -5298,60 +6084,42 @@ while test $# != 0 do case $1 in --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; - -*) + *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; esac case $ac_option in # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" ;; + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; esac shift @@ -5367,30 +6135,44 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 - - - +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +_ACEOF cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. for ac_config_target in $ac_config_targets do - case "$ac_config_target" in - # Handling of arguments. - "rtaudio-config" ) CONFIG_FILES="$CONFIG_FILES rtaudio-config" ;; - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + case $ac_config_target in + "rtaudio-config") CONFIG_FILES="$CONFIG_FILES rtaudio-config" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done + # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely @@ -5400,343 +6182,418 @@ if $ac_need_defaults; then fi # Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, +# simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. $debug || { - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } - # Create a (secure) tmp directory for tmp files. { - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - # -# CONFIG_FILES section. +# Set up the sed scripts for CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@GXX@,$GXX,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@CXX@,$CXX,;t t -s,@CXXFLAGS@,$CXXFLAGS,;t t -s,@ac_ct_CXX@,$ac_ct_CXX,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@AR@,$AR,;t t -s,@CPP@,$CPP,;t t -s,@EGREP@,$EGREP,;t t -s,@debug@,$debug,;t t -s,@cflags@,$cflags,;t t -s,@object_path@,$object_path,;t t -s,@warn@,$warn,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -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 +if test -n "$CONFIG_FILES"; then _ACEOF - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +GXX!$GXX$ac_delim +CXX!$CXX$ac_delim +CXXFLAGS!$CXXFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CXX!$ac_ct_CXX$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +RANLIB!$RANLIB$ac_delim +AR!$AR$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +cppflag!$cppflag$ac_delim +cxxflag!$cxxflag$ac_delim +object_path!$object_path$ac_delim +api!$api$ac_delim +build!$build$ac_delim +build_cpu!$build_cpu$ac_delim +build_vendor!$build_vendor$ac_delim +build_os!$build_os$ac_delim +host!$host$ac_delim +host_cpu!$host_cpu$ac_delim +host_vendor!$host_vendor$ac_delim +host_os!$host_os$ac_delim +objects!$objects$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 68; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi -fi # test -n "$CONFIG_FILES" +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS <conf$$subs.sed +rm -f conf$$subs.sed +cat >>$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof _ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } - ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac + case $ac_mode in + :F) + # + # CONFIG_FILE + # +_ACEOF - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac + ;; -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF + + esac + +done # for ac_tag + { (exit 0); exit 0; } _ACEOF diff --git a/doc/html/RtAudio_8h-source.html b/doc/html/RtAudio_8h-source.html index 956812c..7c1fb87 100644 --- a/doc/html/RtAudio_8h-source.html +++ b/doc/html/RtAudio_8h-source.html @@ -8,11 +8,11 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> +<!-- Generated by Doxygen 1.5.8 --> <h1>RtAudio.h</h1><a href="RtAudio_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/************************************************************************/</span> <a name="l00039"></a>00039 <span class="comment">/************************************************************************/</span> <a name="l00040"></a>00040 -<a name="l00045"></a>00045 <span class="comment">// RtAudio: Version 4.0.4</span> +<a name="l00045"></a>00045 <span class="comment">// RtAudio: Version 4.0.5</span> <a name="l00046"></a>00046 <a name="l00047"></a>00047 <span class="preprocessor">#ifndef __RTAUDIO_H</span> <a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor">#define __RTAUDIO_H</span> @@ -21,612 +21,620 @@ <a name="l00051"></a>00051 <span class="preprocessor">#include <vector></span> <a name="l00052"></a>00052 <span class="preprocessor">#include "RtError.h"</span> <a name="l00053"></a>00053 -<a name="l00070"></a><a class="code" href="RtAudio_8h.html#a1">00070</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a>; -<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> RTAUDIO_SINT8 = 0x1; <span class="comment">// 8-bit signed integer.</span> -<a name="l00072"></a>00072 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> RTAUDIO_SINT16 = 0x2; <span class="comment">// 16-bit signed integer.</span> -<a name="l00073"></a>00073 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> RTAUDIO_SINT24 = 0x4; <span class="comment">// Lower 3 bytes of 32-bit signed integer.</span> -<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> RTAUDIO_SINT32 = 0x8; <span class="comment">// 32-bit signed integer.</span> -<a name="l00075"></a>00075 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> RTAUDIO_FLOAT32 = 0x10; <span class="comment">// Normalized between plus/minus 1.0.</span> -<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> RTAUDIO_FLOAT64 = 0x20; <span class="comment">// Normalized between plus/minus 1.0.</span> +<a name="l00070"></a><a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8">00070</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a>; +<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> RTAUDIO_SINT8 = 0x1; <span class="comment">// 8-bit signed integer.</span> +<a name="l00072"></a>00072 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> RTAUDIO_SINT16 = 0x2; <span class="comment">// 16-bit signed integer.</span> +<a name="l00073"></a>00073 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> RTAUDIO_SINT24 = 0x4; <span class="comment">// Lower 3 bytes of 32-bit signed integer.</span> +<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> RTAUDIO_SINT32 = 0x8; <span class="comment">// 32-bit signed integer.</span> +<a name="l00075"></a>00075 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> RTAUDIO_FLOAT32 = 0x10; <span class="comment">// Normalized between plus/minus 1.0.</span> +<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> RTAUDIO_FLOAT64 = 0x20; <span class="comment">// Normalized between plus/minus 1.0.</span> <a name="l00077"></a>00077 -<a name="l00112"></a><a class="code" href="RtAudio_8h.html#a8">00112</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="RtAudio_8h.html#a8">RtAudioStreamFlags</a>; -<a name="l00113"></a>00113 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#a8">RtAudioStreamFlags</a> RTAUDIO_NONINTERLEAVED = 0x1; <span class="comment">// Use non-interleaved buffers (default = interleaved).</span> -<a name="l00114"></a>00114 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#a8">RtAudioStreamFlags</a> RTAUDIO_MINIMIZE_LATENCY = 0x2; <span class="comment">// Attempt to set stream parameters for lowest possible latency.</span> -<a name="l00115"></a>00115 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#a8">RtAudioStreamFlags</a> RTAUDIO_HOG_DEVICE = 0x4; <span class="comment">// Attempt grab device and prevent use by others.</span> -<a name="l00116"></a>00116 -<a name="l00128"></a><a class="code" href="RtAudio_8h.html#a12">00128</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="RtAudio_8h.html#a12">RtAudioStreamStatus</a>; -<a name="l00129"></a>00129 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#a12">RtAudioStreamStatus</a> RTAUDIO_INPUT_OVERFLOW = 0x1; <span class="comment">// Input data was discarded because of an overflow condition at the driver.</span> -<a name="l00130"></a>00130 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#a12">RtAudioStreamStatus</a> RTAUDIO_OUTPUT_UNDERFLOW = 0x2; <span class="comment">// The output buffer ran low, likely causing a gap in the output sound.</span> -<a name="l00131"></a>00131 -<a name="l00133"></a>00133 -<a name="l00171"></a><a class="code" href="RtAudio_8h.html#a15">00171</a> <span class="keyword">typedef</span> int (*<a class="code" href="RtAudio_8h.html#a15">RtAudioCallback</a>)( <span class="keywordtype">void</span> *outputBuffer, <span class="keywordtype">void</span> *inputBuffer, -<a name="l00172"></a>00172 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nFrames, -<a name="l00173"></a>00173 <span class="keywordtype">double</span> streamTime, -<a name="l00174"></a>00174 <a class="code" href="RtAudio_8h.html#a12">RtAudioStreamStatus</a> status, -<a name="l00175"></a>00175 <span class="keywordtype">void</span> *userData ); -<a name="l00176"></a>00176 -<a name="l00177"></a>00177 -<a name="l00178"></a>00178 <span class="comment">// **************************************************************** //</span> -<a name="l00179"></a>00179 <span class="comment">//</span> -<a name="l00180"></a>00180 <span class="comment">// RtAudio class declaration.</span> -<a name="l00181"></a>00181 <span class="comment">//</span> -<a name="l00182"></a>00182 <span class="comment">// RtAudio is a "controller" used to select an available audio i/o</span> -<a name="l00183"></a>00183 <span class="comment">// interface. It presents a common API for the user to call but all</span> -<a name="l00184"></a>00184 <span class="comment">// functionality is implemented by the class RtApi and its</span> -<a name="l00185"></a>00185 <span class="comment">// subclasses. RtAudio creates an instance of an RtApi subclass</span> -<a name="l00186"></a>00186 <span class="comment">// based on the user's API choice. If no choice is made, RtAudio</span> -<a name="l00187"></a>00187 <span class="comment">// attempts to make a "logical" API selection.</span> -<a name="l00188"></a>00188 <span class="comment">//</span> -<a name="l00189"></a>00189 <span class="comment">// **************************************************************** //</span> -<a name="l00190"></a>00190 -<a name="l00191"></a>00191 <span class="keyword">class </span>RtApi; -<a name="l00192"></a>00192 -<a name="l00193"></a><a class="code" href="classRtAudio.html">00193</a> <span class="keyword">class </span><a class="code" href="classRtAudio.html">RtAudio</a> -<a name="l00194"></a>00194 { -<a name="l00195"></a>00195 <span class="keyword">public</span>: +<a name="l00115"></a><a class="code" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41">00115</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41" title="RtAudio stream option flags.">RtAudioStreamFlags</a>; +<a name="l00116"></a>00116 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41" title="RtAudio stream option flags.">RtAudioStreamFlags</a> RTAUDIO_NONINTERLEAVED = 0x1; <span class="comment">// Use non-interleaved buffers (default = interleaved).</span> +<a name="l00117"></a>00117 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41" title="RtAudio stream option flags.">RtAudioStreamFlags</a> RTAUDIO_MINIMIZE_LATENCY = 0x2; <span class="comment">// Attempt to set stream parameters for lowest possible latency.</span> +<a name="l00118"></a>00118 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41" title="RtAudio stream option flags.">RtAudioStreamFlags</a> RTAUDIO_HOG_DEVICE = 0x4; <span class="comment">// Attempt grab device and prevent use by others.</span> +<a name="l00119"></a>00119 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41" title="RtAudio stream option flags.">RtAudioStreamFlags</a> RTAUDIO_SCHEDULE_REALTIME = 0x8; <span class="comment">// Try to select realtime scheduling for callback thread.</span> +<a name="l00120"></a>00120 +<a name="l00132"></a><a class="code" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806">00132</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806" title="RtAudio stream status (over- or underflow) flags.">RtAudioStreamStatus</a>; +<a name="l00133"></a>00133 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806" title="RtAudio stream status (over- or underflow) flags.">RtAudioStreamStatus</a> RTAUDIO_INPUT_OVERFLOW = 0x1; <span class="comment">// Input data was discarded because of an overflow condition at the driver.</span> +<a name="l00134"></a>00134 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806" title="RtAudio stream status (over- or underflow) flags.">RtAudioStreamStatus</a> RTAUDIO_OUTPUT_UNDERFLOW = 0x2; <span class="comment">// The output buffer ran low, likely causing a gap in the output sound.</span> +<a name="l00135"></a>00135 +<a name="l00137"></a>00137 +<a name="l00175"></a><a class="code" href="RtAudio_8h.html#112c7b7e25a974977f6fc094cef1a31f">00175</a> <span class="keyword">typedef</span> int (*<a class="code" href="RtAudio_8h.html#112c7b7e25a974977f6fc094cef1a31f" title="RtAudio callback function prototype.">RtAudioCallback</a>)( <span class="keywordtype">void</span> *outputBuffer, <span class="keywordtype">void</span> *inputBuffer, +<a name="l00176"></a>00176 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nFrames, +<a name="l00177"></a>00177 <span class="keywordtype">double</span> streamTime, +<a name="l00178"></a>00178 <a class="code" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806" title="RtAudio stream status (over- or underflow) flags.">RtAudioStreamStatus</a> status, +<a name="l00179"></a>00179 <span class="keywordtype">void</span> *userData ); +<a name="l00180"></a>00180 +<a name="l00181"></a>00181 +<a name="l00182"></a>00182 <span class="comment">// **************************************************************** //</span> +<a name="l00183"></a>00183 <span class="comment">//</span> +<a name="l00184"></a>00184 <span class="comment">// RtAudio class declaration.</span> +<a name="l00185"></a>00185 <span class="comment">//</span> +<a name="l00186"></a>00186 <span class="comment">// RtAudio is a "controller" used to select an available audio i/o</span> +<a name="l00187"></a>00187 <span class="comment">// interface. It presents a common API for the user to call but all</span> +<a name="l00188"></a>00188 <span class="comment">// functionality is implemented by the class RtApi and its</span> +<a name="l00189"></a>00189 <span class="comment">// subclasses. RtAudio creates an instance of an RtApi subclass</span> +<a name="l00190"></a>00190 <span class="comment">// based on the user's API choice. If no choice is made, RtAudio</span> +<a name="l00191"></a>00191 <span class="comment">// attempts to make a "logical" API selection.</span> +<a name="l00192"></a>00192 <span class="comment">//</span> +<a name="l00193"></a>00193 <span class="comment">// **************************************************************** //</span> +<a name="l00194"></a>00194 +<a name="l00195"></a>00195 <span class="keyword">class </span>RtApi; <a name="l00196"></a>00196 -<a name="l00198"></a><a class="code" href="classRtAudio.html#w8">00198</a> <span class="keyword">enum</span> <a class="code" href="classRtAudio.html#w8">Api</a> { -<a name="l00199"></a>00199 <a class="code" href="classRtAudio.html#w8w0">UNSPECIFIED</a>, -<a name="l00200"></a>00200 <a class="code" href="classRtAudio.html#w8w1">LINUX_ALSA</a>, -<a name="l00201"></a>00201 <a class="code" href="classRtAudio.html#w8w2">LINUX_OSS</a>, -<a name="l00202"></a>00202 <a class="code" href="classRtAudio.html#w8w3">UNIX_JACK</a>, -<a name="l00203"></a>00203 <a class="code" href="classRtAudio.html#w8w4">MACOSX_CORE</a>, -<a name="l00204"></a>00204 <a class="code" href="classRtAudio.html#w8w5">WINDOWS_ASIO</a>, -<a name="l00205"></a>00205 <a class="code" href="classRtAudio.html#w8w6">WINDOWS_DS</a>, -<a name="l00206"></a><a class="code" href="classRtAudio.html#w8w7">00206</a> <a class="code" href="classRtAudio.html#w8w7">RTAUDIO_DUMMY</a> -<a name="l00207"></a>00207 }; -<a name="l00208"></a>00208 -<a name="l00210"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html">00210</a> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1DeviceInfo.html">DeviceInfo</a> { -<a name="l00211"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#o0">00211</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#o0">probed</a>; -<a name="l00212"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#o1">00212</a> std::string <a class="code" href="structRtAudio_1_1DeviceInfo.html#o1">name</a>; -<a name="l00213"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#o2">00213</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#o2">outputChannels</a>; -<a name="l00214"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#o3">00214</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#o3">inputChannels</a>; -<a name="l00215"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#o4">00215</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#o4">duplexChannels</a>; -<a name="l00216"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#o5">00216</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#o5">isDefaultOutput</a>; -<a name="l00217"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#o6">00217</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#o6">isDefaultInput</a>; -<a name="l00218"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#o7">00218</a> std::vector<unsigned int> <a class="code" href="structRtAudio_1_1DeviceInfo.html#o7">sampleRates</a>; -<a name="l00219"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#o8">00219</a> <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> <a class="code" href="structRtAudio_1_1DeviceInfo.html#o8">nativeFormats</a>; -<a name="l00221"></a>00221 <span class="comment">// Default constructor.</span> -<a name="l00222"></a>00222 <a class="code" href="structRtAudio_1_1DeviceInfo.html">DeviceInfo</a>() -<a name="l00223"></a>00223 :<a class="code" href="structRtAudio_1_1DeviceInfo.html#o0">probed</a>(false), <a class="code" href="structRtAudio_1_1DeviceInfo.html#o2">outputChannels</a>(0), <a class="code" href="structRtAudio_1_1DeviceInfo.html#o3">inputChannels</a>(0), <a class="code" href="structRtAudio_1_1DeviceInfo.html#o4">duplexChannels</a>(0), -<a name="l00224"></a>00224 <a class="code" href="structRtAudio_1_1DeviceInfo.html#o5">isDefaultOutput</a>(false), <a class="code" href="structRtAudio_1_1DeviceInfo.html#o6">isDefaultInput</a>(false), <a class="code" href="structRtAudio_1_1DeviceInfo.html#o8">nativeFormats</a>(0) {} -<a name="l00225"></a>00225 }; -<a name="l00226"></a>00226 -<a name="l00228"></a><a class="code" href="structRtAudio_1_1StreamParameters.html">00228</a> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1StreamParameters.html">StreamParameters</a> { -<a name="l00229"></a><a class="code" href="structRtAudio_1_1StreamParameters.html#o0">00229</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamParameters.html#o0">deviceId</a>; -<a name="l00230"></a><a class="code" href="structRtAudio_1_1StreamParameters.html#o1">00230</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamParameters.html#o1">nChannels</a>; -<a name="l00231"></a><a class="code" href="structRtAudio_1_1StreamParameters.html#o2">00231</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamParameters.html#o2">firstChannel</a>; -<a name="l00233"></a>00233 <span class="comment">// Default constructor.</span> -<a name="l00234"></a>00234 <a class="code" href="structRtAudio_1_1StreamParameters.html">StreamParameters</a>() -<a name="l00235"></a>00235 : <a class="code" href="structRtAudio_1_1StreamParameters.html#o0">deviceId</a>(0), <a class="code" href="structRtAudio_1_1StreamParameters.html#o1">nChannels</a>(0), <a class="code" href="structRtAudio_1_1StreamParameters.html#o2">firstChannel</a>(0) {} -<a name="l00236"></a>00236 }; -<a name="l00237"></a>00237 -<a name="l00239"></a>00239 -<a name="l00284"></a><a class="code" href="structRtAudio_1_1StreamOptions.html">00284</a> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1StreamOptions.html">StreamOptions</a> { -<a name="l00285"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#o0">00285</a> <a class="code" href="RtAudio_8h.html#a8">RtAudioStreamFlags</a> <a class="code" href="structRtAudio_1_1StreamOptions.html#o0">flags</a>; -<a name="l00286"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#o1">00286</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamOptions.html#o1">numberOfBuffers</a>; -<a name="l00287"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#o2">00287</a> std::string <a class="code" href="structRtAudio_1_1StreamOptions.html#o2">streamName</a>; -<a name="l00289"></a>00289 <span class="comment">// Default constructor.</span> -<a name="l00290"></a>00290 <a class="code" href="structRtAudio_1_1StreamOptions.html">StreamOptions</a>() -<a name="l00291"></a>00291 : <a class="code" href="structRtAudio_1_1StreamOptions.html#o0">flags</a>(0), <a class="code" href="structRtAudio_1_1StreamOptions.html#o1">numberOfBuffers</a>(0) {} -<a name="l00292"></a>00292 }; -<a name="l00293"></a>00293 -<a name="l00295"></a>00295 -<a name="l00300"></a>00300 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#e0">getCompiledApi</a>( std::vector<RtAudio::Api> &apis ) <span class="keywordflow">throw</span>(); -<a name="l00301"></a>00301 -<a name="l00303"></a>00303 -<a name="l00311"></a>00311 <a class="code" href="classRtAudio.html#a0">RtAudio</a>( <a class="code" href="classRtAudio.html#w8">RtAudio::Api</a> api=<a class="code" href="classRtAudio.html#w8w0">UNSPECIFIED</a> ) throw(); +<a name="l00197"></a><a class="code" href="classRtAudio.html">00197</a> <span class="keyword">class </span><a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> +<a name="l00198"></a>00198 { +<a name="l00199"></a>00199 <span class="keyword">public</span>: +<a name="l00200"></a>00200 +<a name="l00202"></a><a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849">00202</a> <span class="keyword">enum</span> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">Api</a> { +<a name="l00203"></a><a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a49af3ac767106158bc6cad74fb214ae">00203</a> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a49af3ac767106158bc6cad74fb214ae">UNSPECIFIED</a>, +<a name="l00204"></a><a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a7a2ba095c2806caa893b6fb8fc3a1a8">00204</a> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a7a2ba095c2806caa893b6fb8fc3a1a8">LINUX_ALSA</a>, +<a name="l00205"></a><a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84939c84615e61de75e6a4e865596d62c82">00205</a> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84939c84615e61de75e6a4e865596d62c82">LINUX_OSS</a>, +<a name="l00206"></a><a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8494767e17c6edfbd827f91763915df4105">00206</a> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8494767e17c6edfbd827f91763915df4105">UNIX_JACK</a>, +<a name="l00207"></a><a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8499fec92b8272244a87a6a11a717bd662d">00207</a> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8499fec92b8272244a87a6a11a717bd662d">MACOSX_CORE</a>, +<a name="l00208"></a><a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849219517d1df90f94d07758481155bd469">00208</a> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849219517d1df90f94d07758481155bd469">WINDOWS_ASIO</a>, +<a name="l00209"></a><a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84928478830f42c2fd61e6c7ad498901931">00209</a> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84928478830f42c2fd61e6c7ad498901931">WINDOWS_DS</a>, +<a name="l00210"></a><a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849b06b8fd88bf18c9a2b8271f6961ae2d1">00210</a> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849b06b8fd88bf18c9a2b8271f6961ae2d1">RTAUDIO_DUMMY</a> +<a name="l00211"></a>00211 }; +<a name="l00212"></a>00212 +<a name="l00214"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html">00214</a> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">DeviceInfo</a> { +<a name="l00215"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#5bf008c629ef493c713ec870d0217407">00215</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#5bf008c629ef493c713ec870d0217407">probed</a>; +<a name="l00216"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a0e2ea10c52c206c9e105ac76b01f194">00216</a> std::string <a class="code" href="structRtAudio_1_1DeviceInfo.html#a0e2ea10c52c206c9e105ac76b01f194">name</a>; +<a name="l00217"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#185f8aac1095de4fbb6e0076875d24c4">00217</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#185f8aac1095de4fbb6e0076875d24c4">outputChannels</a>; +<a name="l00218"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#731b31adf84c550ab98329be1baa58b4">00218</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#731b31adf84c550ab98329be1baa58b4">inputChannels</a>; +<a name="l00219"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#ca6ecfb8b5b8c114c54809d8af50ee5b">00219</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#ca6ecfb8b5b8c114c54809d8af50ee5b">duplexChannels</a>; +<a name="l00220"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#af74fc23f451fdd22ed073a47f0db674">00220</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#af74fc23f451fdd22ed073a47f0db674">isDefaultOutput</a>; +<a name="l00221"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#a8b03618fa1d4c051f6add14bb031728">00221</a> <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a8b03618fa1d4c051f6add14bb031728">isDefaultInput</a>; +<a name="l00222"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#5b158efcbfbd30e7226df92d0109d475">00222</a> std::vector<unsigned int> <a class="code" href="structRtAudio_1_1DeviceInfo.html#5b158efcbfbd30e7226df92d0109d475">sampleRates</a>; +<a name="l00223"></a><a class="code" href="structRtAudio_1_1DeviceInfo.html#97559ee4a1f2c8cfb765949e6193e1f4">00223</a> <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> <a class="code" href="structRtAudio_1_1DeviceInfo.html#97559ee4a1f2c8cfb765949e6193e1f4">nativeFormats</a>; +<a name="l00225"></a>00225 <span class="comment">// Default constructor.</span> +<a name="l00226"></a>00226 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">DeviceInfo</a>() +<a name="l00227"></a>00227 :<a class="code" href="structRtAudio_1_1DeviceInfo.html#5bf008c629ef493c713ec870d0217407">probed</a>(false), <a class="code" href="structRtAudio_1_1DeviceInfo.html#185f8aac1095de4fbb6e0076875d24c4">outputChannels</a>(0), <a class="code" href="structRtAudio_1_1DeviceInfo.html#731b31adf84c550ab98329be1baa58b4">inputChannels</a>(0), <a class="code" href="structRtAudio_1_1DeviceInfo.html#ca6ecfb8b5b8c114c54809d8af50ee5b">duplexChannels</a>(0), +<a name="l00228"></a>00228 <a class="code" href="structRtAudio_1_1DeviceInfo.html#af74fc23f451fdd22ed073a47f0db674">isDefaultOutput</a>(false), <a class="code" href="structRtAudio_1_1DeviceInfo.html#a8b03618fa1d4c051f6add14bb031728">isDefaultInput</a>(false), <a class="code" href="structRtAudio_1_1DeviceInfo.html#97559ee4a1f2c8cfb765949e6193e1f4">nativeFormats</a>(0) {} +<a name="l00229"></a>00229 }; +<a name="l00230"></a>00230 +<a name="l00232"></a><a class="code" href="structRtAudio_1_1StreamParameters.html">00232</a> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">StreamParameters</a> { +<a name="l00233"></a><a class="code" href="structRtAudio_1_1StreamParameters.html#ffd27496c70c0986522056234c64e28e">00233</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamParameters.html#ffd27496c70c0986522056234c64e28e">deviceId</a>; +<a name="l00234"></a><a class="code" href="structRtAudio_1_1StreamParameters.html#78798b65fada7941e1a7e47c11c9e627">00234</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamParameters.html#78798b65fada7941e1a7e47c11c9e627">nChannels</a>; +<a name="l00235"></a><a class="code" href="structRtAudio_1_1StreamParameters.html#ddc8281f23a87455ec6dedbc766a74db">00235</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamParameters.html#ddc8281f23a87455ec6dedbc766a74db">firstChannel</a>; +<a name="l00237"></a>00237 <span class="comment">// Default constructor.</span> +<a name="l00238"></a>00238 <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">StreamParameters</a>() +<a name="l00239"></a>00239 : <a class="code" href="structRtAudio_1_1StreamParameters.html#ffd27496c70c0986522056234c64e28e">deviceId</a>(0), <a class="code" href="structRtAudio_1_1StreamParameters.html#78798b65fada7941e1a7e47c11c9e627">nChannels</a>(0), <a class="code" href="structRtAudio_1_1StreamParameters.html#ddc8281f23a87455ec6dedbc766a74db">firstChannel</a>(0) {} +<a name="l00240"></a>00240 }; +<a name="l00241"></a>00241 +<a name="l00243"></a>00243 +<a name="l00294"></a><a class="code" href="structRtAudio_1_1StreamOptions.html">00294</a> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">StreamOptions</a> { +<a name="l00295"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#6a284d045b8adcfcf178a4f6a22330f8">00295</a> <a class="code" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41" title="RtAudio stream option flags.">RtAudioStreamFlags</a> <a class="code" href="structRtAudio_1_1StreamOptions.html#6a284d045b8adcfcf178a4f6a22330f8">flags</a>; +<a name="l00296"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#5a04d3c3d0c1cfa063872ecff383af1d">00296</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamOptions.html#5a04d3c3d0c1cfa063872ecff383af1d">numberOfBuffers</a>; +<a name="l00297"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#214da35056f18ffb7c8e4dc074a01a9a">00297</a> std::string <a class="code" href="structRtAudio_1_1StreamOptions.html#214da35056f18ffb7c8e4dc074a01a9a">streamName</a>; +<a name="l00298"></a><a class="code" href="structRtAudio_1_1StreamOptions.html#81b364f137d1ee1073b74dac666af352">00298</a> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1StreamOptions.html#81b364f137d1ee1073b74dac666af352">priority</a>; +<a name="l00300"></a>00300 <span class="comment">// Default constructor.</span> +<a name="l00301"></a>00301 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">StreamOptions</a>() +<a name="l00302"></a>00302 : <a class="code" href="structRtAudio_1_1StreamOptions.html#6a284d045b8adcfcf178a4f6a22330f8">flags</a>(0), <a class="code" href="structRtAudio_1_1StreamOptions.html#5a04d3c3d0c1cfa063872ecff383af1d">numberOfBuffers</a>(0), <a class="code" href="structRtAudio_1_1StreamOptions.html#81b364f137d1ee1073b74dac666af352">priority</a>(0) {} +<a name="l00303"></a>00303 }; +<a name="l00304"></a>00304 +<a name="l00306"></a>00306 +<a name="l00311"></a>00311 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#e266ffad2ef428d0b2c6c262d391ce26" title="A static function to determine the available compiled audio APIs.">getCompiledApi</a>( std::vector<RtAudio::Api> &apis ) <span class="keywordflow">throw</span>(); <a name="l00312"></a>00312 <a name="l00314"></a>00314 -<a name="l00318"></a>00318 ~<a class="code" href="classRtAudio.html">RtAudio</a>() throw(); -<a name="l00319"></a>00319 -<a name="l00321"></a>00321 <a class="code" href="classRtAudio.html">RtAudio</a>::<a class="code" href="classRtAudio.html#w8">Api</a> <a class="code" href="classRtAudio.html#a2">getCurrentApi</a>( <span class="keywordtype">void</span> ) throw(); -<a name="l00322"></a>00322 -<a name="l00324"></a>00324 -<a name="l00329"></a>00329 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a3">getDeviceCount</a>( <span class="keywordtype">void</span> ) throw(); +<a name="l00322"></a>00322 <a class="code" href="classRtAudio.html#fd0bfa26deae9804e18faff59d0273d9" title="The class constructor.">RtAudio</a>( <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> api=<a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a49af3ac767106158bc6cad74fb214ae">UNSPECIFIED</a> ) throw(); +<a name="l00323"></a>00323 +<a name="l00325"></a>00325 +<a name="l00329"></a>00329 ~<a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>() throw(); <a name="l00330"></a>00330 -<a name="l00332"></a>00332 -<a name="l00342"></a>00342 <a class="code" href="classRtAudio.html">RtAudio</a>::DeviceInfo <a class="code" href="classRtAudio.html#a4">getDeviceInfo</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00332"></a>00332 <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::<a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">Api</a> <a class="code" href="classRtAudio.html#83687634795792b2c47e4ae1cf8a5246" title="Returns the audio API specifier for the current instance of RtAudio.">getCurrentApi</a>( <span class="keywordtype">void</span> ) throw(); +<a name="l00333"></a>00333 +<a name="l00335"></a>00335 +<a name="l00340"></a>00340 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount</a>( <span class="keywordtype">void</span> ) throw(); +<a name="l00341"></a>00341 <a name="l00343"></a>00343 -<a name="l00345"></a>00345 -<a name="l00352"></a>00352 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a5">getDefaultOutputDevice</a>( <span class="keywordtype">void</span> ) throw(); -<a name="l00353"></a>00353 -<a name="l00355"></a>00355 -<a name="l00362"></a>00362 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a6">getDefaultInputDevice</a>( <span class="keywordtype">void</span> ) throw(); -<a name="l00363"></a>00363 -<a name="l00365"></a>00365 -<a name="l00402"></a>00402 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a7">openStream</a>( <a class="code" href="classRtAudio.html">RtAudio</a>::StreamParameters *outputParameters, -<a name="l00403"></a>00403 <a class="code" href="classRtAudio.html">RtAudio</a>::StreamParameters *inputParameters, -<a name="l00404"></a>00404 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00405"></a>00405 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferFrames, <a class="code" href="RtAudio_8h.html#a15">RtAudioCallback</a> callback, -<a name="l00406"></a>00406 <span class="keywordtype">void</span> *userData = NULL, <a class="code" href="classRtAudio.html">RtAudio</a>::StreamOptions *options = NULL ); -<a name="l00407"></a>00407 -<a name="l00409"></a>00409 -<a name="l00413"></a>00413 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a8">closeStream</a>( <span class="keywordtype">void</span> ) throw(); -<a name="l00414"></a>00414 -<a name="l00416"></a>00416 -<a name="l00422"></a>00422 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a9">startStream</a>( <span class="keywordtype">void</span> ); -<a name="l00423"></a>00423 +<a name="l00353"></a>00353 <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::DeviceInfo <a class="code" href="classRtAudio.html#02d7ff44ad1d7eae22283a052f3dfda8" title="Return an RtAudio::DeviceInfo structure for a specified device number.">getDeviceInfo</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00354"></a>00354 +<a name="l00356"></a>00356 +<a name="l00363"></a>00363 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#3a3f3dbe13ea696b521e49cdaaa357bc" title="A function that returns the index of the default output device.">getDefaultOutputDevice</a>( <span class="keywordtype">void</span> ) throw(); +<a name="l00364"></a>00364 +<a name="l00366"></a>00366 +<a name="l00373"></a>00373 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#ad8b94edd3cd379ee300b125750ac6ce" title="A function that returns the index of the default input device.">getDefaultInputDevice</a>( <span class="keywordtype">void</span> ) throw(); +<a name="l00374"></a>00374 +<a name="l00376"></a>00376 +<a name="l00413"></a>00413 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">openStream</a>( <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::StreamParameters *outputParameters, +<a name="l00414"></a>00414 <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::StreamParameters *inputParameters, +<a name="l00415"></a>00415 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00416"></a>00416 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferFrames, <a class="code" href="RtAudio_8h.html#112c7b7e25a974977f6fc094cef1a31f" title="RtAudio callback function prototype.">RtAudioCallback</a> callback, +<a name="l00417"></a>00417 <span class="keywordtype">void</span> *userData = NULL, <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::StreamOptions *options = NULL ); +<a name="l00418"></a>00418 +<a name="l00420"></a>00420 +<a name="l00424"></a>00424 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#90d599002ad32cf250a4cb866f2cc93a" title="A function that closes a stream and frees any associated stream memory.">closeStream</a>( <span class="keywordtype">void</span> ) throw(); <a name="l00425"></a>00425 -<a name="l00431"></a>00431 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a10">stopStream</a>( <span class="keywordtype">void</span> ); -<a name="l00432"></a>00432 +<a name="l00427"></a>00427 +<a name="l00433"></a>00433 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#ec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">startStream</a>( <span class="keywordtype">void</span> ); <a name="l00434"></a>00434 -<a name="l00440"></a>00440 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a11">abortStream</a>( <span class="keywordtype">void</span> ); -<a name="l00441"></a>00441 -<a name="l00443"></a>00443 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a12">isStreamOpen</a>( <span class="keywordtype">void</span> ) throw(); -<a name="l00444"></a>00444 -<a name="l00446"></a>00446 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a13">isStreamRunning</a>( <span class="keywordtype">void</span> ) throw(); -<a name="l00447"></a>00447 -<a name="l00449"></a>00449 -<a name="l00452"></a>00452 <span class="keywordtype">double</span> <a class="code" href="classRtAudio.html#a14">getStreamTime</a>( <span class="keywordtype">void</span> ); -<a name="l00453"></a>00453 +<a name="l00436"></a>00436 +<a name="l00442"></a>00442 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">stopStream</a>( <span class="keywordtype">void</span> ); +<a name="l00443"></a>00443 +<a name="l00445"></a>00445 +<a name="l00451"></a>00451 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#d0586b47cd6bb9591a80b4052815991f" title="Stop a stream, discarding any samples remaining in the input/output queue.">abortStream</a>( <span class="keywordtype">void</span> ); +<a name="l00452"></a>00452 +<a name="l00454"></a>00454 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#3863e45ff81dbe97176de0ee7545917f" title="Returns true if a stream is open and false if not.">isStreamOpen</a>( <span class="keywordtype">void</span> ) const throw(); <a name="l00455"></a>00455 -<a name="l00463"></a>00463 <span class="keywordtype">long</span> <a class="code" href="classRtAudio.html#a15">getStreamLatency</a>( <span class="keywordtype">void</span> ); +<a name="l00457"></a>00457 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#84cc8d9b7ab9bc5f37bcf48430ec5aea" title="Returns true if the stream is running and false if it is stopped or not open.">isStreamRunning</a>( <span class="keywordtype">void</span> ) const throw(); +<a name="l00458"></a>00458 +<a name="l00460"></a>00460 +<a name="l00463"></a>00463 <span class="keywordtype">double</span> <a class="code" href="classRtAudio.html#344e59a62353c5791db4621b985cb2ca" title="Returns the number of elapsed seconds since the stream was started.">getStreamTime</a>( <span class="keywordtype">void</span> ); <a name="l00464"></a>00464 -<a name="l00466"></a>00466 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a16">showWarnings</a>( <span class="keywordtype">bool</span> value = true ) throw(); -<a name="l00467"></a>00467 -<a name="l00468"></a>00468 protected: -<a name="l00469"></a>00469 -<a name="l00470"></a>00470 <span class="keywordtype">void</span> openRtApi( <a class="code" href="classRtAudio.html">RtAudio</a>::<a class="code" href="classRtAudio.html#w8">Api</a> api ); -<a name="l00471"></a>00471 RtApi *rtapi_; -<a name="l00472"></a>00472 }; -<a name="l00473"></a>00473 -<a name="l00474"></a>00474 <span class="comment">// Operating system dependent thread functionality.</span> -<a name="l00475"></a>00475 #if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__) -<a name="l00476"></a>00476 #include <windows.h> -<a name="l00477"></a>00477 #include <process.h> -<a name="l00478"></a>00478 -<a name="l00479"></a>00479 typedef <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ThreadHandle; -<a name="l00480"></a>00480 typedef CRITICAL_SECTION StreamMutex; -<a name="l00481"></a>00481 -<a name="l00482"></a>00482 #elif defined(__LINUX_ALSA__) || defined(__UNIX_JACK__) || defined(__LINUX_OSS__) || defined(__MACOSX_CORE__) -<a name="l00483"></a>00483 <span class="comment">// Using pthread library for various flavors of unix.</span> -<a name="l00484"></a>00484 #include <pthread.h> -<a name="l00485"></a>00485 -<a name="l00486"></a>00486 typedef pthread_t ThreadHandle; -<a name="l00487"></a>00487 typedef pthread_mutex_t StreamMutex; +<a name="l00466"></a>00466 +<a name="l00474"></a>00474 <span class="keywordtype">long</span> <a class="code" href="classRtAudio.html#843c989d9f501c71bc2f2c5ca18df9f3" title="Returns the internal stream latency in sample frames.">getStreamLatency</a>( <span class="keywordtype">void</span> ); +<a name="l00475"></a>00475 +<a name="l00477"></a>00477 +<a name="l00482"></a>00482 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#28214b8b05d60b45c24ee6fae7b2a0b5" title="Returns actual sample rate in use by the stream.">getStreamSampleRate</a>( <span class="keywordtype">void</span> ); +<a name="l00483"></a>00483 +<a name="l00485"></a>00485 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#f0752ee51cce3dd90a3bd009f9fdbe77" title="Specify whether warning messages should be printed to stderr.">showWarnings</a>( <span class="keywordtype">bool</span> value = true ) throw(); +<a name="l00486"></a>00486 +<a name="l00487"></a>00487 protected: <a name="l00488"></a>00488 -<a name="l00489"></a>00489 #else <span class="comment">// Setup for "dummy" behavior</span> -<a name="l00490"></a>00490 -<a name="l00491"></a>00491 #define __RTAUDIO_DUMMY__ -<a name="l00492"></a>00492 typedef <span class="keywordtype">int</span> ThreadHandle; -<a name="l00493"></a>00493 typedef <span class="keywordtype">int</span> StreamMutex; -<a name="l00494"></a>00494 -<a name="l00495"></a>00495 #endif -<a name="l00496"></a>00496 -<a name="l00497"></a>00497 <span class="comment">// This global structure type is used to pass callback information</span> -<a name="l00498"></a>00498 <span class="comment">// between the private RtAudio stream structure and global callback</span> -<a name="l00499"></a>00499 <span class="comment">// handling functions.</span> -<a name="l00500"></a>00500 struct CallbackInfo { -<a name="l00501"></a>00501 <span class="keywordtype">void</span> *object; <span class="comment">// Used as a "this" pointer.</span> -<a name="l00502"></a>00502 ThreadHandle thread; -<a name="l00503"></a>00503 <span class="keywordtype">void</span> *callback; -<a name="l00504"></a>00504 <span class="keywordtype">void</span> *userData; -<a name="l00505"></a>00505 <span class="keywordtype">void</span> *apiInfo; <span class="comment">// void pointer for API specific callback information</span> -<a name="l00506"></a>00506 <span class="keywordtype">bool</span> isRunning; +<a name="l00489"></a>00489 <span class="keywordtype">void</span> openRtApi( <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>::<a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">Api</a> api ); +<a name="l00490"></a>00490 RtApi *rtapi_; +<a name="l00491"></a>00491 }; +<a name="l00492"></a>00492 +<a name="l00493"></a>00493 <span class="comment">// Operating system dependent thread functionality.</span> +<a name="l00494"></a>00494 <span class="preprocessor">#if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__)</span> +<a name="l00495"></a>00495 <span class="preprocessor"></span><span class="preprocessor"> #include <windows.h></span> +<a name="l00496"></a>00496 <span class="preprocessor"> #include <process.h></span> +<a name="l00497"></a>00497 +<a name="l00498"></a>00498 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ThreadHandle; +<a name="l00499"></a>00499 <span class="keyword">typedef</span> CRITICAL_SECTION StreamMutex; +<a name="l00500"></a>00500 +<a name="l00501"></a>00501 <span class="preprocessor">#elif defined(__LINUX_ALSA__) || defined(__UNIX_JACK__) || defined(__LINUX_OSS__) || defined(__MACOSX_CORE__)</span> +<a name="l00502"></a>00502 <span class="preprocessor"></span> <span class="comment">// Using pthread library for various flavors of unix.</span> +<a name="l00503"></a>00503 <span class="preprocessor"> #include <pthread.h></span> +<a name="l00504"></a>00504 +<a name="l00505"></a>00505 <span class="keyword">typedef</span> pthread_t ThreadHandle; +<a name="l00506"></a>00506 <span class="keyword">typedef</span> pthread_mutex_t StreamMutex; <a name="l00507"></a>00507 -<a name="l00508"></a>00508 <span class="comment">// Default constructor.</span> -<a name="l00509"></a>00509 CallbackInfo() -<a name="l00510"></a>00510 :object(0), callback(0), userData(0), apiInfo(0), isRunning(false) {} -<a name="l00511"></a>00511 }; -<a name="l00512"></a>00512 -<a name="l00513"></a>00513 <span class="comment">// **************************************************************** //</span> -<a name="l00514"></a>00514 <span class="comment">//</span> -<a name="l00515"></a>00515 <span class="comment">// RtApi class declaration.</span> -<a name="l00516"></a>00516 <span class="comment">//</span> -<a name="l00517"></a>00517 <span class="comment">// Subclasses of RtApi contain all API- and OS-specific code necessary</span> -<a name="l00518"></a>00518 <span class="comment">// to fully implement the RtAudio API.</span> -<a name="l00519"></a>00519 <span class="comment">//</span> -<a name="l00520"></a>00520 <span class="comment">// Note that RtApi is an abstract base class and cannot be</span> -<a name="l00521"></a>00521 <span class="comment">// explicitly instantiated. The class RtAudio will create an</span> -<a name="l00522"></a>00522 <span class="comment">// instance of an RtApi subclass (RtApiOss, RtApiAlsa,</span> -<a name="l00523"></a>00523 <span class="comment">// RtApiJack, RtApiCore, RtApiAl, RtApiDs, or RtApiAsio).</span> -<a name="l00524"></a>00524 <span class="comment">//</span> -<a name="l00525"></a>00525 <span class="comment">// **************************************************************** //</span> +<a name="l00508"></a>00508 <span class="preprocessor">#else // Setup for "dummy" behavior</span> +<a name="l00509"></a>00509 <span class="preprocessor"></span> +<a name="l00510"></a>00510 <span class="preprocessor"> #define __RTAUDIO_DUMMY__</span> +<a name="l00511"></a>00511 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">int</span> ThreadHandle; +<a name="l00512"></a>00512 <span class="keyword">typedef</span> <span class="keywordtype">int</span> StreamMutex; +<a name="l00513"></a>00513 +<a name="l00514"></a>00514 <span class="preprocessor">#endif</span> +<a name="l00515"></a>00515 <span class="preprocessor"></span> +<a name="l00516"></a>00516 <span class="comment">// This global structure type is used to pass callback information</span> +<a name="l00517"></a>00517 <span class="comment">// between the private RtAudio stream structure and global callback</span> +<a name="l00518"></a>00518 <span class="comment">// handling functions.</span> +<a name="l00519"></a>00519 <span class="keyword">struct </span>CallbackInfo { +<a name="l00520"></a>00520 <span class="keywordtype">void</span> *object; <span class="comment">// Used as a "this" pointer.</span> +<a name="l00521"></a>00521 ThreadHandle thread; +<a name="l00522"></a>00522 <span class="keywordtype">void</span> *callback; +<a name="l00523"></a>00523 <span class="keywordtype">void</span> *userData; +<a name="l00524"></a>00524 <span class="keywordtype">void</span> *apiInfo; <span class="comment">// void pointer for API specific callback information</span> +<a name="l00525"></a>00525 <span class="keywordtype">bool</span> isRunning; <a name="l00526"></a>00526 -<a name="l00527"></a>00527 <span class="preprocessor">#if defined( HAVE_GETTIMEOFDAY )</span> -<a name="l00528"></a>00528 <span class="preprocessor"></span><span class="preprocessor"> #include <sys/time.h></span> -<a name="l00529"></a>00529 <span class="preprocessor">#endif</span> -<a name="l00530"></a>00530 <span class="preprocessor"></span> -<a name="l00531"></a>00531 <span class="preprocessor">#include <sstream></span> -<a name="l00532"></a>00532 -<a name="l00533"></a>00533 <span class="keyword">class </span>RtApi -<a name="l00534"></a>00534 { -<a name="l00535"></a>00535 <span class="keyword">public</span>: -<a name="l00536"></a>00536 -<a name="l00537"></a>00537 RtApi(); -<a name="l00538"></a>00538 <span class="keyword">virtual</span> ~RtApi(); -<a name="l00539"></a>00539 <span class="keyword">virtual</span> <a class="code" href="classRtAudio.html#w8">RtAudio::Api</a> <a class="code" href="classRtAudio.html#a2">getCurrentApi</a>( <span class="keywordtype">void</span> ) = 0; -<a name="l00540"></a>00540 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a3">getDeviceCount</a>( <span class="keywordtype">void</span> ) = 0; -<a name="l00541"></a>00541 <span class="keyword">virtual</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> <a class="code" href="classRtAudio.html#a4">getDeviceInfo</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ) = 0; -<a name="l00542"></a>00542 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a6">getDefaultInputDevice</a>( <span class="keywordtype">void</span> ); -<a name="l00543"></a>00543 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a5">getDefaultOutputDevice</a>( <span class="keywordtype">void</span> ); -<a name="l00544"></a>00544 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a7">openStream</a>( <a class="code" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> *outputParameters, -<a name="l00545"></a>00545 <a class="code" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> *inputParameters, -<a name="l00546"></a>00546 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00547"></a>00547 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferFrames, <a class="code" href="RtAudio_8h.html#a15">RtAudioCallback</a> callback, -<a name="l00548"></a>00548 <span class="keywordtype">void</span> *userData, <a class="code" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> *options ); -<a name="l00549"></a>00549 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a8">closeStream</a>( <span class="keywordtype">void</span> ); -<a name="l00550"></a>00550 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a9">startStream</a>( <span class="keywordtype">void</span> ) = 0; -<a name="l00551"></a>00551 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a10">stopStream</a>( <span class="keywordtype">void</span> ) = 0; -<a name="l00552"></a>00552 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a11">abortStream</a>( <span class="keywordtype">void</span> ) = 0; -<a name="l00553"></a>00553 <span class="keywordtype">long</span> <a class="code" href="classRtAudio.html#a15">getStreamLatency</a>( <span class="keywordtype">void</span> ); -<a name="l00554"></a>00554 <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classRtAudio.html#a14">getStreamTime</a>( <span class="keywordtype">void</span> ); -<a name="l00555"></a>00555 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a12">isStreamOpen</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> stream_.state != STREAM_CLOSED; }; -<a name="l00556"></a>00556 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a13">isStreamRunning</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> stream_.state == STREAM_RUNNING; }; -<a name="l00557"></a>00557 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a16">showWarnings</a>( <span class="keywordtype">bool</span> value ) { showWarnings_ = value; }; -<a name="l00558"></a>00558 -<a name="l00559"></a>00559 -<a name="l00560"></a>00560 <span class="keyword">protected</span>: -<a name="l00561"></a>00561 -<a name="l00562"></a>00562 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAX_SAMPLE_RATES; -<a name="l00563"></a>00563 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SAMPLE_RATES[]; -<a name="l00564"></a>00564 -<a name="l00565"></a>00565 <span class="keyword">enum</span> { FAILURE, SUCCESS }; -<a name="l00566"></a>00566 -<a name="l00567"></a>00567 <span class="keyword">enum</span> StreamState { -<a name="l00568"></a>00568 STREAM_STOPPED, -<a name="l00569"></a>00569 STREAM_RUNNING, -<a name="l00570"></a>00570 STREAM_CLOSED = -50 -<a name="l00571"></a>00571 }; -<a name="l00572"></a>00572 -<a name="l00573"></a>00573 <span class="keyword">enum</span> StreamMode { -<a name="l00574"></a>00574 OUTPUT, -<a name="l00575"></a>00575 INPUT, -<a name="l00576"></a>00576 DUPLEX, -<a name="l00577"></a>00577 UNINITIALIZED = -75 -<a name="l00578"></a>00578 }; +<a name="l00527"></a>00527 <span class="comment">// Default constructor.</span> +<a name="l00528"></a>00528 CallbackInfo() +<a name="l00529"></a>00529 :object(0), callback(0), userData(0), apiInfo(0), isRunning(false) {} +<a name="l00530"></a>00530 }; +<a name="l00531"></a>00531 +<a name="l00532"></a>00532 <span class="comment">// **************************************************************** //</span> +<a name="l00533"></a>00533 <span class="comment">//</span> +<a name="l00534"></a>00534 <span class="comment">// RtApi class declaration.</span> +<a name="l00535"></a>00535 <span class="comment">//</span> +<a name="l00536"></a>00536 <span class="comment">// Subclasses of RtApi contain all API- and OS-specific code necessary</span> +<a name="l00537"></a>00537 <span class="comment">// to fully implement the RtAudio API.</span> +<a name="l00538"></a>00538 <span class="comment">//</span> +<a name="l00539"></a>00539 <span class="comment">// Note that RtApi is an abstract base class and cannot be</span> +<a name="l00540"></a>00540 <span class="comment">// explicitly instantiated. The class RtAudio will create an</span> +<a name="l00541"></a>00541 <span class="comment">// instance of an RtApi subclass (RtApiOss, RtApiAlsa,</span> +<a name="l00542"></a>00542 <span class="comment">// RtApiJack, RtApiCore, RtApiAl, RtApiDs, or RtApiAsio).</span> +<a name="l00543"></a>00543 <span class="comment">//</span> +<a name="l00544"></a>00544 <span class="comment">// **************************************************************** //</span> +<a name="l00545"></a>00545 +<a name="l00546"></a>00546 <span class="preprocessor">#if defined( HAVE_GETTIMEOFDAY )</span> +<a name="l00547"></a>00547 <span class="preprocessor"></span><span class="preprocessor"> #include <sys/time.h></span> +<a name="l00548"></a>00548 <span class="preprocessor">#endif</span> +<a name="l00549"></a>00549 <span class="preprocessor"></span> +<a name="l00550"></a>00550 <span class="preprocessor">#include <sstream></span> +<a name="l00551"></a>00551 +<a name="l00552"></a>00552 <span class="keyword">class </span>RtApi +<a name="l00553"></a>00553 { +<a name="l00554"></a>00554 <span class="keyword">public</span>: +<a name="l00555"></a>00555 +<a name="l00556"></a>00556 RtApi(); +<a name="l00557"></a>00557 <span class="keyword">virtual</span> ~RtApi(); +<a name="l00558"></a>00558 <span class="keyword">virtual</span> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> <a class="code" href="classRtAudio.html#83687634795792b2c47e4ae1cf8a5246" title="Returns the audio API specifier for the current instance of RtAudio.">getCurrentApi</a>( <span class="keywordtype">void</span> ) = 0; +<a name="l00559"></a>00559 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount</a>( <span class="keywordtype">void</span> ) = 0; +<a name="l00560"></a>00560 <span class="keyword">virtual</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> <a class="code" href="classRtAudio.html#02d7ff44ad1d7eae22283a052f3dfda8" title="Return an RtAudio::DeviceInfo structure for a specified device number.">getDeviceInfo</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ) = 0; +<a name="l00561"></a>00561 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#ad8b94edd3cd379ee300b125750ac6ce" title="A function that returns the index of the default input device.">getDefaultInputDevice</a>( <span class="keywordtype">void</span> ); +<a name="l00562"></a>00562 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#3a3f3dbe13ea696b521e49cdaaa357bc" title="A function that returns the index of the default output device.">getDefaultOutputDevice</a>( <span class="keywordtype">void</span> ); +<a name="l00563"></a>00563 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">openStream</a>( <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">RtAudio::StreamParameters</a> *outputParameters, +<a name="l00564"></a>00564 <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">RtAudio::StreamParameters</a> *inputParameters, +<a name="l00565"></a>00565 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00566"></a>00566 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferFrames, <a class="code" href="RtAudio_8h.html#112c7b7e25a974977f6fc094cef1a31f" title="RtAudio callback function prototype.">RtAudioCallback</a> callback, +<a name="l00567"></a>00567 <span class="keywordtype">void</span> *userData, <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00568"></a>00568 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#90d599002ad32cf250a4cb866f2cc93a" title="A function that closes a stream and frees any associated stream memory.">closeStream</a>( <span class="keywordtype">void</span> ); +<a name="l00569"></a>00569 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#ec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">startStream</a>( <span class="keywordtype">void</span> ) = 0; +<a name="l00570"></a>00570 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">stopStream</a>( <span class="keywordtype">void</span> ) = 0; +<a name="l00571"></a>00571 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#d0586b47cd6bb9591a80b4052815991f" title="Stop a stream, discarding any samples remaining in the input/output queue.">abortStream</a>( <span class="keywordtype">void</span> ) = 0; +<a name="l00572"></a>00572 <span class="keywordtype">long</span> <a class="code" href="classRtAudio.html#843c989d9f501c71bc2f2c5ca18df9f3" title="Returns the internal stream latency in sample frames.">getStreamLatency</a>( <span class="keywordtype">void</span> ); +<a name="l00573"></a>00573 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#28214b8b05d60b45c24ee6fae7b2a0b5" title="Returns actual sample rate in use by the stream.">getStreamSampleRate</a>( <span class="keywordtype">void</span> ); +<a name="l00574"></a>00574 <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classRtAudio.html#344e59a62353c5791db4621b985cb2ca" title="Returns the number of elapsed seconds since the stream was started.">getStreamTime</a>( <span class="keywordtype">void</span> ); +<a name="l00575"></a>00575 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#3863e45ff81dbe97176de0ee7545917f" title="Returns true if a stream is open and false if not.">isStreamOpen</a>( <span class="keywordtype">void</span> )<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stream_.state != STREAM_CLOSED; }; +<a name="l00576"></a>00576 <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#84cc8d9b7ab9bc5f37bcf48430ec5aea" title="Returns true if the stream is running and false if it is stopped or not open.">isStreamRunning</a>( <span class="keywordtype">void</span> )<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stream_.state == STREAM_RUNNING; }; +<a name="l00577"></a>00577 <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#f0752ee51cce3dd90a3bd009f9fdbe77" title="Specify whether warning messages should be printed to stderr.">showWarnings</a>( <span class="keywordtype">bool</span> value ) { showWarnings_ = value; }; +<a name="l00578"></a>00578 <a name="l00579"></a>00579 -<a name="l00580"></a>00580 <span class="comment">// A protected structure used for buffer conversion.</span> -<a name="l00581"></a>00581 <span class="keyword">struct </span>ConvertInfo { -<a name="l00582"></a>00582 <span class="keywordtype">int</span> channels; -<a name="l00583"></a>00583 <span class="keywordtype">int</span> inJump, outJump; -<a name="l00584"></a>00584 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> inFormat, outFormat; -<a name="l00585"></a>00585 std::vector<int> inOffset; -<a name="l00586"></a>00586 std::vector<int> outOffset; -<a name="l00587"></a>00587 }; -<a name="l00588"></a>00588 -<a name="l00589"></a>00589 <span class="comment">// A protected structure for audio streams.</span> -<a name="l00590"></a>00590 <span class="keyword">struct </span>RtApiStream { -<a name="l00591"></a>00591 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00592"></a>00592 <span class="keywordtype">void</span> *apiHandle; <span class="comment">// void pointer for API specific stream handle information</span> -<a name="l00593"></a>00593 StreamMode mode; <span class="comment">// OUTPUT, INPUT, or DUPLEX.</span> -<a name="l00594"></a>00594 StreamState state; <span class="comment">// STOPPED, RUNNING, or CLOSED</span> -<a name="l00595"></a>00595 <span class="keywordtype">char</span> *userBuffer[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00596"></a>00596 <span class="keywordtype">char</span> *deviceBuffer; -<a name="l00597"></a>00597 <span class="keywordtype">bool</span> doConvertBuffer[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00598"></a>00598 <span class="keywordtype">bool</span> userInterleaved; -<a name="l00599"></a>00599 <span class="keywordtype">bool</span> deviceInterleaved[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00600"></a>00600 <span class="keywordtype">bool</span> doByteSwap[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00601"></a>00601 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate; -<a name="l00602"></a>00602 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferSize; -<a name="l00603"></a>00603 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nBuffers; -<a name="l00604"></a>00604 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nUserChannels[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00605"></a>00605 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nDeviceChannels[2]; <span class="comment">// Playback and record channels, respectively.</span> -<a name="l00606"></a>00606 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelOffset[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00607"></a>00607 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> latency[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00608"></a>00608 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> userFormat; -<a name="l00609"></a>00609 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> deviceFormat[2]; <span class="comment">// Playback and record, respectively.</span> -<a name="l00610"></a>00610 StreamMutex mutex; -<a name="l00611"></a>00611 CallbackInfo callbackInfo; -<a name="l00612"></a>00612 ConvertInfo convertInfo[2]; -<a name="l00613"></a>00613 <span class="keywordtype">double</span> streamTime; <span class="comment">// Number of elapsed seconds since the stream started.</span> -<a name="l00614"></a>00614 -<a name="l00615"></a>00615 <span class="preprocessor">#if defined(HAVE_GETTIMEOFDAY)</span> -<a name="l00616"></a>00616 <span class="preprocessor"></span> <span class="keyword">struct </span>timeval lastTickTimestamp; -<a name="l00617"></a>00617 <span class="preprocessor">#endif</span> -<a name="l00618"></a>00618 <span class="preprocessor"></span> -<a name="l00619"></a>00619 RtApiStream() -<a name="l00620"></a>00620 :apiHandle(0), deviceBuffer(0) { device[0] = 11111; device[1] = 11111; } -<a name="l00621"></a>00621 }; -<a name="l00622"></a>00622 -<a name="l00623"></a>00623 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">short</span> Int16; -<a name="l00624"></a>00624 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">int</span> Int32; -<a name="l00625"></a>00625 <span class="keyword">typedef</span> <span class="keywordtype">float</span> Float32; -<a name="l00626"></a>00626 <span class="keyword">typedef</span> <span class="keywordtype">double</span> Float64; -<a name="l00627"></a>00627 -<a name="l00628"></a>00628 std::ostringstream errorStream_; -<a name="l00629"></a>00629 std::string errorText_; -<a name="l00630"></a>00630 <span class="keywordtype">bool</span> showWarnings_; -<a name="l00631"></a>00631 RtApiStream stream_; -<a name="l00632"></a>00632 -<a name="l00640"></a>00640 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00641"></a>00641 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00642"></a>00642 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00643"></a>00643 <a class="code" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> *options ); -<a name="l00644"></a>00644 -<a name="l00646"></a>00646 <span class="keywordtype">void</span> tickStreamTime( <span class="keywordtype">void</span> ); +<a name="l00580"></a>00580 <span class="keyword">protected</span>: +<a name="l00581"></a>00581 +<a name="l00582"></a>00582 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAX_SAMPLE_RATES; +<a name="l00583"></a>00583 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SAMPLE_RATES[]; +<a name="l00584"></a>00584 +<a name="l00585"></a>00585 <span class="keyword">enum</span> { FAILURE, SUCCESS }; +<a name="l00586"></a>00586 +<a name="l00587"></a>00587 <span class="keyword">enum</span> StreamState { +<a name="l00588"></a>00588 STREAM_STOPPED, +<a name="l00589"></a>00589 STREAM_RUNNING, +<a name="l00590"></a>00590 STREAM_CLOSED = -50 +<a name="l00591"></a>00591 }; +<a name="l00592"></a>00592 +<a name="l00593"></a>00593 <span class="keyword">enum</span> StreamMode { +<a name="l00594"></a>00594 OUTPUT, +<a name="l00595"></a>00595 INPUT, +<a name="l00596"></a>00596 DUPLEX, +<a name="l00597"></a>00597 UNINITIALIZED = -75 +<a name="l00598"></a>00598 }; +<a name="l00599"></a>00599 +<a name="l00600"></a>00600 <span class="comment">// A protected structure used for buffer conversion.</span> +<a name="l00601"></a>00601 <span class="keyword">struct </span>ConvertInfo { +<a name="l00602"></a>00602 <span class="keywordtype">int</span> channels; +<a name="l00603"></a>00603 <span class="keywordtype">int</span> inJump, outJump; +<a name="l00604"></a>00604 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> inFormat, outFormat; +<a name="l00605"></a>00605 std::vector<int> inOffset; +<a name="l00606"></a>00606 std::vector<int> outOffset; +<a name="l00607"></a>00607 }; +<a name="l00608"></a>00608 +<a name="l00609"></a>00609 <span class="comment">// A protected structure for audio streams.</span> +<a name="l00610"></a>00610 <span class="keyword">struct </span>RtApiStream { +<a name="l00611"></a>00611 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00612"></a>00612 <span class="keywordtype">void</span> *apiHandle; <span class="comment">// void pointer for API specific stream handle information</span> +<a name="l00613"></a>00613 StreamMode mode; <span class="comment">// OUTPUT, INPUT, or DUPLEX.</span> +<a name="l00614"></a>00614 StreamState state; <span class="comment">// STOPPED, RUNNING, or CLOSED</span> +<a name="l00615"></a>00615 <span class="keywordtype">char</span> *userBuffer[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00616"></a>00616 <span class="keywordtype">char</span> *deviceBuffer; +<a name="l00617"></a>00617 <span class="keywordtype">bool</span> doConvertBuffer[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00618"></a>00618 <span class="keywordtype">bool</span> userInterleaved; +<a name="l00619"></a>00619 <span class="keywordtype">bool</span> deviceInterleaved[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00620"></a>00620 <span class="keywordtype">bool</span> doByteSwap[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00621"></a>00621 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate; +<a name="l00622"></a>00622 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferSize; +<a name="l00623"></a>00623 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nBuffers; +<a name="l00624"></a>00624 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nUserChannels[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00625"></a>00625 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nDeviceChannels[2]; <span class="comment">// Playback and record channels, respectively.</span> +<a name="l00626"></a>00626 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelOffset[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00627"></a>00627 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> latency[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00628"></a>00628 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> userFormat; +<a name="l00629"></a>00629 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> deviceFormat[2]; <span class="comment">// Playback and record, respectively.</span> +<a name="l00630"></a>00630 StreamMutex mutex; +<a name="l00631"></a>00631 CallbackInfo callbackInfo; +<a name="l00632"></a>00632 ConvertInfo convertInfo[2]; +<a name="l00633"></a>00633 <span class="keywordtype">double</span> streamTime; <span class="comment">// Number of elapsed seconds since the stream started.</span> +<a name="l00634"></a>00634 +<a name="l00635"></a>00635 <span class="preprocessor">#if defined(HAVE_GETTIMEOFDAY)</span> +<a name="l00636"></a>00636 <span class="preprocessor"></span> <span class="keyword">struct </span>timeval lastTickTimestamp; +<a name="l00637"></a>00637 <span class="preprocessor">#endif</span> +<a name="l00638"></a>00638 <span class="preprocessor"></span> +<a name="l00639"></a>00639 RtApiStream() +<a name="l00640"></a>00640 :apiHandle(0), deviceBuffer(0) { device[0] = 11111; device[1] = 11111; } +<a name="l00641"></a>00641 }; +<a name="l00642"></a>00642 +<a name="l00643"></a>00643 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">short</span> Int16; +<a name="l00644"></a>00644 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">int</span> Int32; +<a name="l00645"></a>00645 <span class="keyword">typedef</span> <span class="keywordtype">float</span> Float32; +<a name="l00646"></a>00646 <span class="keyword">typedef</span> <span class="keywordtype">double</span> Float64; <a name="l00647"></a>00647 -<a name="l00649"></a>00649 <span class="keywordtype">void</span> clearStreamInfo(); -<a name="l00650"></a>00650 -<a name="l00655"></a>00655 <span class="keywordtype">void</span> verifyStream( <span class="keywordtype">void</span> ); -<a name="l00656"></a>00656 -<a name="l00658"></a>00658 <span class="keywordtype">void</span> error( <a class="code" href="classRtError.html#w11">RtError::Type</a> type ); -<a name="l00659"></a>00659 -<a name="l00664"></a>00664 <span class="keywordtype">void</span> convertBuffer( <span class="keywordtype">char</span> *outBuffer, <span class="keywordtype">char</span> *inBuffer, ConvertInfo &info ); -<a name="l00665"></a>00665 -<a name="l00667"></a>00667 <span class="keywordtype">void</span> byteSwapBuffer( <span class="keywordtype">char</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> samples, <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> format ); -<a name="l00668"></a>00668 -<a name="l00670"></a>00670 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> formatBytes( <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> format ); -<a name="l00671"></a>00671 -<a name="l00673"></a>00673 <span class="keywordtype">void</span> setConvertInfo( StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel ); -<a name="l00674"></a>00674 }; -<a name="l00675"></a>00675 -<a name="l00676"></a>00676 <span class="comment">// **************************************************************** //</span> -<a name="l00677"></a>00677 <span class="comment">//</span> -<a name="l00678"></a>00678 <span class="comment">// Inline RtAudio definitions.</span> -<a name="l00679"></a>00679 <span class="comment">//</span> -<a name="l00680"></a>00680 <span class="comment">// **************************************************************** //</span> -<a name="l00681"></a>00681 -<a name="l00682"></a><a class="code" href="classRtAudio.html#a2">00682</a> <span class="keyword">inline</span> <a class="code" href="classRtAudio.html#w8">RtAudio::Api</a> <a class="code" href="classRtAudio.html#a2">RtAudio :: getCurrentApi</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getCurrentApi(); } -<a name="l00683"></a><a class="code" href="classRtAudio.html#a3">00683</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a3">RtAudio :: getDeviceCount</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getDeviceCount(); } -<a name="l00684"></a><a class="code" href="classRtAudio.html#a4">00684</a> <span class="keyword">inline</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> <a class="code" href="classRtAudio.html#a4">RtAudio :: getDeviceInfo</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ) { <span class="keywordflow">return</span> rtapi_->getDeviceInfo( device ); } -<a name="l00685"></a><a class="code" href="classRtAudio.html#a6">00685</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a6">RtAudio :: getDefaultInputDevice</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getDefaultInputDevice(); } -<a name="l00686"></a><a class="code" href="classRtAudio.html#a5">00686</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#a5">RtAudio :: getDefaultOutputDevice</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getDefaultOutputDevice(); } -<a name="l00687"></a><a class="code" href="classRtAudio.html#a8">00687</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a8">RtAudio :: closeStream</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->closeStream(); } -<a name="l00688"></a><a class="code" href="classRtAudio.html#a9">00688</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a9">RtAudio :: startStream</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->startStream(); } -<a name="l00689"></a><a class="code" href="classRtAudio.html#a10">00689</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a10">RtAudio :: stopStream</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->stopStream(); } -<a name="l00690"></a><a class="code" href="classRtAudio.html#a11">00690</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a11">RtAudio :: abortStream</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->abortStream(); } -<a name="l00691"></a><a class="code" href="classRtAudio.html#a12">00691</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a12">RtAudio :: isStreamOpen</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->isStreamOpen(); } -<a name="l00692"></a><a class="code" href="classRtAudio.html#a13">00692</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#a13">RtAudio :: isStreamRunning</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->isStreamRunning(); } -<a name="l00693"></a><a class="code" href="classRtAudio.html#a15">00693</a> <span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classRtAudio.html#a15">RtAudio :: getStreamLatency</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->getStreamLatency(); } -<a name="l00694"></a><a class="code" href="classRtAudio.html#a14">00694</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classRtAudio.html#a14">RtAudio :: getStreamTime</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->getStreamTime(); } -<a name="l00695"></a><a class="code" href="classRtAudio.html#a16">00695</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#a16">RtAudio :: showWarnings</a>( <span class="keywordtype">bool</span> value ) <span class="keywordflow">throw</span>() { rtapi_->showWarnings( value ); } -<a name="l00696"></a>00696 -<a name="l00697"></a>00697 <span class="comment">// RtApi Subclass prototypes.</span> -<a name="l00698"></a>00698 -<a name="l00699"></a>00699 <span class="preprocessor">#if defined(__MACOSX_CORE__)</span> -<a name="l00700"></a>00700 <span class="preprocessor"></span> -<a name="l00701"></a>00701 <span class="preprocessor">#include <CoreAudio/AudioHardware.h></span> -<a name="l00702"></a>00702 -<a name="l00703"></a>00703 <span class="keyword">class </span>RtApiCore: <span class="keyword">public</span> RtApi -<a name="l00704"></a>00704 { -<a name="l00705"></a>00705 <span class="keyword">public</span>: -<a name="l00706"></a>00706 -<a name="l00707"></a>00707 RtApiCore(); -<a name="l00708"></a>00708 ~RtApiCore(); -<a name="l00709"></a>00709 <a class="code" href="classRtAudio.html#w8">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#w8w4">RtAudio::MACOSX_CORE</a>; }; -<a name="l00710"></a>00710 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); -<a name="l00711"></a>00711 <a class="code" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); -<a name="l00712"></a>00712 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultOutputDevice( <span class="keywordtype">void</span> ); -<a name="l00713"></a>00713 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultInputDevice( <span class="keywordtype">void</span> ); -<a name="l00714"></a>00714 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); -<a name="l00715"></a>00715 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); -<a name="l00716"></a>00716 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); -<a name="l00717"></a>00717 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); -<a name="l00718"></a>00718 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); +<a name="l00648"></a>00648 std::ostringstream errorStream_; +<a name="l00649"></a>00649 std::string errorText_; +<a name="l00650"></a>00650 <span class="keywordtype">bool</span> showWarnings_; +<a name="l00651"></a>00651 RtApiStream stream_; +<a name="l00652"></a>00652 +<a name="l00660"></a>00660 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00661"></a>00661 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00662"></a>00662 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00663"></a>00663 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00664"></a>00664 +<a name="l00666"></a>00666 <span class="keywordtype">void</span> tickStreamTime( <span class="keywordtype">void</span> ); +<a name="l00667"></a>00667 +<a name="l00669"></a>00669 <span class="keywordtype">void</span> clearStreamInfo(); +<a name="l00670"></a>00670 +<a name="l00675"></a>00675 <span class="keywordtype">void</span> verifyStream( <span class="keywordtype">void</span> ); +<a name="l00676"></a>00676 +<a name="l00678"></a>00678 <span class="keywordtype">void</span> error( <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac" title="Defined RtError types.">RtError::Type</a> type ); +<a name="l00679"></a>00679 +<a name="l00684"></a>00684 <span class="keywordtype">void</span> convertBuffer( <span class="keywordtype">char</span> *outBuffer, <span class="keywordtype">char</span> *inBuffer, ConvertInfo &info ); +<a name="l00685"></a>00685 +<a name="l00687"></a>00687 <span class="keywordtype">void</span> byteSwapBuffer( <span class="keywordtype">char</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> samples, <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format ); +<a name="l00688"></a>00688 +<a name="l00690"></a>00690 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> formatBytes( <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format ); +<a name="l00691"></a>00691 +<a name="l00693"></a>00693 <span class="keywordtype">void</span> setConvertInfo( StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel ); +<a name="l00694"></a>00694 }; +<a name="l00695"></a>00695 +<a name="l00696"></a>00696 <span class="comment">// **************************************************************** //</span> +<a name="l00697"></a>00697 <span class="comment">//</span> +<a name="l00698"></a>00698 <span class="comment">// Inline RtAudio definitions.</span> +<a name="l00699"></a>00699 <span class="comment">//</span> +<a name="l00700"></a>00700 <span class="comment">// **************************************************************** //</span> +<a name="l00701"></a>00701 +<a name="l00702"></a><a class="code" href="classRtAudio.html#83687634795792b2c47e4ae1cf8a5246">00702</a> <span class="keyword">inline</span> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> <a class="code" href="classRtAudio.html#83687634795792b2c47e4ae1cf8a5246" title="Returns the audio API specifier for the current instance of RtAudio.">RtAudio :: getCurrentApi</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getCurrentApi(); } +<a name="l00703"></a><a class="code" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a">00703</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">RtAudio :: getDeviceCount</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getDeviceCount(); } +<a name="l00704"></a><a class="code" href="classRtAudio.html#02d7ff44ad1d7eae22283a052f3dfda8">00704</a> <span class="keyword">inline</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> <a class="code" href="classRtAudio.html#02d7ff44ad1d7eae22283a052f3dfda8" title="Return an RtAudio::DeviceInfo structure for a specified device number.">RtAudio :: getDeviceInfo</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ) { <span class="keywordflow">return</span> rtapi_->getDeviceInfo( device ); } +<a name="l00705"></a><a class="code" href="classRtAudio.html#ad8b94edd3cd379ee300b125750ac6ce">00705</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#ad8b94edd3cd379ee300b125750ac6ce" title="A function that returns the index of the default input device.">RtAudio :: getDefaultInputDevice</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getDefaultInputDevice(); } +<a name="l00706"></a><a class="code" href="classRtAudio.html#3a3f3dbe13ea696b521e49cdaaa357bc">00706</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#3a3f3dbe13ea696b521e49cdaaa357bc" title="A function that returns the index of the default output device.">RtAudio :: getDefaultOutputDevice</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->getDefaultOutputDevice(); } +<a name="l00707"></a><a class="code" href="classRtAudio.html#90d599002ad32cf250a4cb866f2cc93a">00707</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#90d599002ad32cf250a4cb866f2cc93a" title="A function that closes a stream and frees any associated stream memory.">RtAudio :: closeStream</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_->closeStream(); } +<a name="l00708"></a><a class="code" href="classRtAudio.html#ec017a89629ccef66a90b60be22a2f80">00708</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#ec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">RtAudio :: startStream</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->startStream(); } +<a name="l00709"></a><a class="code" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd">00709</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">RtAudio :: stopStream</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->stopStream(); } +<a name="l00710"></a><a class="code" href="classRtAudio.html#d0586b47cd6bb9591a80b4052815991f">00710</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#d0586b47cd6bb9591a80b4052815991f" title="Stop a stream, discarding any samples remaining in the input/output queue.">RtAudio :: abortStream</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->abortStream(); } +<a name="l00711"></a><a class="code" href="classRtAudio.html#3863e45ff81dbe97176de0ee7545917f">00711</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#3863e45ff81dbe97176de0ee7545917f" title="Returns true if a stream is open and false if not.">RtAudio :: isStreamOpen</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> rtapi_->isStreamOpen(); } +<a name="l00712"></a><a class="code" href="classRtAudio.html#84cc8d9b7ab9bc5f37bcf48430ec5aea">00712</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtAudio.html#84cc8d9b7ab9bc5f37bcf48430ec5aea" title="Returns true if the stream is running and false if it is stopped or not open.">RtAudio :: isStreamRunning</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> rtapi_->isStreamRunning(); } +<a name="l00713"></a><a class="code" href="classRtAudio.html#843c989d9f501c71bc2f2c5ca18df9f3">00713</a> <span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classRtAudio.html#843c989d9f501c71bc2f2c5ca18df9f3" title="Returns the internal stream latency in sample frames.">RtAudio :: getStreamLatency</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->getStreamLatency(); } +<a name="l00714"></a><a class="code" href="classRtAudio.html#28214b8b05d60b45c24ee6fae7b2a0b5">00714</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtAudio.html#28214b8b05d60b45c24ee6fae7b2a0b5" title="Returns actual sample rate in use by the stream.">RtAudio :: getStreamSampleRate</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->getStreamSampleRate(); }; +<a name="l00715"></a><a class="code" href="classRtAudio.html#344e59a62353c5791db4621b985cb2ca">00715</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classRtAudio.html#344e59a62353c5791db4621b985cb2ca" title="Returns the number of elapsed seconds since the stream was started.">RtAudio :: getStreamTime</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_->getStreamTime(); } +<a name="l00716"></a><a class="code" href="classRtAudio.html#f0752ee51cce3dd90a3bd009f9fdbe77">00716</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtAudio.html#f0752ee51cce3dd90a3bd009f9fdbe77" title="Specify whether warning messages should be printed to stderr.">RtAudio :: showWarnings</a>( <span class="keywordtype">bool</span> value ) <span class="keywordflow">throw</span>() { rtapi_->showWarnings( value ); } +<a name="l00717"></a>00717 +<a name="l00718"></a>00718 <span class="comment">// RtApi Subclass prototypes.</span> <a name="l00719"></a>00719 -<a name="l00720"></a>00720 <span class="comment">// This function is intended for internal use only. It must be</span> -<a name="l00721"></a>00721 <span class="comment">// public because it is called by the internal callback handler,</span> -<a name="l00722"></a>00722 <span class="comment">// which is not a member of RtAudio. External use of this function</span> -<a name="l00723"></a>00723 <span class="comment">// will most likely produce highly undesireable results!</span> -<a name="l00724"></a>00724 <span class="keywordtype">bool</span> callbackEvent( AudioDeviceID deviceId, -<a name="l00725"></a>00725 <span class="keyword">const</span> AudioBufferList *inBufferList, -<a name="l00726"></a>00726 <span class="keyword">const</span> AudioBufferList *outBufferList ); +<a name="l00720"></a>00720 <span class="preprocessor">#if defined(__MACOSX_CORE__)</span> +<a name="l00721"></a>00721 <span class="preprocessor"></span> +<a name="l00722"></a>00722 <span class="preprocessor">#include <CoreAudio/AudioHardware.h></span> +<a name="l00723"></a>00723 +<a name="l00724"></a>00724 <span class="keyword">class </span>RtApiCore: <span class="keyword">public</span> RtApi +<a name="l00725"></a>00725 { +<a name="l00726"></a>00726 <span class="keyword">public</span>: <a name="l00727"></a>00727 -<a name="l00728"></a>00728 <span class="keyword">private</span>: -<a name="l00729"></a>00729 -<a name="l00730"></a>00730 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00731"></a>00731 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00732"></a>00732 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00733"></a>00733 <a class="code" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> *options ); -<a name="l00734"></a>00734 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* getErrorCode( OSStatus code ); -<a name="l00735"></a>00735 }; -<a name="l00736"></a>00736 -<a name="l00737"></a>00737 <span class="preprocessor">#endif</span> -<a name="l00738"></a>00738 <span class="preprocessor"></span> -<a name="l00739"></a>00739 <span class="preprocessor">#if defined(__UNIX_JACK__)</span> -<a name="l00740"></a>00740 <span class="preprocessor"></span> -<a name="l00741"></a>00741 <span class="keyword">class </span>RtApiJack: <span class="keyword">public</span> RtApi -<a name="l00742"></a>00742 { -<a name="l00743"></a>00743 <span class="keyword">public</span>: -<a name="l00744"></a>00744 -<a name="l00745"></a>00745 RtApiJack(); -<a name="l00746"></a>00746 ~RtApiJack(); -<a name="l00747"></a>00747 <a class="code" href="classRtAudio.html#w8">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#w8w3">RtAudio::UNIX_JACK</a>; }; -<a name="l00748"></a>00748 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); -<a name="l00749"></a>00749 <a class="code" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); -<a name="l00750"></a>00750 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); -<a name="l00751"></a>00751 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); -<a name="l00752"></a>00752 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); -<a name="l00753"></a>00753 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); -<a name="l00754"></a>00754 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); -<a name="l00755"></a>00755 -<a name="l00756"></a>00756 <span class="comment">// This function is intended for internal use only. It must be</span> -<a name="l00757"></a>00757 <span class="comment">// public because it is called by the internal callback handler,</span> -<a name="l00758"></a>00758 <span class="comment">// which is not a member of RtAudio. External use of this function</span> -<a name="l00759"></a>00759 <span class="comment">// will most likely produce highly undesireable results!</span> -<a name="l00760"></a>00760 <span class="keywordtype">bool</span> callbackEvent( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> nframes ); -<a name="l00761"></a>00761 -<a name="l00762"></a>00762 <span class="keyword">private</span>: -<a name="l00763"></a>00763 -<a name="l00764"></a>00764 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00765"></a>00765 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00766"></a>00766 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00767"></a>00767 <a class="code" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> *options ); -<a name="l00768"></a>00768 }; -<a name="l00769"></a>00769 -<a name="l00770"></a>00770 <span class="preprocessor">#endif</span> -<a name="l00771"></a>00771 <span class="preprocessor"></span> -<a name="l00772"></a>00772 <span class="preprocessor">#if defined(__WINDOWS_ASIO__)</span> -<a name="l00773"></a>00773 <span class="preprocessor"></span> -<a name="l00774"></a>00774 <span class="keyword">class </span>RtApiAsio: <span class="keyword">public</span> RtApi -<a name="l00775"></a>00775 { -<a name="l00776"></a>00776 <span class="keyword">public</span>: -<a name="l00777"></a>00777 -<a name="l00778"></a>00778 RtApiAsio(); -<a name="l00779"></a>00779 ~RtApiAsio(); -<a name="l00780"></a>00780 <a class="code" href="classRtAudio.html#w8">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#w8w5">RtAudio::WINDOWS_ASIO</a>; }; -<a name="l00781"></a>00781 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); -<a name="l00782"></a>00782 <a class="code" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); -<a name="l00783"></a>00783 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); -<a name="l00784"></a>00784 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); -<a name="l00785"></a>00785 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); -<a name="l00786"></a>00786 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); -<a name="l00787"></a>00787 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); -<a name="l00788"></a>00788 -<a name="l00789"></a>00789 <span class="comment">// This function is intended for internal use only. It must be</span> -<a name="l00790"></a>00790 <span class="comment">// public because it is called by the internal callback handler,</span> -<a name="l00791"></a>00791 <span class="comment">// which is not a member of RtAudio. External use of this function</span> -<a name="l00792"></a>00792 <span class="comment">// will most likely produce highly undesireable results!</span> -<a name="l00793"></a>00793 <span class="keywordtype">bool</span> callbackEvent( <span class="keywordtype">long</span> bufferIndex ); -<a name="l00794"></a>00794 -<a name="l00795"></a>00795 <span class="keyword">private</span>: -<a name="l00796"></a>00796 -<a name="l00797"></a>00797 std::vector<RtAudio::DeviceInfo> devices_; -<a name="l00798"></a>00798 <span class="keywordtype">void</span> saveDeviceInfo( <span class="keywordtype">void</span> ); -<a name="l00799"></a>00799 <span class="keywordtype">bool</span> coInitialized_; -<a name="l00800"></a>00800 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00801"></a>00801 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00802"></a>00802 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00803"></a>00803 <a class="code" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> *options ); -<a name="l00804"></a>00804 }; -<a name="l00805"></a>00805 -<a name="l00806"></a>00806 <span class="preprocessor">#endif</span> -<a name="l00807"></a>00807 <span class="preprocessor"></span> -<a name="l00808"></a>00808 <span class="preprocessor">#if defined(__WINDOWS_DS__)</span> -<a name="l00809"></a>00809 <span class="preprocessor"></span> -<a name="l00810"></a>00810 <span class="keyword">class </span>RtApiDs: <span class="keyword">public</span> RtApi -<a name="l00811"></a>00811 { -<a name="l00812"></a>00812 <span class="keyword">public</span>: -<a name="l00813"></a>00813 -<a name="l00814"></a>00814 RtApiDs(); -<a name="l00815"></a>00815 ~RtApiDs(); -<a name="l00816"></a>00816 <a class="code" href="classRtAudio.html#w8">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#w8w6">RtAudio::WINDOWS_DS</a>; }; -<a name="l00817"></a>00817 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); -<a name="l00818"></a>00818 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultOutputDevice( <span class="keywordtype">void</span> ); -<a name="l00819"></a>00819 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultInputDevice( <span class="keywordtype">void</span> ); -<a name="l00820"></a>00820 <a class="code" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); -<a name="l00821"></a>00821 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); -<a name="l00822"></a>00822 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); -<a name="l00823"></a>00823 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); -<a name="l00824"></a>00824 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); -<a name="l00825"></a>00825 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); +<a name="l00728"></a>00728 RtApiCore(); +<a name="l00729"></a>00729 ~RtApiCore(); +<a name="l00730"></a>00730 <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8499fec92b8272244a87a6a11a717bd662d">RtAudio::MACOSX_CORE</a>; }; +<a name="l00731"></a>00731 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); +<a name="l00732"></a>00732 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00733"></a>00733 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultOutputDevice( <span class="keywordtype">void</span> ); +<a name="l00734"></a>00734 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultInputDevice( <span class="keywordtype">void</span> ); +<a name="l00735"></a>00735 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); +<a name="l00736"></a>00736 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); +<a name="l00737"></a>00737 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); +<a name="l00738"></a>00738 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); +<a name="l00739"></a>00739 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); +<a name="l00740"></a>00740 +<a name="l00741"></a>00741 <span class="comment">// This function is intended for internal use only. It must be</span> +<a name="l00742"></a>00742 <span class="comment">// public because it is called by the internal callback handler,</span> +<a name="l00743"></a>00743 <span class="comment">// which is not a member of RtAudio. External use of this function</span> +<a name="l00744"></a>00744 <span class="comment">// will most likely produce highly undesireable results!</span> +<a name="l00745"></a>00745 <span class="keywordtype">bool</span> callbackEvent( AudioDeviceID deviceId, +<a name="l00746"></a>00746 <span class="keyword">const</span> AudioBufferList *inBufferList, +<a name="l00747"></a>00747 <span class="keyword">const</span> AudioBufferList *outBufferList ); +<a name="l00748"></a>00748 +<a name="l00749"></a>00749 <span class="keyword">private</span>: +<a name="l00750"></a>00750 +<a name="l00751"></a>00751 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00752"></a>00752 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00753"></a>00753 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00754"></a>00754 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00755"></a>00755 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* getErrorCode( OSStatus code ); +<a name="l00756"></a>00756 }; +<a name="l00757"></a>00757 +<a name="l00758"></a>00758 <span class="preprocessor">#endif</span> +<a name="l00759"></a>00759 <span class="preprocessor"></span> +<a name="l00760"></a>00760 <span class="preprocessor">#if defined(__UNIX_JACK__)</span> +<a name="l00761"></a>00761 <span class="preprocessor"></span> +<a name="l00762"></a>00762 <span class="keyword">class </span>RtApiJack: <span class="keyword">public</span> RtApi +<a name="l00763"></a>00763 { +<a name="l00764"></a>00764 <span class="keyword">public</span>: +<a name="l00765"></a>00765 +<a name="l00766"></a>00766 RtApiJack(); +<a name="l00767"></a>00767 ~RtApiJack(); +<a name="l00768"></a>00768 <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8494767e17c6edfbd827f91763915df4105">RtAudio::UNIX_JACK</a>; }; +<a name="l00769"></a>00769 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); +<a name="l00770"></a>00770 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00771"></a>00771 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); +<a name="l00772"></a>00772 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); +<a name="l00773"></a>00773 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); +<a name="l00774"></a>00774 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); +<a name="l00775"></a>00775 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); +<a name="l00776"></a>00776 +<a name="l00777"></a>00777 <span class="comment">// This function is intended for internal use only. It must be</span> +<a name="l00778"></a>00778 <span class="comment">// public because it is called by the internal callback handler,</span> +<a name="l00779"></a>00779 <span class="comment">// which is not a member of RtAudio. External use of this function</span> +<a name="l00780"></a>00780 <span class="comment">// will most likely produce highly undesireable results!</span> +<a name="l00781"></a>00781 <span class="keywordtype">bool</span> callbackEvent( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> nframes ); +<a name="l00782"></a>00782 +<a name="l00783"></a>00783 <span class="keyword">private</span>: +<a name="l00784"></a>00784 +<a name="l00785"></a>00785 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00786"></a>00786 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00787"></a>00787 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00788"></a>00788 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00789"></a>00789 }; +<a name="l00790"></a>00790 +<a name="l00791"></a>00791 <span class="preprocessor">#endif</span> +<a name="l00792"></a>00792 <span class="preprocessor"></span> +<a name="l00793"></a>00793 <span class="preprocessor">#if defined(__WINDOWS_ASIO__)</span> +<a name="l00794"></a>00794 <span class="preprocessor"></span> +<a name="l00795"></a>00795 <span class="keyword">class </span>RtApiAsio: <span class="keyword">public</span> RtApi +<a name="l00796"></a>00796 { +<a name="l00797"></a>00797 <span class="keyword">public</span>: +<a name="l00798"></a>00798 +<a name="l00799"></a>00799 RtApiAsio(); +<a name="l00800"></a>00800 ~RtApiAsio(); +<a name="l00801"></a>00801 <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849219517d1df90f94d07758481155bd469">RtAudio::WINDOWS_ASIO</a>; }; +<a name="l00802"></a>00802 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); +<a name="l00803"></a>00803 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00804"></a>00804 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); +<a name="l00805"></a>00805 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); +<a name="l00806"></a>00806 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); +<a name="l00807"></a>00807 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); +<a name="l00808"></a>00808 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); +<a name="l00809"></a>00809 +<a name="l00810"></a>00810 <span class="comment">// This function is intended for internal use only. It must be</span> +<a name="l00811"></a>00811 <span class="comment">// public because it is called by the internal callback handler,</span> +<a name="l00812"></a>00812 <span class="comment">// which is not a member of RtAudio. External use of this function</span> +<a name="l00813"></a>00813 <span class="comment">// will most likely produce highly undesireable results!</span> +<a name="l00814"></a>00814 <span class="keywordtype">bool</span> callbackEvent( <span class="keywordtype">long</span> bufferIndex ); +<a name="l00815"></a>00815 +<a name="l00816"></a>00816 <span class="keyword">private</span>: +<a name="l00817"></a>00817 +<a name="l00818"></a>00818 std::vector<RtAudio::DeviceInfo> devices_; +<a name="l00819"></a>00819 <span class="keywordtype">void</span> saveDeviceInfo( <span class="keywordtype">void</span> ); +<a name="l00820"></a>00820 <span class="keywordtype">bool</span> coInitialized_; +<a name="l00821"></a>00821 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00822"></a>00822 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00823"></a>00823 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00824"></a>00824 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00825"></a>00825 }; <a name="l00826"></a>00826 -<a name="l00827"></a>00827 <span class="comment">// This function is intended for internal use only. It must be</span> -<a name="l00828"></a>00828 <span class="comment">// public because it is called by the internal callback handler,</span> -<a name="l00829"></a>00829 <span class="comment">// which is not a member of RtAudio. External use of this function</span> -<a name="l00830"></a>00830 <span class="comment">// will most likely produce highly undesireable results!</span> -<a name="l00831"></a>00831 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">void</span> ); -<a name="l00832"></a>00832 -<a name="l00833"></a>00833 <span class="keyword">private</span>: +<a name="l00827"></a>00827 <span class="preprocessor">#endif</span> +<a name="l00828"></a>00828 <span class="preprocessor"></span> +<a name="l00829"></a>00829 <span class="preprocessor">#if defined(__WINDOWS_DS__)</span> +<a name="l00830"></a>00830 <span class="preprocessor"></span> +<a name="l00831"></a>00831 <span class="keyword">class </span>RtApiDs: <span class="keyword">public</span> RtApi +<a name="l00832"></a>00832 { +<a name="l00833"></a>00833 <span class="keyword">public</span>: <a name="l00834"></a>00834 -<a name="l00835"></a>00835 <span class="keywordtype">bool</span> coInitialized_; -<a name="l00836"></a>00836 <span class="keywordtype">bool</span> buffersRolling; -<a name="l00837"></a>00837 <span class="keywordtype">long</span> duplexPrerollBytes; -<a name="l00838"></a>00838 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00839"></a>00839 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00840"></a>00840 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00841"></a>00841 <a class="code" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> *options ); -<a name="l00842"></a>00842 }; -<a name="l00843"></a>00843 -<a name="l00844"></a>00844 <span class="preprocessor">#endif</span> -<a name="l00845"></a>00845 <span class="preprocessor"></span> -<a name="l00846"></a>00846 <span class="preprocessor">#if defined(__LINUX_ALSA__)</span> -<a name="l00847"></a>00847 <span class="preprocessor"></span> -<a name="l00848"></a>00848 <span class="keyword">class </span>RtApiAlsa: <span class="keyword">public</span> RtApi -<a name="l00849"></a>00849 { -<a name="l00850"></a>00850 <span class="keyword">public</span>: -<a name="l00851"></a>00851 -<a name="l00852"></a>00852 RtApiAlsa(); -<a name="l00853"></a>00853 ~RtApiAlsa(); -<a name="l00854"></a>00854 <a class="code" href="classRtAudio.html#w8">RtAudio::Api</a> getCurrentApi() { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#w8w1">RtAudio::LINUX_ALSA</a>; }; -<a name="l00855"></a>00855 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); -<a name="l00856"></a>00856 <a class="code" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); -<a name="l00857"></a>00857 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); -<a name="l00858"></a>00858 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); -<a name="l00859"></a>00859 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); -<a name="l00860"></a>00860 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); -<a name="l00861"></a>00861 -<a name="l00862"></a>00862 <span class="comment">// This function is intended for internal use only. It must be</span> -<a name="l00863"></a>00863 <span class="comment">// public because it is called by the internal callback handler,</span> -<a name="l00864"></a>00864 <span class="comment">// which is not a member of RtAudio. External use of this function</span> -<a name="l00865"></a>00865 <span class="comment">// will most likely produce highly undesireable results!</span> -<a name="l00866"></a>00866 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">void</span> ); -<a name="l00867"></a>00867 -<a name="l00868"></a>00868 <span class="keyword">private</span>: -<a name="l00869"></a>00869 -<a name="l00870"></a>00870 std::vector<RtAudio::DeviceInfo> devices_; -<a name="l00871"></a>00871 <span class="keywordtype">void</span> saveDeviceInfo( <span class="keywordtype">void</span> ); -<a name="l00872"></a>00872 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00873"></a>00873 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00874"></a>00874 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00875"></a>00875 <a class="code" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> *options ); -<a name="l00876"></a>00876 }; -<a name="l00877"></a>00877 -<a name="l00878"></a>00878 <span class="preprocessor">#endif</span> -<a name="l00879"></a>00879 <span class="preprocessor"></span> -<a name="l00880"></a>00880 <span class="preprocessor">#if defined(__LINUX_OSS__)</span> -<a name="l00881"></a>00881 <span class="preprocessor"></span> -<a name="l00882"></a>00882 <span class="keyword">class </span>RtApiOss: <span class="keyword">public</span> RtApi -<a name="l00883"></a>00883 { -<a name="l00884"></a>00884 <span class="keyword">public</span>: -<a name="l00885"></a>00885 -<a name="l00886"></a>00886 RtApiOss(); -<a name="l00887"></a>00887 ~RtApiOss(); -<a name="l00888"></a>00888 <a class="code" href="classRtAudio.html#w8">RtAudio::Api</a> getCurrentApi() { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#w8w2">RtAudio::LINUX_OSS</a>; }; -<a name="l00889"></a>00889 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); -<a name="l00890"></a>00890 <a class="code" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); -<a name="l00891"></a>00891 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); -<a name="l00892"></a>00892 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); -<a name="l00893"></a>00893 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); -<a name="l00894"></a>00894 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); -<a name="l00895"></a>00895 -<a name="l00896"></a>00896 <span class="comment">// This function is intended for internal use only. It must be</span> -<a name="l00897"></a>00897 <span class="comment">// public because it is called by the internal callback handler,</span> -<a name="l00898"></a>00898 <span class="comment">// which is not a member of RtAudio. External use of this function</span> -<a name="l00899"></a>00899 <span class="comment">// will most likely produce highly undesireable results!</span> -<a name="l00900"></a>00900 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">void</span> ); -<a name="l00901"></a>00901 -<a name="l00902"></a>00902 <span class="keyword">private</span>: -<a name="l00903"></a>00903 -<a name="l00904"></a>00904 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00905"></a>00905 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00906"></a>00906 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00907"></a>00907 <a class="code" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> *options ); -<a name="l00908"></a>00908 }; -<a name="l00909"></a>00909 -<a name="l00910"></a>00910 <span class="preprocessor">#endif</span> -<a name="l00911"></a>00911 <span class="preprocessor"></span> -<a name="l00912"></a>00912 <span class="preprocessor">#if defined(__RTAUDIO_DUMMY__)</span> -<a name="l00913"></a>00913 <span class="preprocessor"></span> -<a name="l00914"></a>00914 <span class="keyword">class </span>RtApiDummy: <span class="keyword">public</span> RtApi -<a name="l00915"></a>00915 { -<a name="l00916"></a>00916 <span class="keyword">public</span>: -<a name="l00917"></a>00917 -<a name="l00918"></a>00918 RtApiDummy() { errorText_ = <span class="stringliteral">"RtApiDummy: This class provides no functionality."</span>; error( <a class="code" href="classRtError.html#w11w0">RtError::WARNING</a> ); }; -<a name="l00919"></a>00919 <a class="code" href="classRtAudio.html#w8">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#w8w7">RtAudio::RTAUDIO_DUMMY</a>; }; -<a name="l00920"></a>00920 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> 0; }; -<a name="l00921"></a>00921 <a class="code" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ) { <a class="code" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> info; <span class="keywordflow">return</span> info; }; -<a name="l00922"></a>00922 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ) {}; -<a name="l00923"></a>00923 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ) {}; -<a name="l00924"></a>00924 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ) {}; -<a name="l00925"></a>00925 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ) {}; -<a name="l00926"></a>00926 -<a name="l00927"></a>00927 <span class="keyword">private</span>: -<a name="l00928"></a>00928 -<a name="l00929"></a>00929 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, -<a name="l00930"></a>00930 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, -<a name="l00931"></a>00931 <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, -<a name="l00932"></a>00932 <a class="code" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> *options ) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }; -<a name="l00933"></a>00933 }; -<a name="l00934"></a>00934 -<a name="l00935"></a>00935 <span class="preprocessor">#endif</span> -<a name="l00936"></a>00936 <span class="preprocessor"></span> -<a name="l00937"></a>00937 <span class="preprocessor">#endif</span> -<a name="l00938"></a>00938 <span class="preprocessor"></span> -<a name="l00939"></a>00939 <span class="comment">// Indentation settings for Vim and Emacs</span> -<a name="l00940"></a>00940 <span class="comment">//</span> -<a name="l00941"></a>00941 <span class="comment">// Local Variables:</span> -<a name="l00942"></a>00942 <span class="comment">// c-basic-offset: 2</span> -<a name="l00943"></a>00943 <span class="comment">// indent-tabs-mode: nil</span> -<a name="l00944"></a>00944 <span class="comment">// End:</span> -<a name="l00945"></a>00945 <span class="comment">//</span> -<a name="l00946"></a>00946 <span class="comment">// vim: et sts=2 sw=2</span> -</pre></div><HR> +<a name="l00835"></a>00835 RtApiDs(); +<a name="l00836"></a>00836 ~RtApiDs(); +<a name="l00837"></a>00837 <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84928478830f42c2fd61e6c7ad498901931">RtAudio::WINDOWS_DS</a>; }; +<a name="l00838"></a>00838 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); +<a name="l00839"></a>00839 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultOutputDevice( <span class="keywordtype">void</span> ); +<a name="l00840"></a>00840 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDefaultInputDevice( <span class="keywordtype">void</span> ); +<a name="l00841"></a>00841 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00842"></a>00842 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); +<a name="l00843"></a>00843 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); +<a name="l00844"></a>00844 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); +<a name="l00845"></a>00845 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); +<a name="l00846"></a>00846 <span class="keywordtype">long</span> getStreamLatency( <span class="keywordtype">void</span> ); +<a name="l00847"></a>00847 +<a name="l00848"></a>00848 <span class="comment">// This function is intended for internal use only. It must be</span> +<a name="l00849"></a>00849 <span class="comment">// public because it is called by the internal callback handler,</span> +<a name="l00850"></a>00850 <span class="comment">// which is not a member of RtAudio. External use of this function</span> +<a name="l00851"></a>00851 <span class="comment">// will most likely produce highly undesireable results!</span> +<a name="l00852"></a>00852 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">void</span> ); +<a name="l00853"></a>00853 +<a name="l00854"></a>00854 <span class="keyword">private</span>: +<a name="l00855"></a>00855 +<a name="l00856"></a>00856 <span class="keywordtype">bool</span> coInitialized_; +<a name="l00857"></a>00857 <span class="keywordtype">bool</span> buffersRolling; +<a name="l00858"></a>00858 <span class="keywordtype">long</span> duplexPrerollBytes; +<a name="l00859"></a>00859 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00860"></a>00860 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00861"></a>00861 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00862"></a>00862 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00863"></a>00863 }; +<a name="l00864"></a>00864 +<a name="l00865"></a>00865 <span class="preprocessor">#endif</span> +<a name="l00866"></a>00866 <span class="preprocessor"></span> +<a name="l00867"></a>00867 <span class="preprocessor">#if defined(__LINUX_ALSA__)</span> +<a name="l00868"></a>00868 <span class="preprocessor"></span> +<a name="l00869"></a>00869 <span class="keyword">class </span>RtApiAlsa: <span class="keyword">public</span> RtApi +<a name="l00870"></a>00870 { +<a name="l00871"></a>00871 <span class="keyword">public</span>: +<a name="l00872"></a>00872 +<a name="l00873"></a>00873 RtApiAlsa(); +<a name="l00874"></a>00874 ~RtApiAlsa(); +<a name="l00875"></a>00875 <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi() { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a7a2ba095c2806caa893b6fb8fc3a1a8">RtAudio::LINUX_ALSA</a>; }; +<a name="l00876"></a>00876 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); +<a name="l00877"></a>00877 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00878"></a>00878 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); +<a name="l00879"></a>00879 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); +<a name="l00880"></a>00880 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); +<a name="l00881"></a>00881 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); +<a name="l00882"></a>00882 +<a name="l00883"></a>00883 <span class="comment">// This function is intended for internal use only. It must be</span> +<a name="l00884"></a>00884 <span class="comment">// public because it is called by the internal callback handler,</span> +<a name="l00885"></a>00885 <span class="comment">// which is not a member of RtAudio. External use of this function</span> +<a name="l00886"></a>00886 <span class="comment">// will most likely produce highly undesireable results!</span> +<a name="l00887"></a>00887 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">void</span> ); +<a name="l00888"></a>00888 +<a name="l00889"></a>00889 <span class="keyword">private</span>: +<a name="l00890"></a>00890 +<a name="l00891"></a>00891 std::vector<RtAudio::DeviceInfo> devices_; +<a name="l00892"></a>00892 <span class="keywordtype">void</span> saveDeviceInfo( <span class="keywordtype">void</span> ); +<a name="l00893"></a>00893 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00894"></a>00894 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00895"></a>00895 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00896"></a>00896 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00897"></a>00897 }; +<a name="l00898"></a>00898 +<a name="l00899"></a>00899 <span class="preprocessor">#endif</span> +<a name="l00900"></a>00900 <span class="preprocessor"></span> +<a name="l00901"></a>00901 <span class="preprocessor">#if defined(__LINUX_OSS__)</span> +<a name="l00902"></a>00902 <span class="preprocessor"></span> +<a name="l00903"></a>00903 <span class="keyword">class </span>RtApiOss: <span class="keyword">public</span> RtApi +<a name="l00904"></a>00904 { +<a name="l00905"></a>00905 <span class="keyword">public</span>: +<a name="l00906"></a>00906 +<a name="l00907"></a>00907 RtApiOss(); +<a name="l00908"></a>00908 ~RtApiOss(); +<a name="l00909"></a>00909 <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi() { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84939c84615e61de75e6a4e865596d62c82">RtAudio::LINUX_OSS</a>; }; +<a name="l00910"></a>00910 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ); +<a name="l00911"></a>00911 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ); +<a name="l00912"></a>00912 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ); +<a name="l00913"></a>00913 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ); +<a name="l00914"></a>00914 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ); +<a name="l00915"></a>00915 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ); +<a name="l00916"></a>00916 +<a name="l00917"></a>00917 <span class="comment">// This function is intended for internal use only. It must be</span> +<a name="l00918"></a>00918 <span class="comment">// public because it is called by the internal callback handler,</span> +<a name="l00919"></a>00919 <span class="comment">// which is not a member of RtAudio. External use of this function</span> +<a name="l00920"></a>00920 <span class="comment">// will most likely produce highly undesireable results!</span> +<a name="l00921"></a>00921 <span class="keywordtype">void</span> callbackEvent( <span class="keywordtype">void</span> ); +<a name="l00922"></a>00922 +<a name="l00923"></a>00923 <span class="keyword">private</span>: +<a name="l00924"></a>00924 +<a name="l00925"></a>00925 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00926"></a>00926 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00927"></a>00927 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00928"></a>00928 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ); +<a name="l00929"></a>00929 }; +<a name="l00930"></a>00930 +<a name="l00931"></a>00931 <span class="preprocessor">#endif</span> +<a name="l00932"></a>00932 <span class="preprocessor"></span> +<a name="l00933"></a>00933 <span class="preprocessor">#if defined(__RTAUDIO_DUMMY__)</span> +<a name="l00934"></a>00934 <span class="preprocessor"></span> +<a name="l00935"></a>00935 <span class="keyword">class </span>RtApiDummy: <span class="keyword">public</span> RtApi +<a name="l00936"></a>00936 { +<a name="l00937"></a>00937 <span class="keyword">public</span>: +<a name="l00938"></a>00938 +<a name="l00939"></a>00939 RtApiDummy() { errorText_ = <span class="stringliteral">"RtApiDummy: This class provides no functionality."</span>; error( <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac3a1603c24a56cbdaf5f8ae4ddcb86398">RtError::WARNING</a> ); }; +<a name="l00940"></a>00940 <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849" title="Audio API specifier arguments.">RtAudio::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849b06b8fd88bf18c9a2b8271f6961ae2d1">RtAudio::RTAUDIO_DUMMY</a>; }; +<a name="l00941"></a>00941 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getDeviceCount( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> 0; }; +<a name="l00942"></a>00942 <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> getDeviceInfo( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device ) { <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> info; <span class="keywordflow">return</span> info; }; +<a name="l00943"></a>00943 <span class="keywordtype">void</span> closeStream( <span class="keywordtype">void</span> ) {}; +<a name="l00944"></a>00944 <span class="keywordtype">void</span> startStream( <span class="keywordtype">void</span> ) {}; +<a name="l00945"></a>00945 <span class="keywordtype">void</span> stopStream( <span class="keywordtype">void</span> ) {}; +<a name="l00946"></a>00946 <span class="keywordtype">void</span> abortStream( <span class="keywordtype">void</span> ) {}; +<a name="l00947"></a>00947 +<a name="l00948"></a>00948 <span class="keyword">private</span>: +<a name="l00949"></a>00949 +<a name="l00950"></a>00950 <span class="keywordtype">bool</span> probeDeviceOpen( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device, StreamMode mode, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels, +<a name="l00951"></a>00951 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstChannel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate, +<a name="l00952"></a>00952 <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bufferSize, +<a name="l00953"></a>00953 <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> *options ) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }; +<a name="l00954"></a>00954 }; +<a name="l00955"></a>00955 +<a name="l00956"></a>00956 <span class="preprocessor">#endif</span> +<a name="l00957"></a>00957 <span class="preprocessor"></span> +<a name="l00958"></a>00958 <span class="preprocessor">#endif</span> +<a name="l00959"></a>00959 <span class="preprocessor"></span> +<a name="l00960"></a>00960 <span class="comment">// Indentation settings for Vim and Emacs</span> +<a name="l00961"></a>00961 <span class="comment">//</span> +<a name="l00962"></a>00962 <span class="comment">// Local Variables:</span> +<a name="l00963"></a>00963 <span class="comment">// c-basic-offset: 2</span> +<a name="l00964"></a>00964 <span class="comment">// indent-tabs-mode: nil</span> +<a name="l00965"></a>00965 <span class="comment">// End:</span> +<a name="l00966"></a>00966 <span class="comment">//</span> +<a name="l00967"></a>00967 <span class="comment">// vim: et sts=2 sw=2</span> +</pre></div></div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/RtAudio_8h.html b/doc/html/RtAudio_8h.html index 73f5584..5ffc249 100644 --- a/doc/html/RtAudio_8h.html +++ b/doc/html/RtAudio_8h.html @@ -8,7 +8,8 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> <h1>RtAudio.h File Reference</h1><code>#include <string></code><br> <code>#include <vector></code><br> <code>#include "RtError.h"</code><br> @@ -21,141 +22,110 @@ <tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html">RtAudio</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Realtime audio i/o C++ classes. <a href="classRtAudio.html#_details">More...</a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::RtAudio::DeviceInfo</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The public device information structure for returning queried values. <a href="structRtAudio_1_1DeviceInfo.html#_details">More...</a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::RtAudio::StreamParameters</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The structure for specifying input or ouput stream parameters. <a href="structRtAudio_1_1StreamParameters.html#_details">More...</a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::RtAudio::StreamOptions</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The structure for specifying stream options. <a href="structRtAudio_1_1StreamOptions.html#_details">More...</a><br></td></tr> <tr><td colspan="2"><br><h2>Typedefs</h2></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="RtAudio_8h.html#a1">RtAudioFormat</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="RtAudio_8h.html#afca92882d25915560018873221e44b8">RtAudioFormat</a></td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classRtAudio.html">RtAudio</a> data format type. <a href="#a1"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="RtAudio_8h.html#a8">RtAudioStreamFlags</a></td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> data format type. <a href="#afca92882d25915560018873221e44b8"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41">RtAudioStreamFlags</a></td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classRtAudio.html">RtAudio</a> stream option flags. <a href="#a8"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="RtAudio_8h.html#a12">RtAudioStreamStatus</a></td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> stream option flags. <a href="#2c0f59b200dcec4d4e760f9166b29c41"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806">RtAudioStreamStatus</a></td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classRtAudio.html">RtAudio</a> stream status (over- or underflow) flags. <a href="#a12"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="RtAudio_8h.html#a15">RtAudioCallback</a> )(void *outputBuffer, void *inputBuffer, unsigned int nFrames, double streamTime, <a class="el" href="RtAudio_8h.html#a12">RtAudioStreamStatus</a> status, void *userData)</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> stream status (over- or underflow) flags. <a href="#80e306d363583da3b0a1b65d9b57c806"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="RtAudio_8h.html#112c7b7e25a974977f6fc094cef1a31f">RtAudioCallback</a> )(void *outputBuffer, void *inputBuffer, unsigned int nFrames, double streamTime, <a class="el" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806">RtAudioStreamStatus</a> status, void *userData)</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classRtAudio.html">RtAudio</a> callback function prototype. <a href="#a15"></a><br></td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> callback function prototype. <a href="#112c7b7e25a974977f6fc094cef1a31f"></a><br></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> <hr><h2>Typedef Documentation</h2> -<a class="anchor" name="a1"></a><!-- doxytag: member="RtAudio.h::RtAudioFormat" ref="a1" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +<a class="anchor" name="afca92882d25915560018873221e44b8"></a><!-- doxytag: member="RtAudio.h::RtAudioFormat" ref="afca92882d25915560018873221e44b8" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">typedef unsigned long <a class="el" href="RtAudio_8h.html#a1">RtAudioFormat</a> </td> + <td class="memname">typedef unsigned long <a class="el" href="RtAudio_8h.html#afca92882d25915560018873221e44b8">RtAudioFormat</a> </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -<a class="el" href="classRtAudio.html">RtAudio</a> data format type. +<a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> data format type. <p> -Support for signed integers and floats. Audio data fed to/from an <a class="el" href="classRtAudio.html">RtAudio</a> stream is assumed to ALWAYS be in host byte order. The internal routines will automatically take care of any necessary byte-swapping between the host format and the soundcard. Thus, endian-ness is not a concern in the following format definitions.<p> +Support for signed integers and floats. Audio data fed to/from an <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> stream is assumed to ALWAYS be in host byte order. The internal routines will automatically take care of any necessary byte-swapping between the host format and the soundcard. Thus, endian-ness is not a concern in the following format definitions.<p> <ul> -<li><em>RTAUDIO_SINT8:</em> 8-bit signed integer.</li><li><em>RTAUDIO_SINT16:</em> 16-bit signed integer.</li><li><em>RTAUDIO_SINT24:</em> Upper 3 bytes of 32-bit signed integer.</li><li><em>RTAUDIO_SINT32:</em> 32-bit signed integer.</li><li><em>RTAUDIO_FLOAT32:</em> Normalized between plus/minus 1.0.</li><li><em>RTAUDIO_FLOAT64:</em> Normalized between plus/minus 1.0.</li></ul> - </td> - </tr> -</table> -<a class="anchor" name="a8"></a><!-- doxytag: member="RtAudio.h::RtAudioStreamFlags" ref="a8" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +<li><em>RTAUDIO_SINT8:</em> 8-bit signed integer.</li><li><em>RTAUDIO_SINT16:</em> 16-bit signed integer.</li><li><em>RTAUDIO_SINT24:</em> Upper 3 bytes of 32-bit signed integer.</li><li><em>RTAUDIO_SINT32:</em> 32-bit signed integer.</li><li><em>RTAUDIO_FLOAT32:</em> Normalized between plus/minus 1.0.</li><li><em>RTAUDIO_FLOAT64:</em> Normalized between plus/minus 1.0. </li></ul> + +</div> +</div><p> +<a class="anchor" name="2c0f59b200dcec4d4e760f9166b29c41"></a><!-- doxytag: member="RtAudio.h::RtAudioStreamFlags" ref="2c0f59b200dcec4d4e760f9166b29c41" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">typedef unsigned long <a class="el" href="RtAudio_8h.html#a8">RtAudioStreamFlags</a> </td> + <td class="memname">typedef unsigned long <a class="el" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41">RtAudioStreamFlags</a> </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -<a class="el" href="classRtAudio.html">RtAudio</a> stream option flags. +<a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> stream option flags. <p> The following flags can be OR'ed together to allow a client to make changes to the default stream behavior:<p> <ul> <li><em>RTAUDIO_NONINTERLEAVED:</em> Use non-interleaved buffers (default = interleaved).</li><li><em>RTAUDIO_MINIMIZE_LATENCY:</em> Attempt to set stream parameters for lowest possible latency.</li><li><em>RTAUDIO_HOG_DEVICE:</em> Attempt grab device for exclusive use.</li></ul> <p> -By default, <a class="el" href="classRtAudio.html">RtAudio</a> streams pass and receive audio data from the client in an interleaved format. By passing the RTAUDIO_NONINTERLEAVED flag to the openStream() function, audio data will instead be presented in non-interleaved buffers. In this case, each buffer argument in the RtAudioCallback function will point to a single array of data, with <code>nFrames</code> samples for each channel concatenated back-to-back. For example, the first sample of data for the second channel would be located at index <code>nFrames</code> (assuming the <code>buffer</code> pointer was recast to the correct data type for the stream).<p> -Certain audio APIs offer a number of parameters that influence the I/O latency of a stream. By default, <a class="el" href="classRtAudio.html">RtAudio</a> will attempt to set these parameters internally for robust (glitch-free) performance (though some APIs, like Windows Direct Sound, make this difficult). By passing the RTAUDIO_MINIMIZE_LATENCY flag to the openStream() function, internal stream settings will be influenced in an attempt to minimize stream latency, though possibly at the expense of stream performance.<p> -If the RTAUDIO_HOG_DEVICE flag is set, <a class="el" href="classRtAudio.html">RtAudio</a> will attempt to open the input and/or output stream device(s) for exclusive use. Note that this is not possible with all supported audio APIs. </td> - </tr> -</table> -<a class="anchor" name="a12"></a><!-- doxytag: member="RtAudio.h::RtAudioStreamStatus" ref="a12" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +By default, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> streams pass and receive audio data from the client in an interleaved format. By passing the RTAUDIO_NONINTERLEAVED flag to the openStream() function, audio data will instead be presented in non-interleaved buffers. In this case, each buffer argument in the RtAudioCallback function will point to a single array of data, with <code>nFrames</code> samples for each channel concatenated back-to-back. For example, the first sample of data for the second channel would be located at index <code>nFrames</code> (assuming the <code>buffer</code> pointer was recast to the correct data type for the stream).<p> +Certain audio APIs offer a number of parameters that influence the I/O latency of a stream. By default, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> will attempt to set these parameters internally for robust (glitch-free) performance (though some APIs, like Windows Direct Sound, make this difficult). By passing the RTAUDIO_MINIMIZE_LATENCY flag to the openStream() function, internal stream settings will be influenced in an attempt to minimize stream latency, though possibly at the expense of stream performance.<p> +If the RTAUDIO_HOG_DEVICE flag is set, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> will attempt to open the input and/or output stream device(s) for exclusive use. Note that this is not possible with all supported audio APIs.<p> +If the RTAUDIO_SCHEDULE_REALTIME flag is set, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> will attempt to select realtime scheduling (round-robin) for the callback thread. +</div> +</div><p> +<a class="anchor" name="80e306d363583da3b0a1b65d9b57c806"></a><!-- doxytag: member="RtAudio.h::RtAudioStreamStatus" ref="80e306d363583da3b0a1b65d9b57c806" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">typedef unsigned long <a class="el" href="RtAudio_8h.html#a12">RtAudioStreamStatus</a> </td> + <td class="memname">typedef unsigned long <a class="el" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806">RtAudioStreamStatus</a> </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -<a class="el" href="classRtAudio.html">RtAudio</a> stream status (over- or underflow) flags. +<a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> stream status (over- or underflow) flags. <p> Notification of a stream over- or underflow is indicated by a non-zero stream <code>status</code> argument in the RtAudioCallback function. The stream status can be one of the following two options, depending on whether the stream is open for output and/or input:<p> <ul> -<li><em>RTAUDIO_INPUT_OVERFLOW:</em> Input data was discarded because of an overflow condition at the driver.</li><li><em>RTAUDIO_OUTPUT_UNDERFLOW:</em> The output buffer ran low, likely producing a break in the output sound.</li></ul> - </td> - </tr> -</table> -<a class="anchor" name="a15"></a><!-- doxytag: member="RtAudio.h::RtAudioCallback" ref="a15" args=")(void *outputBuffer, void *inputBuffer, unsigned int nFrames, double streamTime, RtAudioStreamStatus status, void *userData)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +<li><em>RTAUDIO_INPUT_OVERFLOW:</em> Input data was discarded because of an overflow condition at the driver.</li><li><em>RTAUDIO_OUTPUT_UNDERFLOW:</em> The output buffer ran low, likely producing a break in the output sound. </li></ul> + +</div> +</div><p> +<a class="anchor" name="112c7b7e25a974977f6fc094cef1a31f"></a><!-- doxytag: member="RtAudio.h::RtAudioCallback" ref="112c7b7e25a974977f6fc094cef1a31f" args=")(void *outputBuffer, void *inputBuffer, unsigned int nFrames, double streamTime, RtAudioStreamStatus status, void *userData)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">typedef int(* <a class="el" href="RtAudio_8h.html#a15">RtAudioCallback</a>)(void *outputBuffer, void *inputBuffer, unsigned int nFrames, double streamTime, <a class="el" href="RtAudio_8h.html#a12">RtAudioStreamStatus</a> status, void *userData) </td> + <td class="memname">typedef int(* <a class="el" href="RtAudio_8h.html#112c7b7e25a974977f6fc094cef1a31f">RtAudioCallback</a>)(void *outputBuffer, void *inputBuffer, unsigned int nFrames, double streamTime, <a class="el" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806">RtAudioStreamStatus</a> status, void *userData) </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -<a class="el" href="classRtAudio.html">RtAudio</a> callback function prototype. +<a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> callback function prototype. <p> -All <a class="el" href="classRtAudio.html">RtAudio</a> clients must create a function of type RtAudioCallback to read and/or write data from/to the audio stream. When the underlying audio system is ready for new input or output data, this function will be invoked.<p> +All <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> clients must create a function of type RtAudioCallback to read and/or write data from/to the audio stream. When the underlying audio system is ready for new input or output data, this function will be invoked.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>outputBuffer</em> </td><td>For output (or duplex) streams, the client should write <code>nFrames</code> of audio sample frames into this buffer. This argument should be recast to the datatype specified when the stream was opened. For input-only streams, this argument will be NULL.</td></tr> @@ -166,13 +136,14 @@ All <a class="el" href="classRtAudio.html">RtAudio</a> clients must create a fun <tr><td valign="top"></td><td valign="top"><em>userData</em> </td><td>A pointer to optional data provided by the client when opening the stream (default = NULL).</td></tr> </table> </dl> -To continue normal stream operation, the RtAudioCallback function should return a value of zero. To stop the stream and drain the output buffer, the function should return a value of one. To abort the stream immediately, the client should return a value of two. </td> - </tr> -</table> +To continue normal stream operation, the RtAudioCallback function should return a value of zero. To stop the stream and drain the output buffer, the function should return a value of one. To abort the stream immediately, the client should return a value of two. +</div> +</div><p> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/RtError_8h-source.html b/doc/html/RtError_8h-source.html index 0c736c1..68868de 100644 --- a/doc/html/RtError_8h-source.html +++ b/doc/html/RtError_8h-source.html @@ -8,7 +8,7 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> +<!-- Generated by Doxygen 1.5.8 --> <h1>RtError.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/************************************************************************/</span> <a name="l00010"></a>00010 <span class="comment">/************************************************************************/</span> <a name="l00011"></a>00011 @@ -19,45 +19,46 @@ <a name="l00016"></a>00016 <span class="preprocessor">#include <iostream></span> <a name="l00017"></a>00017 <span class="preprocessor">#include <string></span> <a name="l00018"></a>00018 -<a name="l00019"></a><a class="code" href="classRtError.html">00019</a> <span class="keyword">class </span><a class="code" href="classRtError.html">RtError</a> : <span class="keyword">public</span> std::exception +<a name="l00019"></a><a class="code" href="classRtError.html">00019</a> <span class="keyword">class </span><a class="code" href="classRtError.html" title="Exception handling class for RtAudio &amp; RtMidi.">RtError</a> : <span class="keyword">public</span> std::exception <a name="l00020"></a>00020 { <a name="l00021"></a>00021 <span class="keyword">public</span>: -<a name="l00023"></a><a class="code" href="classRtError.html#w11">00023</a> <span class="keyword">enum</span> <a class="code" href="classRtError.html#w11">Type</a> { -<a name="l00024"></a>00024 <a class="code" href="classRtError.html#w11w0">WARNING</a>, -<a name="l00025"></a>00025 <a class="code" href="classRtError.html#w11w1">DEBUG_WARNING</a>, -<a name="l00026"></a>00026 <a class="code" href="classRtError.html#w11w2">UNSPECIFIED</a>, -<a name="l00027"></a>00027 <a class="code" href="classRtError.html#w11w3">NO_DEVICES_FOUND</a>, -<a name="l00028"></a>00028 <a class="code" href="classRtError.html#w11w4">INVALID_DEVICE</a>, -<a name="l00029"></a>00029 <a class="code" href="classRtError.html#w11w5">MEMORY_ERROR</a>, -<a name="l00030"></a>00030 <a class="code" href="classRtError.html#w11w6">INVALID_PARAMETER</a>, -<a name="l00031"></a>00031 <a class="code" href="classRtError.html#w11w7">INVALID_USE</a>, -<a name="l00032"></a>00032 <a class="code" href="classRtError.html#w11w8">DRIVER_ERROR</a>, -<a name="l00033"></a>00033 <a class="code" href="classRtError.html#w11w9">SYSTEM_ERROR</a>, -<a name="l00034"></a><a class="code" href="classRtError.html#w11w10">00034</a> <a class="code" href="classRtError.html#w11w10">THREAD_ERROR</a> +<a name="l00023"></a><a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac">00023</a> <span class="keyword">enum</span> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac" title="Defined RtError types.">Type</a> { +<a name="l00024"></a><a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac3a1603c24a56cbdaf5f8ae4ddcb86398">00024</a> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac3a1603c24a56cbdaf5f8ae4ddcb86398">WARNING</a>, +<a name="l00025"></a><a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac20e5a369394d19b704ace17002007eba">00025</a> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac20e5a369394d19b704ace17002007eba">DEBUG_WARNING</a>, +<a name="l00026"></a><a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac444efd3ccf774b2ba9f9bde70ec71cd6">00026</a> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac444efd3ccf774b2ba9f9bde70ec71cd6">UNSPECIFIED</a>, +<a name="l00027"></a><a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acf267eb2d710f33d649ba840eeab6ff82">00027</a> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acf267eb2d710f33d649ba840eeab6ff82">NO_DEVICES_FOUND</a>, +<a name="l00028"></a><a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acd6064062066fffdba258237a7c2159b1">00028</a> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acd6064062066fffdba258237a7c2159b1">INVALID_DEVICE</a>, +<a name="l00029"></a><a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acb4f813e5a36905c89d4081a59497432e">00029</a> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acb4f813e5a36905c89d4081a59497432e">MEMORY_ERROR</a>, +<a name="l00030"></a><a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903aca3eabf0f71120beaba94148a1b78fed6">00030</a> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903aca3eabf0f71120beaba94148a1b78fed6">INVALID_PARAMETER</a>, +<a name="l00031"></a><a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac8e65f51a3fbdc1a4a1552b3260df36bc">00031</a> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac8e65f51a3fbdc1a4a1552b3260df36bc">INVALID_USE</a>, +<a name="l00032"></a><a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac995e97ecf6beeedaba525022a63aec6b">00032</a> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac995e97ecf6beeedaba525022a63aec6b">DRIVER_ERROR</a>, +<a name="l00033"></a><a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac8947d0a2e2a84ecf3646271844e06a6b">00033</a> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac8947d0a2e2a84ecf3646271844e06a6b">SYSTEM_ERROR</a>, +<a name="l00034"></a><a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903aceb6282f991e2d93ab294a4272fc3f6c6">00034</a> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903aceb6282f991e2d93ab294a4272fc3f6c6">THREAD_ERROR</a> <a name="l00035"></a>00035 }; <a name="l00036"></a>00036 -<a name="l00038"></a><a class="code" href="classRtError.html#a0">00038</a> <a class="code" href="classRtError.html#a0">RtError</a>( <span class="keyword">const</span> std::string& message, <a class="code" href="classRtError.html#w11">Type</a> type = <a class="code" href="classRtError.html#w11w2">RtError::UNSPECIFIED</a> ) throw() : message_(message), type_(type) {} +<a name="l00038"></a><a class="code" href="classRtError.html#a479a305ccbe56be0fd9137b9b405a37">00038</a> <a class="code" href="classRtError.html#a479a305ccbe56be0fd9137b9b405a37" title="The constructor.">RtError</a>( <span class="keyword">const</span> std::string& message, <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac" title="Defined RtError types.">Type</a> type = <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac444efd3ccf774b2ba9f9bde70ec71cd6">RtError::UNSPECIFIED</a> ) throw() : message_(message), type_(type) {} <a name="l00039"></a>00039 -<a name="l00041"></a><a class="code" href="classRtError.html#a1">00041</a> <span class="keyword">virtual</span> <a class="code" href="classRtError.html#a1">~RtError</a>( <span class="keywordtype">void</span> ) throw() {} +<a name="l00041"></a><a class="code" href="classRtError.html#6793e03386e7e69ffafb65a296dfa48c">00041</a> <span class="keyword">virtual</span> <a class="code" href="classRtError.html#6793e03386e7e69ffafb65a296dfa48c" title="The destructor.">~RtError</a>( <span class="keywordtype">void</span> ) throw() {} <a name="l00042"></a>00042 -<a name="l00044"></a><a class="code" href="classRtError.html#a2">00044</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtError.html#a2">printMessage</a>( <span class="keywordtype">void</span> ) throw() { std::cerr << <span class="charliteral">'\n'</span> << message_ << <span class="stringliteral">"\n\n"</span>; } +<a name="l00044"></a><a class="code" href="classRtError.html#da41f7472122f45bc5b4677f066e0943">00044</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtError.html#da41f7472122f45bc5b4677f066e0943" title="Prints thrown error message to stderr.">printMessage</a>( <span class="keywordtype">void</span> ) throw() { std::cerr << <span class="charliteral">'\n'</span> << message_ << <span class="stringliteral">"\n\n"</span>; } <a name="l00045"></a>00045 -<a name="l00047"></a><a class="code" href="classRtError.html#a3">00047</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classRtError.html#w11">Type</a>& <a class="code" href="classRtError.html#a3">getType</a>(<span class="keywordtype">void</span>) throw() { <span class="keywordflow">return</span> type_; } +<a name="l00047"></a><a class="code" href="classRtError.html#4ee7df9728d73f533afbaddcd9ca4d9c">00047</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac" title="Defined RtError types.">Type</a>& <a class="code" href="classRtError.html#4ee7df9728d73f533afbaddcd9ca4d9c" title="Returns the thrown error message type.">getType</a>(<span class="keywordtype">void</span>) throw() { <span class="keywordflow">return</span> type_; } <a name="l00048"></a>00048 -<a name="l00050"></a><a class="code" href="classRtError.html#a4">00050</a> <span class="keyword">virtual</span> <span class="keyword">const</span> std::string& <a class="code" href="classRtError.html#a4">getMessage</a>(<span class="keywordtype">void</span>) throw() { <span class="keywordflow">return</span> message_; } +<a name="l00050"></a><a class="code" href="classRtError.html#c7f467788e29d246333d7af050801164">00050</a> <span class="keyword">virtual</span> <span class="keyword">const</span> std::string& <a class="code" href="classRtError.html#c7f467788e29d246333d7af050801164" title="Returns the thrown error message string.">getMessage</a>(<span class="keywordtype">void</span>) throw() { <span class="keywordflow">return</span> message_; } <a name="l00051"></a>00051 -<a name="l00053"></a><a class="code" href="classRtError.html#a5">00053</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classRtError.html#a5">what</a>( <span class="keywordtype">void</span> ) const throw() { <span class="keywordflow">return</span> message_.c_str(); } +<a name="l00053"></a><a class="code" href="classRtError.html#eb843b7a7785d66061c61ebfc29e7e9d">00053</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classRtError.html#eb843b7a7785d66061c61ebfc29e7e9d" title="Returns the thrown error message as a c-style string.">what</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> message_.c_str(); } <a name="l00054"></a>00054 <a name="l00055"></a>00055 <span class="keyword">protected</span>: <a name="l00056"></a>00056 std::string message_; -<a name="l00057"></a>00057 <a class="code" href="classRtError.html#w11">Type</a> type_; +<a name="l00057"></a>00057 <a class="code" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac" title="Defined RtError types.">Type</a> type_; <a name="l00058"></a>00058 }; <a name="l00059"></a>00059 <a name="l00060"></a>00060 <span class="preprocessor">#endif</span> -</pre></div><HR> +</pre></div></div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/acknowledge.html b/doc/html/acknowledge.html index 395227a..697c578 100644 --- a/doc/html/acknowledge.html +++ b/doc/html/acknowledge.html @@ -8,8 +8,9 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1><a class="anchor" name="acknowledge">Acknowledgements</a></h1>Many thanks to the following people for providing bug fixes and improvements: <ul> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1><a class="anchor" name="acknowledge">Acknowledgements </a></h1>Many thanks to the following people for providing bug fixes and improvements: <ul> <li> Anders Ervik </li> <li> @@ -22,11 +23,12 @@ Ed Wildgoose (Linux ALSA and Jack) </li> Dominic Mazzoni </li> </ul> <p> -The <a class="el" href="classRtAudio.html">RtAudio</a> API incorporates many of the concepts developed in the <a href="http://www.portaudio.com/">PortAudio</a> project by Phil Burk and Ross Bencina. Early development also incorporated ideas from Bill Schottstaedt's <a href="http://www-ccrma.stanford.edu/software/snd/sndlib/">sndlib</a>. The CCRMA <a href="http://www-ccrma.stanford.edu/groups/soundwire/">SoundWire group</a> provided valuable feedback during the API proposal stages.<p> -The early 2.0 version of <a class="el" href="classRtAudio.html">RtAudio</a> was slowly developed over the course of many months while in residence at the <a href="http://www.iua.upf.es/">Institut Universitari de L'Audiovisual (IUA)</a> in Barcelona, Spain and the <a href="http://www.acoustics.hut.fi/">Laboratory of Acoustics and Audio Signal Processing</a> at the Helsinki University of Technology, Finland. Much subsequent development happened while working at the <a href="http://www-ccrma.stanford.edu/">Center for Computer Research in Music and Acoustics (CCRMA)</a> at <a href="http://www.stanford.edu/">Stanford University</a>. All recent versions of <a class="el" href="classRtAudio.html">RtAudio</a> have been completed while working as an assistant professor of <a href="http://www.music.mcgill.ca/musictech/">Music Technology</a> at <a href="http://www.mcgill.ca/">McGill University</a>. This work was supported in part by the United States Air Force Office of Scientific Research (grant #F49620-99-1-0293). <HR> +The <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> API incorporates many of the concepts developed in the <a href="http://www.portaudio.com/">PortAudio</a> project by Phil Burk and Ross Bencina. Early development also incorporated ideas from Bill Schottstaedt's <a href="http://www-ccrma.stanford.edu/software/snd/sndlib/">sndlib</a>. The CCRMA <a href="http://www-ccrma.stanford.edu/groups/soundwire/">SoundWire group</a> provided valuable feedback during the API proposal stages.<p> +The early 2.0 version of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> was slowly developed over the course of many months while in residence at the <a href="http://www.iua.upf.es/">Institut Universitari de L'Audiovisual (IUA)</a> in Barcelona, Spain and the <a href="http://www.acoustics.hut.fi/">Laboratory of Acoustics and Audio Signal Processing</a> at the Helsinki University of Technology, Finland. Much subsequent development happened while working at the <a href="http://www-ccrma.stanford.edu/">Center for Computer Research in Music and Acoustics (CCRMA)</a> at <a href="http://www.stanford.edu/">Stanford University</a>. All recent versions of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> have been completed while working as an assistant professor of <a href="http://www.music.mcgill.ca/musictech/">Music Technology</a> at <a href="http://www.mcgill.ca/">McGill University</a>. This work was supported in part by the United States Air Force Office of Scientific Research (grant #F49620-99-1-0293). </div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/annotated.html b/doc/html/annotated.html index fe3b1e1..0e3670e 100644 --- a/doc/html/annotated.html +++ b/doc/html/annotated.html @@ -8,18 +8,20 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1>RtAudio Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1>Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table> <tr><td class="indexkey"><a class="el" href="classRtAudio.html">RtAudio</a></td><td class="indexvalue">Realtime audio i/o C++ classes </td></tr> - <tr><td class="indexkey"><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a></td><td class="indexvalue">The public device information structure for returning queried values </td></tr> - <tr><td class="indexkey"><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a></td><td class="indexvalue">The structure for specifying stream options </td></tr> - <tr><td class="indexkey"><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a></td><td class="indexvalue">The structure for specifying input or ouput stream parameters </td></tr> - <tr><td class="indexkey"><a class="el" href="classRtError.html">RtError</a></td><td class="indexvalue">Exception handling class for <a class="el" href="classRtAudio.html">RtAudio</a> & RtMidi </td></tr> + <tr><td class="indexkey"><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::RtAudio::DeviceInfo</a></td><td class="indexvalue">The public device information structure for returning queried values </td></tr> + <tr><td class="indexkey"><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::RtAudio::StreamOptions</a></td><td class="indexvalue">The structure for specifying stream options </td></tr> + <tr><td class="indexkey"><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::RtAudio::StreamParameters</a></td><td class="indexvalue">The structure for specifying input or ouput stream parameters </td></tr> + <tr><td class="indexkey"><a class="el" href="classRtError.html">RtError</a></td><td class="indexvalue">Exception handling class for <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> & RtMidi </td></tr> </table> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/apinotes.html b/doc/html/apinotes.html index 2fb36d7..7404ac4 100644 --- a/doc/html/apinotes.html +++ b/doc/html/apinotes.html @@ -8,29 +8,31 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1><a class="anchor" name="apinotes">API Notes</a></h1><a class="el" href="classRtAudio.html">RtAudio</a> is designed to provide a common API across the various supported operating systems and audio libraries. Despite that, some issues should be mentioned with regard to each.<h2><a class="anchor" name="linux"> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1><a class="anchor" name="apinotes">API Notes </a></h1><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> is designed to provide a common API across the various supported operating systems and audio libraries. Despite that, some issues should be mentioned with regard to each.<h2><a class="anchor" name="linux"> Linux:</a></h2> -<a class="el" href="classRtAudio.html">RtAudio</a> for Linux was developed under Redhat distributions 7.0 - Fedora. Three different audio APIs are supported on Linux platforms: <a href="http://www.opensound.com/oss.html">OSS</a> (versions >= 4.0), <a href="http://www.alsa-project.org/">ALSA</a>, and <a href="http://jackit.sourceforge.net/">Jack</a>. Note that <a class="el" href="classRtAudio.html">RtAudio</a> now only supports the newer version 4.0 OSS API. The ALSA API is now part of the Linux kernel and offers significantly better functionality than the OSS API. <a class="el" href="classRtAudio.html">RtAudio</a> provides support for the 1.0 and higher versions of ALSA. Jack is a low-latency audio server written primarily for the GNU/Linux operating system. It can connect a number of different applications to an audio device, as well as allow them to share audio between themselves. Input/output latency on the order of 15 milliseconds can typically be achieved using any of the Linux APIs by fine-tuning the <a class="el" href="classRtAudio.html">RtAudio</a> buffer parameters (without kernel modifications). Latencies on the order of 5 milliseconds or less can be achieved using a low-latency kernel patch and increasing FIFO scheduling priority. The pthread library, which is used for callback functionality, is a standard component of all Linux distributions.<p> -The ALSA library includes OSS emulation support. That means that you can run programs compiled for the OSS API even when using the ALSA drivers and library. It should be noted however that OSS emulation under ALSA is not perfect. Specifically, channel number queries seem to consistently produce invalid results. While OSS emulation is successful for the majority of <a class="el" href="classRtAudio.html">RtAudio</a> tests, it is recommended that the native ALSA implementation of <a class="el" href="classRtAudio.html">RtAudio</a> be used on systems which have ALSA drivers installed.<p> -The ALSA implementation of <a class="el" href="classRtAudio.html">RtAudio</a> makes no use of the ALSA "plug" interface. All necessary data format conversions, channel compensation, de-interleaving, and byte-swapping is handled by internal <a class="el" href="classRtAudio.html">RtAudio</a> routines.<p> -At the moment, only one <a class="el" href="classRtAudio.html">RtAudio</a> instance can be connected to the Jack server.<h2><a class="anchor" name="macosx"> +<a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> for Linux was developed under Redhat distributions 7.0 - Fedora. Three different audio APIs are supported on Linux platforms: <a href="http://www.opensound.com/oss.html">OSS</a> (versions >= 4.0), <a href="http://www.alsa-project.org/">ALSA</a>, and <a href="http://jackit.sourceforge.net/">Jack</a>. Note that <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> now only supports the newer version 4.0 OSS API. The ALSA API is now part of the Linux kernel and offers significantly better functionality than the OSS API. <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> provides support for the 1.0 and higher versions of ALSA. Jack is a low-latency audio server written primarily for the GNU/Linux operating system. It can connect a number of different applications to an audio device, as well as allow them to share audio between themselves. Input/output latency on the order of 15 milliseconds can typically be achieved using any of the Linux APIs by fine-tuning the <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> buffer parameters (without kernel modifications). Latencies on the order of 5 milliseconds or less can be achieved using a low-latency kernel patch and increasing FIFO scheduling priority. The pthread library, which is used for callback functionality, is a standard component of all Linux distributions.<p> +The ALSA library includes OSS emulation support. That means that you can run programs compiled for the OSS API even when using the ALSA drivers and library. It should be noted however that OSS emulation under ALSA is not perfect. Specifically, channel number queries seem to consistently produce invalid results. While OSS emulation is successful for the majority of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> tests, it is recommended that the native ALSA implementation of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> be used on systems which have ALSA drivers installed.<p> +The ALSA implementation of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> makes no use of the ALSA "plug" interface. All necessary data format conversions, channel compensation, de-interleaving, and byte-swapping is handled by internal <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> routines.<p> +At the moment, only one <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> instance can be connected to the Jack server.<h2><a class="anchor" name="macosx"> Macintosh OS-X (CoreAudio and Jack):</a></h2> -The Apple CoreAudio API is designed to use a separate callback procedure for each of its audio devices. A single <a class="el" href="classRtAudio.html">RtAudio</a> duplex stream using two different devices is supported, though it cannot be guaranteed to always behave correctly because we cannot synchronize these two callbacks. The <em>numberOfBuffers</em> parameter to the <a class="el" href="classRtAudio.html#a7">RtAudio::openStream()</a> function has no affect in this implementation.<p> -It is not possible to have multiple instances of <a class="el" href="classRtAudio.html">RtAudio</a> accessing the same CoreAudio device.<p> -The <a class="el" href="classRtAudio.html">RtAudio</a> Jack support can be compiled on Macintosh OS-X systems, as well as in Linux.<h2><a class="anchor" name="windowsds"> +The Apple CoreAudio API is designed to use a separate callback procedure for each of its audio devices. A single <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> duplex stream using two different devices is supported, though it cannot be guaranteed to always behave correctly because we cannot synchronize these two callbacks. The <em>numberOfBuffers</em> parameter to the <a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">RtAudio::openStream()</a> function has no affect in this implementation.<p> +It is not possible to have multiple instances of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> accessing the same CoreAudio device.<p> +The <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> Jack support can be compiled on Macintosh OS-X systems, as well as in Linux.<h2><a class="anchor" name="windowsds"> Windows (DirectSound):</a></h2> The <code>configure</code> script provides support for the MinGW compiler. DirectSound support is specified with the "--with-ds" flag.<p> -In order to compile <a class="el" href="classRtAudio.html">RtAudio</a> 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 <a class="el" href="classRtAudio.html">RtAudio</a> version 3.0.2. Input audio latency still tends to be bad but better since version 3.0.2. <a class="el" href="classRtAudio.html">RtAudio</a> was originally developed with Visual C++ version 6.0 but has been tested with .NET.<p> -The DirectSound version of <a class="el" href="classRtAudio.html">RtAudio</a> can be compiled with or without the UNICODE preprocessor definition.<h2><a class="anchor" name="windowsasio"> +In order to compile <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> 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 <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> version 3.0.2. Input audio latency still tends to be bad but better since version 3.0.2. <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> was originally developed with Visual C++ version 6.0 but has been tested with .NET.<p> +The DirectSound version of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> can be compiled with or without the UNICODE preprocessor definition.<h2><a class="anchor" name="windowsasio"> Windows (ASIO):</a></h2> ASIO support using MinGW and the <code>configure</code> script is specified with the "--with-asio" flag.<p> -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 <em>numberOfBuffers</em> parameter to the <a class="el" href="classRtAudio.html#a7">RtAudio::openStream()</a> function has no affect in this implementation.<p> -A number of ASIO source and header files are required for use with <a class="el" href="classRtAudio.html">RtAudio</a>. Specifically, an <a class="el" href="classRtAudio.html">RtAudio</a> project must include the following files: <code>asio.h,cpp; asiodrivers.h,cpp; asiolist.h,cpp; asiodrvr.h; asiosys.h; ginclude.h; iasiodrv.h; iasiothiscallresolver.h,cpp</code>. The Visual C++ projects found in <code>/tests/Windows/</code> compile both ASIO and DirectSound support.<p> -The Steinberg provided <code>asiolist</code> class does not compile when the preprocessor definition UNICODE is defined. Note that this could be an issue when using <a class="el" href="classRtAudio.html">RtAudio</a> with Qt, though Qt programs appear to compile without the UNICODE definition (try <code>DEFINES -= UNICODE</code> in your .pro file). <a class="el" href="classRtAudio.html">RtAudio</a> with ASIO support has been tested using the MinGW compiler under Windows XP, as well as in the Visual Studio environment. <HR> +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 <em>numberOfBuffers</em> parameter to the <a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">RtAudio::openStream()</a> function has no affect in this implementation.<p> +A number of ASIO source and header files are required for use with <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>. Specifically, an <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> project must include the following files: <code>asio.h,cpp; asiodrivers.h,cpp; asiolist.h,cpp; asiodrvr.h; asiosys.h; ginclude.h; iasiodrv.h; iasiothiscallresolver.h,cpp</code>. The Visual C++ projects found in <code>/tests/Windows/</code> compile both ASIO and DirectSound support.<p> +The Steinberg provided <code>asiolist</code> class does not compile when the preprocessor definition UNICODE is defined. Note that this could be an issue when using <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> with Qt, though Qt programs appear to compile without the UNICODE definition (try <code>DEFINES -= UNICODE</code> in your .pro file). <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> with ASIO support has been tested using the MinGW compiler under Windows XP, as well as in the Visual Studio environment. </div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/bugs.html b/doc/html/bugs.html index 27fecd8..a2d4eb0 100644 --- a/doc/html/bugs.html +++ b/doc/html/bugs.html @@ -13,8 +13,6 @@ <table border=1 cellpadding=10 cellspacing=0> <tr bgcolor="#C7CAFF"><td><b>#</b></td><td><b>Version</b></td><td><b>API</b></td><td><b>Description</b></td><td><b>Status</b></td></b></tr> -<tr><td>1</td><td>3.03</td><td>CoreAudio</td><td>Do we need a run-time test for endianness given the new Intel Macs?</td><td>Not yet tested (GS)</td></tr> - </table> <h2>Confirmed Bugs (Unfixed):</h2> @@ -32,6 +30,21 @@ <tr><td>2</td><td>4.0</td><td>All unices</td><td>Default pthread scheduling priority changed to SCHED_RR when defined</td></tr> <tr><td>3</td><td>4.0</td><td>ALSA</td><td>Changed sample rate setting to use <tt>snd_pcm_hw_params_set_rate_near()</tt> function</td></tr> <tr><td>4</td><td>4.0</td><td>CoreAudio</td><td>RtAudio checks a device's <i>internal</i> data format and sets it to the highest allowable bit rate. For some stupid devices, like the Griffin iMic, the default format is 8-bit mono when the requested format and number of channels does not exist. So, we need to query the device's capabilities using the kAudioStreamPropertyPhysicalFormats selector - i.e. ask a device for all of the channels/format/rate combination that it supports - and then enumerate through them to pick the best one.</td></tr> +<tr><td>5</td><td>4.0.1</td><td>All</td><td>Fix to RtError::WARNING typo in RtAudio.cpp</td></tr> +<tr><td>6</td><td>4.0.2</td><td>All</td><td>Fix to RtError::WARNING typo in RtAudio.h (RtApiDummy)</td></tr> +<tr><td>7</td><td>4.0.4</td><td>Jack</td><td>Jack in/out port flag fix</td></tr> +<tr><td>8</td><td>4.0.4</td><td>ALSA/OSS</td><td>Memory leak fixes in ALSA and OSS</td></tr> +<tr><td>9</td><td>4.0.4</td><td>All</td><td>Fixed RtAudio::DeviceInfo description in "probing" documentation</td></tr> +<tr><td>10</td><td>4.0.4</td><td>All</td><td>Fixed clearing of error message stream in error()</td></tr> +<tr><td>11</td><td>4.0.4</td><td>All</td><td>Fixes in configure script</td></tr> +<tr><td>12</td><td>4.0.5</td><td>All</td><td>Fix to the way the stream state is changed to avoid infinite loop problem</td></tr> +<tr><td>13</td><td>4.0.5</td><td>All</td><td>Fix to int<->float conversion in convertBuffer() (thanks to Theo Veenker)</td></tr> +<tr><td>14</td><td>4.0.5</td><td>All</td><td>Bug fix in byteSwapBuffer() (thanks to Stefan Muller Arisona and Theo Veenker)</td></tr> +<tr><td>15</td><td>4.0.5</td><td>OS-X</td><td>Fixed a few gcc 4.4 errors in OS-X</td></tr> +<tr><td>16</td><td>4.0.5</td><td>All</td><td>Fixed bug in rtaudio-config script</td></tr> +<tr><td>17</td><td>4.0.5</td><td>ALSA</td><td>64-bit fixes in ALSA API (thanks to Stefan Muller Arisona)</td></tr> +<tr><td>18</td><td>4.0.5</td><td>ASIO</td><td>Fixed ASIO sample rate selection bug (thanks to Sasha Zheligovsky)</td></tr> + </table> diff --git a/doc/html/classRtAudio-members.html b/doc/html/classRtAudio-members.html index 8e619b0..c7169c0 100644 --- a/doc/html/classRtAudio-members.html +++ b/doc/html/classRtAudio-members.html @@ -8,39 +8,42 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> <h1>RtAudio Member List</h1>This is the complete list of members for <a class="el" href="classRtAudio.html">RtAudio</a>, including all inherited members.<p><table> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a11">abortStream</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#w8">Api</a> enum name</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a8">closeStream</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#e0">getCompiledApi</a>(std::vector< RtAudio::Api > &apis)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [static]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a2">getCurrentApi</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a6">getDefaultInputDevice</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a5">getDefaultOutputDevice</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a3">getDeviceCount</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a4">getDeviceInfo</a>(unsigned int device)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a15">getStreamLatency</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a14">getStreamTime</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a12">isStreamOpen</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a13">isStreamRunning</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#w8w1">LINUX_ALSA</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#w8w2">LINUX_OSS</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#w8w4">MACOSX_CORE</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a7">openStream</a>(RtAudio::StreamParameters *outputParameters, RtAudio::StreamParameters *inputParameters, RtAudioFormat format, unsigned int sampleRate, unsigned int *bufferFrames, RtAudioCallback callback, void *userData=NULL, RtAudio::StreamOptions *options=NULL)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a0">RtAudio</a>(RtAudio::Api api=UNSPECIFIED)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#w8w7">RTAUDIO_DUMMY</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a16">showWarnings</a>(bool value=true)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a9">startStream</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a10">stopStream</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#w8w3">UNIX_JACK</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#w8w0">UNSPECIFIED</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#w8w5">WINDOWS_ASIO</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#w8w6">WINDOWS_DS</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtAudio.html#a1">~RtAudio</a>()</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> -</table><HR> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#d0586b47cd6bb9591a80b4052815991f">abortStream</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849">Api</a> enum name</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#90d599002ad32cf250a4cb866f2cc93a">closeStream</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#e266ffad2ef428d0b2c6c262d391ce26">getCompiledApi</a>(std::vector< RtAudio::Api > &apis)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#83687634795792b2c47e4ae1cf8a5246">getCurrentApi</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#ad8b94edd3cd379ee300b125750ac6ce">getDefaultInputDevice</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#3a3f3dbe13ea696b521e49cdaaa357bc">getDefaultOutputDevice</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a">getDeviceCount</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#02d7ff44ad1d7eae22283a052f3dfda8">getDeviceInfo</a>(unsigned int device)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#843c989d9f501c71bc2f2c5ca18df9f3">getStreamLatency</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#28214b8b05d60b45c24ee6fae7b2a0b5">getStreamSampleRate</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#344e59a62353c5791db4621b985cb2ca">getStreamTime</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#3863e45ff81dbe97176de0ee7545917f">isStreamOpen</a>(void) const </td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#84cc8d9b7ab9bc5f37bcf48430ec5aea">isStreamRunning</a>(void) const </td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a7a2ba095c2806caa893b6fb8fc3a1a8">LINUX_ALSA</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84939c84615e61de75e6a4e865596d62c82">LINUX_OSS</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8499fec92b8272244a87a6a11a717bd662d">MACOSX_CORE</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8">openStream</a>(RtAudio::StreamParameters *outputParameters, RtAudio::StreamParameters *inputParameters, RtAudioFormat format, unsigned int sampleRate, unsigned int *bufferFrames, RtAudioCallback callback, void *userData=NULL, RtAudio::StreamOptions *options=NULL)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#fd0bfa26deae9804e18faff59d0273d9">RtAudio</a>(RtAudio::Api api=UNSPECIFIED)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849b06b8fd88bf18c9a2b8271f6961ae2d1">RTAUDIO_DUMMY</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#f0752ee51cce3dd90a3bd009f9fdbe77">showWarnings</a>(bool value=true)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#ec017a89629ccef66a90b60be22a2f80">startStream</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd">stopStream</a>(void)</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8494767e17c6edfbd827f91763915df4105">UNIX_JACK</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a49af3ac767106158bc6cad74fb214ae">UNSPECIFIED</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849219517d1df90f94d07758481155bd469">WINDOWS_ASIO</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84928478830f42c2fd61e6c7ad498901931">WINDOWS_DS</a> enum value</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtAudio.html#a8a9716fd64680657ef69c9465442a2f">~RtAudio</a>()</td><td><a class="el" href="classRtAudio.html">RtAudio</a></td><td></td></tr> +</table></div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/classRtAudio.html b/doc/html/classRtAudio.html index eb09c52..f0d62a1 100644 --- a/doc/html/classRtAudio.html +++ b/doc/html/classRtAudio.html @@ -8,643 +8,550 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> <h1>RtAudio Class Reference</h1><!-- doxytag: class="RtAudio" -->Realtime audio i/o C++ classes. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="RtAudio_8h-source.html">RtAudio.h</a>></code> <p> + +<p> <a href="classRtAudio-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> +<tr><td colspan="2"><br><h2>Classes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html">DeviceInfo</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The public device information structure for returning queried values. <a href="structRtAudio_1_1DeviceInfo.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamOptions.html">StreamOptions</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The structure for specifying stream options. <a href="structRtAudio_1_1StreamOptions.html#_details">More...</a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamParameters.html">StreamParameters</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The structure for specifying input or ouput stream parameters. <a href="structRtAudio_1_1StreamParameters.html#_details">More...</a><br></td></tr> <tr><td colspan="2"><br><h2>Public Types</h2></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#w8">Api</a> { <br> - <a class="el" href="classRtAudio.html#w8w0">UNSPECIFIED</a>, -<a class="el" href="classRtAudio.html#w8w1">LINUX_ALSA</a>, -<a class="el" href="classRtAudio.html#w8w2">LINUX_OSS</a>, -<a class="el" href="classRtAudio.html#w8w3">UNIX_JACK</a>, +<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849">Api</a> { <br> + <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a49af3ac767106158bc6cad74fb214ae">UNSPECIFIED</a>, +<a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a7a2ba095c2806caa893b6fb8fc3a1a8">LINUX_ALSA</a>, +<a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84939c84615e61de75e6a4e865596d62c82">LINUX_OSS</a>, +<a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8494767e17c6edfbd827f91763915df4105">UNIX_JACK</a>, <br> - <a class="el" href="classRtAudio.html#w8w4">MACOSX_CORE</a>, -<a class="el" href="classRtAudio.html#w8w5">WINDOWS_ASIO</a>, -<a class="el" href="classRtAudio.html#w8w6">WINDOWS_DS</a>, -<a class="el" href="classRtAudio.html#w8w7">RTAUDIO_DUMMY</a> + <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8499fec92b8272244a87a6a11a717bd662d">MACOSX_CORE</a>, +<a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849219517d1df90f94d07758481155bd469">WINDOWS_ASIO</a>, +<a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84928478830f42c2fd61e6c7ad498901931">WINDOWS_DS</a>, +<a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849b06b8fd88bf18c9a2b8271f6961ae2d1">RTAUDIO_DUMMY</a> <br> }</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">Audio API specifier arguments. <a href="classRtAudio.html#w8">More...</a><br></td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Audio API specifier arguments. <a href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849">More...</a><br></td></tr> <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a0">RtAudio</a> (<a class="el" href="classRtAudio.html#w8">RtAudio::Api</a> api=UNSPECIFIED) throw ()</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#fd0bfa26deae9804e18faff59d0273d9">RtAudio</a> (<a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849">RtAudio::Api</a> api=UNSPECIFIED) throw ()</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">The class constructor. <a href="#a0"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a1">~RtAudio</a> () throw ()</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">The class constructor. <a href="#fd0bfa26deae9804e18faff59d0273d9"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a8a9716fd64680657ef69c9465442a2f">~RtAudio</a> () throw ()</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">The destructor. <a href="#a1"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2"></a><!-- doxytag: member="RtAudio::getCurrentApi" ref="a2" args="(void)" --> -<a class="el" href="classRtAudio.html#w8">RtAudio::Api</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a2">getCurrentApi</a> (void) throw ()</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">The destructor. <a href="#a8a9716fd64680657ef69c9465442a2f"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="83687634795792b2c47e4ae1cf8a5246"></a><!-- doxytag: member="RtAudio::getCurrentApi" ref="83687634795792b2c47e4ae1cf8a5246" args="(void)" --> +<a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849">RtAudio::Api</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#83687634795792b2c47e4ae1cf8a5246">getCurrentApi</a> (void) throw ()</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the audio API specifier for the current instance of RtAudio. <br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a3">getDeviceCount</a> (void) throw ()</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the audio API specifier for the current instance of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a">getDeviceCount</a> (void) throw ()</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">A public function that queries for the number of audio devices available. <a href="#a3"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a4">getDeviceInfo</a> (unsigned int device)</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">A public function that queries for the number of audio devices available. <a href="#747ce2d73803641bbb66d6e78092aa1a"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#02d7ff44ad1d7eae22283a052f3dfda8">getDeviceInfo</a> (unsigned int device)</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">Return an <a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> structure for a specified device number. <a href="#a4"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a5">getDefaultOutputDevice</a> (void) throw ()</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Return an <a class="el" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> structure for a specified device number. <a href="#02d7ff44ad1d7eae22283a052f3dfda8"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#3a3f3dbe13ea696b521e49cdaaa357bc">getDefaultOutputDevice</a> (void) throw ()</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">A function that returns the index of the default output device. <a href="#a5"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a6">getDefaultInputDevice</a> (void) throw ()</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">A function that returns the index of the default output device. <a href="#3a3f3dbe13ea696b521e49cdaaa357bc"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#ad8b94edd3cd379ee300b125750ac6ce">getDefaultInputDevice</a> (void) throw ()</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">A function that returns the index of the default input device. <a href="#a6"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a7">openStream</a> (<a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> *outputParameters, <a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> *inputParameters, <a class="el" href="RtAudio_8h.html#a1">RtAudioFormat</a> format, unsigned int sampleRate, unsigned int *bufferFrames, <a class="el" href="RtAudio_8h.html#a15">RtAudioCallback</a> callback, void *userData=NULL, <a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> *options=NULL)</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">A function that returns the index of the default input device. <a href="#ad8b94edd3cd379ee300b125750ac6ce"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8">openStream</a> (<a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> *outputParameters, <a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> *inputParameters, <a class="el" href="RtAudio_8h.html#afca92882d25915560018873221e44b8">RtAudioFormat</a> format, unsigned int sampleRate, unsigned int *bufferFrames, <a class="el" href="RtAudio_8h.html#112c7b7e25a974977f6fc094cef1a31f">RtAudioCallback</a> callback, void *userData=NULL, <a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> *options=NULL)</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">A public function for opening a stream with the specified parameters. <a href="#a7"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a8">closeStream</a> (void) throw ()</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">A public function for opening a stream with the specified parameters. <a href="#facc99740fa4c5606fb35467cdea6da8"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#90d599002ad32cf250a4cb866f2cc93a">closeStream</a> (void) throw ()</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">A function that closes a stream and frees any associated stream memory. <a href="#a8"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a9">startStream</a> (void)</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">A function that closes a stream and frees any associated stream memory. <a href="#90d599002ad32cf250a4cb866f2cc93a"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#ec017a89629ccef66a90b60be22a2f80">startStream</a> (void)</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">A function that starts a stream. <a href="#a9"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a10">stopStream</a> (void)</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">A function that starts a stream. <a href="#ec017a89629ccef66a90b60be22a2f80"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd">stopStream</a> (void)</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">Stop a stream, allowing any samples remaining in the output queue to be played. <a href="#a10"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a11">abortStream</a> (void)</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Stop a stream, allowing any samples remaining in the output queue to be played. <a href="#f4c241ff86936ecc8108f0d9dfe3efdd"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#d0586b47cd6bb9591a80b4052815991f">abortStream</a> (void)</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">Stop a stream, discarding any samples remaining in the input/output queue. <a href="#a11"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a12"></a><!-- doxytag: member="RtAudio::isStreamOpen" ref="a12" args="(void)" --> -bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a12">isStreamOpen</a> (void) throw ()</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Stop a stream, discarding any samples remaining in the input/output queue. <a href="#d0586b47cd6bb9591a80b4052815991f"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3863e45ff81dbe97176de0ee7545917f"></a><!-- doxytag: member="RtAudio::isStreamOpen" ref="3863e45ff81dbe97176de0ee7545917f" args="(void) const " --> +bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#3863e45ff81dbe97176de0ee7545917f">isStreamOpen</a> (void) const throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if a stream is open and false if not. <br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a13"></a><!-- doxytag: member="RtAudio::isStreamRunning" ref="a13" args="(void)" --> -bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a13">isStreamRunning</a> (void) throw ()</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="84cc8d9b7ab9bc5f37bcf48430ec5aea"></a><!-- doxytag: member="RtAudio::isStreamRunning" ref="84cc8d9b7ab9bc5f37bcf48430ec5aea" args="(void) const " --> +bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#84cc8d9b7ab9bc5f37bcf48430ec5aea">isStreamRunning</a> (void) const throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if the stream is running and false if it is stopped or not open. <br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a14">getStreamTime</a> (void)</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#344e59a62353c5791db4621b985cb2ca">getStreamTime</a> (void)</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of elapsed seconds since the stream was started. <a href="#a14"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a15">getStreamLatency</a> (void)</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of elapsed seconds since the stream was started. <a href="#344e59a62353c5791db4621b985cb2ca"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#843c989d9f501c71bc2f2c5ca18df9f3">getStreamLatency</a> (void)</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the internal stream latency in sample frames. <a href="#a15"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a16"></a><!-- doxytag: member="RtAudio::showWarnings" ref="a16" args="(bool value=true)" --> -void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#a16">showWarnings</a> (bool value=true) throw ()</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the internal stream latency in sample frames. <a href="#843c989d9f501c71bc2f2c5ca18df9f3"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#28214b8b05d60b45c24ee6fae7b2a0b5">getStreamSampleRate</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns actual sample rate in use by the stream. <a href="#28214b8b05d60b45c24ee6fae7b2a0b5"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f0752ee51cce3dd90a3bd009f9fdbe77"></a><!-- doxytag: member="RtAudio::showWarnings" ref="f0752ee51cce3dd90a3bd009f9fdbe77" args="(bool value=true)" --> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#f0752ee51cce3dd90a3bd009f9fdbe77">showWarnings</a> (bool value=true) throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specify whether warning messages should be printed to stderr. <br></td></tr> <tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#e0">getCompiledApi</a> (std::vector< <a class="el" href="classRtAudio.html#w8">RtAudio::Api</a> > &apis) throw ()</td></tr> - -<tr><td class="mdescLeft"> </td><td class="mdescRight">A static function to determine the available compiled audio APIs. <a href="#e0"></a><br></td></tr> -<tr><td colspan="2"><br><h2>Classes</h2></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html">DeviceInfo</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtAudio.html#e266ffad2ef428d0b2c6c262d391ce26">getCompiledApi</a> (std::vector< <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849">RtAudio::Api</a> > &apis) throw ()</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">The public device information structure for returning queried values. <a href="structRtAudio_1_1DeviceInfo.html#_details">More...</a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamOptions.html">StreamOptions</a></td></tr> - -<tr><td class="mdescLeft"> </td><td class="mdescRight">The structure for specifying stream options. <a href="structRtAudio_1_1StreamOptions.html#_details">More...</a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamParameters.html">StreamParameters</a></td></tr> - -<tr><td class="mdescLeft"> </td><td class="mdescRight">The structure for specifying input or ouput stream parameters. <a href="structRtAudio_1_1StreamParameters.html#_details">More...</a><br></td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">A static function to determine the available compiled audio APIs. <a href="#e266ffad2ef428d0b2c6c262d391ce26"></a><br></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> Realtime audio i/o C++ classes. <p> -RtAudio provides a common API (Application Programming Interface) for realtime audio input/output across Linux (native ALSA, Jack, and OSS), SGI, Macintosh OS X (CoreAudio and Jack), and Windows (DirectSound and ASIO) operating systems.<p> -RtAudio WWW site: <a href="http://www.music.mcgill.ca/~gary/rtaudio/">http://www.music.mcgill.ca/~gary/rtaudio/</a><p> -RtAudio: realtime audio i/o C++ classes Copyright (c) 2001-2008 Gary P. Scavone<p> +<a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> provides a common API (Application Programming Interface) for realtime audio input/output across Linux (native ALSA, Jack, and OSS), Macintosh OS X (CoreAudio and Jack), and Windows (DirectSound and ASIO) operating systems.<p> +<a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> WWW site: <a href="http://www.music.mcgill.ca/~gary/rtaudio/">http://www.music.mcgill.ca/~gary/rtaudio/</a><p> +<a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>: realtime audio i/o C++ classes Copyright (c) 2001-2009 Gary P. Scavone<p> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:<p> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.<p> Any person wishing to distribute modifications to the Software is asked to send the modifications to the original developer so that they can be incorporated into the canonical version. This is, however, not a binding provision of this license.<p> -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -<p> -<hr><h2>Member Enumeration Documentation</h2> -<a class="anchor" name="w8"></a><!-- doxytag: member="RtAudio::Api" ref="w8" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. <hr><h2>Member Enumeration Documentation</h2> +<a class="anchor" name="c9b6f625da88249d08a8409a9db0d849"></a><!-- doxytag: member="RtAudio::Api" ref="c9b6f625da88249d08a8409a9db0d849" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">enum <a class="el" href="classRtAudio.html#w8">RtAudio::Api</a> </td> + <td class="memname">enum <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849">RtAudio::Api</a> </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> Audio API specifier arguments. <p> <dl compact><dt><b>Enumerator: </b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> -<tr><td valign="top"><em><a class="anchor" name="w8w0"></a><!-- doxytag: member="UNSPECIFIED" ref="w8w0" args="" -->UNSPECIFIED</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="c9b6f625da88249d08a8409a9db0d849a49af3ac767106158bc6cad74fb214ae"></a><!-- doxytag: member="UNSPECIFIED" ref="c9b6f625da88249d08a8409a9db0d849a49af3ac767106158bc6cad74fb214ae" args="" -->UNSPECIFIED</em> </td><td> Search for a working compiled API. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w8w1"></a><!-- doxytag: member="LINUX_ALSA" ref="w8w1" args="" -->LINUX_ALSA</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="c9b6f625da88249d08a8409a9db0d849a7a2ba095c2806caa893b6fb8fc3a1a8"></a><!-- doxytag: member="LINUX_ALSA" ref="c9b6f625da88249d08a8409a9db0d849a7a2ba095c2806caa893b6fb8fc3a1a8" args="" -->LINUX_ALSA</em> </td><td> The Advanced Linux Sound Architecture API. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w8w2"></a><!-- doxytag: member="LINUX_OSS" ref="w8w2" args="" -->LINUX_OSS</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="c9b6f625da88249d08a8409a9db0d84939c84615e61de75e6a4e865596d62c82"></a><!-- doxytag: member="LINUX_OSS" ref="c9b6f625da88249d08a8409a9db0d84939c84615e61de75e6a4e865596d62c82" args="" -->LINUX_OSS</em> </td><td> The Linux Open Sound System API. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w8w3"></a><!-- doxytag: member="UNIX_JACK" ref="w8w3" args="" -->UNIX_JACK</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="c9b6f625da88249d08a8409a9db0d8494767e17c6edfbd827f91763915df4105"></a><!-- doxytag: member="UNIX_JACK" ref="c9b6f625da88249d08a8409a9db0d8494767e17c6edfbd827f91763915df4105" args="" -->UNIX_JACK</em> </td><td> The Jack Low-Latency Audio Server API. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w8w4"></a><!-- doxytag: member="MACOSX_CORE" ref="w8w4" args="" -->MACOSX_CORE</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="c9b6f625da88249d08a8409a9db0d8499fec92b8272244a87a6a11a717bd662d"></a><!-- doxytag: member="MACOSX_CORE" ref="c9b6f625da88249d08a8409a9db0d8499fec92b8272244a87a6a11a717bd662d" args="" -->MACOSX_CORE</em> </td><td> Macintosh OS-X Core Audio API. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w8w5"></a><!-- doxytag: member="WINDOWS_ASIO" ref="w8w5" args="" -->WINDOWS_ASIO</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="c9b6f625da88249d08a8409a9db0d849219517d1df90f94d07758481155bd469"></a><!-- doxytag: member="WINDOWS_ASIO" ref="c9b6f625da88249d08a8409a9db0d849219517d1df90f94d07758481155bd469" args="" -->WINDOWS_ASIO</em> </td><td> The Steinberg Audio Stream I/O API. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w8w6"></a><!-- doxytag: member="WINDOWS_DS" ref="w8w6" args="" -->WINDOWS_DS</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="c9b6f625da88249d08a8409a9db0d84928478830f42c2fd61e6c7ad498901931"></a><!-- doxytag: member="WINDOWS_DS" ref="c9b6f625da88249d08a8409a9db0d84928478830f42c2fd61e6c7ad498901931" args="" -->WINDOWS_DS</em> </td><td> The Microsoft Direct Sound API. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w8w7"></a><!-- doxytag: member="RTAUDIO_DUMMY" ref="w8w7" args="" -->RTAUDIO_DUMMY</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="c9b6f625da88249d08a8409a9db0d849b06b8fd88bf18c9a2b8271f6961ae2d1"></a><!-- doxytag: member="RTAUDIO_DUMMY" ref="c9b6f625da88249d08a8409a9db0d849b06b8fd88bf18c9a2b8271f6961ae2d1" args="" -->RTAUDIO_DUMMY</em> </td><td> A compilable but non-functional API. </td></tr> </table> </dl> - </td> - </tr> -</table> + +</div> +</div><p> <hr><h2>Constructor & Destructor Documentation</h2> -<a class="anchor" name="a0"></a><!-- doxytag: member="RtAudio::RtAudio" ref="a0" args="(RtAudio::Api api=UNSPECIFIED)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +<a class="anchor" name="fd0bfa26deae9804e18faff59d0273d9"></a><!-- doxytag: member="RtAudio::RtAudio" ref="fd0bfa26deae9804e18faff59d0273d9" args="(RtAudio::Api api=UNSPECIFIED)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">RtAudio::RtAudio </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top"><a class="el" href="classRtAudio.html#w8">RtAudio::Api</a> </td> - <td class="mdname1" valign="top" nowrap> <em>api</em> = <code>UNSPECIFIED</code> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap> throw ()</td> + <td class="memname">RtAudio::RtAudio </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849">RtAudio::Api</a> </td> + <td class="paramname"> <em>api</em> = <code>UNSPECIFIED</code> </td> + <td> ) </td> + <td> throw ()</td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> The class constructor. <p> The constructor performs minor initialization tasks. No exceptions can be thrown.<p> -If no API argument is specified and multiple API support has been compiled, the default order of use is JACK, ALSA, OSS (Linux systems) and ASIO, DS (Windows systems). </td> - </tr> -</table> -<a class="anchor" name="a1"></a><!-- doxytag: member="RtAudio::~RtAudio" ref="a1" args="()" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +If no API argument is specified and multiple API support has been compiled, the default order of use is JACK, ALSA, OSS (Linux systems) and ASIO, DS (Windows systems). +</div> +</div><p> +<a class="anchor" name="a8a9716fd64680657ef69c9465442a2f"></a><!-- doxytag: member="RtAudio::~RtAudio" ref="a8a9716fd64680657ef69c9465442a2f" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">RtAudio::~RtAudio </td> - <td class="md" valign="top">( </td> - <td class="mdname1" valign="top" nowrap> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap> throw ()</td> + <td class="memname">RtAudio::~RtAudio </td> + <td>(</td> + <td class="paramname"> </td> + <td> ) </td> + <td> throw ()</td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> The destructor. <p> -If a stream is running or open, it will be stopped and closed automatically. </td> - </tr> -</table> +If a stream is running or open, it will be stopped and closed automatically. +</div> +</div><p> <hr><h2>Member Function Documentation</h2> -<a class="anchor" name="e0"></a><!-- doxytag: member="RtAudio::getCompiledApi" ref="e0" args="(std::vector< RtAudio::Api > &apis)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +<a class="anchor" name="e266ffad2ef428d0b2c6c262d391ce26"></a><!-- doxytag: member="RtAudio::getCompiledApi" ref="e266ffad2ef428d0b2c6c262d391ce26" args="(std::vector< RtAudio::Api > &apis)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">static void RtAudio::getCompiledApi </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top">std::vector< <a class="el" href="classRtAudio.html#w8">RtAudio::Api</a> > & </td> - <td class="mdname1" valign="top" nowrap> <em>apis</em> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap> throw ()<code> [static]</code></td> + <td class="memname">static void RtAudio::getCompiledApi </td> + <td>(</td> + <td class="paramtype">std::vector< <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849">RtAudio::Api</a> > & </td> + <td class="paramname"> <em>apis</em> </td> + <td> ) </td> + <td> throw ()<code> [static]</code></td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> A static function to determine the available compiled audio APIs. <p> -The values returned in the std::vector can be compared against the enumerated list values. Note that there can be more than one API compiled for certain operating systems. </td> - </tr> -</table> -<a class="anchor" name="a3"></a><!-- doxytag: member="RtAudio::getDeviceCount" ref="a3" args="(void)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +The values returned in the std::vector can be compared against the enumerated list values. Note that there can be more than one API compiled for certain operating systems. +</div> +</div><p> +<a class="anchor" name="747ce2d73803641bbb66d6e78092aa1a"></a><!-- doxytag: member="RtAudio::getDeviceCount" ref="747ce2d73803641bbb66d6e78092aa1a" args="(void)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">unsigned int RtAudio::getDeviceCount </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top">void </td> - <td class="mdname1" valign="top" nowrap> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap> throw ()<code> [inline]</code></td> + <td class="memname">unsigned int RtAudio::getDeviceCount </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"> </td> + <td> ) </td> + <td> throw ()<code> [inline]</code></td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> A public function that queries for the number of audio devices available. <p> -This function performs a system query of available devices each time it is called, thus supporting devices connected <em>after</em> instantiation. If a system error occurs during processing, a warning will be issued. </td> - </tr> -</table> -<a class="anchor" name="a4"></a><!-- doxytag: member="RtAudio::getDeviceInfo" ref="a4" args="(unsigned int device)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +This function performs a system query of available devices each time it is called, thus supporting devices connected <em>after</em> instantiation. If a system error occurs during processing, a warning will be issued. +</div> +</div><p> +<a class="anchor" name="02d7ff44ad1d7eae22283a052f3dfda8"></a><!-- doxytag: member="RtAudio::getDeviceInfo" ref="02d7ff44ad1d7eae22283a052f3dfda8" args="(unsigned int device)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top"><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> RtAudio::getDeviceInfo </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top">unsigned int </td> - <td class="mdname1" valign="top" nowrap> <em>device</em> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap><code> [inline]</code></td> + <td class="memname"><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> RtAudio::getDeviceInfo </td> + <td>(</td> + <td class="paramtype">unsigned int </td> + <td class="paramname"> <em>device</em> </td> + <td> ) </td> + <td><code> [inline]</code></td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -Return an <a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> structure for a specified device number. +Return an <a class="el" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> structure for a specified device number. <p> -Any device integer between 0 and <a class="el" href="classRtAudio.html#a3">getDeviceCount()</a> - 1 is valid. If an invalid argument is provided, an <a class="el" href="classRtError.html">RtError</a> (type = INVALID_USE) will be thrown. If a device is busy or otherwise unavailable, the structure member "probed" will have a value of "false" and all other members are undefined. If the specified device is the current default input or output device, the corresponding "isDefault" member will have a value of "true". </td> - </tr> -</table> -<a class="anchor" name="a5"></a><!-- doxytag: member="RtAudio::getDefaultOutputDevice" ref="a5" args="(void)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +Any device integer between 0 and <a class="el" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount()</a> - 1 is valid. If an invalid argument is provided, an <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> (type = INVALID_USE) will be thrown. If a device is busy or otherwise unavailable, the structure member "probed" will have a value of "false" and all other members are undefined. If the specified device is the current default input or output device, the corresponding "isDefault" member will have a value of "true". +</div> +</div><p> +<a class="anchor" name="3a3f3dbe13ea696b521e49cdaaa357bc"></a><!-- doxytag: member="RtAudio::getDefaultOutputDevice" ref="3a3f3dbe13ea696b521e49cdaaa357bc" args="(void)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">unsigned int RtAudio::getDefaultOutputDevice </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top">void </td> - <td class="mdname1" valign="top" nowrap> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap> throw ()<code> [inline]</code></td> + <td class="memname">unsigned int RtAudio::getDefaultOutputDevice </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"> </td> + <td> ) </td> + <td> throw ()<code> [inline]</code></td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> A function that returns the index of the default output device. <p> -If the underlying audio API does not provide a "default device", or if no devices are available, the return value will be 0. Note that this is a valid device identifier and it is the client's responsibility to verify that a device is available before attempting to open a stream. </td> - </tr> -</table> -<a class="anchor" name="a6"></a><!-- doxytag: member="RtAudio::getDefaultInputDevice" ref="a6" args="(void)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +If the underlying audio API does not provide a "default device", or if no devices are available, the return value will be 0. Note that this is a valid device identifier and it is the client's responsibility to verify that a device is available before attempting to open a stream. +</div> +</div><p> +<a class="anchor" name="ad8b94edd3cd379ee300b125750ac6ce"></a><!-- doxytag: member="RtAudio::getDefaultInputDevice" ref="ad8b94edd3cd379ee300b125750ac6ce" args="(void)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">unsigned int RtAudio::getDefaultInputDevice </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top">void </td> - <td class="mdname1" valign="top" nowrap> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap> throw ()<code> [inline]</code></td> + <td class="memname">unsigned int RtAudio::getDefaultInputDevice </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"> </td> + <td> ) </td> + <td> throw ()<code> [inline]</code></td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> A function that returns the index of the default input device. <p> -If the underlying audio API does not provide a "default device", or if no devices are available, the return value will be 0. Note that this is a valid device identifier and it is the client's responsibility to verify that a device is available before attempting to open a stream. </td> - </tr> -</table> -<a class="anchor" name="a7"></a><!-- doxytag: member="RtAudio::openStream" ref="a7" args="(RtAudio::StreamParameters *outputParameters, RtAudio::StreamParameters *inputParameters, RtAudioFormat format, unsigned int sampleRate, unsigned int *bufferFrames, RtAudioCallback callback, void *userData=NULL, RtAudio::StreamOptions *options=NULL)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +If the underlying audio API does not provide a "default device", or if no devices are available, the return value will be 0. Note that this is a valid device identifier and it is the client's responsibility to verify that a device is available before attempting to open a stream. +</div> +</div><p> +<a class="anchor" name="facc99740fa4c5606fb35467cdea6da8"></a><!-- doxytag: member="RtAudio::openStream" ref="facc99740fa4c5606fb35467cdea6da8" args="(RtAudio::StreamParameters *outputParameters, RtAudio::StreamParameters *inputParameters, RtAudioFormat format, unsigned int sampleRate, unsigned int *bufferFrames, RtAudioCallback callback, void *userData=NULL, RtAudio::StreamOptions *options=NULL)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">void RtAudio::openStream </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top"><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> * </td> - <td class="mdname" nowrap> <em>outputParameters</em>, </td> + <td class="memname">void RtAudio::openStream </td> + <td>(</td> + <td class="paramtype"><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> * </td> + <td class="paramname"> <em>outputParameters</em>, </td> </tr> <tr> - <td class="md" nowrap align="right"></td> - <td class="md"></td> - <td class="md" nowrap><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> * </td> - <td class="mdname" nowrap> <em>inputParameters</em>, </td> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> * </td> + <td class="paramname"> <em>inputParameters</em>, </td> </tr> <tr> - <td class="md" nowrap align="right"></td> - <td class="md"></td> - <td class="md" nowrap><a class="el" href="RtAudio_8h.html#a1">RtAudioFormat</a> </td> - <td class="mdname" nowrap> <em>format</em>, </td> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="RtAudio_8h.html#afca92882d25915560018873221e44b8">RtAudioFormat</a> </td> + <td class="paramname"> <em>format</em>, </td> </tr> <tr> - <td class="md" nowrap align="right"></td> - <td class="md"></td> - <td class="md" nowrap>unsigned int </td> - <td class="mdname" nowrap> <em>sampleRate</em>, </td> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">unsigned int </td> + <td class="paramname"> <em>sampleRate</em>, </td> </tr> <tr> - <td class="md" nowrap align="right"></td> - <td class="md"></td> - <td class="md" nowrap>unsigned int * </td> - <td class="mdname" nowrap> <em>bufferFrames</em>, </td> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">unsigned int * </td> + <td class="paramname"> <em>bufferFrames</em>, </td> </tr> <tr> - <td class="md" nowrap align="right"></td> - <td class="md"></td> - <td class="md" nowrap><a class="el" href="RtAudio_8h.html#a15">RtAudioCallback</a> </td> - <td class="mdname" nowrap> <em>callback</em>, </td> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="RtAudio_8h.html#112c7b7e25a974977f6fc094cef1a31f">RtAudioCallback</a> </td> + <td class="paramname"> <em>callback</em>, </td> </tr> <tr> - <td class="md" nowrap align="right"></td> - <td class="md"></td> - <td class="md" nowrap>void * </td> - <td class="mdname" nowrap> <em>userData</em> = <code>NULL</code>, </td> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">void * </td> + <td class="paramname"> <em>userData</em> = <code>NULL</code>, </td> </tr> <tr> - <td class="md" nowrap align="right"></td> - <td class="md"></td> - <td class="md" nowrap><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> * </td> - <td class="mdname" nowrap> <em>options</em> = <code>NULL</code></td> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> * </td> + <td class="paramname"> <em>options</em> = <code>NULL</code></td><td> </td> </tr> <tr> - <td class="md"></td> - <td class="md">) </td> - <td class="md" colspan="2"></td> + <td></td> + <td>)</td> + <td></td><td></td><td></td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> A public function for opening a stream with the specified parameters. <p> -An <a class="el" href="classRtError.html">RtError</a> (type = SYSTEM_ERROR) is thrown if a stream cannot be opened with the specified parameters or an error occurs during processing. An <a class="el" href="classRtError.html">RtError</a> (type = INVALID_USE) is thrown if any invalid device ID or channel number parameters are specified.<p> +An <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> (type = SYSTEM_ERROR) is thrown if a stream cannot be opened with the specified parameters or an error occurs during processing. An <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> (type = INVALID_USE) is thrown if any invalid device ID or channel number parameters are specified.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> - <tr><td valign="top"></td><td valign="top"><em>outputParameters</em> </td><td>Specifies output stream parameters to use when opening a stream, including a device ID, number of channels, and starting channel number. For input-only streams, this argument should be NULL. The device ID is an index value between 0 and <a class="el" href="classRtAudio.html#a3">getDeviceCount()</a> - 1. </td></tr> - <tr><td valign="top"></td><td valign="top"><em>inputParameters</em> </td><td>Specifies input stream parameters to use when opening a stream, including a device ID, number of channels, and starting channel number. For output-only streams, this argument should be NULL. The device ID is an index value between 0 and <a class="el" href="classRtAudio.html#a3">getDeviceCount()</a> - 1. </td></tr> + <tr><td valign="top"></td><td valign="top"><em>outputParameters</em> </td><td>Specifies output stream parameters to use when opening a stream, including a device ID, number of channels, and starting channel number. For input-only streams, this argument should be NULL. The device ID is an index value between 0 and <a class="el" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount()</a> - 1. </td></tr> + <tr><td valign="top"></td><td valign="top"><em>inputParameters</em> </td><td>Specifies input stream parameters to use when opening a stream, including a device ID, number of channels, and starting channel number. For output-only streams, this argument should be NULL. The device ID is an index value between 0 and <a class="el" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount()</a> - 1. </td></tr> <tr><td valign="top"></td><td valign="top"><em>format</em> </td><td>An RtAudioFormat specifying the desired sample data format. </td></tr> <tr><td valign="top"></td><td valign="top"><em>sampleRate</em> </td><td>The desired sample rate (sample frames per second). </td></tr> <tr><td valign="top"></td><td valign="top"><em>*bufferFrames</em> </td><td>A pointer to a value indicating the desired internal buffer size in sample frames. The actual value used by the device is returned via the same pointer. A value of zero can be specified, in which case the lowest allowable value is determined. </td></tr> <tr><td valign="top"></td><td valign="top"><em>callback</em> </td><td>A client-defined function that will be invoked when input data is available and/or output data is needed. </td></tr> <tr><td valign="top"></td><td valign="top"><em>userData</em> </td><td>An optional pointer to data that can be accessed from within the callback function. </td></tr> - <tr><td valign="top"></td><td valign="top"><em>options</em> </td><td>An optional pointer to a structure containing various global stream options, including a list of OR'ed RtAudioStreamFlags and a suggested number of stream buffers that can be used to control stream latency. More buffers typically result in more robust performance, though at a cost of greater latency. If a value of zero is specified, a system-specific median value is chosen. If the RTAUDIO_MINIMIZE_LATENCY flag bit is set, the lowest allowable value is used. The actual value used is returned via the structure argument. The parameter is API dependent.</td></tr> + <tr><td valign="top"></td><td valign="top"><em>options</em> </td><td>An optional pointer to a structure containing various global stream options, including a list of OR'ed RtAudioStreamFlags and a suggested number of stream buffers that can be used to control stream latency. More buffers typically result in more robust performance, though at a cost of greater latency. If a value of zero is specified, a system-specific median value is chosen. If the RTAUDIO_MINIMIZE_LATENCY flag bit is set, the lowest allowable value is used. The actual value used is returned via the structure argument. The parameter is API dependent. </td></tr> </table> </dl> - </td> - </tr> -</table> -<a class="anchor" name="a8"></a><!-- doxytag: member="RtAudio::closeStream" ref="a8" args="(void)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> + +</div> +</div><p> +<a class="anchor" name="90d599002ad32cf250a4cb866f2cc93a"></a><!-- doxytag: member="RtAudio::closeStream" ref="90d599002ad32cf250a4cb866f2cc93a" args="(void)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">void RtAudio::closeStream </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top">void </td> - <td class="mdname1" valign="top" nowrap> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap> throw ()<code> [inline]</code></td> + <td class="memname">void RtAudio::closeStream </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"> </td> + <td> ) </td> + <td> throw ()<code> [inline]</code></td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> A function that closes a stream and frees any associated stream memory. <p> -If a stream is not open, this function issues a warning and returns (no exception is thrown). </td> - </tr> -</table> -<a class="anchor" name="a9"></a><!-- doxytag: member="RtAudio::startStream" ref="a9" args="(void)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +If a stream is not open, this function issues a warning and returns (no exception is thrown). +</div> +</div><p> +<a class="anchor" name="ec017a89629ccef66a90b60be22a2f80"></a><!-- doxytag: member="RtAudio::startStream" ref="ec017a89629ccef66a90b60be22a2f80" args="(void)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">void RtAudio::startStream </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top">void </td> - <td class="mdname1" valign="top" nowrap> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap><code> [inline]</code></td> + <td class="memname">void RtAudio::startStream </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"> </td> + <td> ) </td> + <td><code> [inline]</code></td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> A function that starts a stream. <p> -An <a class="el" href="classRtError.html">RtError</a> (type = SYSTEM_ERROR) is thrown if an error occurs during processing. An <a class="el" href="classRtError.html">RtError</a> (type = INVALID_USE) is thrown if a stream is not open. A warning is issued if the stream is already running. </td> - </tr> -</table> -<a class="anchor" name="a10"></a><!-- doxytag: member="RtAudio::stopStream" ref="a10" args="(void)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +An <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> (type = SYSTEM_ERROR) is thrown if an error occurs during processing. An <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> (type = INVALID_USE) is thrown if a stream is not open. A warning is issued if the stream is already running. +</div> +</div><p> +<a class="anchor" name="f4c241ff86936ecc8108f0d9dfe3efdd"></a><!-- doxytag: member="RtAudio::stopStream" ref="f4c241ff86936ecc8108f0d9dfe3efdd" args="(void)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">void RtAudio::stopStream </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top">void </td> - <td class="mdname1" valign="top" nowrap> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap><code> [inline]</code></td> + <td class="memname">void RtAudio::stopStream </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"> </td> + <td> ) </td> + <td><code> [inline]</code></td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> Stop a stream, allowing any samples remaining in the output queue to be played. <p> -An <a class="el" href="classRtError.html">RtError</a> (type = SYSTEM_ERROR) is thrown if an error occurs during processing. An <a class="el" href="classRtError.html">RtError</a> (type = INVALID_USE) is thrown if a stream is not open. A warning is issued if the stream is already stopped. </td> - </tr> -</table> -<a class="anchor" name="a11"></a><!-- doxytag: member="RtAudio::abortStream" ref="a11" args="(void)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +An <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> (type = SYSTEM_ERROR) is thrown if an error occurs during processing. An <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> (type = INVALID_USE) is thrown if a stream is not open. A warning is issued if the stream is already stopped. +</div> +</div><p> +<a class="anchor" name="d0586b47cd6bb9591a80b4052815991f"></a><!-- doxytag: member="RtAudio::abortStream" ref="d0586b47cd6bb9591a80b4052815991f" args="(void)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">void RtAudio::abortStream </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top">void </td> - <td class="mdname1" valign="top" nowrap> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap><code> [inline]</code></td> + <td class="memname">void RtAudio::abortStream </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"> </td> + <td> ) </td> + <td><code> [inline]</code></td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> Stop a stream, discarding any samples remaining in the input/output queue. <p> -An <a class="el" href="classRtError.html">RtError</a> (type = SYSTEM_ERROR) is thrown if an error occurs during processing. An <a class="el" href="classRtError.html">RtError</a> (type = INVALID_USE) is thrown if a stream is not open. A warning is issued if the stream is already stopped. </td> - </tr> -</table> -<a class="anchor" name="a14"></a><!-- doxytag: member="RtAudio::getStreamTime" ref="a14" args="(void)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +An <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> (type = SYSTEM_ERROR) is thrown if an error occurs during processing. An <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> (type = INVALID_USE) is thrown if a stream is not open. A warning is issued if the stream is already stopped. +</div> +</div><p> +<a class="anchor" name="344e59a62353c5791db4621b985cb2ca"></a><!-- doxytag: member="RtAudio::getStreamTime" ref="344e59a62353c5791db4621b985cb2ca" args="(void)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">double RtAudio::getStreamTime </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top">void </td> - <td class="mdname1" valign="top" nowrap> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap><code> [inline]</code></td> + <td class="memname">double RtAudio::getStreamTime </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"> </td> + <td> ) </td> + <td><code> [inline]</code></td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> Returns the number of elapsed seconds since the stream was started. <p> -If a stream is not open, an <a class="el" href="classRtError.html">RtError</a> (type = INVALID_USE) will be thrown. </td> - </tr> -</table> -<a class="anchor" name="a15"></a><!-- doxytag: member="RtAudio::getStreamLatency" ref="a15" args="(void)" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +If a stream is not open, an <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> (type = INVALID_USE) will be thrown. +</div> +</div><p> +<a class="anchor" name="843c989d9f501c71bc2f2c5ca18df9f3"></a><!-- doxytag: member="RtAudio::getStreamLatency" ref="843c989d9f501c71bc2f2c5ca18df9f3" args="(void)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">long RtAudio::getStreamLatency </td> - <td class="md" valign="top">( </td> - <td class="md" nowrap valign="top">void </td> - <td class="mdname1" valign="top" nowrap> </td> - <td class="md" valign="top"> ) </td> - <td class="md" nowrap><code> [inline]</code></td> + <td class="memname">long RtAudio::getStreamLatency </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"> </td> + <td> ) </td> + <td><code> [inline]</code></td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> Returns the internal stream latency in sample frames. <p> -The stream latency refers to delay in audio input and/or output caused by internal buffering by the audio system and/or hardware. For duplex streams, the returned value will represent the sum of the input and output latencies. If a stream is not open, an <a class="el" href="classRtError.html">RtError</a> (type = INVALID_USE) will be thrown. If the API does not report latency, the return value will be zero. </td> - </tr> -</table> +The stream latency refers to delay in audio input and/or output caused by internal buffering by the audio system and/or hardware. For duplex streams, the returned value will represent the sum of the input and output latencies. If a stream is not open, an <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> (type = INVALID_USE) will be thrown. If the API does not report latency, the return value will be zero. +</div> +</div><p> +<a class="anchor" name="28214b8b05d60b45c24ee6fae7b2a0b5"></a><!-- doxytag: member="RtAudio::getStreamSampleRate" ref="28214b8b05d60b45c24ee6fae7b2a0b5" args="(void)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">unsigned int RtAudio::getStreamSampleRate </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"> </td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p> +Returns actual sample rate in use by the stream. +<p> +On some systems, the sample rate used may be slightly different than that specified in the stream parameters. If a stream is not open, an <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> (type = INVALID_USE) will be thrown. +</div> +</div><p> <hr>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="RtAudio_8h-source.html">RtAudio.h</a></ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/classRtError-members.html b/doc/html/classRtError-members.html index 08d6609..c81d2a3 100644 --- a/doc/html/classRtError-members.html +++ b/doc/html/classRtError-members.html @@ -8,30 +8,32 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> <h1>RtError Member List</h1>This is the complete list of members for <a class="el" href="classRtError.html">RtError</a>, including all inherited members.<p><table> - <tr class="memlist"><td><a class="el" href="classRtError.html#w11w1">DEBUG_WARNING</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#w11w8">DRIVER_ERROR</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#a4">getMessage</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#a3">getType</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#w11w4">INVALID_DEVICE</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#w11w6">INVALID_PARAMETER</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#w11w7">INVALID_USE</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#w11w5">MEMORY_ERROR</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#w11w3">NO_DEVICES_FOUND</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#a2">printMessage</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#a0">RtError</a>(const std::string &message, Type type=RtError::UNSPECIFIED)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#w11w9">SYSTEM_ERROR</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#w11w10">THREAD_ERROR</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#w11">Type</a> enum name</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#w11w2">UNSPECIFIED</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#w11w0">WARNING</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#a5">what</a>(void) const </td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtError.html#a1">~RtError</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr> -</table><HR> + <tr class="memlist"><td><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac20e5a369394d19b704ace17002007eba">DEBUG_WARNING</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac995e97ecf6beeedaba525022a63aec6b">DRIVER_ERROR</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#c7f467788e29d246333d7af050801164">getMessage</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#4ee7df9728d73f533afbaddcd9ca4d9c">getType</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acd6064062066fffdba258237a7c2159b1">INVALID_DEVICE</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903aca3eabf0f71120beaba94148a1b78fed6">INVALID_PARAMETER</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac8e65f51a3fbdc1a4a1552b3260df36bc">INVALID_USE</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acb4f813e5a36905c89d4081a59497432e">MEMORY_ERROR</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acf267eb2d710f33d649ba840eeab6ff82">NO_DEVICES_FOUND</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#da41f7472122f45bc5b4677f066e0943">printMessage</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#a479a305ccbe56be0fd9137b9b405a37">RtError</a>(const std::string &message, Type type=RtError::UNSPECIFIED)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac8947d0a2e2a84ecf3646271844e06a6b">SYSTEM_ERROR</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903aceb6282f991e2d93ab294a4272fc3f6c6">THREAD_ERROR</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac">Type</a> enum name</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac444efd3ccf774b2ba9f9bde70ec71cd6">UNSPECIFIED</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac3a1603c24a56cbdaf5f8ae4ddcb86398">WARNING</a> enum value</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#eb843b7a7785d66061c61ebfc29e7e9d">what</a>(void) const </td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtError.html#6793e03386e7e69ffafb65a296dfa48c">~RtError</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr> +</table></div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/classRtError.html b/doc/html/classRtError.html index a542f90..e90dcf1 100644 --- a/doc/html/classRtError.html +++ b/doc/html/classRtError.html @@ -8,122 +8,116 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1>RtError Class Reference</h1><!-- doxytag: class="RtError" -->Exception handling class for <a class="el" href="classRtAudio.html">RtAudio</a> & RtMidi. +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1>RtError Class Reference</h1><!-- doxytag: class="RtError" -->Exception handling class for <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> & RtMidi. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="RtError_8h-source.html">RtError.h</a>></code> <p> + +<p> <a href="classRtError-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Public Types</h2></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#w11">Type</a> { <br> - <a class="el" href="classRtError.html#w11w0">WARNING</a>, -<a class="el" href="classRtError.html#w11w1">DEBUG_WARNING</a>, -<a class="el" href="classRtError.html#w11w2">UNSPECIFIED</a>, -<a class="el" href="classRtError.html#w11w3">NO_DEVICES_FOUND</a>, +<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac">Type</a> { <br> + <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac3a1603c24a56cbdaf5f8ae4ddcb86398">WARNING</a>, +<a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac20e5a369394d19b704ace17002007eba">DEBUG_WARNING</a>, +<a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac444efd3ccf774b2ba9f9bde70ec71cd6">UNSPECIFIED</a>, +<a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acf267eb2d710f33d649ba840eeab6ff82">NO_DEVICES_FOUND</a>, <br> - <a class="el" href="classRtError.html#w11w4">INVALID_DEVICE</a>, -<a class="el" href="classRtError.html#w11w5">MEMORY_ERROR</a>, -<a class="el" href="classRtError.html#w11w6">INVALID_PARAMETER</a>, -<a class="el" href="classRtError.html#w11w7">INVALID_USE</a>, + <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acd6064062066fffdba258237a7c2159b1">INVALID_DEVICE</a>, +<a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acb4f813e5a36905c89d4081a59497432e">MEMORY_ERROR</a>, +<a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903aca3eabf0f71120beaba94148a1b78fed6">INVALID_PARAMETER</a>, +<a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac8e65f51a3fbdc1a4a1552b3260df36bc">INVALID_USE</a>, <br> - <a class="el" href="classRtError.html#w11w8">DRIVER_ERROR</a>, -<a class="el" href="classRtError.html#w11w9">SYSTEM_ERROR</a>, -<a class="el" href="classRtError.html#w11w10">THREAD_ERROR</a> + <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac995e97ecf6beeedaba525022a63aec6b">DRIVER_ERROR</a>, +<a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac8947d0a2e2a84ecf3646271844e06a6b">SYSTEM_ERROR</a>, +<a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903aceb6282f991e2d93ab294a4272fc3f6c6">THREAD_ERROR</a> <br> }</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">Defined RtError types. <a href="classRtError.html#w11">More...</a><br></td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Defined <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> types. <a href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac">More...</a><br></td></tr> <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0"></a><!-- doxytag: member="RtError::RtError" ref="a0" args="(const std::string &message, Type type=RtError::UNSPECIFIED)" --> - </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#a0">RtError</a> (const std::string &message, <a class="el" href="classRtError.html#w11">Type</a> type=RtError::UNSPECIFIED) throw ()</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a479a305ccbe56be0fd9137b9b405a37"></a><!-- doxytag: member="RtError::RtError" ref="a479a305ccbe56be0fd9137b9b405a37" args="(const std::string &message, Type type=RtError::UNSPECIFIED)" --> + </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#a479a305ccbe56be0fd9137b9b405a37">RtError</a> (const std::string &message, <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac">Type</a> type=RtError::UNSPECIFIED) throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The constructor. <br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1"></a><!-- doxytag: member="RtError::~RtError" ref="a1" args="(void)" --> -virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#a1">~RtError</a> (void) throw ()</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6793e03386e7e69ffafb65a296dfa48c"></a><!-- doxytag: member="RtError::~RtError" ref="6793e03386e7e69ffafb65a296dfa48c" args="(void)" --> +virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#6793e03386e7e69ffafb65a296dfa48c">~RtError</a> (void) throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The destructor. <br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2"></a><!-- doxytag: member="RtError::printMessage" ref="a2" args="(void)" --> -virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#a2">printMessage</a> (void) throw ()</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="da41f7472122f45bc5b4677f066e0943"></a><!-- doxytag: member="RtError::printMessage" ref="da41f7472122f45bc5b4677f066e0943" args="(void)" --> +virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#da41f7472122f45bc5b4677f066e0943">printMessage</a> (void) throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Prints thrown error message to stderr. <br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3"></a><!-- doxytag: member="RtError::getType" ref="a3" args="(void)" --> -virtual const <a class="el" href="classRtError.html#w11">Type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#a3">getType</a> (void) throw ()</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4ee7df9728d73f533afbaddcd9ca4d9c"></a><!-- doxytag: member="RtError::getType" ref="4ee7df9728d73f533afbaddcd9ca4d9c" args="(void)" --> +virtual const <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac">Type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#4ee7df9728d73f533afbaddcd9ca4d9c">getType</a> (void) throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the thrown error message type. <br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4"></a><!-- doxytag: member="RtError::getMessage" ref="a4" args="(void)" --> -virtual const std::string & </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#a4">getMessage</a> (void) throw ()</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c7f467788e29d246333d7af050801164"></a><!-- doxytag: member="RtError::getMessage" ref="c7f467788e29d246333d7af050801164" args="(void)" --> +virtual const std::string & </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#c7f467788e29d246333d7af050801164">getMessage</a> (void) throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the thrown error message string. <br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5"></a><!-- doxytag: member="RtError::what" ref="a5" args="(void) const " --> -virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#a5">what</a> (void) const throw ()</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="eb843b7a7785d66061c61ebfc29e7e9d"></a><!-- doxytag: member="RtError::what" ref="eb843b7a7785d66061c61ebfc29e7e9d" args="(void) const " --> +virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtError.html#eb843b7a7785d66061c61ebfc29e7e9d">what</a> (void) const throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the thrown error message as a c-style string. <br></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> -Exception handling class for <a class="el" href="classRtAudio.html">RtAudio</a> & RtMidi. -<p> -The RtError class is quite simple but it does allow errors to be "caught" by <a class="el" href="classRtError.html#w11">RtError::Type</a>. See the <a class="el" href="classRtAudio.html">RtAudio</a> and RtMidi documentation to know which methods can throw an RtError. +Exception handling class for <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> & RtMidi. <p> -<hr><h2>Member Enumeration Documentation</h2> -<a class="anchor" name="w11"></a><!-- doxytag: member="RtError::Type" ref="w11" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +The <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> class is quite simple but it does allow errors to be "caught" by <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac" title="Defined RtError types.">RtError::Type</a>. See the <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> and RtMidi documentation to know which methods can throw an <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a>. <hr><h2>Member Enumeration Documentation</h2> +<a class="anchor" name="b04667aae01bffc354a9ac6bda6903ac"></a><!-- doxytag: member="RtError::Type" ref="b04667aae01bffc354a9ac6bda6903ac" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">enum <a class="el" href="classRtError.html#w11">RtError::Type</a> </td> + <td class="memname">enum <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac">RtError::Type</a> </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -Defined RtError types. +Defined <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> types. <p> <dl compact><dt><b>Enumerator: </b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> -<tr><td valign="top"><em><a class="anchor" name="w11w0"></a><!-- doxytag: member="WARNING" ref="w11w0" args="" -->WARNING</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="b04667aae01bffc354a9ac6bda6903ac3a1603c24a56cbdaf5f8ae4ddcb86398"></a><!-- doxytag: member="WARNING" ref="b04667aae01bffc354a9ac6bda6903ac3a1603c24a56cbdaf5f8ae4ddcb86398" args="" -->WARNING</em> </td><td> A non-critical error. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w11w1"></a><!-- doxytag: member="DEBUG_WARNING" ref="w11w1" args="" -->DEBUG_WARNING</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="b04667aae01bffc354a9ac6bda6903ac20e5a369394d19b704ace17002007eba"></a><!-- doxytag: member="DEBUG_WARNING" ref="b04667aae01bffc354a9ac6bda6903ac20e5a369394d19b704ace17002007eba" args="" -->DEBUG_WARNING</em> </td><td> A non-critical error which might be useful for debugging. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w11w2"></a><!-- doxytag: member="UNSPECIFIED" ref="w11w2" args="" -->UNSPECIFIED</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="b04667aae01bffc354a9ac6bda6903ac444efd3ccf774b2ba9f9bde70ec71cd6"></a><!-- doxytag: member="UNSPECIFIED" ref="b04667aae01bffc354a9ac6bda6903ac444efd3ccf774b2ba9f9bde70ec71cd6" args="" -->UNSPECIFIED</em> </td><td> The default, unspecified error type. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w11w3"></a><!-- doxytag: member="NO_DEVICES_FOUND" ref="w11w3" args="" -->NO_DEVICES_FOUND</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="b04667aae01bffc354a9ac6bda6903acf267eb2d710f33d649ba840eeab6ff82"></a><!-- doxytag: member="NO_DEVICES_FOUND" ref="b04667aae01bffc354a9ac6bda6903acf267eb2d710f33d649ba840eeab6ff82" args="" -->NO_DEVICES_FOUND</em> </td><td> No devices found on system. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w11w4"></a><!-- doxytag: member="INVALID_DEVICE" ref="w11w4" args="" -->INVALID_DEVICE</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="b04667aae01bffc354a9ac6bda6903acd6064062066fffdba258237a7c2159b1"></a><!-- doxytag: member="INVALID_DEVICE" ref="b04667aae01bffc354a9ac6bda6903acd6064062066fffdba258237a7c2159b1" args="" -->INVALID_DEVICE</em> </td><td> An invalid device ID was specified. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w11w5"></a><!-- doxytag: member="MEMORY_ERROR" ref="w11w5" args="" -->MEMORY_ERROR</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="b04667aae01bffc354a9ac6bda6903acb4f813e5a36905c89d4081a59497432e"></a><!-- doxytag: member="MEMORY_ERROR" ref="b04667aae01bffc354a9ac6bda6903acb4f813e5a36905c89d4081a59497432e" args="" -->MEMORY_ERROR</em> </td><td> An error occured during memory allocation. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w11w6"></a><!-- doxytag: member="INVALID_PARAMETER" ref="w11w6" args="" -->INVALID_PARAMETER</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="b04667aae01bffc354a9ac6bda6903aca3eabf0f71120beaba94148a1b78fed6"></a><!-- doxytag: member="INVALID_PARAMETER" ref="b04667aae01bffc354a9ac6bda6903aca3eabf0f71120beaba94148a1b78fed6" args="" -->INVALID_PARAMETER</em> </td><td> An invalid parameter was specified to a function. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w11w7"></a><!-- doxytag: member="INVALID_USE" ref="w11w7" args="" -->INVALID_USE</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="b04667aae01bffc354a9ac6bda6903ac8e65f51a3fbdc1a4a1552b3260df36bc"></a><!-- doxytag: member="INVALID_USE" ref="b04667aae01bffc354a9ac6bda6903ac8e65f51a3fbdc1a4a1552b3260df36bc" args="" -->INVALID_USE</em> </td><td> The function was called incorrectly. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w11w8"></a><!-- doxytag: member="DRIVER_ERROR" ref="w11w8" args="" -->DRIVER_ERROR</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="b04667aae01bffc354a9ac6bda6903ac995e97ecf6beeedaba525022a63aec6b"></a><!-- doxytag: member="DRIVER_ERROR" ref="b04667aae01bffc354a9ac6bda6903ac995e97ecf6beeedaba525022a63aec6b" args="" -->DRIVER_ERROR</em> </td><td> A system driver error occured. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w11w9"></a><!-- doxytag: member="SYSTEM_ERROR" ref="w11w9" args="" -->SYSTEM_ERROR</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="b04667aae01bffc354a9ac6bda6903ac8947d0a2e2a84ecf3646271844e06a6b"></a><!-- doxytag: member="SYSTEM_ERROR" ref="b04667aae01bffc354a9ac6bda6903ac8947d0a2e2a84ecf3646271844e06a6b" args="" -->SYSTEM_ERROR</em> </td><td> A system error occured. </td></tr> -<tr><td valign="top"><em><a class="anchor" name="w11w10"></a><!-- doxytag: member="THREAD_ERROR" ref="w11w10" args="" -->THREAD_ERROR</em> </td><td> +<tr><td valign="top"><em><a class="anchor" name="b04667aae01bffc354a9ac6bda6903aceb6282f991e2d93ab294a4272fc3f6c6"></a><!-- doxytag: member="THREAD_ERROR" ref="b04667aae01bffc354a9ac6bda6903aceb6282f991e2d93ab294a4272fc3f6c6" args="" -->THREAD_ERROR</em> </td><td> A thread error occured. </td></tr> </table> </dl> - </td> - </tr> -</table> + +</div> +</div><p> <hr>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="RtError_8h-source.html">RtError.h</a></ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/classes.html b/doc/html/classes.html new file mode 100644 index 0000000..0e20935 --- /dev/null +++ b/doc/html/classes.html @@ -0,0 +1,25 @@ +<HTML> +<HEAD> +<TITLE>The RtAudio Home Page</TITLE> +<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> +<LINK REL="SHORTCUT ICON" HREF="http://www.music.mcgill.ca/~gary/favicon.ico"> +</HEAD> +<BODY BGCOLOR="#FFFFFF"> +<CENTER> +<a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> +<HR> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1>Class Index</h1><p><div class="qindex"><a class="qindex" href="#letter_R">R</a></div><p> +<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0"> +<tr><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> R </div></td></tr></table> +</td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> </td><td><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> </td><td><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> </td><td><a class="el" href="classRtError.html">RtError</a> </td></tr><tr><td><a class="el" href="classRtAudio.html">RtAudio</a> </td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_R">R</a></div><p> +</div> +<HR> + +<table><tr><td><img src="../images/mcgill.gif" width=165></td> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> +</table> + +</BODY> +</HTML> diff --git a/doc/html/compiling.html b/doc/html/compiling.html index 8097f7b..c055362 100644 --- a/doc/html/compiling.html +++ b/doc/html/compiling.html @@ -8,12 +8,13 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1><a class="anchor" name="compiling">Debugging & Compiling</a></h1><h2><a class="anchor" name="debug"> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1><a class="anchor" name="compiling">Debugging & Compiling </a></h1><h2><a class="anchor" name="debug"> Debugging</a></h2> -If you are having problems getting <a class="el" href="classRtAudio.html">RtAudio</a> to run on your system, make sure to pass a value of <em>true</em> to the <a class="el" href="classRtAudio.html#a16">RtAudio::showWarnings()</a> 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 <code>tests</code> directory. The program <code>audioprobe</code> 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__.<h2><a class="anchor" name="compile"> +If you are having problems getting <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> to run on your system, make sure to pass a value of <em>true</em> to the <a class="el" href="classRtAudio.html#f0752ee51cce3dd90a3bd009f9fdbe77" title="Specify whether warning messages should be printed to stderr.">RtAudio::showWarnings()</a> 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 <code>tests</code> directory. The program <code>audioprobe</code> displays the queried capabilities of all hardware devices found for all APIs compiled. When using the ALSA and JACK APIs, further information can be displayed by defining the preprocessor definition __RTAUDIO_DEBUG__.<h2><a class="anchor" name="compile"> Compiling</a></h2> -In order to compile <a class="el" href="classRtAudio.html">RtAudio</a> for a specific OS and audio API, it is necessary to supply the appropriate preprocessor definition and library within the compiler statement: <p> +In order to compile <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> for a specific OS and audio API, it is necessary to supply the appropriate preprocessor definition and library within the compiler statement: <p> <table border="2" cols="5" width="100%" cellspacing="3" cellpadding="3"> <tr bgcolor="beige"> <td width="5%"><b>OS:</b> </td><td width="5%"><b>Audio API:</b> </td><td width="5%"><b>C++ Class:</b> </td><td width="5%"><b>Preprocessor Definition:</b> </td><td width="5%"><b>Library or Framework:</b> </td><td><b>Example Compiler Statement:</b> </td></tr> @@ -32,10 +33,11 @@ In order to compile <a class="el" href="classRtAudio.html">RtAudio</a> for a spe <td>Windows </td><td>ASIO </td><td>RtApiAsio </td><td>__WINDOWS_ASIO__ </td><td><em>various ASIO header and source files</em> </td><td><em>compiler specific</em> </td></tr> </table> <p> -The example compiler statements above could be used to compile the <code>audioprobe.cpp</code> example file, assuming that <code>audioprobe.cpp</code>, <code><a class="el" href="RtAudio_8h.html">RtAudio.h</a></code>, <code><a class="el" href="RtError_8h-source.html">RtError.h</a></code>, and <code>RtAudio.cpp</code> all exist in the same directory. <HR> +The example compiler statements above could be used to compile the <code>audioprobe.cpp</code> example file, assuming that <code>audioprobe.cpp</code>, <code><a class="el" href="RtAudio_8h.html">RtAudio.h</a></code>, <code><a class="el" href="RtError_8h-source.html">RtError.h</a></code>, and <code>RtAudio.cpp</code> all exist in the same directory. </div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css index decae9e..3767dc9 100644 --- a/doc/html/doxygen.css +++ b/doc/html/doxygen.css @@ -1,309 +1,441 @@ -BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { - font-family: Geneva, Arial, Helvetica, sans-serif; -} -BODY,TD { - font-size: 90%; -} -H1 { +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 12px; +} + +/* @group Heading Levels */ + +h1 { text-align: center; - font-size: 160%; + font-size: 150%; } -H2 { - font-size: 120%; + +h2 { + font-size: 120%; } -H3 { - font-size: 100%; + +h3 { + font-size: 100%; } -CAPTION { font-weight: bold } -DIV.qindex { - width: 100%; - background-color: #eeeeff; - border: 1px solid #b0b0b0; + +/* @end */ + +caption { + font-weight: bold; +} + +div.qindex, div.navtab{ + background-color: #e8eef2; + border: 1px solid #84b0c7; text-align: center; margin: 2px; padding: 2px; - line-height: 140%; } -DIV.nav { + +div.qindex, div.navpath { width: 100%; - background-color: #eeeeff; - border: 1px solid #b0b0b0; - text-align: center; - margin: 2px; - padding: 2px; line-height: 140%; } -DIV.navtab { - background-color: #eeeeff; - border: 1px solid #b0b0b0; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; + +div.navtab { + margin-right: 15px; } -TD.navtab { - font-size: 70%; + +/* @group Link Styling */ + +a { + color: #153788; + font-weight: normal; + text-decoration: none; } -A.qindex { - text-decoration: none; - font-weight: bold; - color: #1A419D; + +.contents a:visited { + color: #1b77c5; } -A.qindex:visited { - text-decoration: none; - font-weight: bold; - color: #1A419D + +a:hover { + text-decoration: underline; } -A.qindex:hover { - text-decoration: none; - background-color: #ddddff; + +a.qindex { + font-weight: bold; } -A.qindexHL { - text-decoration: none; + +a.qindexHL { font-weight: bold; background-color: #6666cc; color: #ffffff; border: 1px double #9295C2; } -A.qindexHL:hover { - text-decoration: none; - background-color: #6666cc; - color: #ffffff; + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; } -A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } -A.el { text-decoration: none; font-weight: bold } -A.elRef { font-weight: bold } -A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} -A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} -A.codeRef:link { font-weight: normal; color: #0000FF} -A.codeRef:visited { font-weight: normal; color: #0000FF} -A:hover { text-decoration: none; background-color: #f2f2ff } -DL.el { margin-left: -1cm } + +a.elRef { +} + +a.code { +} + +a.codeRef { +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + .fragment { - font-family: Fixed, monospace; - font-size: 95%; + font-family: monospace, fixed; + font-size: 105%; } -PRE.fragment { + +pre.fragment { border: 1px solid #CCCCCC; background-color: #f5f5f5; - margin-top: 4px; - margin-bottom: 4px; - margin-left: 2px; - margin-right: 8px; - padding-left: 6px; - padding-right: 6px; - padding-top: 4px; - padding-bottom: 4px; -} -DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } -TD.md { background-color: #F4F4FB; font-weight: bold; } -TD.mdPrefix { - background-color: #F4F4FB; - color: #606060; - font-size: 80%; + padding: 4px 6px; + margin: 4px 8px 4px 2px; } -TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } -TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } -DIV.groupHeader { - margin-left: 16px; - margin-top: 12px; - margin-bottom: 6px; - font-weight: bold; + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; } -DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } -BODY { + +body { background: white; color: black; margin-right: 20px; margin-left: 20px; } -TD.indexkey { - background-color: #eeeeff; + +td.indexkey { + background-color: #e8eef2; font-weight: bold; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px; border: 1px solid #CCCCCC; + margin: 2px 0px 2px 0; + padding: 2px 10px; } -TD.indexvalue { - background-color: #eeeeff; - font-style: italic; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px; + +td.indexvalue { + background-color: #e8eef2; border: 1px solid #CCCCCC; + padding: 2px 10px; + margin: 2px 0px; } -TR.memlist { - background-color: #f0f0f0; -} -P.formulaDsp { text-align: center; } -IMG.formulaDsp { } -IMG.formulaInl { vertical-align: middle; } -SPAN.keyword { color: #008000 } -SPAN.keywordtype { color: #604020 } -SPAN.keywordflow { color: #e08000 } -SPAN.comment { color: #800000 } -SPAN.preprocessor { color: #806020 } -SPAN.stringliteral { color: #002080 } -SPAN.charliteral { color: #008080 } -.mdTable { - border: 1px solid #868686; - background-color: #F4F4FB; -} -.mdRow { - padding: 8px 10px; -} -.mdescLeft { - padding: 0px 8px 4px 8px; - font-size: 80%; - font-style: italic; - background-color: #FAFAFA; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; + +tr.memlist { + background-color: #f0f0f0; } -.mdescRight { - padding: 0px 8px 4px 8px; - font-size: 80%; - font-style: italic; - background-color: #FAFAFA; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; + +p.formulaDsp { + text-align: center; } -.memItemLeft { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +.search { + color: #003399; + font-weight: bold; } -.memItemRight { - padding: 1px 8px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} + +th.dirtab { + background: #e8eef2; + font-weight: bold; } -.memTemplItemLeft { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: none; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; + +hr { + height: 0; + border: none; + border-top: 1px solid #666; +} + +/* @group Member Descriptions */ + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { background-color: #FAFAFA; - font-size: 80%; -} -.memTemplItemRight { - padding: 1px 8px 0px 8px; + border: none; margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: none; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; } + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #ccc; +} + .memTemplParams { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - color: #606060; - background-color: #FAFAFA; + color: #606060; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { font-size: 80%; + color: #606060; + font-weight: normal; + margin-left: 3px; +} + +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; } -.search { color: #003399; - font-weight: bold; + +.memitem { + padding: 0; } -FORM.search { - margin-bottom: 0px; - margin-top: 0px; + +.memname { + white-space: nowrap; + font-weight: bold; } -INPUT.search { font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #eeeeff; + +.memproto, .memdoc { + border: 1px solid #84b0c7; } -TD.tiny { font-size: 75%; + +.memproto { + padding: 0; + background-color: #d5e1e8; + font-weight: bold; + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; + -moz-border-radius-topleft: 8px; + -moz-border-radius-topright: 8px; +} + +.memdoc { + padding: 2px 5px; + background-color: #eef3f5; + border-top-width: 0; + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0.5em; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; } -a { - color: #252E78; + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; } -a:visited { - color: #3D2185; + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; } -.dirtab { padding: 4px; - border-collapse: collapse; - border: 1px solid #b0b0b0; + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; } -TH.dirtab { background: #eeeeff; - font-weight: bold; + +.directory-alt img { + vertical-align: -30%; } -HR { height: 1px; - border: none; - border-top: 1px solid black; + +/* @end */ + +address { + font-style: normal; + color: #333; } diff --git a/doc/html/duplex.html b/doc/html/duplex.html index 8d37734..7bfdb64 100644 --- a/doc/html/duplex.html +++ b/doc/html/duplex.html @@ -8,14 +8,17 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1><a class="anchor" name="duplex">Duplex Mode</a></h1>Finally, it is easy to use <a class="el" href="classRtAudio.html">RtAudio</a> for simultaneous audio input/output, or duplex operation. In this example, we simply pass the input data back to the output.<p> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1><a class="anchor" name="duplex">Duplex Mode </a></h1>Finally, it is easy to use <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> for simultaneous audio input/output, or duplex operation. In this example, we simply pass the input data back to the output.<p> <div class="fragment"><pre class="fragment"><span class="preprocessor">#include "<a class="code" href="RtAudio_8h.html">RtAudio.h</a>"</span> <span class="preprocessor">#include <iostream></span> +<span class="preprocessor">#include <cstdlib></span> +<span class="preprocessor">#include <cstring></span> <span class="comment">// Pass-through function.</span> <span class="keywordtype">int</span> inout( <span class="keywordtype">void</span> *outputBuffer, <span class="keywordtype">void</span> *inputBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nBufferFrames, - <span class="keywordtype">double</span> streamTime, <a class="code" href="RtAudio_8h.html#a12">RtAudioStreamStatus</a> status, <span class="keywordtype">void</span> *data ) + <span class="keywordtype">double</span> streamTime, <a class="code" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806" title="RtAudio stream status (over- or underflow) flags.">RtAudioStreamStatus</a> status, <span class="keywordtype">void</span> *data ) { <span class="comment">// Since the number of input and output channels is equal, we can do</span> <span class="comment">// a simple buffer copy operation here.</span> @@ -28,56 +31,57 @@ <span class="keywordtype">int</span> main() { - <a class="code" href="classRtAudio.html">RtAudio</a> adac; - <span class="keywordflow">if</span> ( adac.<a class="code" href="classRtAudio.html#a3">getDeviceCount</a>() < 1 ) { + <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> adac; + <span class="keywordflow">if</span> ( adac.<a class="code" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount</a>() < 1 ) { std::cout << <span class="stringliteral">"\nNo audio devices found!\n"</span>; exit( 0 ); } <span class="comment">// Set the same number of channels for both input and output.</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferBytes, bufferFrames = 512; - <a class="code" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> iParams, oParams; - iParams.<a class="code" href="structRtAudio_1_1StreamParameters.html#o0">deviceId</a> = 0; <span class="comment">// first available device</span> - iParams.<a class="code" href="structRtAudio_1_1StreamParameters.html#o1">nChannels</a> = 2; - oParams.<a class="code" href="structRtAudio_1_1StreamParameters.html#o0">deviceId</a> = 0; <span class="comment">// first available device</span> - oParams.<a class="code" href="structRtAudio_1_1StreamParameters.html#o1">nChannels</a> = 2; + <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">RtAudio::StreamParameters</a> iParams, oParams; + iParams.<a class="code" href="structRtAudio_1_1StreamParameters.html#ffd27496c70c0986522056234c64e28e">deviceId</a> = 0; <span class="comment">// first available device</span> + iParams.<a class="code" href="structRtAudio_1_1StreamParameters.html#78798b65fada7941e1a7e47c11c9e627">nChannels</a> = 2; + oParams.<a class="code" href="structRtAudio_1_1StreamParameters.html#ffd27496c70c0986522056234c64e28e">deviceId</a> = 0; <span class="comment">// first available device</span> + oParams.<a class="code" href="structRtAudio_1_1StreamParameters.html#78798b65fada7941e1a7e47c11c9e627">nChannels</a> = 2; <span class="keywordflow">try</span> { - adac.<a class="code" href="classRtAudio.html#a7">openStream</a>( &oParams, &iParams, RTAUDIO_SINT32, 44100, &bufferFrames, &inout, (<span class="keywordtype">void</span> *)&bufferBytes ); + adac.<a class="code" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">openStream</a>( &oParams, &iParams, RTAUDIO_SINT32, 44100, &bufferFrames, &inout, (<span class="keywordtype">void</span> *)&bufferBytes ); } - <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html">RtError</a>& e ) { - e.<a class="code" href="classRtError.html#a2">printMessage</a>(); + <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html" title="Exception handling class for RtAudio &amp; RtMidi.">RtError</a>& e ) { + e.<a class="code" href="classRtError.html#da41f7472122f45bc5b4677f066e0943" title="Prints thrown error message to stderr.">printMessage</a>(); exit( 0 ); } bufferBytes = bufferFrames * 2 * 4; <span class="keywordflow">try</span> { - adac.<a class="code" href="classRtAudio.html#a9">startStream</a>(); + adac.<a class="code" href="classRtAudio.html#ec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">startStream</a>(); <span class="keywordtype">char</span> input; std::cout << <span class="stringliteral">"\nRunning ... press <enter> to quit.\n"</span>; std::cin.get(input); <span class="comment">// Stop the stream.</span> - adac.<a class="code" href="classRtAudio.html#a10">stopStream</a>(); + adac.<a class="code" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">stopStream</a>(); } - <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html">RtError</a>& e ) { - e.<a class="code" href="classRtError.html#a2">printMessage</a>(); + <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html" title="Exception handling class for RtAudio &amp; RtMidi.">RtError</a>& e ) { + e.<a class="code" href="classRtError.html#da41f7472122f45bc5b4677f066e0943" title="Prints thrown error message to stderr.">printMessage</a>(); <span class="keywordflow">goto</span> cleanup; } cleanup: - <span class="keywordflow">if</span> ( adac.<a class="code" href="classRtAudio.html#a12">isStreamOpen</a>() ) adac.<a class="code" href="classRtAudio.html#a8">closeStream</a>(); + <span class="keywordflow">if</span> ( adac.<a class="code" href="classRtAudio.html#3863e45ff81dbe97176de0ee7545917f" title="Returns true if a stream is open and false if not.">isStreamOpen</a>() ) adac.<a class="code" href="classRtAudio.html#90d599002ad32cf250a4cb866f2cc93a" title="A function that closes a stream and frees any associated stream memory.">closeStream</a>(); <span class="keywordflow">return</span> 0; } </pre></div><p> In this example, audio recorded by the stream input will be played out during the next round of audio processing.<p> -Note that a duplex stream can make use of two different devices (except when using the Linux Jack and Windows ASIO APIs). However, this may cause timing problems due to possible device clock variations, unless a common external "sync" is provided. <HR> +Note that a duplex stream can make use of two different devices (except when using the Linux Jack and Windows ASIO APIs). However, this may cause timing problems due to possible device clock variations, unless a common external "sync" is provided. </div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/errors.html b/doc/html/errors.html index 98c5fcc..bbd5805 100644 --- a/doc/html/errors.html +++ b/doc/html/errors.html @@ -8,11 +8,13 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1><a class="anchor" name="errors">Error Handling</a></h1><a class="el" href="classRtAudio.html">RtAudio</a> makes restrained use of C++ exceptions. That is, exceptions are thrown only when system errors occur that prevent further class operation or when the user makes invalid function calls. In other cases, a warning message may be displayed and an appropriate value is returned. For example, if a system error occurs when processing the <a class="el" href="classRtAudio.html#a3">RtAudio::getDeviceCount()</a> function, the return value is zero. In such a case, the user cannot expect to make use of most other <a class="el" href="classRtAudio.html">RtAudio</a> functions because no devices are available (and thus a stream cannot be opened). A client can call the function <a class="el" href="classRtAudio.html#a16">RtAudio::showWarnings()</a> with a boolean argument to enable or disable the printing of warning messages to <code>stderr</code>. By default, warning messages are displayed. There is a protected <a class="el" href="classRtAudio.html">RtAudio</a> method, error(), that can be modified to globally control how these messages are handled and reported. <HR> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1><a class="anchor" name="errors">Error Handling </a></h1><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> makes restrained use of C++ exceptions. That is, exceptions are thrown only when system errors occur that prevent further class operation or when the user makes invalid function calls. In other cases, a warning message may be displayed and an appropriate value is returned. For example, if a system error occurs when processing the <a class="el" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">RtAudio::getDeviceCount()</a> function, the return value is zero. In such a case, the user cannot expect to make use of most other <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> functions because no devices are available (and thus a stream cannot be opened). A client can call the function <a class="el" href="classRtAudio.html#f0752ee51cce3dd90a3bd009f9fdbe77" title="Specify whether warning messages should be printed to stderr.">RtAudio::showWarnings()</a> with a boolean argument to enable or disable the printing of warning messages to <code>stderr</code>. By default, warning messages are displayed. There is a protected <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> method, error(), that can be modified to globally control how these messages are handled and reported. </div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/files.html b/doc/html/files.html index 988b884..4505706 100644 --- a/doc/html/files.html +++ b/doc/html/files.html @@ -8,15 +8,17 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1>RtAudio File List</h1>Here is a list of all documented files with brief descriptions:<table> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1>File List</h1>Here is a list of all documented files with brief descriptions:<table> <tr><td class="indexkey"><a class="el" href="RtAudio_8h.html">RtAudio.h</a> <a href="RtAudio_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> <tr><td class="indexkey"><b>RtError.h</b> <a href="RtError_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr> </table> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/functions.html b/doc/html/functions.html index b1196a0..89fca6e 100644 --- a/doc/html/functions.html +++ b/doc/html/functions.html @@ -8,110 +8,202 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_enum.html">Enumerations</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div> -<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_u">u</a> | <a class="qindex" href="#index_w">w</a> | <a class="qindex" href="#index_~">~</a></div> - -<p> +<!-- Generated by Doxygen 1.5.8 --> + <div class="tabs"> + <ul> + <li class="current"><a href="functions.html"><span>All</span></a></li> + <li><a href="functions_func.html"><span>Functions</span></a></li> + <li><a href="functions_vars.html"><span>Variables</span></a></li> + <li><a href="functions_enum.html"><span>Enumerations</span></a></li> + <li><a href="functions_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> + <div class="tabs"> + <ul> + <li><a href="#index_a"><span>a</span></a></li> + <li><a href="#index_c"><span>c</span></a></li> + <li><a href="#index_d"><span>d</span></a></li> + <li><a href="#index_f"><span>f</span></a></li> + <li><a href="#index_g"><span>g</span></a></li> + <li><a href="#index_i"><span>i</span></a></li> + <li><a href="#index_l"><span>l</span></a></li> + <li><a href="#index_m"><span>m</span></a></li> + <li><a href="#index_n"><span>n</span></a></li> + <li><a href="#index_o"><span>o</span></a></li> + <li><a href="#index_p"><span>p</span></a></li> + <li><a href="#index_r"><span>r</span></a></li> + <li><a href="#index_s"><span>s</span></a></li> + <li><a href="#index_t"><span>t</span></a></li> + <li><a href="#index_u"><span>u</span></a></li> + <li><a href="#index_w"><span>w</span></a></li> + <li><a href="#index_~"><span>~</span></a></li> + </ul> + </div> +<div class="contents"> Here is a list of all documented class members with links to the class documentation for each member: <p> <h3><a class="anchor" name="index_a">- a -</a></h3><ul> <li>abortStream() -: <a class="el" href="classRtAudio.html#a11">RtAudio</a><li>Api -: <a class="el" href="classRtAudio.html#w8">RtAudio</a></ul> +: <a class="el" href="classRtAudio.html#d0586b47cd6bb9591a80b4052815991f">RtAudio</a> +<li>Api +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849">RtAudio</a> +</ul> <h3><a class="anchor" name="index_c">- c -</a></h3><ul> <li>closeStream() -: <a class="el" href="classRtAudio.html#a8">RtAudio</a></ul> +: <a class="el" href="classRtAudio.html#90d599002ad32cf250a4cb866f2cc93a">RtAudio</a> +</ul> <h3><a class="anchor" name="index_d">- d -</a></h3><ul> <li>DEBUG_WARNING -: <a class="el" href="classRtError.html#w11w1">RtError</a><li>deviceId -: <a class="el" href="structRtAudio_1_1StreamParameters.html#o0">RtAudio::StreamParameters</a><li>DRIVER_ERROR -: <a class="el" href="classRtError.html#w11w8">RtError</a><li>duplexChannels -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o4">RtAudio::DeviceInfo</a></ul> +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac20e5a369394d19b704ace17002007eba">RtError</a> +<li>deviceId +: <a class="el" href="structRtAudio_1_1StreamParameters.html#ffd27496c70c0986522056234c64e28e">RtAudio::RtAudio::StreamParameters</a> +<li>DRIVER_ERROR +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac995e97ecf6beeedaba525022a63aec6b">RtError</a> +<li>duplexChannels +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#ca6ecfb8b5b8c114c54809d8af50ee5b">RtAudio::RtAudio::DeviceInfo</a> +</ul> <h3><a class="anchor" name="index_f">- f -</a></h3><ul> <li>firstChannel -: <a class="el" href="structRtAudio_1_1StreamParameters.html#o2">RtAudio::StreamParameters</a><li>flags -: <a class="el" href="structRtAudio_1_1StreamOptions.html#o0">RtAudio::StreamOptions</a></ul> +: <a class="el" href="structRtAudio_1_1StreamParameters.html#ddc8281f23a87455ec6dedbc766a74db">RtAudio::RtAudio::StreamParameters</a> +<li>flags +: <a class="el" href="structRtAudio_1_1StreamOptions.html#6a284d045b8adcfcf178a4f6a22330f8">RtAudio::RtAudio::StreamOptions</a> +</ul> <h3><a class="anchor" name="index_g">- g -</a></h3><ul> <li>getCompiledApi() -: <a class="el" href="classRtAudio.html#e0">RtAudio</a><li>getCurrentApi() -: <a class="el" href="classRtAudio.html#a2">RtAudio</a><li>getDefaultInputDevice() -: <a class="el" href="classRtAudio.html#a6">RtAudio</a><li>getDefaultOutputDevice() -: <a class="el" href="classRtAudio.html#a5">RtAudio</a><li>getDeviceCount() -: <a class="el" href="classRtAudio.html#a3">RtAudio</a><li>getDeviceInfo() -: <a class="el" href="classRtAudio.html#a4">RtAudio</a><li>getMessage() -: <a class="el" href="classRtError.html#a4">RtError</a><li>getStreamLatency() -: <a class="el" href="classRtAudio.html#a15">RtAudio</a><li>getStreamTime() -: <a class="el" href="classRtAudio.html#a14">RtAudio</a><li>getType() -: <a class="el" href="classRtError.html#a3">RtError</a></ul> +: <a class="el" href="classRtAudio.html#e266ffad2ef428d0b2c6c262d391ce26">RtAudio</a> +<li>getCurrentApi() +: <a class="el" href="classRtAudio.html#83687634795792b2c47e4ae1cf8a5246">RtAudio</a> +<li>getDefaultInputDevice() +: <a class="el" href="classRtAudio.html#ad8b94edd3cd379ee300b125750ac6ce">RtAudio</a> +<li>getDefaultOutputDevice() +: <a class="el" href="classRtAudio.html#3a3f3dbe13ea696b521e49cdaaa357bc">RtAudio</a> +<li>getDeviceCount() +: <a class="el" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a">RtAudio</a> +<li>getDeviceInfo() +: <a class="el" href="classRtAudio.html#02d7ff44ad1d7eae22283a052f3dfda8">RtAudio</a> +<li>getMessage() +: <a class="el" href="classRtError.html#c7f467788e29d246333d7af050801164">RtError</a> +<li>getStreamLatency() +: <a class="el" href="classRtAudio.html#843c989d9f501c71bc2f2c5ca18df9f3">RtAudio</a> +<li>getStreamSampleRate() +: <a class="el" href="classRtAudio.html#28214b8b05d60b45c24ee6fae7b2a0b5">RtAudio</a> +<li>getStreamTime() +: <a class="el" href="classRtAudio.html#344e59a62353c5791db4621b985cb2ca">RtAudio</a> +<li>getType() +: <a class="el" href="classRtError.html#4ee7df9728d73f533afbaddcd9ca4d9c">RtError</a> +</ul> <h3><a class="anchor" name="index_i">- i -</a></h3><ul> <li>inputChannels -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o3">RtAudio::DeviceInfo</a><li>INVALID_DEVICE -: <a class="el" href="classRtError.html#w11w4">RtError</a><li>INVALID_PARAMETER -: <a class="el" href="classRtError.html#w11w6">RtError</a><li>INVALID_USE -: <a class="el" href="classRtError.html#w11w7">RtError</a><li>isDefaultInput -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o6">RtAudio::DeviceInfo</a><li>isDefaultOutput -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o5">RtAudio::DeviceInfo</a><li>isStreamOpen() -: <a class="el" href="classRtAudio.html#a12">RtAudio</a><li>isStreamRunning() -: <a class="el" href="classRtAudio.html#a13">RtAudio</a></ul> +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#731b31adf84c550ab98329be1baa58b4">RtAudio::RtAudio::DeviceInfo</a> +<li>INVALID_DEVICE +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acd6064062066fffdba258237a7c2159b1">RtError</a> +<li>INVALID_PARAMETER +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903aca3eabf0f71120beaba94148a1b78fed6">RtError</a> +<li>INVALID_USE +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac8e65f51a3fbdc1a4a1552b3260df36bc">RtError</a> +<li>isDefaultInput +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#a8b03618fa1d4c051f6add14bb031728">RtAudio::RtAudio::DeviceInfo</a> +<li>isDefaultOutput +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#af74fc23f451fdd22ed073a47f0db674">RtAudio::RtAudio::DeviceInfo</a> +<li>isStreamOpen() +: <a class="el" href="classRtAudio.html#3863e45ff81dbe97176de0ee7545917f">RtAudio</a> +<li>isStreamRunning() +: <a class="el" href="classRtAudio.html#84cc8d9b7ab9bc5f37bcf48430ec5aea">RtAudio</a> +</ul> <h3><a class="anchor" name="index_l">- l -</a></h3><ul> <li>LINUX_ALSA -: <a class="el" href="classRtAudio.html#w8w1">RtAudio</a><li>LINUX_OSS -: <a class="el" href="classRtAudio.html#w8w2">RtAudio</a></ul> +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a7a2ba095c2806caa893b6fb8fc3a1a8">RtAudio</a> +<li>LINUX_OSS +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84939c84615e61de75e6a4e865596d62c82">RtAudio</a> +</ul> <h3><a class="anchor" name="index_m">- m -</a></h3><ul> <li>MACOSX_CORE -: <a class="el" href="classRtAudio.html#w8w4">RtAudio</a><li>MEMORY_ERROR -: <a class="el" href="classRtError.html#w11w5">RtError</a></ul> +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8499fec92b8272244a87a6a11a717bd662d">RtAudio</a> +<li>MEMORY_ERROR +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acb4f813e5a36905c89d4081a59497432e">RtError</a> +</ul> <h3><a class="anchor" name="index_n">- n -</a></h3><ul> <li>name -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o1">RtAudio::DeviceInfo</a><li>nativeFormats -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o8">RtAudio::DeviceInfo</a><li>nChannels -: <a class="el" href="structRtAudio_1_1StreamParameters.html#o1">RtAudio::StreamParameters</a><li>NO_DEVICES_FOUND -: <a class="el" href="classRtError.html#w11w3">RtError</a><li>numberOfBuffers -: <a class="el" href="structRtAudio_1_1StreamOptions.html#o1">RtAudio::StreamOptions</a></ul> +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#a0e2ea10c52c206c9e105ac76b01f194">RtAudio::RtAudio::DeviceInfo</a> +<li>nativeFormats +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#97559ee4a1f2c8cfb765949e6193e1f4">RtAudio::RtAudio::DeviceInfo</a> +<li>nChannels +: <a class="el" href="structRtAudio_1_1StreamParameters.html#78798b65fada7941e1a7e47c11c9e627">RtAudio::RtAudio::StreamParameters</a> +<li>NO_DEVICES_FOUND +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acf267eb2d710f33d649ba840eeab6ff82">RtError</a> +<li>numberOfBuffers +: <a class="el" href="structRtAudio_1_1StreamOptions.html#5a04d3c3d0c1cfa063872ecff383af1d">RtAudio::RtAudio::StreamOptions</a> +</ul> <h3><a class="anchor" name="index_o">- o -</a></h3><ul> <li>openStream() -: <a class="el" href="classRtAudio.html#a7">RtAudio</a><li>outputChannels -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o2">RtAudio::DeviceInfo</a></ul> +: <a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8">RtAudio</a> +<li>outputChannels +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#185f8aac1095de4fbb6e0076875d24c4">RtAudio::RtAudio::DeviceInfo</a> +</ul> <h3><a class="anchor" name="index_p">- p -</a></h3><ul> <li>printMessage() -: <a class="el" href="classRtError.html#a2">RtError</a><li>probed -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o0">RtAudio::DeviceInfo</a></ul> +: <a class="el" href="classRtError.html#da41f7472122f45bc5b4677f066e0943">RtError</a> +<li>priority +: <a class="el" href="structRtAudio_1_1StreamOptions.html#81b364f137d1ee1073b74dac666af352">RtAudio::RtAudio::StreamOptions</a> +<li>probed +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#5bf008c629ef493c713ec870d0217407">RtAudio::RtAudio::DeviceInfo</a> +</ul> <h3><a class="anchor" name="index_r">- r -</a></h3><ul> <li>RtAudio() -: <a class="el" href="classRtAudio.html#a0">RtAudio</a><li>RTAUDIO_DUMMY -: <a class="el" href="classRtAudio.html#w8w7">RtAudio</a><li>RtError() -: <a class="el" href="classRtError.html#a0">RtError</a></ul> +: <a class="el" href="classRtAudio.html#fd0bfa26deae9804e18faff59d0273d9">RtAudio</a> +<li>RTAUDIO_DUMMY +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849b06b8fd88bf18c9a2b8271f6961ae2d1">RtAudio</a> +<li>RtError() +: <a class="el" href="classRtError.html#a479a305ccbe56be0fd9137b9b405a37">RtError</a> +</ul> <h3><a class="anchor" name="index_s">- s -</a></h3><ul> <li>sampleRates -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o7">RtAudio::DeviceInfo</a><li>showWarnings() -: <a class="el" href="classRtAudio.html#a16">RtAudio</a><li>startStream() -: <a class="el" href="classRtAudio.html#a9">RtAudio</a><li>stopStream() -: <a class="el" href="classRtAudio.html#a10">RtAudio</a><li>streamName -: <a class="el" href="structRtAudio_1_1StreamOptions.html#o2">RtAudio::StreamOptions</a><li>SYSTEM_ERROR -: <a class="el" href="classRtError.html#w11w9">RtError</a></ul> +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#5b158efcbfbd30e7226df92d0109d475">RtAudio::RtAudio::DeviceInfo</a> +<li>showWarnings() +: <a class="el" href="classRtAudio.html#f0752ee51cce3dd90a3bd009f9fdbe77">RtAudio</a> +<li>startStream() +: <a class="el" href="classRtAudio.html#ec017a89629ccef66a90b60be22a2f80">RtAudio</a> +<li>stopStream() +: <a class="el" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd">RtAudio</a> +<li>streamName +: <a class="el" href="structRtAudio_1_1StreamOptions.html#214da35056f18ffb7c8e4dc074a01a9a">RtAudio::RtAudio::StreamOptions</a> +<li>SYSTEM_ERROR +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac8947d0a2e2a84ecf3646271844e06a6b">RtError</a> +</ul> <h3><a class="anchor" name="index_t">- t -</a></h3><ul> <li>THREAD_ERROR -: <a class="el" href="classRtError.html#w11w10">RtError</a><li>Type -: <a class="el" href="classRtError.html#w11">RtError</a></ul> +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903aceb6282f991e2d93ab294a4272fc3f6c6">RtError</a> +<li>Type +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac">RtError</a> +</ul> <h3><a class="anchor" name="index_u">- u -</a></h3><ul> <li>UNIX_JACK -: <a class="el" href="classRtAudio.html#w8w3">RtAudio</a><li>UNSPECIFIED -: <a class="el" href="classRtError.html#w11w2">RtError</a>, <a class="el" href="classRtAudio.html#w8w0">RtAudio</a></ul> +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8494767e17c6edfbd827f91763915df4105">RtAudio</a> +<li>UNSPECIFIED +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac444efd3ccf774b2ba9f9bde70ec71cd6">RtError</a> +, <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a49af3ac767106158bc6cad74fb214ae">RtAudio</a> +</ul> <h3><a class="anchor" name="index_w">- w -</a></h3><ul> <li>WARNING -: <a class="el" href="classRtError.html#w11w0">RtError</a><li>what() -: <a class="el" href="classRtError.html#a5">RtError</a><li>WINDOWS_ASIO -: <a class="el" href="classRtAudio.html#w8w5">RtAudio</a><li>WINDOWS_DS -: <a class="el" href="classRtAudio.html#w8w6">RtAudio</a></ul> +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac3a1603c24a56cbdaf5f8ae4ddcb86398">RtError</a> +<li>what() +: <a class="el" href="classRtError.html#eb843b7a7785d66061c61ebfc29e7e9d">RtError</a> +<li>WINDOWS_ASIO +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849219517d1df90f94d07758481155bd469">RtAudio</a> +<li>WINDOWS_DS +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84928478830f42c2fd61e6c7ad498901931">RtAudio</a> +</ul> <h3><a class="anchor" name="index_~">- ~ -</a></h3><ul> <li>~RtAudio() -: <a class="el" href="classRtAudio.html#a1">RtAudio</a><li>~RtError() -: <a class="el" href="classRtError.html#a1">RtError</a></ul> +: <a class="el" href="classRtAudio.html#a8a9716fd64680657ef69c9465442a2f">RtAudio</a> +<li>~RtError() +: <a class="el" href="classRtError.html#6793e03386e7e69ffafb65a296dfa48c">RtError</a> +</ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html index a70132c..007c4f6 100644 --- a/doc/html/functions_enum.html +++ b/doc/html/functions_enum.html @@ -8,18 +8,30 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindexHL" href="functions_enum.html">Enumerations</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div> - +<!-- Generated by Doxygen 1.5.8 --> + <div class="tabs"> + <ul> + <li><a href="functions.html"><span>All</span></a></li> + <li><a href="functions_func.html"><span>Functions</span></a></li> + <li><a href="functions_vars.html"><span>Variables</span></a></li> + <li class="current"><a href="functions_enum.html"><span>Enumerations</span></a></li> + <li><a href="functions_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> +<div class="contents"> + <p> <ul> <li>Api -: <a class="el" href="classRtAudio.html#w8">RtAudio</a><li>Type -: <a class="el" href="classRtError.html#w11">RtError</a></ul> +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849">RtAudio</a> +<li>Type +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac">RtError</a> +</ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html index d0ffb4e..92c8793 100644 --- a/doc/html/functions_eval.html +++ b/doc/html/functions_eval.html @@ -8,34 +8,63 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_enum.html">Enumerations</a> | <a class="qindexHL" href="functions_eval.html">Enumerator</a></div> - +<!-- Generated by Doxygen 1.5.8 --> + <div class="tabs"> + <ul> + <li><a href="functions.html"><span>All</span></a></li> + <li><a href="functions_func.html"><span>Functions</span></a></li> + <li><a href="functions_vars.html"><span>Variables</span></a></li> + <li><a href="functions_enum.html"><span>Enumerations</span></a></li> + <li class="current"><a href="functions_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> +<div class="contents"> + <p> <ul> <li>DEBUG_WARNING -: <a class="el" href="classRtError.html#w11w1">RtError</a><li>DRIVER_ERROR -: <a class="el" href="classRtError.html#w11w8">RtError</a><li>INVALID_DEVICE -: <a class="el" href="classRtError.html#w11w4">RtError</a><li>INVALID_PARAMETER -: <a class="el" href="classRtError.html#w11w6">RtError</a><li>INVALID_USE -: <a class="el" href="classRtError.html#w11w7">RtError</a><li>LINUX_ALSA -: <a class="el" href="classRtAudio.html#w8w1">RtAudio</a><li>LINUX_OSS -: <a class="el" href="classRtAudio.html#w8w2">RtAudio</a><li>MACOSX_CORE -: <a class="el" href="classRtAudio.html#w8w4">RtAudio</a><li>MEMORY_ERROR -: <a class="el" href="classRtError.html#w11w5">RtError</a><li>NO_DEVICES_FOUND -: <a class="el" href="classRtError.html#w11w3">RtError</a><li>RTAUDIO_DUMMY -: <a class="el" href="classRtAudio.html#w8w7">RtAudio</a><li>SYSTEM_ERROR -: <a class="el" href="classRtError.html#w11w9">RtError</a><li>THREAD_ERROR -: <a class="el" href="classRtError.html#w11w10">RtError</a><li>UNIX_JACK -: <a class="el" href="classRtAudio.html#w8w3">RtAudio</a><li>UNSPECIFIED -: <a class="el" href="classRtError.html#w11w2">RtError</a>, <a class="el" href="classRtAudio.html#w8w0">RtAudio</a><li>WARNING -: <a class="el" href="classRtError.html#w11w0">RtError</a><li>WINDOWS_ASIO -: <a class="el" href="classRtAudio.html#w8w5">RtAudio</a><li>WINDOWS_DS -: <a class="el" href="classRtAudio.html#w8w6">RtAudio</a></ul> +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac20e5a369394d19b704ace17002007eba">RtError</a> +<li>DRIVER_ERROR +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac995e97ecf6beeedaba525022a63aec6b">RtError</a> +<li>INVALID_DEVICE +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acd6064062066fffdba258237a7c2159b1">RtError</a> +<li>INVALID_PARAMETER +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903aca3eabf0f71120beaba94148a1b78fed6">RtError</a> +<li>INVALID_USE +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac8e65f51a3fbdc1a4a1552b3260df36bc">RtError</a> +<li>LINUX_ALSA +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a7a2ba095c2806caa893b6fb8fc3a1a8">RtAudio</a> +<li>LINUX_OSS +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84939c84615e61de75e6a4e865596d62c82">RtAudio</a> +<li>MACOSX_CORE +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8499fec92b8272244a87a6a11a717bd662d">RtAudio</a> +<li>MEMORY_ERROR +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acb4f813e5a36905c89d4081a59497432e">RtError</a> +<li>NO_DEVICES_FOUND +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903acf267eb2d710f33d649ba840eeab6ff82">RtError</a> +<li>RTAUDIO_DUMMY +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849b06b8fd88bf18c9a2b8271f6961ae2d1">RtAudio</a> +<li>SYSTEM_ERROR +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac8947d0a2e2a84ecf3646271844e06a6b">RtError</a> +<li>THREAD_ERROR +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903aceb6282f991e2d93ab294a4272fc3f6c6">RtError</a> +<li>UNIX_JACK +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d8494767e17c6edfbd827f91763915df4105">RtAudio</a> +<li>UNSPECIFIED +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac444efd3ccf774b2ba9f9bde70ec71cd6">RtError</a> +, <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849a49af3ac767106158bc6cad74fb214ae">RtAudio</a> +<li>WARNING +: <a class="el" href="classRtError.html#b04667aae01bffc354a9ac6bda6903ac3a1603c24a56cbdaf5f8ae4ddcb86398">RtError</a> +<li>WINDOWS_ASIO +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849219517d1df90f94d07758481155bd469">RtAudio</a> +<li>WINDOWS_DS +: <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84928478830f42c2fd61e6c7ad498901931">RtAudio</a> +</ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html index 1fdd9be..c5520d9 100644 --- a/doc/html/functions_func.html +++ b/doc/html/functions_func.html @@ -8,40 +8,76 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_enum.html">Enumerations</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div> - +<!-- Generated by Doxygen 1.5.8 --> + <div class="tabs"> + <ul> + <li><a href="functions.html"><span>All</span></a></li> + <li class="current"><a href="functions_func.html"><span>Functions</span></a></li> + <li><a href="functions_vars.html"><span>Variables</span></a></li> + <li><a href="functions_enum.html"><span>Enumerations</span></a></li> + <li><a href="functions_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> +<div class="contents"> + <p> <ul> <li>abortStream() -: <a class="el" href="classRtAudio.html#a11">RtAudio</a><li>closeStream() -: <a class="el" href="classRtAudio.html#a8">RtAudio</a><li>getCompiledApi() -: <a class="el" href="classRtAudio.html#e0">RtAudio</a><li>getCurrentApi() -: <a class="el" href="classRtAudio.html#a2">RtAudio</a><li>getDefaultInputDevice() -: <a class="el" href="classRtAudio.html#a6">RtAudio</a><li>getDefaultOutputDevice() -: <a class="el" href="classRtAudio.html#a5">RtAudio</a><li>getDeviceCount() -: <a class="el" href="classRtAudio.html#a3">RtAudio</a><li>getDeviceInfo() -: <a class="el" href="classRtAudio.html#a4">RtAudio</a><li>getMessage() -: <a class="el" href="classRtError.html#a4">RtError</a><li>getStreamLatency() -: <a class="el" href="classRtAudio.html#a15">RtAudio</a><li>getStreamTime() -: <a class="el" href="classRtAudio.html#a14">RtAudio</a><li>getType() -: <a class="el" href="classRtError.html#a3">RtError</a><li>isStreamOpen() -: <a class="el" href="classRtAudio.html#a12">RtAudio</a><li>isStreamRunning() -: <a class="el" href="classRtAudio.html#a13">RtAudio</a><li>openStream() -: <a class="el" href="classRtAudio.html#a7">RtAudio</a><li>printMessage() -: <a class="el" href="classRtError.html#a2">RtError</a><li>RtAudio() -: <a class="el" href="classRtAudio.html#a0">RtAudio</a><li>RtError() -: <a class="el" href="classRtError.html#a0">RtError</a><li>showWarnings() -: <a class="el" href="classRtAudio.html#a16">RtAudio</a><li>startStream() -: <a class="el" href="classRtAudio.html#a9">RtAudio</a><li>stopStream() -: <a class="el" href="classRtAudio.html#a10">RtAudio</a><li>what() -: <a class="el" href="classRtError.html#a5">RtError</a><li>~RtAudio() -: <a class="el" href="classRtAudio.html#a1">RtAudio</a><li>~RtError() -: <a class="el" href="classRtError.html#a1">RtError</a></ul> +: <a class="el" href="classRtAudio.html#d0586b47cd6bb9591a80b4052815991f">RtAudio</a> +<li>closeStream() +: <a class="el" href="classRtAudio.html#90d599002ad32cf250a4cb866f2cc93a">RtAudio</a> +<li>getCompiledApi() +: <a class="el" href="classRtAudio.html#e266ffad2ef428d0b2c6c262d391ce26">RtAudio</a> +<li>getCurrentApi() +: <a class="el" href="classRtAudio.html#83687634795792b2c47e4ae1cf8a5246">RtAudio</a> +<li>getDefaultInputDevice() +: <a class="el" href="classRtAudio.html#ad8b94edd3cd379ee300b125750ac6ce">RtAudio</a> +<li>getDefaultOutputDevice() +: <a class="el" href="classRtAudio.html#3a3f3dbe13ea696b521e49cdaaa357bc">RtAudio</a> +<li>getDeviceCount() +: <a class="el" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a">RtAudio</a> +<li>getDeviceInfo() +: <a class="el" href="classRtAudio.html#02d7ff44ad1d7eae22283a052f3dfda8">RtAudio</a> +<li>getMessage() +: <a class="el" href="classRtError.html#c7f467788e29d246333d7af050801164">RtError</a> +<li>getStreamLatency() +: <a class="el" href="classRtAudio.html#843c989d9f501c71bc2f2c5ca18df9f3">RtAudio</a> +<li>getStreamSampleRate() +: <a class="el" href="classRtAudio.html#28214b8b05d60b45c24ee6fae7b2a0b5">RtAudio</a> +<li>getStreamTime() +: <a class="el" href="classRtAudio.html#344e59a62353c5791db4621b985cb2ca">RtAudio</a> +<li>getType() +: <a class="el" href="classRtError.html#4ee7df9728d73f533afbaddcd9ca4d9c">RtError</a> +<li>isStreamOpen() +: <a class="el" href="classRtAudio.html#3863e45ff81dbe97176de0ee7545917f">RtAudio</a> +<li>isStreamRunning() +: <a class="el" href="classRtAudio.html#84cc8d9b7ab9bc5f37bcf48430ec5aea">RtAudio</a> +<li>openStream() +: <a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8">RtAudio</a> +<li>printMessage() +: <a class="el" href="classRtError.html#da41f7472122f45bc5b4677f066e0943">RtError</a> +<li>RtAudio() +: <a class="el" href="classRtAudio.html#fd0bfa26deae9804e18faff59d0273d9">RtAudio</a> +<li>RtError() +: <a class="el" href="classRtError.html#a479a305ccbe56be0fd9137b9b405a37">RtError</a> +<li>showWarnings() +: <a class="el" href="classRtAudio.html#f0752ee51cce3dd90a3bd009f9fdbe77">RtAudio</a> +<li>startStream() +: <a class="el" href="classRtAudio.html#ec017a89629ccef66a90b60be22a2f80">RtAudio</a> +<li>stopStream() +: <a class="el" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd">RtAudio</a> +<li>what() +: <a class="el" href="classRtError.html#eb843b7a7785d66061c61ebfc29e7e9d">RtError</a> +<li>~RtAudio() +: <a class="el" href="classRtAudio.html#a8a9716fd64680657ef69c9465442a2f">RtAudio</a> +<li>~RtError() +: <a class="el" href="classRtError.html#6793e03386e7e69ffafb65a296dfa48c">RtError</a> +</ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html index e0ab54f..d28575c 100644 --- a/doc/html/functions_vars.html +++ b/doc/html/functions_vars.html @@ -8,31 +8,58 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindexHL" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_enum.html">Enumerations</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div> - +<!-- Generated by Doxygen 1.5.8 --> + <div class="tabs"> + <ul> + <li><a href="functions.html"><span>All</span></a></li> + <li><a href="functions_func.html"><span>Functions</span></a></li> + <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li> + <li><a href="functions_enum.html"><span>Enumerations</span></a></li> + <li><a href="functions_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> +<div class="contents"> + <p> <ul> <li>deviceId -: <a class="el" href="structRtAudio_1_1StreamParameters.html#o0">RtAudio::StreamParameters</a><li>duplexChannels -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o4">RtAudio::DeviceInfo</a><li>firstChannel -: <a class="el" href="structRtAudio_1_1StreamParameters.html#o2">RtAudio::StreamParameters</a><li>flags -: <a class="el" href="structRtAudio_1_1StreamOptions.html#o0">RtAudio::StreamOptions</a><li>inputChannels -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o3">RtAudio::DeviceInfo</a><li>isDefaultInput -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o6">RtAudio::DeviceInfo</a><li>isDefaultOutput -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o5">RtAudio::DeviceInfo</a><li>name -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o1">RtAudio::DeviceInfo</a><li>nativeFormats -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o8">RtAudio::DeviceInfo</a><li>nChannels -: <a class="el" href="structRtAudio_1_1StreamParameters.html#o1">RtAudio::StreamParameters</a><li>numberOfBuffers -: <a class="el" href="structRtAudio_1_1StreamOptions.html#o1">RtAudio::StreamOptions</a><li>outputChannels -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o2">RtAudio::DeviceInfo</a><li>probed -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o0">RtAudio::DeviceInfo</a><li>sampleRates -: <a class="el" href="structRtAudio_1_1DeviceInfo.html#o7">RtAudio::DeviceInfo</a><li>streamName -: <a class="el" href="structRtAudio_1_1StreamOptions.html#o2">RtAudio::StreamOptions</a></ul> +: <a class="el" href="structRtAudio_1_1StreamParameters.html#ffd27496c70c0986522056234c64e28e">RtAudio::RtAudio::StreamParameters</a> +<li>duplexChannels +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#ca6ecfb8b5b8c114c54809d8af50ee5b">RtAudio::RtAudio::DeviceInfo</a> +<li>firstChannel +: <a class="el" href="structRtAudio_1_1StreamParameters.html#ddc8281f23a87455ec6dedbc766a74db">RtAudio::RtAudio::StreamParameters</a> +<li>flags +: <a class="el" href="structRtAudio_1_1StreamOptions.html#6a284d045b8adcfcf178a4f6a22330f8">RtAudio::RtAudio::StreamOptions</a> +<li>inputChannels +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#731b31adf84c550ab98329be1baa58b4">RtAudio::RtAudio::DeviceInfo</a> +<li>isDefaultInput +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#a8b03618fa1d4c051f6add14bb031728">RtAudio::RtAudio::DeviceInfo</a> +<li>isDefaultOutput +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#af74fc23f451fdd22ed073a47f0db674">RtAudio::RtAudio::DeviceInfo</a> +<li>name +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#a0e2ea10c52c206c9e105ac76b01f194">RtAudio::RtAudio::DeviceInfo</a> +<li>nativeFormats +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#97559ee4a1f2c8cfb765949e6193e1f4">RtAudio::RtAudio::DeviceInfo</a> +<li>nChannels +: <a class="el" href="structRtAudio_1_1StreamParameters.html#78798b65fada7941e1a7e47c11c9e627">RtAudio::RtAudio::StreamParameters</a> +<li>numberOfBuffers +: <a class="el" href="structRtAudio_1_1StreamOptions.html#5a04d3c3d0c1cfa063872ecff383af1d">RtAudio::RtAudio::StreamOptions</a> +<li>outputChannels +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#185f8aac1095de4fbb6e0076875d24c4">RtAudio::RtAudio::DeviceInfo</a> +<li>priority +: <a class="el" href="structRtAudio_1_1StreamOptions.html#81b364f137d1ee1073b74dac666af352">RtAudio::RtAudio::StreamOptions</a> +<li>probed +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#5bf008c629ef493c713ec870d0217407">RtAudio::RtAudio::DeviceInfo</a> +<li>sampleRates +: <a class="el" href="structRtAudio_1_1DeviceInfo.html#5b158efcbfbd30e7226df92d0109d475">RtAudio::RtAudio::DeviceInfo</a> +<li>streamName +: <a class="el" href="structRtAudio_1_1StreamOptions.html#214da35056f18ffb7c8e4dc074a01a9a">RtAudio::RtAudio::StreamOptions</a> +</ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/globals.html b/doc/html/globals.html index f071050..4140e96 100644 --- a/doc/html/globals.html +++ b/doc/html/globals.html @@ -8,20 +8,31 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<div class="qindex"><a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_type.html">Typedefs</a></div> +<!-- Generated by Doxygen 1.5.8 --> + <div class="tabs"> + <ul> + <li class="current"><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + </ul> + </div> +<div class="contents"> Here is a list of all documented file members with links to the documentation: <p> <ul> <li>RtAudioCallback -: <a class="el" href="RtAudio_8h.html#a15">RtAudio.h</a><li>RtAudioFormat -: <a class="el" href="RtAudio_8h.html#a1">RtAudio.h</a><li>RtAudioStreamFlags -: <a class="el" href="RtAudio_8h.html#a8">RtAudio.h</a><li>RtAudioStreamStatus -: <a class="el" href="RtAudio_8h.html#a12">RtAudio.h</a></ul> +: <a class="el" href="RtAudio_8h.html#112c7b7e25a974977f6fc094cef1a31f">RtAudio.h</a> +<li>RtAudioFormat +: <a class="el" href="RtAudio_8h.html#afca92882d25915560018873221e44b8">RtAudio.h</a> +<li>RtAudioStreamFlags +: <a class="el" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41">RtAudio.h</a> +<li>RtAudioStreamStatus +: <a class="el" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806">RtAudio.h</a> +</ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/globals_type.html b/doc/html/globals_type.html index f97bf9d..eb3207e 100644 --- a/doc/html/globals_type.html +++ b/doc/html/globals_type.html @@ -8,20 +8,31 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindexHL" href="globals_type.html">Typedefs</a></div> - +<!-- Generated by Doxygen 1.5.8 --> + <div class="tabs"> + <ul> + <li><a href="globals.html"><span>All</span></a></li> + <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li> + </ul> + </div> +<div class="contents"> + <p> <ul> <li>RtAudioCallback -: <a class="el" href="RtAudio_8h.html#a15">RtAudio.h</a><li>RtAudioFormat -: <a class="el" href="RtAudio_8h.html#a1">RtAudio.h</a><li>RtAudioStreamFlags -: <a class="el" href="RtAudio_8h.html#a8">RtAudio.h</a><li>RtAudioStreamStatus -: <a class="el" href="RtAudio_8h.html#a12">RtAudio.h</a></ul> +: <a class="el" href="RtAudio_8h.html#112c7b7e25a974977f6fc094cef1a31f">RtAudio.h</a> +<li>RtAudioFormat +: <a class="el" href="RtAudio_8h.html#afca92882d25915560018873221e44b8">RtAudio.h</a> +<li>RtAudioStreamFlags +: <a class="el" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41">RtAudio.h</a> +<li>RtAudioStreamStatus +: <a class="el" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806">RtAudio.h</a> +</ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/index.html b/doc/html/index.html index 36ae05d..e0a50b1 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -8,10 +8,11 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1>The <a class="el" href="classRtAudio.html">RtAudio</a> Home Page </h1> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1>The RtAudio Home Page</h1> <p> -<h3 align="center">4.0.4 </h3><a class="el" href="classRtAudio.html">RtAudio</a> is a set of C++ classes that provide a common API (Application Programming Interface) for realtime audio input/output across Linux, Macintosh OS-X and Windows (DirectSound and ASIO) operating systems. <a class="el" href="classRtAudio.html">RtAudio</a> significantly simplifies the process of interacting with computer audio hardware. It was designed with the following objectives:<p> +<h3 align="center">4.0.5 </h3><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> is a set of C++ classes that provide a common API (Application Programming Interface) for realtime audio input/output across Linux, Macintosh OS-X and Windows (DirectSound and ASIO) operating systems. <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> significantly simplifies the process of interacting with computer audio hardware. It was designed with the following objectives:<p> <ul> <li> object-oriented C++ design </li> @@ -31,21 +32,22 @@ allow audio device capability probing </li> automatic internal conversion for data format, channel number compensation, (de)interleaving, and byte-swapping </li> </ul> <p> -<a class="el" href="classRtAudio.html">RtAudio</a> incorporates the concept of audio streams, which represent audio output (playback) and/or input (recording). Available audio devices and their capabilities can be enumerated and then specified when opening a stream. Where applicable, multiple API support can be compiled and a particular API specified when creating an <a class="el" href="classRtAudio.html">RtAudio</a> instance. See the <a class="el" href="apinotes.html">API Notes</a> section for information specific to each of the supported audio APIs.<h2><a class="anchor" name="whatsnew"> +<a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> incorporates the concept of audio streams, which represent audio output (playback) and/or input (recording). Available audio devices and their capabilities can be enumerated and then specified when opening a stream. Where applicable, multiple API support can be compiled and a particular API specified when creating an <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> instance. See the <a class="el" href="apinotes.html">API Notes</a> section for information specific to each of the supported audio APIs.<h2><a class="anchor" name="whatsnew"> What's New (Version 4.0)</a></h2> -<a class="el" href="classRtAudio.html">RtAudio</a> V4 represents a significant rewrite of the code and includes a number of API and functionality changes from previous versions. A partial list of the changes includes:<ul> +<a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> V4 represents a significant rewrite of the code and includes a number of API and functionality changes from previous versions. A partial list of the changes includes:<ul> <li>new support for non-interleaved user data</li><li>additional input/output parameter specifications, including channel offset</li><li>new support for dynamic connection of devices</li><li>new support for stream time</li><li>revised callback arguments, including separate input and output buffer arguments</li><li>revised C++ exception handling</li><li>updated support for OSS version 4.0</li><li>discontinued support of blocking functionality</li><li>discontinued support of SGI</li></ul> <p> -Devices are now re-enumerated every time the <a class="el" href="classRtAudio.html#a3">RtAudio::getDeviceCount()</a>, <a class="el" href="classRtAudio.html#a4">RtAudio::getDeviceInfo()</a>, and <a class="el" href="classRtAudio.html#a7">RtAudio::openStream()</a> functions are called. This allows for the proper identification of hot-pluggable (USB, Firewire, ...) devices that are connected after an <a class="el" href="classRtAudio.html">RtAudio</a> instance is created.<h2><a class="anchor" name="download"> +Devices are now re-enumerated every time the <a class="el" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">RtAudio::getDeviceCount()</a>, <a class="el" href="classRtAudio.html#02d7ff44ad1d7eae22283a052f3dfda8" title="Return an RtAudio::DeviceInfo structure for a specified device number.">RtAudio::getDeviceInfo()</a>, and <a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">RtAudio::openStream()</a> functions are called. This allows for the proper identification of hot-pluggable (USB, Firewire, ...) devices that are connected after an <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> instance is created.<h2><a class="anchor" name="download"> Download</a></h2> -Latest Release (24 January 2008): <a href="http://music.mcgill.ca/~gary/rtaudio/release/rtaudio-4.0.4.tar.gz">Version 4.0.4</a><h2><a class="anchor" name="documentation"> +Latest Release (2 February 2009): <a href="http://www.music.mcgill.ca/~gary/rtaudio/release/rtaudio-4.0.5.tar.gz">Version 4.0.5</a><h2><a class="anchor" name="documentation"> Documentation Links</a></h2> <ol type=1> <li><a class="el" href="errors.html">Error Handling</a></li><li><a class="el" href="probe.html">Probing Device Capabilities</a></li><li><a class="el" href="settings.html">Device Settings</a></li><li><a class="el" href="playback.html">Playback</a></li><li><a class="el" href="recording.html">Recording</a></li><li><a class="el" href="duplex.html">Duplex Mode</a></li><li><a class="el" href="multi.html">Using Simultaneous Multiple APIs</a></li><li><a class="el" href="compiling.html">Debugging & Compiling</a></li><li><a class="el" href="apinotes.html">API Notes</a></li><li><a class="el" href="acknowledge.html">Acknowledgements</a></li><li><a class="el" href="license.html">License</a></li><li><a href="bugs.html">Bug Tracker</a></li><li><a href="updates.html">Possible Updates</a></li><li><a href="http://sourceforge.net/projects/rtaudio">RtAudio at SourceForge</a> </li></ol> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/license.html b/doc/html/license.html index 177bcbe..80a7408 100644 --- a/doc/html/license.html +++ b/doc/html/license.html @@ -8,16 +8,18 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1><a class="anchor" name="license">License</a></h1><a class="el" href="classRtAudio.html">RtAudio</a>: a set of realtime audio i/o C++ classes<br> - Copyright (c) 2001-2007 Gary P. Scavone<p> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1><a class="anchor" name="license">License </a></h1><a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>: a set of realtime audio i/o C++ classes<br> + Copyright (c) 2001-2009 Gary P. Scavone<p> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:<p> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.<p> Any person wishing to distribute modifications to the Software is asked to send the modifications to the original developer so that they can be incorporated into the canonical version. This is, however, not a binding provision of this license.<p> -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. <HR> +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. </div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/multi.html b/doc/html/multi.html index 2d88b64..acc6088 100644 --- a/doc/html/multi.html +++ b/doc/html/multi.html @@ -8,12 +8,14 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1><a class="anchor" name="multi">Using Simultaneous Multiple APIs</a></h1>Because support for each audio API is encapsulated in a specific RtApi subclass, it is possible to compile and instantiate multiple API-specific subclasses on a given operating system. For example, one can compile both the RtApiDs and RtApiAsio classes on Windows operating systems by providing the appropriate preprocessor definitions, include files, and libraries for each. In a run-time situation, one might first attempt to determine whether any ASIO device drivers exist. This can be done by specifying the api argument <a class="el" href="classRtAudio.html#w8w5">RtAudio::WINDOWS_ASIO</a> when attempting to create an instance of <a class="el" href="classRtAudio.html">RtAudio</a>. If no available devices are found, then an instance of <a class="el" href="classRtAudio.html">RtAudio</a> with the api argument <a class="el" href="classRtAudio.html#w8w6">RtAudio::WINDOWS_DS</a> can be created. Alternately, if no api argument is specified, <a class="el" href="classRtAudio.html">RtAudio</a> will first look for an ASIO instance and then a DirectSound instance (on Linux systems, the default API search order is Jack, Alsa, and finally OSS). In theory, it should also be possible to have separate instances of <a class="el" href="classRtAudio.html">RtAudio</a> open at the same time with different underlying audio API support, though this has not been tested. It is difficult to know how well different audio APIs can simultaneously coexist on a given operating system. In particular, it is unlikely that the same device could be simultaneously controlled with two different audio APIs.<p> -The static function <a class="el" href="classRtAudio.html#e0">RtAudio::getCompiledApi()</a> is provided to determine the available compiled API support. The function <a class="el" href="classRtAudio.html#a2">RtAudio::getCurrentApi()</a> indicates the API selected for a given <a class="el" href="classRtAudio.html">RtAudio</a> instance. <HR> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1><a class="anchor" name="multi">Using Simultaneous Multiple APIs </a></h1>Because support for each audio API is encapsulated in a specific RtApi subclass, it is possible to compile and instantiate multiple API-specific subclasses on a given operating system. For example, one can compile both the RtApiDs and RtApiAsio classes on Windows operating systems by providing the appropriate preprocessor definitions, include files, and libraries for each. In a run-time situation, one might first attempt to determine whether any ASIO device drivers exist. This can be done by specifying the api argument <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d849219517d1df90f94d07758481155bd469">RtAudio::WINDOWS_ASIO</a> when attempting to create an instance of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>. If no available devices are found, then an instance of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> with the api argument <a class="el" href="classRtAudio.html#c9b6f625da88249d08a8409a9db0d84928478830f42c2fd61e6c7ad498901931">RtAudio::WINDOWS_DS</a> can be created. Alternately, if no api argument is specified, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> will first look for an ASIO instance and then a DirectSound instance (on Linux systems, the default API search order is Jack, Alsa, and finally OSS). In theory, it should also be possible to have separate instances of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> open at the same time with different underlying audio API support, though this has not been tested. It is difficult to know how well different audio APIs can simultaneously coexist on a given operating system. In particular, it is unlikely that the same device could be simultaneously controlled with two different audio APIs.<p> +The static function <a class="el" href="classRtAudio.html#e266ffad2ef428d0b2c6c262d391ce26" title="A static function to determine the available compiled audio APIs.">RtAudio::getCompiledApi()</a> is provided to determine the available compiled API support. The function <a class="el" href="classRtAudio.html#83687634795792b2c47e4ae1cf8a5246" title="Returns the audio API specifier for the current instance of RtAudio.">RtAudio::getCurrentApi()</a> indicates the API selected for a given <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> instance. </div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/pages.html b/doc/html/pages.html index 2d2f35f..b417146 100644 --- a/doc/html/pages.html +++ b/doc/html/pages.html @@ -8,8 +8,9 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1>RtAudio Related Pages</h1>Here is a list of all related documentation pages:<ul> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1>Related Pages</h1>Here is a list of all related documentation pages:<ul> <li><a class="el" href="acknowledge.html">Acknowledgements</a> <li><a class="el" href="apinotes.html">API Notes</a> @@ -33,10 +34,11 @@ <li><a class="el" href="settings.html">Device Settings</a> </ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/playback.html b/doc/html/playback.html index 0d6f2a0..0dbcab1 100644 --- a/doc/html/playback.html +++ b/doc/html/playback.html @@ -8,14 +8,16 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1><a class="anchor" name="playback">Playback</a></h1>In this example, we provide a complete program that demonstrates the use of <a class="el" href="classRtAudio.html">RtAudio</a> for audio playback. Our program produces a two-channel sawtooth waveform for output.<p> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1><a class="anchor" name="playback">Playback </a></h1>In this example, we provide a complete program that demonstrates the use of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> for audio playback. Our program produces a two-channel sawtooth waveform for output.<p> <div class="fragment"><pre class="fragment"><span class="preprocessor">#include "<a class="code" href="RtAudio_8h.html">RtAudio.h</a>"</span> <span class="preprocessor">#include <iostream></span> +<span class="preprocessor">#include <cstdlib></span> <span class="comment">// Two-channel sawtooth wave generator.</span> <span class="keywordtype">int</span> saw( <span class="keywordtype">void</span> *outputBuffer, <span class="keywordtype">void</span> *inputBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nBufferFrames, - <span class="keywordtype">double</span> streamTime, <a class="code" href="RtAudio_8h.html#a12">RtAudioStreamStatus</a> status, <span class="keywordtype">void</span> *userData ) + <span class="keywordtype">double</span> streamTime, <a class="code" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806" title="RtAudio stream status (over- or underflow) flags.">RtAudioStreamStatus</a> status, <span class="keywordtype">void</span> *userData ) { <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, j; <span class="keywordtype">double</span> *buffer = (<span class="keywordtype">double</span> *) outputBuffer; @@ -39,27 +41,27 @@ <span class="keywordtype">int</span> main() { - <a class="code" href="classRtAudio.html">RtAudio</a> dac; - <span class="keywordflow">if</span> ( dac.<a class="code" href="classRtAudio.html#a3">getDeviceCount</a>() < 1 ) { + <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> dac; + <span class="keywordflow">if</span> ( dac.<a class="code" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount</a>() < 1 ) { std::cout << <span class="stringliteral">"\nNo audio devices found!\n"</span>; exit( 0 ); } - <a class="code" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> parameters; - parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#o0">deviceId</a> = dac.<a class="code" href="classRtAudio.html#a5">getDefaultOutputDevice</a>(); - parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#o1">nChannels</a> = 2; - parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#o2">firstChannel</a> = 0; + <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">RtAudio::StreamParameters</a> parameters; + parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#ffd27496c70c0986522056234c64e28e">deviceId</a> = dac.<a class="code" href="classRtAudio.html#3a3f3dbe13ea696b521e49cdaaa357bc" title="A function that returns the index of the default output device.">getDefaultOutputDevice</a>(); + parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#78798b65fada7941e1a7e47c11c9e627">nChannels</a> = 2; + parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#ddc8281f23a87455ec6dedbc766a74db">firstChannel</a> = 0; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate = 44100; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferFrames = 256; <span class="comment">// 256 sample frames</span> <span class="keywordtype">double</span> data[2]; <span class="keywordflow">try</span> { - dac.<a class="code" href="classRtAudio.html#a7">openStream</a>( &parameters, NULL, RTAUDIO_FLOAT64, + dac.<a class="code" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">openStream</a>( &parameters, NULL, RTAUDIO_FLOAT64, sampleRate, &bufferFrames, &saw, (<span class="keywordtype">void</span> *)&data ); - dac.<a class="code" href="classRtAudio.html#a9">startStream</a>(); + dac.<a class="code" href="classRtAudio.html#ec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">startStream</a>(); } - <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html">RtError</a>& e ) { - e.<a class="code" href="classRtError.html#a2">printMessage</a>(); + <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html" title="Exception handling class for RtAudio &amp; RtMidi.">RtError</a>& e ) { + e.<a class="code" href="classRtError.html#da41f7472122f45bc5b4677f066e0943" title="Prints thrown error message to stderr.">printMessage</a>(); exit( 0 ); } @@ -69,22 +71,23 @@ <span class="keywordflow">try</span> { <span class="comment">// Stop the stream</span> - dac.<a class="code" href="classRtAudio.html#a10">stopStream</a>(); + dac.<a class="code" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">stopStream</a>(); } - <span class="keywordflow">catch</span> (<a class="code" href="classRtError.html">RtError</a>& e) { - e.<a class="code" href="classRtError.html#a2">printMessage</a>(); + <span class="keywordflow">catch</span> (<a class="code" href="classRtError.html" title="Exception handling class for RtAudio &amp; RtMidi.">RtError</a>& e) { + e.<a class="code" href="classRtError.html#da41f7472122f45bc5b4677f066e0943" title="Prints thrown error message to stderr.">printMessage</a>(); } - <span class="keywordflow">if</span> ( dac.<a class="code" href="classRtAudio.html#a12">isStreamOpen</a>() ) dac.<a class="code" href="classRtAudio.html#a8">closeStream</a>(); + <span class="keywordflow">if</span> ( dac.<a class="code" href="classRtAudio.html#3863e45ff81dbe97176de0ee7545917f" title="Returns true if a stream is open and false if not.">isStreamOpen</a>() ) dac.<a class="code" href="classRtAudio.html#90d599002ad32cf250a4cb866f2cc93a" title="A function that closes a stream and frees any associated stream memory.">closeStream</a>(); <span class="keywordflow">return</span> 0; } </pre></div><p> -We open the stream in exactly the same way as the previous example (except with a data format change) and specify the address of our callback function <em>"saw()"</em>. The callback function will automatically be invoked when the underlying audio system needs data for output. Note that the callback function is called only when the stream is "running" (between calls to the <a class="el" href="classRtAudio.html#a9">RtAudio::startStream()</a> and <a class="el" href="classRtAudio.html#a10">RtAudio::stopStream()</a> functions). We can also pass a pointer value to the <a class="el" href="classRtAudio.html#a7">RtAudio::openStream()</a> function that is made available in the callback function. In this way, it is possible to gain access to arbitrary data created in our <em>main()</em> function from within the globally defined callback function.<p> -In this example, we stop the stream with an explicit call to <a class="el" href="classRtAudio.html#a10">RtAudio::stopStream()</a>. It is also possible to stop a stream by returning a non-zero value from the callback function. A return value of 1 will cause the stream to finish draining its internal buffers and then halt (equivalent to calling the <a class="el" href="classRtAudio.html#a10">RtAudio::stopStream()</a> function). A return value of 2 will cause the stream to stop immediately (equivalent to calling the <a class="el" href="classRtAudio.html#a11">RtAudio::abortStream()</a> function). <HR> +We open the stream in exactly the same way as the previous example (except with a data format change) and specify the address of our callback function <em>"saw()"</em>. The callback function will automatically be invoked when the underlying audio system needs data for output. Note that the callback function is called only when the stream is "running" (between calls to the <a class="el" href="classRtAudio.html#ec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">RtAudio::startStream()</a> and <a class="el" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">RtAudio::stopStream()</a> functions). We can also pass a pointer value to the <a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">RtAudio::openStream()</a> function that is made available in the callback function. In this way, it is possible to gain access to arbitrary data created in our <em>main()</em> function from within the globally defined callback function.<p> +In this example, we stop the stream with an explicit call to <a class="el" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">RtAudio::stopStream()</a>. It is also possible to stop a stream by returning a non-zero value from the callback function. A return value of 1 will cause the stream to finish draining its internal buffers and then halt (equivalent to calling the <a class="el" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">RtAudio::stopStream()</a> function). A return value of 2 will cause the stream to stop immediately (equivalent to calling the <a class="el" href="classRtAudio.html#d0586b47cd6bb9591a80b4052815991f" title="Stop a stream, discarding any samples remaining in the input/output queue.">RtAudio::abortStream()</a> function). </div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/probe.html b/doc/html/probe.html index 52ba570..ef7ba41 100644 --- a/doc/html/probe.html +++ b/doc/html/probe.html @@ -8,8 +8,9 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1><a class="anchor" name="probe">Probing Device Capabilities</a></h1>A programmer may wish to query the available audio device capabilities before deciding which to use. The following example outlines how this can be done.<p> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1><a class="anchor" name="probe">Probing Device Capabilities </a></h1>A programmer may wish to query the available audio device capabilities before deciding which to use. The following example outlines how this can be done.<p> <div class="fragment"><pre class="fragment"><span class="comment">// audioprobe.cpp</span> <span class="preprocessor">#include <iostream></span> @@ -17,42 +18,42 @@ <span class="keywordtype">int</span> main() { - <a class="code" href="classRtAudio.html">RtAudio</a> audio; + <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> audio; <span class="comment">// Determine the number of devices available</span> - <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> devices = audio.<a class="code" href="classRtAudio.html#a3">getDeviceCount</a>(); + <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> devices = audio.<a class="code" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount</a>(); <span class="comment">// Scan through devices for various capabilities</span> - <a class="code" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> info; + <a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> info; <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=1; i<=devices; i++ ) { - info = audio.<a class="code" href="classRtAudio.html#a4">getDeviceInfo</a>( i ); + info = audio.<a class="code" href="classRtAudio.html#02d7ff44ad1d7eae22283a052f3dfda8" title="Return an RtAudio::DeviceInfo structure for a specified device number.">getDeviceInfo</a>( i ); - <span class="keywordflow">if</span> ( info.<a class="code" href="structRtAudio_1_1DeviceInfo.html#o0">probed</a> == <span class="keyword">true</span> ) { + <span class="keywordflow">if</span> ( info.<a class="code" href="structRtAudio_1_1DeviceInfo.html#5bf008c629ef493c713ec870d0217407">probed</a> == <span class="keyword">true</span> ) { <span class="comment">// Print, for example, the maximum number of output channels for each device</span> std::cout << <span class="stringliteral">"device = "</span> << i; - std::cout << <span class="stringliteral">": maximum output channels = "</span> << info.<a class="code" href="structRtAudio_1_1DeviceInfo.html#o2">outputChannels</a> << <span class="stringliteral">"\n"</span>; + std::cout << <span class="stringliteral">": maximum output channels = "</span> << info.<a class="code" href="structRtAudio_1_1DeviceInfo.html#185f8aac1095de4fbb6e0076875d24c4">outputChannels</a> << <span class="stringliteral">"\n"</span>; } } <span class="keywordflow">return</span> 0; } </pre></div><p> -The <a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> structure is defined in <a class="el" href="RtAudio_8h.html">RtAudio.h</a> and provides a variety of information useful in assessing the capabilities of a device:<p> -<div class="fragment"><pre class="fragment"> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> { - <span class="keywordtype">bool</span> probed; <span class="comment">// true if the device capabilities were successfully probed.</span> - std::string name; <span class="comment">// Character string device identifier.</span> - <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels; <span class="comment">// Maximum output channels supported by device.</span> - <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels; <span class="comment">// Maximum input channels supported by device.</span> - <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> duplexChannels; <span class="comment">// Maximum simultaneous input/output channels supported by device.</span> - <span class="keywordtype">bool</span> isDefaultOutput; <span class="comment">// true if this is the default output device.</span> - <span class="keywordtype">bool</span> isDefaultInput; <span class="comment">// true if this is the default input device.</span> - std::vector<unsigned int> sampleRates; <span class="comment">// Supported sample rates.</span> - <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a> nativeFormats; <span class="comment">// Bit mask of supported data formats.</span> +The <a class="el" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> structure is defined in <a class="el" href="RtAudio_8h.html">RtAudio.h</a> and provides a variety of information useful in assessing the capabilities of a device:<p> +<div class="fragment"><pre class="fragment"> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> { + <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#5bf008c629ef493c713ec870d0217407">probed</a>; <span class="comment">// true if the device capabilities were successfully probed.</span> + std::string <a class="code" href="structRtAudio_1_1DeviceInfo.html#a0e2ea10c52c206c9e105ac76b01f194">name</a>; <span class="comment">// Character string device identifier.</span> + <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#185f8aac1095de4fbb6e0076875d24c4">outputChannels</a>; <span class="comment">// Maximum output channels supported by device.</span> + <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#731b31adf84c550ab98329be1baa58b4">inputChannels</a>; <span class="comment">// Maximum input channels supported by device.</span> + <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#ca6ecfb8b5b8c114c54809d8af50ee5b">duplexChannels</a>; <span class="comment">// Maximum simultaneous input/output channels supported by device.</span> + <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#af74fc23f451fdd22ed073a47f0db674">isDefaultOutput</a>; <span class="comment">// true if this is the default output device.</span> + <span class="keywordtype">bool</span> <a class="code" href="structRtAudio_1_1DeviceInfo.html#a8b03618fa1d4c051f6add14bb031728">isDefaultInput</a>; <span class="comment">// true if this is the default input device.</span> + std::vector<unsigned int> <a class="code" href="structRtAudio_1_1DeviceInfo.html#5b158efcbfbd30e7226df92d0109d475">sampleRates</a>; <span class="comment">// Supported sample rates.</span> + <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a> <a class="code" href="structRtAudio_1_1DeviceInfo.html#97559ee4a1f2c8cfb765949e6193e1f4">nativeFormats</a>; <span class="comment">// Bit mask of supported data formats.</span> }; </pre></div><p> -The following data formats are defined and fully supported by <a class="el" href="classRtAudio.html">RtAudio</a>:<p> -<div class="fragment"><pre class="fragment"> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="RtAudio_8h.html#a1">RtAudioFormat</a>; +The following data formats are defined and fully supported by <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a>:<p> +<div class="fragment"><pre class="fragment"> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="RtAudio_8h.html#afca92882d25915560018873221e44b8" title="RtAudio data format type.">RtAudioFormat</a>; <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_SINT8; <span class="comment">// Signed 8-bit integer</span> <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_SINT16; <span class="comment">// Signed 16-bit integer</span> <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_SINT24; <span class="comment">// Signed 24-bit integer (lower 3 bytes of 32-bit signed integer.)</span> @@ -60,12 +61,13 @@ The following data formats are defined and fully supported by <a class="el" href <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_FLOAT32; <span class="comment">// 32-bit float normalized between +/- 1.0</span> <span class="keyword">static</span> <span class="keyword">const</span> RtAudioFormat RTAUDIO_FLOAT64; <span class="comment">// 64-bit double normalized between +/- 1.0</span> </pre></div><p> -The <code>nativeFormats</code> member of the <a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> structure is a bit mask of the above formats which are natively supported by the device. However, <a class="el" href="classRtAudio.html">RtAudio</a> will automatically provide format conversion if a particular format is not natively supported. When the <code>probed</code> member of the <a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a> structure is false, the remaining structure members are undefined and the device is probably unusable.<p> -Some audio devices may require a minimum channel value greater than one. <a class="el" href="classRtAudio.html">RtAudio</a> will provide automatic channel number compensation when the number of channels set by the user is less than that required by the device. Channel compensation is <em>NOT</em> possible when the number of channels set by the user is greater than that supported by the device.<p> -It should be noted that the capabilities reported by a device driver or underlying audio API are not always accurate and/or may be dependent on a combination of device settings. For this reason, <a class="el" href="classRtAudio.html">RtAudio</a> does not rely on the queried values when attempting to open a stream. <HR> +The <code>nativeFormats</code> member of the <a class="el" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> structure is a bit mask of the above formats which are natively supported by the device. However, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> will automatically provide format conversion if a particular format is not natively supported. When the <code>probed</code> member of the <a class="el" href="structRtAudio_1_1DeviceInfo.html" title="The public device information structure for returning queried values.">RtAudio::DeviceInfo</a> structure is false, the remaining structure members are undefined and the device is probably unusable.<p> +Some audio devices may require a minimum channel value greater than one. <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> will provide automatic channel number compensation when the number of channels set by the user is less than that required by the device. Channel compensation is <em>NOT</em> possible when the number of channels set by the user is greater than that supported by the device.<p> +It should be noted that the capabilities reported by a device driver or underlying audio API are not always accurate and/or may be dependent on a combination of device settings. For this reason, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> does not rely on the queried values when attempting to open a stream. </div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/recording.html b/doc/html/recording.html index f462aa5..c7772bf 100644 --- a/doc/html/recording.html +++ b/doc/html/recording.html @@ -8,13 +8,16 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1><a class="anchor" name="recording">Recording</a></h1>Using <a class="el" href="classRtAudio.html">RtAudio</a> for audio input is almost identical to the way it is used for playback. Here's the blocking playback example rewritten for recording:<p> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1><a class="anchor" name="recording">Recording </a></h1>Using <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> for audio input is almost identical to the way it is used for playback. Here's the blocking playback example rewritten for recording:<p> <div class="fragment"><pre class="fragment"><span class="preprocessor">#include "<a class="code" href="RtAudio_8h.html">RtAudio.h</a>"</span> <span class="preprocessor">#include <iostream></span> +<span class="preprocessor">#include <cstdlib></span> +<span class="preprocessor">#include <cstring></span> <span class="keywordtype">int</span> record( <span class="keywordtype">void</span> *outputBuffer, <span class="keywordtype">void</span> *inputBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nBufferFrames, - <span class="keywordtype">double</span> streamTime, <a class="code" href="RtAudio_8h.html#a12">RtAudioStreamStatus</a> status, <span class="keywordtype">void</span> *userData ) + <span class="keywordtype">double</span> streamTime, <a class="code" href="RtAudio_8h.html#80e306d363583da3b0a1b65d9b57c806" title="RtAudio stream status (over- or underflow) flags.">RtAudioStreamStatus</a> status, <span class="keywordtype">void</span> *userData ) { <span class="keywordflow">if</span> ( status ) std::cout << <span class="stringliteral">"Stream overflow detected!"</span> << std::endl; @@ -26,26 +29,26 @@ <span class="keywordtype">int</span> main() { - <a class="code" href="classRtAudio.html">RtAudio</a> adc; - <span class="keywordflow">if</span> ( adc.<a class="code" href="classRtAudio.html#a3">getDeviceCount</a>() < 1 ) { + <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> adc; + <span class="keywordflow">if</span> ( adc.<a class="code" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount</a>() < 1 ) { std::cout << <span class="stringliteral">"\nNo audio devices found!\n"</span>; exit( 0 ); } - <a class="code" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> parameters; - parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#o0">deviceId</a> = adc.<a class="code" href="classRtAudio.html#a6">getDefaultInputDevice</a>(); - parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#o1">nChannels</a> = 2; - parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#o2">firstChannel</a> = 0; + <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">RtAudio::StreamParameters</a> parameters; + parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#ffd27496c70c0986522056234c64e28e">deviceId</a> = adc.<a class="code" href="classRtAudio.html#ad8b94edd3cd379ee300b125750ac6ce" title="A function that returns the index of the default input device.">getDefaultInputDevice</a>(); + parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#78798b65fada7941e1a7e47c11c9e627">nChannels</a> = 2; + parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#ddc8281f23a87455ec6dedbc766a74db">firstChannel</a> = 0; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate = 44100; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferFrames = 256; <span class="comment">// 256 sample frames</span> <span class="keywordflow">try</span> { - adc.<a class="code" href="classRtAudio.html#a7">openStream</a>( NULL, &parameters, RTAUDIO_SINT16, + adc.<a class="code" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">openStream</a>( NULL, &parameters, RTAUDIO_SINT16, sampleRate, &bufferFrames, &record ); - adc.<a class="code" href="classRtAudio.html#a9">startStream</a>(); + adc.<a class="code" href="classRtAudio.html#ec017a89629ccef66a90b60be22a2f80" title="A function that starts a stream.">startStream</a>(); } - <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html">RtError</a>& e ) { - e.<a class="code" href="classRtError.html#a2">printMessage</a>(); + <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html" title="Exception handling class for RtAudio &amp; RtMidi.">RtError</a>& e ) { + e.<a class="code" href="classRtError.html#da41f7472122f45bc5b4677f066e0943" title="Prints thrown error message to stderr.">printMessage</a>(); exit( 0 ); } @@ -55,21 +58,22 @@ <span class="keywordflow">try</span> { <span class="comment">// Stop the stream</span> - adc.<a class="code" href="classRtAudio.html#a10">stopStream</a>(); + adc.<a class="code" href="classRtAudio.html#f4c241ff86936ecc8108f0d9dfe3efdd" title="Stop a stream, allowing any samples remaining in the output queue to be played.">stopStream</a>(); } - <span class="keywordflow">catch</span> (<a class="code" href="classRtError.html">RtError</a>& e) { - e.<a class="code" href="classRtError.html#a2">printMessage</a>(); + <span class="keywordflow">catch</span> (<a class="code" href="classRtError.html" title="Exception handling class for RtAudio &amp; RtMidi.">RtError</a>& e) { + e.<a class="code" href="classRtError.html#da41f7472122f45bc5b4677f066e0943" title="Prints thrown error message to stderr.">printMessage</a>(); } - <span class="keywordflow">if</span> ( adc.<a class="code" href="classRtAudio.html#a12">isStreamOpen</a>() ) adc.<a class="code" href="classRtAudio.html#a8">closeStream</a>(); + <span class="keywordflow">if</span> ( adc.<a class="code" href="classRtAudio.html#3863e45ff81dbe97176de0ee7545917f" title="Returns true if a stream is open and false if not.">isStreamOpen</a>() ) adc.<a class="code" href="classRtAudio.html#90d599002ad32cf250a4cb866f2cc93a" title="A function that closes a stream and frees any associated stream memory.">closeStream</a>(); <span class="keywordflow">return</span> 0; } </pre></div><p> -In this example, we pass the address of the stream parameter structure as the second argument of the <a class="el" href="classRtAudio.html#a7">RtAudio::openStream()</a> function and pass a NULL value for the output stream parameters. In this example, the <em>record()</em> callback function performs no specific operations. <HR> +In this example, we pass the address of the stream parameter structure as the second argument of the <a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">RtAudio::openStream()</a> function and pass a NULL value for the output stream parameters. In this example, the <em>record()</em> callback function performs no specific operations. </div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/settings.html b/doc/html/settings.html index 958363b..cb62dc9 100644 --- a/doc/html/settings.html +++ b/doc/html/settings.html @@ -8,45 +8,47 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1><a class="anchor" name="settings">Device Settings</a></h1>The next step in using <a class="el" href="classRtAudio.html">RtAudio</a> is to open a stream with particular device and parameter settings.<p> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1><a class="anchor" name="settings">Device Settings </a></h1>The next step in using <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> is to open a stream with particular device and parameter settings.<p> <div class="fragment"><pre class="fragment"><span class="preprocessor">#include "<a class="code" href="RtAudio_8h.html">RtAudio.h</a>"</span> <span class="keywordtype">int</span> main() { - <a class="code" href="classRtAudio.html">RtAudio</a> dac; - <span class="keywordflow">if</span> ( dac.<a class="code" href="classRtAudio.html#a3">getDeviceCount</a>() == 0 ) exit( 0 ); + <a class="code" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> dac; + <span class="keywordflow">if</span> ( dac.<a class="code" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount</a>() == 0 ) exit( 0 ); - <a class="code" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> parameters; - parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#o0">deviceId</a> = dac.<a class="code" href="classRtAudio.html#a5">getDefaultOutputDevice</a>(); - parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#o1">nChannels</a> = 2; + <a class="code" href="structRtAudio_1_1StreamParameters.html" title="The structure for specifying input or ouput stream parameters.">RtAudio::StreamParameters</a> parameters; + parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#ffd27496c70c0986522056234c64e28e">deviceId</a> = dac.<a class="code" href="classRtAudio.html#3a3f3dbe13ea696b521e49cdaaa357bc" title="A function that returns the index of the default output device.">getDefaultOutputDevice</a>(); + parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#78798b65fada7941e1a7e47c11c9e627">nChannels</a> = 2; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate = 44100; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferFrames = 256; <span class="comment">// 256 sample frames</span> - <a class="code" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> options; - options.<a class="code" href="structRtAudio_1_1StreamOptions.html#o0">flags</a> = RTAUDIO_NONINTERLEAVED; + <a class="code" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> options; + options.<a class="code" href="structRtAudio_1_1StreamOptions.html#6a284d045b8adcfcf178a4f6a22330f8">flags</a> = RTAUDIO_NONINTERLEAVED; <span class="keywordflow">try</span> { - dac.<a class="code" href="classRtAudio.html#a7">openStream</a>( &parameters, NULL, RTAUDIO_FLOAT32, + dac.<a class="code" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">openStream</a>( &parameters, NULL, RTAUDIO_FLOAT32, sampleRate, &bufferFrames, &myCallback, NULL, &options ); } - <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html">RtError</a>& e ) { - std::cout << <span class="charliteral">'\n'</span> << e.<a class="code" href="classRtError.html#a4">getMessage</a>() << <span class="charliteral">'\n'</span> << std::endl; + <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html" title="Exception handling class for RtAudio &amp; RtMidi.">RtError</a>& e ) { + std::cout << <span class="charliteral">'\n'</span> << e.<a class="code" href="classRtError.html#c7f467788e29d246333d7af050801164" title="Returns the thrown error message string.">getMessage</a>() << <span class="charliteral">'\n'</span> << std::endl; exit( 0 ); } <span class="keywordflow">return</span> 0; } </pre></div><p> -The <a class="el" href="classRtAudio.html#a7">RtAudio::openStream()</a> function attempts to open a stream with a specified set of parameter values. In the above example, we attempt to open a two channel playback stream using the default output device, 32-bit floating point data, a sample rate of 44100 Hz, and a frame rate of 256 sample frames per output buffer. If the user specifies an invalid parameter value (such as a device id greater than or equal to the number of enumerated devices), an <a class="el" href="classRtError.html">RtError</a> is thrown of type = INVALID_USE. If a system error occurs or the device does not support the specified parameter values, an <a class="el" href="classRtError.html">RtError</a> of type = SYSTEM_ERROR is thrown. In either case, a descriptive error message is bundled with the exception and can be queried with the <a class="el" href="classRtError.html#a4">RtError::getMessage()</a> or <a class="el" href="classRtError.html#a5">RtError::what()</a> functions.<p> -<a class="el" href="classRtAudio.html">RtAudio</a> provides four signed integer and two floating point data formats which can be specified using the RtAudioFormat parameter values mentioned earlier. If the opened device does not natively support the given format, <a class="el" href="classRtAudio.html">RtAudio</a> will automatically perform the necessary data format conversion.<p> -The <code>bufferFrames</code> parameter specifies the desired number of sample frames that will be written to and/or read from a device per write/read operation. This parameter can be used to control stream latency though there is no guarantee that the passed value will be that used by a device. In general, a lower <code>bufferFrames</code> value will produce less latency but perhaps less robust performance. A value of zero can be specified, in which case the smallest allowable value will be used. The <code>bufferFrames</code> parameter is passed as a pointer and the actual value used by the stream is set during the device setup procedure. <code>bufferFrames</code> values should be a power of two. Optimal and allowable buffer values tend to vary between systems and devices. Stream latency can also be controlled via the optional <a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> member <code>numberOfBuffers</code> (not used in the example above), though this tends to be more system dependent. In particular, the <code>numberOfBuffers</code> parameter is ignored when using the OS-X Core Audio, Jack, and the Windows ASIO APIs.<p> -As noted earlier, the device capabilities reported by a driver or underlying audio API are not always accurate and/or may be dependent on a combination of device settings. Because of this, <a class="el" href="classRtAudio.html">RtAudio</a> does not attempt to query a device's capabilities or use previously reported values when opening a device. Instead, <a class="el" href="classRtAudio.html">RtAudio</a> simply attempts to set the given parameters on a specified device and then checks whether the setup is successful or not.<p> +The <a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">RtAudio::openStream()</a> function attempts to open a stream with a specified set of parameter values. In the above example, we attempt to open a two channel playback stream using the default output device, 32-bit floating point data, a sample rate of 44100 Hz, and a frame rate of 256 sample frames per output buffer. If the user specifies an invalid parameter value (such as a device id greater than or equal to the number of enumerated devices), an <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> is thrown of type = INVALID_USE. If a system error occurs or the device does not support the specified parameter values, an <a class="el" href="classRtError.html" title="Exception handling class for RtAudio & RtMidi.">RtError</a> of type = SYSTEM_ERROR is thrown. In either case, a descriptive error message is bundled with the exception and can be queried with the <a class="el" href="classRtError.html#c7f467788e29d246333d7af050801164" title="Returns the thrown error message string.">RtError::getMessage()</a> or <a class="el" href="classRtError.html#eb843b7a7785d66061c61ebfc29e7e9d" title="Returns the thrown error message as a c-style string.">RtError::what()</a> functions.<p> +<a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> provides four signed integer and two floating point data formats which can be specified using the RtAudioFormat parameter values mentioned earlier. If the opened device does not natively support the given format, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> will automatically perform the necessary data format conversion.<p> +The <code>bufferFrames</code> parameter specifies the desired number of sample frames that will be written to and/or read from a device per write/read operation. This parameter can be used to control stream latency though there is no guarantee that the passed value will be that used by a device. In general, a lower <code>bufferFrames</code> value will produce less latency but perhaps less robust performance. A value of zero can be specified, in which case the smallest allowable value will be used. The <code>bufferFrames</code> parameter is passed as a pointer and the actual value used by the stream is set during the device setup procedure. <code>bufferFrames</code> values should be a power of two. Optimal and allowable buffer values tend to vary between systems and devices. Stream latency can also be controlled via the optional <a class="el" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> member <code>numberOfBuffers</code> (not used in the example above), though this tends to be more system dependent. In particular, the <code>numberOfBuffers</code> parameter is ignored when using the OS-X Core Audio, Jack, and the Windows ASIO APIs.<p> +As noted earlier, the device capabilities reported by a driver or underlying audio API are not always accurate and/or may be dependent on a combination of device settings. Because of this, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> does not attempt to query a device's capabilities or use previously reported values when opening a device. Instead, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> simply attempts to set the given parameters on a specified device and then checks whether the setup is successful or not.<p> The RtAudioCallback parameter above is a pointer to a user-defined function that will be called whenever the audio system is ready for new output data or has new input data to be read. Further details on the use of a callback function are provided in the next section.<p> -Several stream options are available to fine-tune the behavior of an audio stream. In the example above, we specify that data will be written by the user in a <em>non-interleaved</em> format via the <a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a> member <code>flags</code>. That is, all <code>bufferFrames</code> of the first channel should be written consecutively, followed by all <code>bufferFrames</code> of the second channel. By default (when no option is specified), <a class="el" href="classRtAudio.html">RtAudio</a> expects data to be written in an <em>interleaved</em> format. <HR> +Several stream options are available to fine-tune the behavior of an audio stream. In the example above, we specify that data will be written by the user in a <em>non-interleaved</em> format via the <a class="el" href="structRtAudio_1_1StreamOptions.html" title="The structure for specifying stream options.">RtAudio::StreamOptions</a> member <code>flags</code>. That is, all <code>bufferFrames</code> of the first channel should be written consecutively, followed by all <code>bufferFrames</code> of the second channel. By default (when no option is specified), <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> expects data to be written in an <em>interleaved</em> format. </div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/structRtAudio_1_1DeviceInfo-members.html b/doc/html/structRtAudio_1_1DeviceInfo-members.html index c4ee109..a8bfa72 100644 --- a/doc/html/structRtAudio_1_1DeviceInfo-members.html +++ b/doc/html/structRtAudio_1_1DeviceInfo-members.html @@ -8,21 +8,23 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1>RtAudio::DeviceInfo Member List</h1>This is the complete list of members for <a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a>, including all inherited members.<p><table> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#o4">duplexChannels</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#o3">inputChannels</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#o6">isDefaultInput</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#o5">isDefaultOutput</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#o1">name</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#o8">nativeFormats</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#o2">outputChannels</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#o0">probed</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#o7">sampleRates</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::DeviceInfo</a></td><td></td></tr> -</table><HR> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1>RtAudio::RtAudio::DeviceInfo Member List</h1>This is the complete list of members for <a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::RtAudio::DeviceInfo</a>, including all inherited members.<p><table> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#ca6ecfb8b5b8c114c54809d8af50ee5b">duplexChannels</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::RtAudio::DeviceInfo</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#731b31adf84c550ab98329be1baa58b4">inputChannels</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::RtAudio::DeviceInfo</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#a8b03618fa1d4c051f6add14bb031728">isDefaultInput</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::RtAudio::DeviceInfo</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#af74fc23f451fdd22ed073a47f0db674">isDefaultOutput</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::RtAudio::DeviceInfo</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#a0e2ea10c52c206c9e105ac76b01f194">name</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::RtAudio::DeviceInfo</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#97559ee4a1f2c8cfb765949e6193e1f4">nativeFormats</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::RtAudio::DeviceInfo</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#185f8aac1095de4fbb6e0076875d24c4">outputChannels</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::RtAudio::DeviceInfo</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#5bf008c629ef493c713ec870d0217407">probed</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::RtAudio::DeviceInfo</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1DeviceInfo.html#5b158efcbfbd30e7226df92d0109d475">sampleRates</a></td><td><a class="el" href="structRtAudio_1_1DeviceInfo.html">RtAudio::RtAudio::DeviceInfo</a></td><td></td></tr> +</table></div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/structRtAudio_1_1DeviceInfo.html b/doc/html/structRtAudio_1_1DeviceInfo.html index c1f0796..f32ae40 100644 --- a/doc/html/structRtAudio_1_1DeviceInfo.html +++ b/doc/html/structRtAudio_1_1DeviceInfo.html @@ -8,253 +8,183 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<div class="nav"> -<a class="el" href="classRtAudio.html">RtAudio</a>::<a class="el" href="structRtAudio_1_1DeviceInfo.html">DeviceInfo</a></div> -<h1>RtAudio::DeviceInfo Struct Reference</h1><!-- doxytag: class="RtAudio::DeviceInfo" -->The public device information structure for returning queried values. +<!-- Generated by Doxygen 1.5.8 --> + <div class="navpath"><a class="el" href="classRtAudio.html">RtAudio</a>::<a class="el" href="structRtAudio_1_1DeviceInfo.html">DeviceInfo</a> + </div> +<div class="contents"> +<h1>RtAudio::RtAudio::DeviceInfo Struct Reference</h1><!-- doxytag: class="RtAudio::DeviceInfo" -->The public device information structure for returning queried values. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="RtAudio_8h-source.html">RtAudio.h</a>></code> <p> + +<p> <a href="structRtAudio_1_1DeviceInfo-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#o0">probed</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#5bf008c629ef493c713ec870d0217407">probed</a></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#o1">name</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#a0e2ea10c52c206c9e105ac76b01f194">name</a></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#o2">outputChannels</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#185f8aac1095de4fbb6e0076875d24c4">outputChannels</a></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#o3">inputChannels</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#731b31adf84c550ab98329be1baa58b4">inputChannels</a></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#o4">duplexChannels</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#ca6ecfb8b5b8c114c54809d8af50ee5b">duplexChannels</a></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#o5">isDefaultOutput</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#af74fc23f451fdd22ed073a47f0db674">isDefaultOutput</a></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#o6">isDefaultInput</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#a8b03618fa1d4c051f6add14bb031728">isDefaultInput</a></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector< unsigned int > </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#o7">sampleRates</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector< unsigned int > </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#5b158efcbfbd30e7226df92d0109d475">sampleRates</a></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="RtAudio_8h.html#a1">RtAudioFormat</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#o8">nativeFormats</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="RtAudio_8h.html#afca92882d25915560018873221e44b8">RtAudioFormat</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1DeviceInfo.html#97559ee4a1f2c8cfb765949e6193e1f4">nativeFormats</a></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> -The public device information structure for returning queried values. -<p> -<hr><h2>Member Data Documentation</h2> -<a class="anchor" name="o0"></a><!-- doxytag: member="RtAudio::DeviceInfo::probed" ref="o0" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +The public device information structure for returning queried values. <hr><h2>Member Data Documentation</h2> +<a class="anchor" name="5bf008c629ef493c713ec870d0217407"></a><!-- doxytag: member="RtAudio::DeviceInfo::probed" ref="5bf008c629ef493c713ec870d0217407" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">bool <a class="el" href="structRtAudio_1_1DeviceInfo.html#o0">RtAudio::DeviceInfo::probed</a> </td> + <td class="memname">bool RtAudio::RtAudio::DeviceInfo::probed </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -true if the device capabilities were successfully probed. </td> - </tr> -</table> -<a class="anchor" name="o1"></a><!-- doxytag: member="RtAudio::DeviceInfo::name" ref="o1" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +true if the device capabilities were successfully probed. +</div> +</div><p> +<a class="anchor" name="a0e2ea10c52c206c9e105ac76b01f194"></a><!-- doxytag: member="RtAudio::DeviceInfo::name" ref="a0e2ea10c52c206c9e105ac76b01f194" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">std::string <a class="el" href="structRtAudio_1_1DeviceInfo.html#o1">RtAudio::DeviceInfo::name</a> </td> + <td class="memname">std::string RtAudio::RtAudio::DeviceInfo::name </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -Character string device identifier. </td> - </tr> -</table> -<a class="anchor" name="o2"></a><!-- doxytag: member="RtAudio::DeviceInfo::outputChannels" ref="o2" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +Character string device identifier. +</div> +</div><p> +<a class="anchor" name="185f8aac1095de4fbb6e0076875d24c4"></a><!-- doxytag: member="RtAudio::DeviceInfo::outputChannels" ref="185f8aac1095de4fbb6e0076875d24c4" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">unsigned int <a class="el" href="structRtAudio_1_1DeviceInfo.html#o2">RtAudio::DeviceInfo::outputChannels</a> </td> + <td class="memname">unsigned int RtAudio::RtAudio::DeviceInfo::outputChannels </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -Maximum output channels supported by device. </td> - </tr> -</table> -<a class="anchor" name="o3"></a><!-- doxytag: member="RtAudio::DeviceInfo::inputChannels" ref="o3" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +Maximum output channels supported by device. +</div> +</div><p> +<a class="anchor" name="731b31adf84c550ab98329be1baa58b4"></a><!-- doxytag: member="RtAudio::DeviceInfo::inputChannels" ref="731b31adf84c550ab98329be1baa58b4" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">unsigned int <a class="el" href="structRtAudio_1_1DeviceInfo.html#o3">RtAudio::DeviceInfo::inputChannels</a> </td> + <td class="memname">unsigned int RtAudio::RtAudio::DeviceInfo::inputChannels </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -Maximum input channels supported by device. </td> - </tr> -</table> -<a class="anchor" name="o4"></a><!-- doxytag: member="RtAudio::DeviceInfo::duplexChannels" ref="o4" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +Maximum input channels supported by device. +</div> +</div><p> +<a class="anchor" name="ca6ecfb8b5b8c114c54809d8af50ee5b"></a><!-- doxytag: member="RtAudio::DeviceInfo::duplexChannels" ref="ca6ecfb8b5b8c114c54809d8af50ee5b" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">unsigned int <a class="el" href="structRtAudio_1_1DeviceInfo.html#o4">RtAudio::DeviceInfo::duplexChannels</a> </td> + <td class="memname">unsigned int RtAudio::RtAudio::DeviceInfo::duplexChannels </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -Maximum simultaneous input/output channels supported by device. </td> - </tr> -</table> -<a class="anchor" name="o5"></a><!-- doxytag: member="RtAudio::DeviceInfo::isDefaultOutput" ref="o5" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +Maximum simultaneous input/output channels supported by device. +</div> +</div><p> +<a class="anchor" name="af74fc23f451fdd22ed073a47f0db674"></a><!-- doxytag: member="RtAudio::DeviceInfo::isDefaultOutput" ref="af74fc23f451fdd22ed073a47f0db674" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">bool <a class="el" href="structRtAudio_1_1DeviceInfo.html#o5">RtAudio::DeviceInfo::isDefaultOutput</a> </td> + <td class="memname">bool RtAudio::RtAudio::DeviceInfo::isDefaultOutput </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -true if this is the default output device. </td> - </tr> -</table> -<a class="anchor" name="o6"></a><!-- doxytag: member="RtAudio::DeviceInfo::isDefaultInput" ref="o6" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +true if this is the default output device. +</div> +</div><p> +<a class="anchor" name="a8b03618fa1d4c051f6add14bb031728"></a><!-- doxytag: member="RtAudio::DeviceInfo::isDefaultInput" ref="a8b03618fa1d4c051f6add14bb031728" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">bool <a class="el" href="structRtAudio_1_1DeviceInfo.html#o6">RtAudio::DeviceInfo::isDefaultInput</a> </td> + <td class="memname">bool RtAudio::RtAudio::DeviceInfo::isDefaultInput </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -true if this is the default input device. </td> - </tr> -</table> -<a class="anchor" name="o7"></a><!-- doxytag: member="RtAudio::DeviceInfo::sampleRates" ref="o7" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +true if this is the default input device. +</div> +</div><p> +<a class="anchor" name="5b158efcbfbd30e7226df92d0109d475"></a><!-- doxytag: member="RtAudio::DeviceInfo::sampleRates" ref="5b158efcbfbd30e7226df92d0109d475" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">std::vector<unsigned int> <a class="el" href="structRtAudio_1_1DeviceInfo.html#o7">RtAudio::DeviceInfo::sampleRates</a> </td> + <td class="memname">std::vector<unsigned int> RtAudio::RtAudio::DeviceInfo::sampleRates </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -Supported sample rates (queried from list of standard rates). </td> - </tr> -</table> -<a class="anchor" name="o8"></a><!-- doxytag: member="RtAudio::DeviceInfo::nativeFormats" ref="o8" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +Supported sample rates (queried from list of standard rates). +</div> +</div><p> +<a class="anchor" name="97559ee4a1f2c8cfb765949e6193e1f4"></a><!-- doxytag: member="RtAudio::DeviceInfo::nativeFormats" ref="97559ee4a1f2c8cfb765949e6193e1f4" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top"><a class="el" href="RtAudio_8h.html#a1">RtAudioFormat</a> <a class="el" href="structRtAudio_1_1DeviceInfo.html#o8">RtAudio::DeviceInfo::nativeFormats</a> </td> + <td class="memname"><a class="el" href="RtAudio_8h.html#afca92882d25915560018873221e44b8">RtAudioFormat</a> RtAudio::RtAudio::DeviceInfo::nativeFormats </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -Bit mask of supported data formats. </td> - </tr> -</table> +Bit mask of supported data formats. +</div> +</div><p> <hr>The documentation for this struct was generated from the following file:<ul> <li><a class="el" href="RtAudio_8h-source.html">RtAudio.h</a></ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/structRtAudio_1_1StreamOptions-members.html b/doc/html/structRtAudio_1_1StreamOptions-members.html index c71774d..56a03cd 100644 --- a/doc/html/structRtAudio_1_1StreamOptions-members.html +++ b/doc/html/structRtAudio_1_1StreamOptions-members.html @@ -8,15 +8,18 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1>RtAudio::StreamOptions Member List</h1>This is the complete list of members for <a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a>, including all inherited members.<p><table> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamOptions.html#o0">flags</a></td><td><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamOptions.html#o1">numberOfBuffers</a></td><td><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamOptions.html#o2">streamName</a></td><td><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::StreamOptions</a></td><td></td></tr> -</table><HR> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1>RtAudio::RtAudio::StreamOptions Member List</h1>This is the complete list of members for <a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::RtAudio::StreamOptions</a>, including all inherited members.<p><table> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamOptions.html#6a284d045b8adcfcf178a4f6a22330f8">flags</a></td><td><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::RtAudio::StreamOptions</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamOptions.html#5a04d3c3d0c1cfa063872ecff383af1d">numberOfBuffers</a></td><td><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::RtAudio::StreamOptions</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamOptions.html#81b364f137d1ee1073b74dac666af352">priority</a></td><td><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::RtAudio::StreamOptions</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamOptions.html#214da35056f18ffb7c8e4dc074a01a9a">streamName</a></td><td><a class="el" href="structRtAudio_1_1StreamOptions.html">RtAudio::RtAudio::StreamOptions</a></td><td></td></tr> +</table></div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/structRtAudio_1_1StreamOptions.html b/doc/html/structRtAudio_1_1StreamOptions.html index 6d3577a..47a09ca 100644 --- a/doc/html/structRtAudio_1_1StreamOptions.html +++ b/doc/html/structRtAudio_1_1StreamOptions.html @@ -8,22 +8,27 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<div class="nav"> -<a class="el" href="classRtAudio.html">RtAudio</a>::<a class="el" href="structRtAudio_1_1StreamOptions.html">StreamOptions</a></div> -<h1>RtAudio::StreamOptions Struct Reference</h1><!-- doxytag: class="RtAudio::StreamOptions" -->The structure for specifying stream options. +<!-- Generated by Doxygen 1.5.8 --> + <div class="navpath"><a class="el" href="classRtAudio.html">RtAudio</a>::<a class="el" href="structRtAudio_1_1StreamOptions.html">StreamOptions</a> + </div> +<div class="contents"> +<h1>RtAudio::RtAudio::StreamOptions Struct Reference</h1><!-- doxytag: class="RtAudio::StreamOptions" -->The structure for specifying stream options. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="RtAudio_8h-source.html">RtAudio.h</a>></code> <p> + +<p> <a href="structRtAudio_1_1StreamOptions-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="RtAudio_8h.html#a8">RtAudioStreamFlags</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamOptions.html#o0">flags</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41">RtAudioStreamFlags</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamOptions.html#6a284d045b8adcfcf178a4f6a22330f8">flags</a></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamOptions.html#o1">numberOfBuffers</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamOptions.html#5a04d3c3d0c1cfa063872ecff383af1d">numberOfBuffers</a></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamOptions.html#o2">streamName</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamOptions.html#214da35056f18ffb7c8e4dc074a01a9a">streamName</a></td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamOptions.html#81b364f137d1ee1073b74dac666af352">priority</a></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> @@ -31,90 +36,81 @@ The structure for specifying stream options. <p> The following flags can be OR'ed together to allow a client to make changes to the default stream behavior:<p> <ul> -<li><em>RTAUDIO_NONINTERLEAVED:</em> Use non-interleaved buffers (default = interleaved).</li><li><em>RTAUDIO_MINIMIZE_LATENCY:</em> Attempt to set stream parameters for lowest possible latency.</li><li><em>RTAUDIO_HOG_DEVICE:</em> Attempt grab device for exclusive use.</li></ul> +<li><em>RTAUDIO_NONINTERLEAVED:</em> Use non-interleaved buffers (default = interleaved).</li><li><em>RTAUDIO_MINIMIZE_LATENCY:</em> Attempt to set stream parameters for lowest possible latency.</li><li><em>RTAUDIO_HOG_DEVICE:</em> Attempt grab device for exclusive use.</li><li><em>RTAUDIO_SCHEDULE_REALTIME:</em> Attempt to select realtime scheduling for callback thread.</li></ul> <p> -By default, <a class="el" href="classRtAudio.html">RtAudio</a> streams pass and receive audio data from the client in an interleaved format. By passing the RTAUDIO_NONINTERLEAVED flag to the <a class="el" href="classRtAudio.html#a7">openStream()</a> function, audio data will instead be presented in non-interleaved buffers. In this case, each buffer argument in the RtAudioCallback function will point to a single array of data, with <code>nFrames</code> samples for each channel concatenated back-to-back. For example, the first sample of data for the second channel would be located at index <code>nFrames</code> (assuming the <code>buffer</code> pointer was recast to the correct data type for the stream).<p> -Certain audio APIs offer a number of parameters that influence the I/O latency of a stream. By default, <a class="el" href="classRtAudio.html">RtAudio</a> will attempt to set these parameters internally for robust (glitch-free) performance (though some APIs, like Windows Direct Sound, make this difficult). By passing the RTAUDIO_MINIMIZE_LATENCY flag to the <a class="el" href="classRtAudio.html#a7">openStream()</a> function, internal stream settings will be influenced in an attempt to minimize stream latency, though possibly at the expense of stream performance.<p> -If the RTAUDIO_HOG_DEVICE flag is set, <a class="el" href="classRtAudio.html">RtAudio</a> will attempt to open the input and/or output stream device(s) for exclusive use. Note that this is not possible with all supported audio APIs.<p> -The <code>numberOfBuffers</code> parameter can be used to control stream latency in the Windows DirectSound, Linux OSS, and Linux Alsa APIs only. A value of two is usually the smallest allowed. Larger numbers can potentially result in more robust stream performance, though likely at the cost of stream latency. The value set by the user is replaced during execution of the <a class="el" href="classRtAudio.html#a7">RtAudio::openStream()</a> function by the value actually used by the system.<p> -The <code>streamName</code> parameter can be used to set the client name when using the Jack API. By default, the client name is set to RtApiJack. However, if you wish to create multiple instances of <a class="el" href="classRtAudio.html">RtAudio</a> with Jack, each instance must have a unique client name. +By default, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> streams pass and receive audio data from the client in an interleaved format. By passing the RTAUDIO_NONINTERLEAVED flag to the <a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">openStream()</a> function, audio data will instead be presented in non-interleaved buffers. In this case, each buffer argument in the RtAudioCallback function will point to a single array of data, with <code>nFrames</code> samples for each channel concatenated back-to-back. For example, the first sample of data for the second channel would be located at index <code>nFrames</code> (assuming the <code>buffer</code> pointer was recast to the correct data type for the stream).<p> +Certain audio APIs offer a number of parameters that influence the I/O latency of a stream. By default, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> will attempt to set these parameters internally for robust (glitch-free) performance (though some APIs, like Windows Direct Sound, make this difficult). By passing the RTAUDIO_MINIMIZE_LATENCY flag to the <a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">openStream()</a> function, internal stream settings will be influenced in an attempt to minimize stream latency, though possibly at the expense of stream performance.<p> +If the RTAUDIO_HOG_DEVICE flag is set, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> will attempt to open the input and/or output stream device(s) for exclusive use. Note that this is not possible with all supported audio APIs.<p> +If the RTAUDIO_SCHEDULE_REALTIME flag is set, <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> will attempt to select realtime scheduling (round-robin) for the callback thread. The <code>priority</code> parameter will only be used if the RTAUDIO_SCHEDULE_REALTIME flag is set. It defines the thread's realtime priority.<p> +The <code>numberOfBuffers</code> parameter can be used to control stream latency in the Windows DirectSound, Linux OSS, and Linux Alsa APIs only. A value of two is usually the smallest allowed. Larger numbers can potentially result in more robust stream performance, though likely at the cost of stream latency. The value set by the user is replaced during execution of the <a class="el" href="classRtAudio.html#facc99740fa4c5606fb35467cdea6da8" title="A public function for opening a stream with the specified parameters.">RtAudio::openStream()</a> function by the value actually used by the system.<p> +The <code>streamName</code> parameter can be used to set the client name when using the Jack API. By default, the client name is set to RtApiJack. However, if you wish to create multiple instances of <a class="el" href="classRtAudio.html" title="Realtime audio i/o C++ classes.">RtAudio</a> with Jack, each instance must have a unique client name. <hr><h2>Member Data Documentation</h2> +<a class="anchor" name="6a284d045b8adcfcf178a4f6a22330f8"></a><!-- doxytag: member="RtAudio::StreamOptions::flags" ref="6a284d045b8adcfcf178a4f6a22330f8" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="RtAudio_8h.html#2c0f59b200dcec4d4e760f9166b29c41">RtAudioStreamFlags</a> RtAudio::RtAudio::StreamOptions::flags </td> + </tr> + </table> +</div> +<div class="memdoc"> + <p> -<hr><h2>Member Data Documentation</h2> -<a class="anchor" name="o0"></a><!-- doxytag: member="RtAudio::StreamOptions::flags" ref="o0" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +A bit-mask of stream flags (RTAUDIO_NONINTERLEAVED, RTAUDIO_MINIMIZE_LATENCY, RTAUDIO_HOG_DEVICE). +</div> +</div><p> +<a class="anchor" name="5a04d3c3d0c1cfa063872ecff383af1d"></a><!-- doxytag: member="RtAudio::StreamOptions::numberOfBuffers" ref="5a04d3c3d0c1cfa063872ecff383af1d" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top"><a class="el" href="RtAudio_8h.html#a8">RtAudioStreamFlags</a> <a class="el" href="structRtAudio_1_1StreamOptions.html#o0">RtAudio::StreamOptions::flags</a> </td> + <td class="memname">unsigned int RtAudio::RtAudio::StreamOptions::numberOfBuffers </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -A bit-mask of stream flags (RTAUDIO_NONINTERLEAVED, RTAUDIO_MINIMIZE_LATENCY, RTAUDIO_HOG_DEVICE). </td> - </tr> -</table> -<a class="anchor" name="o1"></a><!-- doxytag: member="RtAudio::StreamOptions::numberOfBuffers" ref="o1" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +Number of stream buffers. +</div> +</div><p> +<a class="anchor" name="214da35056f18ffb7c8e4dc074a01a9a"></a><!-- doxytag: member="RtAudio::StreamOptions::streamName" ref="214da35056f18ffb7c8e4dc074a01a9a" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">unsigned int <a class="el" href="structRtAudio_1_1StreamOptions.html#o1">RtAudio::StreamOptions::numberOfBuffers</a> </td> + <td class="memname">std::string RtAudio::RtAudio::StreamOptions::streamName </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -Number of stream buffers. </td> - </tr> -</table> -<a class="anchor" name="o2"></a><!-- doxytag: member="RtAudio::StreamOptions::streamName" ref="o2" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +A stream name (currently used only in Jack). +</div> +</div><p> +<a class="anchor" name="81b364f137d1ee1073b74dac666af352"></a><!-- doxytag: member="RtAudio::StreamOptions::priority" ref="81b364f137d1ee1073b74dac666af352" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">std::string <a class="el" href="structRtAudio_1_1StreamOptions.html#o2">RtAudio::StreamOptions::streamName</a> </td> + <td class="memname">int RtAudio::RtAudio::StreamOptions::priority </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -A stream name (currently used only in Jack). </td> - </tr> -</table> +Scheduling priority of callback thread (only used with flag RTAUDIO_SCHEDULE_REALTIME). +</div> +</div><p> <hr>The documentation for this struct was generated from the following file:<ul> <li><a class="el" href="RtAudio_8h-source.html">RtAudio.h</a></ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/structRtAudio_1_1StreamParameters-members.html b/doc/html/structRtAudio_1_1StreamParameters-members.html index 3dd3ca7..ab67bfb 100644 --- a/doc/html/structRtAudio_1_1StreamParameters-members.html +++ b/doc/html/structRtAudio_1_1StreamParameters-members.html @@ -8,15 +8,17 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<h1>RtAudio::StreamParameters Member List</h1>This is the complete list of members for <a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a>, including all inherited members.<p><table> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamParameters.html#o0">deviceId</a></td><td><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamParameters.html#o2">firstChannel</a></td><td><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a></td><td></td></tr> - <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamParameters.html#o1">nChannels</a></td><td><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a></td><td></td></tr> -</table><HR> +<!-- Generated by Doxygen 1.5.8 --> +<div class="contents"> +<h1>RtAudio::RtAudio::StreamParameters Member List</h1>This is the complete list of members for <a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::RtAudio::StreamParameters</a>, including all inherited members.<p><table> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamParameters.html#ffd27496c70c0986522056234c64e28e">deviceId</a></td><td><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::RtAudio::StreamParameters</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamParameters.html#ddc8281f23a87455ec6dedbc766a74db">firstChannel</a></td><td><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::RtAudio::StreamParameters</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="structRtAudio_1_1StreamParameters.html#78798b65fada7941e1a7e47c11c9e627">nChannels</a></td><td><a class="el" href="structRtAudio_1_1StreamParameters.html">RtAudio::RtAudio::StreamParameters</a></td><td></td></tr> +</table></div> +<HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/structRtAudio_1_1StreamParameters.html b/doc/html/structRtAudio_1_1StreamParameters.html index b147fc6..71f2853 100644 --- a/doc/html/structRtAudio_1_1StreamParameters.html +++ b/doc/html/structRtAudio_1_1StreamParameters.html @@ -8,103 +8,81 @@ <CENTER> <a class="qindex" href="index.html">Home</a> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER> <HR> -<!-- Generated by Doxygen 1.4.4 --> -<div class="nav"> -<a class="el" href="classRtAudio.html">RtAudio</a>::<a class="el" href="structRtAudio_1_1StreamParameters.html">StreamParameters</a></div> -<h1>RtAudio::StreamParameters Struct Reference</h1><!-- doxytag: class="RtAudio::StreamParameters" -->The structure for specifying input or ouput stream parameters. +<!-- Generated by Doxygen 1.5.8 --> + <div class="navpath"><a class="el" href="classRtAudio.html">RtAudio</a>::<a class="el" href="structRtAudio_1_1StreamParameters.html">StreamParameters</a> + </div> +<div class="contents"> +<h1>RtAudio::RtAudio::StreamParameters Struct Reference</h1><!-- doxytag: class="RtAudio::StreamParameters" -->The structure for specifying input or ouput stream parameters. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="RtAudio_8h-source.html">RtAudio.h</a>></code> <p> + +<p> <a href="structRtAudio_1_1StreamParameters-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamParameters.html#o0">deviceId</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamParameters.html#ffd27496c70c0986522056234c64e28e">deviceId</a></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamParameters.html#o1">nChannels</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamParameters.html#78798b65fada7941e1a7e47c11c9e627">nChannels</a></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamParameters.html#o2">firstChannel</a></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structRtAudio_1_1StreamParameters.html#ddc8281f23a87455ec6dedbc766a74db">firstChannel</a></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> -The structure for specifying input or ouput stream parameters. -<p> -<hr><h2>Member Data Documentation</h2> -<a class="anchor" name="o0"></a><!-- doxytag: member="RtAudio::StreamParameters::deviceId" ref="o0" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +The structure for specifying input or ouput stream parameters. <hr><h2>Member Data Documentation</h2> +<a class="anchor" name="ffd27496c70c0986522056234c64e28e"></a><!-- doxytag: member="RtAudio::StreamParameters::deviceId" ref="ffd27496c70c0986522056234c64e28e" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">unsigned int <a class="el" href="structRtAudio_1_1StreamParameters.html#o0">RtAudio::StreamParameters::deviceId</a> </td> + <td class="memname">unsigned int RtAudio::RtAudio::StreamParameters::deviceId </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -Device index (0 to <a class="el" href="classRtAudio.html#a3">getDeviceCount()</a> - 1). </td> - </tr> -</table> -<a class="anchor" name="o1"></a><!-- doxytag: member="RtAudio::StreamParameters::nChannels" ref="o1" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +Device index (0 to <a class="el" href="classRtAudio.html#747ce2d73803641bbb66d6e78092aa1a" title="A public function that queries for the number of audio devices available.">getDeviceCount()</a> - 1). +</div> +</div><p> +<a class="anchor" name="78798b65fada7941e1a7e47c11c9e627"></a><!-- doxytag: member="RtAudio::StreamParameters::nChannels" ref="78798b65fada7941e1a7e47c11c9e627" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">unsigned int <a class="el" href="structRtAudio_1_1StreamParameters.html#o1">RtAudio::StreamParameters::nChannels</a> </td> + <td class="memname">unsigned int RtAudio::RtAudio::StreamParameters::nChannels </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -Number of channels. </td> - </tr> -</table> -<a class="anchor" name="o2"></a><!-- doxytag: member="RtAudio::StreamParameters::firstChannel" ref="o2" args="" --><p> -<table class="mdTable" cellpadding="2" cellspacing="0"> - <tr> - <td class="mdRow"> - <table cellpadding="0" cellspacing="0" border="0"> +Number of channels. +</div> +</div><p> +<a class="anchor" name="ddc8281f23a87455ec6dedbc766a74db"></a><!-- doxytag: member="RtAudio::StreamParameters::firstChannel" ref="ddc8281f23a87455ec6dedbc766a74db" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> <tr> - <td class="md" nowrap valign="top">unsigned int <a class="el" href="structRtAudio_1_1StreamParameters.html#o2">RtAudio::StreamParameters::firstChannel</a> </td> + <td class="memname">unsigned int RtAudio::RtAudio::StreamParameters::firstChannel </td> </tr> </table> - </td> - </tr> -</table> -<table cellspacing="5" cellpadding="0" border="0"> - <tr> - <td> - - </td> - <td> +</div> +<div class="memdoc"> <p> -First channel index on device (default = 0). </td> - </tr> -</table> +First channel index on device (default = 0). +</div> +</div><p> <hr>The documentation for this struct was generated from the following file:<ul> <li><a class="el" href="RtAudio_8h-source.html">RtAudio.h</a></ul> +</div> <HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> - <td>©2001-2008 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> + <td>©2001-2009 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr> </table> </BODY> diff --git a/doc/html/tab_b.gif b/doc/html/tab_b.gif Binary files differnew file mode 100644 index 0000000..0d62348 --- /dev/null +++ b/doc/html/tab_b.gif diff --git a/doc/html/tab_l.gif b/doc/html/tab_l.gif Binary files differnew file mode 100644 index 0000000..9b1e633 --- /dev/null +++ b/doc/html/tab_l.gif diff --git a/doc/html/tab_r.gif b/doc/html/tab_r.gif Binary files differnew file mode 100644 index 0000000..ce9dd9f --- /dev/null +++ b/doc/html/tab_r.gif diff --git a/doc/html/tabs.css b/doc/html/tabs.css new file mode 100644 index 0000000..ab02c62 --- /dev/null +++ b/doc/html/tabs.css @@ -0,0 +1,105 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : 80%; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : 80%; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI.current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI.current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.navpath +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; + text-align : center; + margin : 2px; + padding : 2px; +} diff --git a/doc/html/updates.html b/doc/html/updates.html index 55e4639..88fd7d4 100644 --- a/doc/html/updates.html +++ b/doc/html/updates.html @@ -25,7 +25,8 @@ </ul></td><td>UC<a href="#4"><sup>4</sup></a></td></tr> <tr><td>5</td><td>Robust support for full-duplex with different devices. Provide well-defined behavior if the devices get out of sync, with input taking precedence, so no incoming samples are lost (if possible).</td><td>UC</td></tr> <tr><td>6</td><td>More sophisticated querying of device capabilities - for example, it'd be nice to figure out that a device supports either 4 channels of 16-bit or 2 channels of 24-bit audio.</td><td>UC</td></tr> - +<tr><td>7</td><td>A faster device querying capability in DirectSound API - the current approach can take an extremely long time, especially for devices with many channels (like an RME Fireface 800).</td><td>UC</td></tr> +<tr><td>8</td><td>A way to specify a desired device name, instead of a device index, when opening a stream?</td><td>UC</td></tr> </table> @@ -63,6 +64,12 @@ <tr><td>10</td><td>Choice of opening a device in exclusive or non-exclusive mode. If opening in non-exclusive mode, try to use the device as-is without changing its sample rate, etc - this is good when users want to use two audio devices at once.</td><td><a href="#3"><sup>3</sup></a>New RtAudio::StreamOptions structure and parameters</td><td>4.0</td></tr> +<tr><td>11</td><td>Previous CoreAudio support included only a single stream with multiple channels or multiple one-channel streams.</td><td>Added support for arbitrary stream channel configurations (GS)</td><td>4.0.5</td></tr> + +<tr><td>12</td><td>Added function to return actual sample rate used by a stream because sometimes it varies slightly from the specified one.</td><td>New <tt>getStreamSampleRate()</tt> function (Theo Veenker)</td><td>4.0.5</td></tr> + +<tr><td>13</td><td>Added way to specify realtime scheduling for unices.</td><td>New StreamOptions flag "RTAUDIO_SCHEDULE_REALTIME" and attribute "priority" to StreamOptions (Theo Veenker)</td><td>4.0.5</td></tr> + </table> <h2>Details:</h2> |
