mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-03 03:20:57 +00:00
Binaural synthesis (confbridge): Adds utils/conf_bridge_binaural_hrir_importer
Adds the import tool for converting a HRIR database to hrirs.h ASTERISK-26292 Change-Id: I51eb31b54c23ffd9b544bdc6a09d20c112c8a547
This commit is contained in:
committed by
George Joseph
parent
0b5a17082b
commit
b58de2fab7
@@ -57,6 +57,7 @@ RESAMPLE=@PBX_RESAMPLE@
|
|||||||
FFTW3=@PBX_FFTW3@
|
FFTW3=@PBX_FFTW3@
|
||||||
RADIUS=@PBX_RADIUS@
|
RADIUS=@PBX_RADIUS@
|
||||||
LAUNCHD=@PBX_LAUNCHD@
|
LAUNCHD=@PBX_LAUNCHD@
|
||||||
|
SNDFILE=@PBX_SNDFILE@
|
||||||
SPANDSP=@PBX_SPANDSP@
|
SPANDSP=@PBX_SPANDSP@
|
||||||
SPEEX=@PBX_SPEEX@
|
SPEEX=@PBX_SPEEX@
|
||||||
SPEEXDSP=@PBX_SPEEXDSP@
|
SPEEXDSP=@PBX_SPEEXDSP@
|
||||||
|
227
configure
vendored
227
configure
vendored
@@ -835,6 +835,10 @@ PBX_SDL
|
|||||||
SDL_DIR
|
SDL_DIR
|
||||||
SDL_INCLUDE
|
SDL_INCLUDE
|
||||||
SDL_LIB
|
SDL_LIB
|
||||||
|
PBX_SNDFILE
|
||||||
|
SNDFILE_DIR
|
||||||
|
SNDFILE_INCLUDE
|
||||||
|
SNDFILE_LIB
|
||||||
PBX_RESAMPLE
|
PBX_RESAMPLE
|
||||||
RESAMPLE_DIR
|
RESAMPLE_DIR
|
||||||
RESAMPLE_INCLUDE
|
RESAMPLE_INCLUDE
|
||||||
@@ -1258,7 +1262,6 @@ COMPRESS
|
|||||||
FIND
|
FIND
|
||||||
PYTHON
|
PYTHON
|
||||||
FLEX
|
FLEX
|
||||||
CUT
|
|
||||||
CAT
|
CAT
|
||||||
CMP
|
CMP
|
||||||
BISON
|
BISON
|
||||||
@@ -1345,7 +1348,6 @@ infodir
|
|||||||
docdir
|
docdir
|
||||||
oldincludedir
|
oldincludedir
|
||||||
includedir
|
includedir
|
||||||
runstatedir
|
|
||||||
localstatedir
|
localstatedir
|
||||||
sharedstatedir
|
sharedstatedir
|
||||||
sysconfdir
|
sysconfdir
|
||||||
@@ -1432,6 +1434,7 @@ with_pwlib
|
|||||||
with_radius
|
with_radius
|
||||||
with_fftw3
|
with_fftw3
|
||||||
with_resample
|
with_resample
|
||||||
|
with_sndfile
|
||||||
with_sdl
|
with_sdl
|
||||||
with_SDL_image
|
with_SDL_image
|
||||||
with_spandsp
|
with_spandsp
|
||||||
@@ -1528,7 +1531,6 @@ datadir='${datarootdir}'
|
|||||||
sysconfdir='${prefix}/etc'
|
sysconfdir='${prefix}/etc'
|
||||||
sharedstatedir='${prefix}/com'
|
sharedstatedir='${prefix}/com'
|
||||||
localstatedir='${prefix}/var'
|
localstatedir='${prefix}/var'
|
||||||
runstatedir='${localstatedir}/run'
|
|
||||||
includedir='${prefix}/include'
|
includedir='${prefix}/include'
|
||||||
oldincludedir='/usr/include'
|
oldincludedir='/usr/include'
|
||||||
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
|
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
|
||||||
@@ -1781,15 +1783,6 @@ do
|
|||||||
| -silent | --silent | --silen | --sile | --sil)
|
| -silent | --silent | --silen | --sile | --sil)
|
||||||
silent=yes ;;
|
silent=yes ;;
|
||||||
|
|
||||||
-runstatedir | --runstatedir | --runstatedi | --runstated \
|
|
||||||
| --runstate | --runstat | --runsta | --runst | --runs \
|
|
||||||
| --run | --ru | --r)
|
|
||||||
ac_prev=runstatedir ;;
|
|
||||||
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
|
|
||||||
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
|
|
||||||
| --run=* | --ru=* | --r=*)
|
|
||||||
runstatedir=$ac_optarg ;;
|
|
||||||
|
|
||||||
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
|
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
|
||||||
ac_prev=sbindir ;;
|
ac_prev=sbindir ;;
|
||||||
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
|
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
|
||||||
@@ -1927,7 +1920,7 @@ fi
|
|||||||
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
|
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
|
||||||
datadir sysconfdir sharedstatedir localstatedir includedir \
|
datadir sysconfdir sharedstatedir localstatedir includedir \
|
||||||
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
|
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
|
||||||
libdir localedir mandir runstatedir
|
libdir localedir mandir
|
||||||
do
|
do
|
||||||
eval ac_val=\$$ac_var
|
eval ac_val=\$$ac_var
|
||||||
# Remove trailing slashes.
|
# Remove trailing slashes.
|
||||||
@@ -2080,7 +2073,6 @@ Fine tuning of the installation directories:
|
|||||||
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
|
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
|
||||||
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
|
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
|
||||||
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
|
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
|
||||||
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
|
|
||||||
--libdir=DIR object code libraries [EPREFIX/lib]
|
--libdir=DIR object code libraries [EPREFIX/lib]
|
||||||
--includedir=DIR C header files [PREFIX/include]
|
--includedir=DIR C header files [PREFIX/include]
|
||||||
--oldincludedir=DIR C header files for non-gcc [/usr/include]
|
--oldincludedir=DIR C header files for non-gcc [/usr/include]
|
||||||
@@ -2194,6 +2186,7 @@ Optional Packages:
|
|||||||
--with-radius=PATH use Radius Client files in PATH
|
--with-radius=PATH use Radius Client files in PATH
|
||||||
--with-fftw3=PATH use LIBFFTW3 files in PATH
|
--with-fftw3=PATH use LIBFFTW3 files in PATH
|
||||||
--with-resample=PATH use LIBRESAMPLE files in PATH
|
--with-resample=PATH use LIBRESAMPLE files in PATH
|
||||||
|
--with-sndfile=PATH use libsndfile files in PATH
|
||||||
--with-sdl=PATH use Sdl files in PATH
|
--with-sdl=PATH use Sdl files in PATH
|
||||||
--with-SDL_image=PATH use Sdl Image files in PATH
|
--with-SDL_image=PATH use Sdl Image files in PATH
|
||||||
--with-spandsp=PATH use SPANDSP files in PATH
|
--with-spandsp=PATH use SPANDSP files in PATH
|
||||||
@@ -6848,47 +6841,6 @@ $as_echo "no" >&6; }
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Extract the first word of "cut", so it can be a program name with args.
|
|
||||||
set dummy cut; ac_word=$2
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
|
||||||
$as_echo_n "checking for $ac_word... " >&6; }
|
|
||||||
if ${ac_cv_path_CUT+:} false; then :
|
|
||||||
$as_echo_n "(cached) " >&6
|
|
||||||
else
|
|
||||||
case $CUT in
|
|
||||||
[\\/]* | ?:[\\/]*)
|
|
||||||
ac_cv_path_CUT="$CUT" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
|
||||||
ac_cv_path_CUT="$as_dir/$ac_word$ac_exec_ext"
|
|
||||||
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
|
||||||
break 2
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
IFS=$as_save_IFS
|
|
||||||
|
|
||||||
test -z "$ac_cv_path_CUT" && ac_cv_path_CUT=":"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
CUT=$ac_cv_path_CUT
|
|
||||||
if test -n "$CUT"; then
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUT" >&5
|
|
||||||
$as_echo "$CUT" >&6; }
|
|
||||||
else
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
|
||||||
$as_echo "no" >&6; }
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Extract the first word of "flex", so it can be a program name with args.
|
# Extract the first word of "flex", so it can be a program name with args.
|
||||||
set dummy flex; ac_word=$2
|
set dummy flex; ac_word=$2
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||||
@@ -9338,7 +9290,7 @@ $as_echo "configuring" >&6; }
|
|||||||
as_fn_error $? "nm is required to build bundled pjproject" "$LINENO" 5
|
as_fn_error $? "nm is required to build bundled pjproject" "$LINENO" 5
|
||||||
fi
|
fi
|
||||||
if test "${MD5}" = ":" ; then
|
if test "${MD5}" = ":" ; then
|
||||||
as_fn_error $? "md5dum is required to build bundled pjproject" "$LINENO" 5
|
as_fn_error $? "md5sum is required to build bundled pjproject" "$LINENO" 5
|
||||||
fi
|
fi
|
||||||
if test "${CAT}" = ":" ; then
|
if test "${CAT}" = ":" ; then
|
||||||
as_fn_error $? "cat is required to build bundled pjproject" "$LINENO" 5
|
as_fn_error $? "cat is required to build bundled pjproject" "$LINENO" 5
|
||||||
@@ -12064,6 +12016,38 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SNDFILE_DESCRIP="libsndfile"
|
||||||
|
SNDFILE_OPTION="sndfile"
|
||||||
|
PBX_SNDFILE=0
|
||||||
|
|
||||||
|
# Check whether --with-sndfile was given.
|
||||||
|
if test "${with_sndfile+set}" = set; then :
|
||||||
|
withval=$with_sndfile;
|
||||||
|
case ${withval} in
|
||||||
|
n|no)
|
||||||
|
USE_SNDFILE=no
|
||||||
|
# -1 is a magic value used by menuselect to know that the package
|
||||||
|
# was disabled, other than 'not found'
|
||||||
|
PBX_SNDFILE=-1
|
||||||
|
;;
|
||||||
|
y|ye|yes)
|
||||||
|
ac_mandatory_list="${ac_mandatory_list} SNDFILE"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
SNDFILE_DIR="${withval}"
|
||||||
|
ac_mandatory_list="${ac_mandatory_list} SNDFILE"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SDL_DESCRIP="Sdl"
|
SDL_DESCRIP="Sdl"
|
||||||
SDL_OPTION="sdl"
|
SDL_OPTION="sdl"
|
||||||
PBX_SDL=0
|
PBX_SDL=0
|
||||||
@@ -14838,7 +14822,7 @@ else
|
|||||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
since some C++ compilers masquerading as C compilers
|
since some C++ compilers masquerading as C compilers
|
||||||
incorrectly reject 9223372036854775807. */
|
incorrectly reject 9223372036854775807. */
|
||||||
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||||
&& LARGE_OFF_T % 2147483647 == 1)
|
&& LARGE_OFF_T % 2147483647 == 1)
|
||||||
? 1 : -1];
|
? 1 : -1];
|
||||||
@@ -14884,7 +14868,7 @@ else
|
|||||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
since some C++ compilers masquerading as C compilers
|
since some C++ compilers masquerading as C compilers
|
||||||
incorrectly reject 9223372036854775807. */
|
incorrectly reject 9223372036854775807. */
|
||||||
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||||
&& LARGE_OFF_T % 2147483647 == 1)
|
&& LARGE_OFF_T % 2147483647 == 1)
|
||||||
? 1 : -1];
|
? 1 : -1];
|
||||||
@@ -14908,7 +14892,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
|||||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
since some C++ compilers masquerading as C compilers
|
since some C++ compilers masquerading as C compilers
|
||||||
incorrectly reject 9223372036854775807. */
|
incorrectly reject 9223372036854775807. */
|
||||||
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||||
&& LARGE_OFF_T % 2147483647 == 1)
|
&& LARGE_OFF_T % 2147483647 == 1)
|
||||||
? 1 : -1];
|
? 1 : -1];
|
||||||
@@ -14953,7 +14937,7 @@ else
|
|||||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
since some C++ compilers masquerading as C compilers
|
since some C++ compilers masquerading as C compilers
|
||||||
incorrectly reject 9223372036854775807. */
|
incorrectly reject 9223372036854775807. */
|
||||||
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||||
&& LARGE_OFF_T % 2147483647 == 1)
|
&& LARGE_OFF_T % 2147483647 == 1)
|
||||||
? 1 : -1];
|
? 1 : -1];
|
||||||
@@ -14977,7 +14961,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
|||||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
since some C++ compilers masquerading as C compilers
|
since some C++ compilers masquerading as C compilers
|
||||||
incorrectly reject 9223372036854775807. */
|
incorrectly reject 9223372036854775807. */
|
||||||
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||||
&& LARGE_OFF_T % 2147483647 == 1)
|
&& LARGE_OFF_T % 2147483647 == 1)
|
||||||
? 1 : -1];
|
? 1 : -1];
|
||||||
@@ -17086,21 +17070,6 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
# https support (in main/http.c) uses funopen on BSD systems,
|
|
||||||
# fopencookie on linux
|
|
||||||
for ac_func in funopen fopencookie
|
|
||||||
do :
|
|
||||||
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
|
||||||
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
|
||||||
if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
|
||||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
|
||||||
_ACEOF
|
|
||||||
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
for ac_func in inet_aton
|
for ac_func in inet_aton
|
||||||
do :
|
do :
|
||||||
ac_fn_c_check_func "$LINENO" "inet_aton" "ac_cv_func_inet_aton"
|
ac_fn_c_check_func "$LINENO" "inet_aton" "ac_cv_func_inet_aton"
|
||||||
@@ -29413,6 +29382,112 @@ $as_echo "#define HAVE_FFTW 1" >>confdefs.h
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "x${PBX_SNDFILE}" != "x1" -a "${USE_SNDFILE}" != "no"; then
|
||||||
|
pbxlibdir=""
|
||||||
|
# if --with-SNDFILE=DIR has been specified, use it.
|
||||||
|
if test "x${SNDFILE_DIR}" != "x"; then
|
||||||
|
if test -d ${SNDFILE_DIR}/lib; then
|
||||||
|
pbxlibdir="-L${SNDFILE_DIR}/lib"
|
||||||
|
else
|
||||||
|
pbxlibdir="-L${SNDFILE_DIR}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
pbxfuncname="sf_open"
|
||||||
|
if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
|
||||||
|
AST_SNDFILE_FOUND=yes
|
||||||
|
else
|
||||||
|
ast_ext_lib_check_save_CFLAGS="${CFLAGS}"
|
||||||
|
CFLAGS="${CFLAGS} "
|
||||||
|
as_ac_Lib=`$as_echo "ac_cv_lib_sndfile_${pbxfuncname}" | $as_tr_sh`
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${pbxfuncname} in -lsndfile" >&5
|
||||||
|
$as_echo_n "checking for ${pbxfuncname} in -lsndfile... " >&6; }
|
||||||
|
if eval \${$as_ac_Lib+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
ac_check_lib_save_LIBS=$LIBS
|
||||||
|
LIBS="-lsndfile ${pbxlibdir} -lsndfile $LIBS"
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
/* 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
|
||||||
|
char ${pbxfuncname} ();
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return ${pbxfuncname} ();
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_c_try_link "$LINENO"; then :
|
||||||
|
eval "$as_ac_Lib=yes"
|
||||||
|
else
|
||||||
|
eval "$as_ac_Lib=no"
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
conftest$ac_exeext conftest.$ac_ext
|
||||||
|
LIBS=$ac_check_lib_save_LIBS
|
||||||
|
fi
|
||||||
|
eval ac_res=\$$as_ac_Lib
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
||||||
|
$as_echo "$ac_res" >&6; }
|
||||||
|
if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
|
||||||
|
AST_SNDFILE_FOUND=yes
|
||||||
|
else
|
||||||
|
AST_SNDFILE_FOUND=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
CFLAGS="${ast_ext_lib_check_save_CFLAGS}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# now check for the header.
|
||||||
|
if test "${AST_SNDFILE_FOUND}" = "yes"; then
|
||||||
|
SNDFILE_LIB="${pbxlibdir} -lsndfile -lsndfile"
|
||||||
|
# if --with-SNDFILE=DIR has been specified, use it.
|
||||||
|
if test "x${SNDFILE_DIR}" != "x"; then
|
||||||
|
SNDFILE_INCLUDE="-I${SNDFILE_DIR}/include"
|
||||||
|
fi
|
||||||
|
SNDFILE_INCLUDE="${SNDFILE_INCLUDE} "
|
||||||
|
if test "xsndfile.h" = "x" ; then # no header, assume found
|
||||||
|
SNDFILE_HEADER_FOUND="1"
|
||||||
|
else # check for the header
|
||||||
|
ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}"
|
||||||
|
CPPFLAGS="${CPPFLAGS} ${SNDFILE_INCLUDE}"
|
||||||
|
ac_fn_c_check_header_mongrel "$LINENO" "sndfile.h" "ac_cv_header_sndfile_h" "$ac_includes_default"
|
||||||
|
if test "x$ac_cv_header_sndfile_h" = xyes; then :
|
||||||
|
SNDFILE_HEADER_FOUND=1
|
||||||
|
else
|
||||||
|
SNDFILE_HEADER_FOUND=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}"
|
||||||
|
fi
|
||||||
|
if test "x${SNDFILE_HEADER_FOUND}" = "x0" ; then
|
||||||
|
SNDFILE_LIB=""
|
||||||
|
SNDFILE_INCLUDE=""
|
||||||
|
else
|
||||||
|
if test "x${pbxfuncname}" = "x" ; then # only checking headers -> no library
|
||||||
|
SNDFILE_LIB=""
|
||||||
|
fi
|
||||||
|
PBX_SNDFILE=1
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_SNDFILE 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if test "x${PBX_SPANDSP}" != "x1" -a "${USE_SPANDSP}" != "no"; then
|
if test "x${PBX_SPANDSP}" != "x1" -a "${USE_SPANDSP}" != "no"; then
|
||||||
if test "xminimum version of SpanDSP" != "x"; then
|
if test "xminimum version of SpanDSP" != "x"; then
|
||||||
|
@@ -551,6 +551,7 @@ AST_EXT_LIB_SETUP([PWLIB], [PWlib], [pwlib])
|
|||||||
AST_EXT_LIB_SETUP([RADIUS], [Radius Client], [radius])
|
AST_EXT_LIB_SETUP([RADIUS], [Radius Client], [radius])
|
||||||
AST_EXT_LIB_SETUP([FFTW3], [LIBFFTW3], [fftw3])
|
AST_EXT_LIB_SETUP([FFTW3], [LIBFFTW3], [fftw3])
|
||||||
AST_EXT_LIB_SETUP([RESAMPLE], [LIBRESAMPLE], [resample])
|
AST_EXT_LIB_SETUP([RESAMPLE], [LIBRESAMPLE], [resample])
|
||||||
|
AST_EXT_LIB_SETUP([SNDFILE], [libsndfile], [sndfile])
|
||||||
AST_EXT_LIB_SETUP([SDL], [Sdl], [sdl])
|
AST_EXT_LIB_SETUP([SDL], [Sdl], [sdl])
|
||||||
AST_EXT_LIB_SETUP([SDL_IMAGE], [Sdl Image], [SDL_image])
|
AST_EXT_LIB_SETUP([SDL_IMAGE], [Sdl Image], [SDL_image])
|
||||||
AST_EXT_LIB_SETUP([SPANDSP], [SPANDSP], [spandsp])
|
AST_EXT_LIB_SETUP([SPANDSP], [SPANDSP], [spandsp])
|
||||||
@@ -2284,6 +2285,9 @@ AST_EXT_LIB_CHECK([FFTW3], [fftw3], [fftw_alloc_real], [fftw3.h], [-lfftw3])
|
|||||||
if test "$PBX_FFTW3" = "1"; then
|
if test "$PBX_FFTW3" = "1"; then
|
||||||
AC_DEFINE([HAVE_FFTW], 1, [Define 1 if your system has fftw.])
|
AC_DEFINE([HAVE_FFTW], 1, [Define 1 if your system has fftw.])
|
||||||
fi
|
fi
|
||||||
|
AST_EXT_LIB_CHECK([SNDFILE], [sndfile], [sf_open], [sndfile.h], [-lsndfile])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
AST_C_COMPILE_CHECK([SPANDSP], [
|
AST_C_COMPILE_CHECK([SPANDSP], [
|
||||||
#if SPANDSP_RELEASE_DATE < 20080516
|
#if SPANDSP_RELEASE_DATE < 20080516
|
||||||
|
@@ -254,9 +254,6 @@
|
|||||||
/* Define to 1 if you have the `fmodl' function. */
|
/* Define to 1 if you have the `fmodl' function. */
|
||||||
#undef HAVE_FMODL
|
#undef HAVE_FMODL
|
||||||
|
|
||||||
/* Define to 1 if you have the `fopencookie' function. */
|
|
||||||
#undef HAVE_FOPENCOOKIE
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `fork' function. */
|
/* Define to 1 if you have the `fork' function. */
|
||||||
#undef HAVE_FORK
|
#undef HAVE_FORK
|
||||||
|
|
||||||
@@ -269,9 +266,6 @@
|
|||||||
/* Define to 1 if you have the `ftruncate' function. */
|
/* Define to 1 if you have the `ftruncate' function. */
|
||||||
#undef HAVE_FTRUNCATE
|
#undef HAVE_FTRUNCATE
|
||||||
|
|
||||||
/* Define to 1 if you have the `funopen' function. */
|
|
||||||
#undef HAVE_FUNOPEN
|
|
||||||
|
|
||||||
/* Define to 1 if your GCC C compiler provides atomic operations. */
|
/* Define to 1 if your GCC C compiler provides atomic operations. */
|
||||||
#undef HAVE_GCC_ATOMICS
|
#undef HAVE_GCC_ATOMICS
|
||||||
|
|
||||||
@@ -828,6 +822,9 @@
|
|||||||
/* Define to 1 if you have the `sinl' function. */
|
/* Define to 1 if you have the `sinl' function. */
|
||||||
#undef HAVE_SINL
|
#undef HAVE_SINL
|
||||||
|
|
||||||
|
/* Define to 1 if you have the libsndfile library. */
|
||||||
|
#undef HAVE_SNDFILE
|
||||||
|
|
||||||
/* Define to 1 if you have the `socket' function. */
|
/* Define to 1 if you have the `socket' function. */
|
||||||
#undef HAVE_SOCKET
|
#undef HAVE_SOCKET
|
||||||
|
|
||||||
|
@@ -380,3 +380,6 @@ TINFO_DIR=@TINFO_DIR@
|
|||||||
# if poll is not present, let the makefile know.
|
# if poll is not present, let the makefile know.
|
||||||
POLL_AVAILABLE=@HAS_POLL@
|
POLL_AVAILABLE=@HAS_POLL@
|
||||||
TIMERFD_INCLUDE=@TIMERFD_INCLUDE@
|
TIMERFD_INCLUDE=@TIMERFD_INCLUDE@
|
||||||
|
|
||||||
|
SNDFILE_INCLUDE=@SNDFILE_INCLUDE@
|
||||||
|
SNDFILE_LIB=@SNDFILE_LIB@
|
||||||
|
@@ -70,6 +70,10 @@ ifneq ($(filter pbx_ael,$(MENUSELECT_PBX)),)
|
|||||||
UTILS:=$(filter-out conf2ael,$(UTILS))
|
UTILS:=$(filter-out conf2ael,$(UTILS))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(SNDFILE_LIB),)
|
||||||
|
UTILS:=$(filter-out conf_bridge_binaural_hrir_importer,$(UTILS))
|
||||||
|
endif
|
||||||
|
|
||||||
all: $(UTILS)
|
all: $(UTILS)
|
||||||
|
|
||||||
install:
|
install:
|
||||||
@@ -93,6 +97,7 @@ clean:
|
|||||||
rm -f db1-ast/.*.d
|
rm -f db1-ast/.*.d
|
||||||
@$(MAKE) -C db1-ast clean
|
@$(MAKE) -C db1-ast clean
|
||||||
|
|
||||||
|
|
||||||
md5.c: $(ASTTOPDIR)/main/md5.c
|
md5.c: $(ASTTOPDIR)/main/md5.c
|
||||||
$(ECHO_PREFIX) echo " [CP] $(subst $(ASTTOPDIR)/,,$<) -> $@"
|
$(ECHO_PREFIX) echo " [CP] $(subst $(ASTTOPDIR)/,,$<) -> $@"
|
||||||
$(CMD_PREFIX) cp "$<" "$@"
|
$(CMD_PREFIX) cp "$<" "$@"
|
||||||
@@ -188,6 +193,10 @@ smsq: LIBS+=$(POPT_LIB)
|
|||||||
|
|
||||||
streamplayer: streamplayer.o
|
streamplayer: streamplayer.o
|
||||||
|
|
||||||
|
conf_bridge_binaural_hrir_importer: LIBS+=$(SNDFILE_LIB)
|
||||||
|
conf_bridge_binaural_hrir_importer: _ASTCFLAGS+=$(SNDFILE_INCLUDE)
|
||||||
|
conf_bridge_binaural_hrir_importer: conf_bridge_binaural_hrir_importer.o
|
||||||
|
|
||||||
muted: muted.o
|
muted: muted.o
|
||||||
muted: LIBS+=$(AUDIO_LIBS)
|
muted: LIBS+=$(AUDIO_LIBS)
|
||||||
muted: _ASTCFLAGS:=$(filter-out -Werror,$(_ASTCFLAGS))
|
muted: _ASTCFLAGS:=$(filter-out -Werror,$(_ASTCFLAGS))
|
||||||
|
148
utils/conf_bridge_binaural_hrir_importer.c
Normal file
148
utils/conf_bridge_binaural_hrir_importer.c
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
/*
|
||||||
|
* Asterisk -- An open source telephony toolkit.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2016, Digium, Inc.
|
||||||
|
*
|
||||||
|
* Frank Haase <fra.haase@gmail.com>
|
||||||
|
* Dennis Guse <dennis.guse@alumni.tu-berlin.de>
|
||||||
|
*
|
||||||
|
* See http://www.asterisk.org for more information about
|
||||||
|
* the Asterisk project. Please do not directly contact
|
||||||
|
* any of the maintainers of this project for assistance;
|
||||||
|
* the project provides a web site, mailing lists and IRC
|
||||||
|
* channels for your use.
|
||||||
|
*
|
||||||
|
* This program is free software, distributed under the terms of
|
||||||
|
* the GNU General Public License Version 2. See the LICENSE file
|
||||||
|
* at the top of the source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \file
|
||||||
|
* Converts a Head Related Impulse Response (HRIR) database (a multi-channel wave) into a C header file.
|
||||||
|
* HRIR for the left ear and HRIR for right ear have to be interleaved.
|
||||||
|
* No further signal processing is applied (e.g., resampling).
|
||||||
|
*
|
||||||
|
* Info messages are printed to stderror and the generated header file to output.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sndfile.h>
|
||||||
|
|
||||||
|
int main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
char *hrir_filename;
|
||||||
|
unsigned int binaural_index_start;
|
||||||
|
unsigned int binaural_index_end;
|
||||||
|
|
||||||
|
SNDFILE *hrir_file;
|
||||||
|
SF_INFO hrir_info;
|
||||||
|
float *hrir_data;
|
||||||
|
|
||||||
|
unsigned int impulse_response_index_start;
|
||||||
|
unsigned int impulse_response_index_end;
|
||||||
|
|
||||||
|
int j;
|
||||||
|
int ir_current;
|
||||||
|
|
||||||
|
if(argc != 4) {
|
||||||
|
puts("HRIR database to C header file converter.");
|
||||||
|
puts("Usage: conf_bridge_binaural_hrir_importer HRIR.wav INDEX_START INDEX_END > OUTPUT.h");
|
||||||
|
puts("Example: conf_bridge_binaural_hrir_importer hrirs.wav 0 180 > ../bridges/bridge_softmix/include/hrirs.h");
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Parse arguments */
|
||||||
|
hrir_filename = argv[1];
|
||||||
|
binaural_index_start = atoi(argv[2]);
|
||||||
|
binaural_index_end = atoi(argv[3]);
|
||||||
|
|
||||||
|
/* Read HRIR database */
|
||||||
|
hrir_file = sf_open(hrir_filename, SFM_READ, &hrir_info);
|
||||||
|
if(hrir_file == NULL) {
|
||||||
|
fprintf(stderr, "ERROR: Could not open HRIR database (%s).\n", hrir_filename);
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
fprintf(stderr, "INFO: Opened HRIR database (%s) with: number channels: %d; samplerate: %d; samples per channel: %ld\n", hrir_filename, hrir_info.channels, hrir_info.samplerate, hrir_info.frames);
|
||||||
|
|
||||||
|
hrir_data = (float *)malloc(hrir_info.channels * hrir_info.frames * sizeof(float));
|
||||||
|
if(hrir_data == NULL) {
|
||||||
|
fprintf(stderr, "ERROR: Out of memory!");
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Channels are interleaved */
|
||||||
|
sf_read_float(hrir_file, hrir_data, hrir_info.channels * hrir_info.frames);
|
||||||
|
sf_close(hrir_file);
|
||||||
|
|
||||||
|
if(binaural_index_start >= binaural_index_end) {
|
||||||
|
fprintf(stderr, "ERROR: INDEX_START (%d) must be smaller than INDEX_END (%d).", binaural_index_start, binaural_index_end);
|
||||||
|
free(hrir_data);
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (binaural_index_end * 2 >= hrir_info.channels) {
|
||||||
|
fprintf(stderr, "ERROR: END_INDEX (%d) is out of range for HRIR database (%s).\n", binaural_index_end, hrir_filename);
|
||||||
|
free(hrir_data);
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Convert indices */
|
||||||
|
impulse_response_index_start = 2 * binaural_index_start;
|
||||||
|
impulse_response_index_end = (binaural_index_end + 1) * 2;
|
||||||
|
|
||||||
|
/* Write header */
|
||||||
|
printf("//Used hrirs database: %s\n", hrir_filename);
|
||||||
|
printf("//Start index in database: %d\n", impulse_response_index_start);
|
||||||
|
printf("//End index in database: %d\n", impulse_response_index_end);
|
||||||
|
|
||||||
|
printf("#define HRIRS_IMPULSE_LEN %ld\n", hrir_info.frames);
|
||||||
|
printf("#define HRIRS_IMPULSE_SIZE %d\n", binaural_index_end - binaural_index_start + 1);
|
||||||
|
printf("#define HRIRS_SAMPLE_RATE %d\n", hrir_info.samplerate);
|
||||||
|
|
||||||
|
printf("float hrirs_left[HRIRS_IMPULSE_SIZE][HRIRS_IMPULSE_LEN] = {\n");
|
||||||
|
for (ir_current = impulse_response_index_start; ir_current < impulse_response_index_end; ir_current += 2) {
|
||||||
|
printf("{");
|
||||||
|
|
||||||
|
for (j = 0; j < hrir_info.frames - 1; j++) {
|
||||||
|
printf("%.16f,", hrir_data[ir_current * hrir_info.frames + j]);
|
||||||
|
}
|
||||||
|
/* Write last without trailing "," */
|
||||||
|
printf("%.16f", hrir_data[ir_current * hrir_info.frames + hrir_info.frames - 1]);
|
||||||
|
|
||||||
|
if (ir_current + 2 < impulse_response_index_end) {
|
||||||
|
printf("},\n");
|
||||||
|
} else {
|
||||||
|
printf("}};");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\nfloat hrirs_right[HRIRS_IMPULSE_SIZE][HRIRS_IMPULSE_LEN] = {\n");
|
||||||
|
for (ir_current = impulse_response_index_start + 1; ir_current < impulse_response_index_end + 1; ir_current += 2) {
|
||||||
|
printf("{");
|
||||||
|
|
||||||
|
for (j = 0; j < hrir_info.frames - 1; j++) {
|
||||||
|
printf("%.16f,", hrir_data[ir_current * hrir_info.frames + j]);
|
||||||
|
}
|
||||||
|
/* Write last without trailing "," */
|
||||||
|
printf("%.16f", hrir_data[ir_current * hrir_info.frames + hrir_info.frames - 1]);
|
||||||
|
|
||||||
|
if (ir_current + 2 < impulse_response_index_end) {
|
||||||
|
printf("},\n");
|
||||||
|
} else {
|
||||||
|
printf("}};");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(stderr, "INFO: Successfully converted: imported %d impulse responses.\n", impulse_response_index_end - impulse_response_index_start);
|
||||||
|
free(hrir_data);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
@@ -20,6 +20,11 @@
|
|||||||
<depend>newt</depend>
|
<depend>newt</depend>
|
||||||
<support_level>extended</support_level>
|
<support_level>extended</support_level>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="conf_bridge_binaural_hrir_importer">
|
||||||
|
<defaultenabled>no</defaultenabled>
|
||||||
|
<depend>sndfile</depend>
|
||||||
|
<support_level>extended</support_level>
|
||||||
|
</member>
|
||||||
<member name="check_expr">
|
<member name="check_expr">
|
||||||
<defaultenabled>no</defaultenabled>
|
<defaultenabled>no</defaultenabled>
|
||||||
<support_level>extended</support_level>
|
<support_level>extended</support_level>
|
||||||
|
Reference in New Issue
Block a user