From 98b3ec84636a47262035fdaab189d1696086814b Mon Sep 17 00:00:00 2001 From: "yilun.zhang" Date: Fri, 28 Jun 2024 15:23:28 +0800 Subject: [PATCH] Make the binaural compile more efficient(#110 was covered) --- code/CMakeLists.txt | 12 + code/dep_codecs/build.sh | 231 ++++++++++++++++-- code/dep_external/src/binaural/README.md | 21 +- code/dep_external/src/binaural/build.sh | 124 +++++----- .../src/binaural/iamf2bear/CMakeLists.txt | 41 +++- .../src/binaural/iamf2bear/iamf2bear.cpp | 19 +- .../binaural/iamf2resonance/CMakeLists.txt | 20 +- ...onance_audio_api2.cc => iamf2resonance.cc} | 2 +- ...ance_audio_api2.h => iamf_resonance_api.h} | 0 code/test/tools/iamfdec/CMakeLists.txt | 4 +- 10 files changed, 349 insertions(+), 125 deletions(-) rename code/dep_external/src/binaural/iamf2resonance/{resonance_audio_api2.cc => iamf2resonance.cc} (97%) rename code/dep_external/src/binaural/iamf2resonance/{resonance_audio_api2.h => iamf_resonance_api.h} (100%) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index a096adb5..0a691192 100755 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -96,6 +96,12 @@ link_directories ( ${CODEC_LIB_DIR} ) +if(MULTICHANNEL_BINAURALIZER OR HOA_BINAURALIZER) +link_directories( + ${EXTER_LIB_DIR}/binaural +) +endif() + if(BUILD_SHARED_LIBS) add_library(${PROJECT_NAME} SHARED ${DIR_DEP_EXTERNAL_WAV} ${DIR_IAMF_COMMON} ${DIR_IAMF_DEC_OPUS} ${DIR_IAMF_DEC_AAC} ${DIR_IAMF_DEC_FLAC} ${DIR_IAMF_DEC_PCM} ${DIR_IAMF_DEC}) @@ -112,6 +118,12 @@ if(BUILD_SHARED_LIBS) target_link_libraries (${PROJECT_NAME} FLAC) endif() + if(MULTICHANNEL_BINAURALIZER) + target_link_libraries (${PROJECT_NAME} iamf2bear) + endif() + if(HOA_BINAURALIZER) + target_link_libraries (${PROJECT_NAME} iamf2resonance) + endif() else() add_library(${PROJECT_NAME} STATIC ${DIR_DEP_EXTERNAL_WAV} ${DIR_IAMF_COMMON} ${DIR_IAMF_DEC_OPUS} ${DIR_IAMF_DEC_AAC} ${DIR_IAMF_DEC_PCM} diff --git a/code/dep_codecs/build.sh b/code/dep_codecs/build.sh index f1771fed..d3793ca4 100755 --- a/code/dep_codecs/build.sh +++ b/code/dep_codecs/build.sh @@ -9,16 +9,114 @@ # www.aomedia.org/license/patent. # -OPUS_DIR="$( cd "$(dirname "$0")" ; pwd -P )/opus/opus-1.4" -AAC_DIR="$( cd "$(dirname "$0")" ; pwd -P )/aac/fdk-aac-free-2.0.0" -FLAC_DIR="$( cd "$(dirname "$0")" ; pwd -P )/flac/flac-1.4.2" -CODEC_LIB_DIR="$( cd "$(dirname "$0")" ; pwd -P )/lib" +set -e + +run () +{ + if [ "$VERBOSE" = "yes" ] ; then + echo "##### NEW COMMAND" + echo "$@" + $@ 2>&1 + else + if [ -n "$TMPLOG" ] ; then + echo "##### NEW COMMAND" >> $TMPLOG + echo "$@" >> $TMPLOG + $@ 2>&1 | tee -a $TMPLOG + else + $@ > /dev/null 2>&1 + fi + fi +} + +pattern_match () +{ + echo "$2" | grep -q -E -e "$1" +} + +# Find if a given shell program is available. +# +# $1: variable name +# $2: program name +# +# Result: set $1 to the full path of the corresponding command +# or to the empty/undefined string if not available +# +find_program () +{ + eval $1=`command -v $2` +} + +prepare_download () +{ + find_program CMD_WGET wget + find_program CMD_CURL curl + find_program CMD_SCRP scp +} + +# Download a file with either 'curl', 'wget' or 'scp' +# +# $1: source URL (e.g. http://foo.com, ssh://blah, /some/path) +# $2: target file +download_file () +{ + # Is this HTTP, HTTPS or FTP ? + if pattern_match "^(http|https|ftp):.*" "$1"; then + if [ -n "$CMD_WGET" ] ; then + run $CMD_WGET -O $2 $1 + elif [ -n "$CMD_CURL" ] ; then + run $CMD_CURL -L -o $2 $1 + else + echo "Please install wget or curl on this machine" + exit 1 + fi + return + fi + + # Is this SSH ? + # Accept both ssh:// or : + # + if pattern_match "^(ssh|[^:]+):.*" "$1"; then + if [ -n "$CMD_SCP" ] ; then + scp_src=`echo $1 | sed -e s%ssh://%%g` + run $CMD_SCP $scp_src $2 + else + echo "Please install scp on this machine" + exit 1 + fi + return + fi + + # Is this a file copy ? + # Accept both file:// or / + # + if pattern_match "^(file://|/).*" "$1"; then + cp_src=`echo $1 | sed -e s%^file://%%g` + run cp -f $cp_src $2 + return + fi +} + + + +OPUS_DIR="$( cd "$(dirname "$0")" ; pwd -P )/opus" +AAC_DIR="$( cd "$(dirname "$0")" ; pwd -P )/aac" +FLAC_DIR="$( cd "$(dirname "$0")" ; pwd -P )/flac" +CODECS_DIR="$( cd "$(dirname "$0")" ; pwd -P )" +OPUS_TAR="opus-1.4.tar.gz" +AAC_TAR="fdk-aac-free-2.0.0.tar.gz" +FLAC_TAR="flac-1.4.2.tar.xz" declare -a CONFIG_FLAGS_OPUS declare -a CONFIG_FLAGS_AAC declare -a CONFIG_FLAGS_FLAC -CONFIG_FLAGS_AAC="--enable-static --disable-shared" -CONFIG_FLAGS_FLAC="-DWITH_OGG=OFF -DBUILD_CXXLIBS=OFF" +CONFIG_FLAGS_OPUS="-DCMAKE_C_FLAGS="-fPIC"" +CONFIG_FLAGS_AAC="--enable-static --disable-shared --with-pic" +CONFIG_FLAGS_FLAC="-DWITH_OGG=OFF -DBUILD_CXXLIBS=OFF -DCMAKE_C_FLAGS="-fPIC"" + +OPUS_DOWNLOAD_LINK="https://downloads.xiph.org/releases/opus/opus-1.4.tar.gz" +AAC_DOWNLOAD_LINK="https://people.freedesktop.org/~wtay/fdk-aac-free-2.0.0.tar.gz" +FLAC_DOWNLOAD_LINK="https://downloads.xiph.org/releases/flac/flac-1.4.2.tar.xz" + function show_help() { @@ -47,30 +145,30 @@ do want_help=yes ;; --x86_64-mingw_toolchain) - CONFIG_FLAGS_OPUS="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/x86_64-mingw.cmake -DOPUS_STACK_PROTECTOR=OFF" - CONFIG_FLAGS_AAC="--host=x86_64-w64-mingw32 --enable-static --disable-shared" - CONFIG_FLAGS_FLAC="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/x86_64-mingw.cmake -DWITH_OGG=OFF -DBUILD_CXXLIBS=OFF -DWITH_STACK_PROTECTOR=OFF" + CONFIG_FLAGS_OPUS="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/x86_64-mingw.cmake -DOPUS_STACK_PROTECTOR=OFF -DCMAKE_C_FLAGS="-fPIC"" + CONFIG_FLAGS_AAC="--host=x86_64-w64-mingw32 --enable-static --disable-shared --with-pic" + CONFIG_FLAGS_FLAC="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/x86_64-mingw.cmake -DWITH_OGG=OFF -DBUILD_CXXLIBS=OFF -DWITH_STACK_PROTECTOR=OFF -DCMAKE_C_FLAGS="-fPIC"" shift # past argument with no value ;; --arm64-linux_toolchain) - CONFIG_FLAGS_OPUS="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/arm64-linux.cmake -DOPUS_STACK_PROTECTOR=OFF" - CONFIG_FLAGS_AAC="--host=aarch64-linux-gnu --enable-static --disable-shared" - CONFIG_FLAGS_FLAC="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/arm64-linux.cmake -DCMAKE_C_FLAGS="-fPIC" -DWITH_OGG=OFF -DBUILD_CXXLIBS=OFF -DWITH_STACK_PROTECTOR=OFF" + CONFIG_FLAGS_OPUS="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/arm64-linux.cmake -DOPUS_STACK_PROTECTOR=OFF -DCMAKE_C_FLAGS="-fPIC"" + CONFIG_FLAGS_AAC="--host=aarch64-linux-gnu --enable-static --disable-shared --with-pic" + CONFIG_FLAGS_FLAC="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/arm64-linux.cmake -DWITH_OGG=OFF -DBUILD_CXXLIBS=OFF -DWITH_STACK_PROTECTOR=OFF -DCMAKE_C_FLAGS="-fPIC"" shift # past argument with no value ;; --x86-macos_toolchain) - CONFIG_FLAGS_OPUS="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/x86-macos.cmake" - CONFIG_FLAGS_AAC="--host=x86_64-apple-darwin20.4 --enable-static --disable-shared" - CONFIG_FLAGS_FLAC="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/x86-macos.cmake -DWITH_OGG=OFF -DBUILD_CXXLIBS=OFF" + CONFIG_FLAGS_OPUS="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/x86-macos.cmake -DCMAKE_C_FLAGS="-fPIC"" + CONFIG_FLAGS_AAC="--host=x86_64-apple-darwin20.4 --enable-static --disable-shared --with-pic" + CONFIG_FLAGS_FLAC="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/x86-macos.cmake -DWITH_OGG=OFF -DBUILD_CXXLIBS=OFF -DCMAKE_C_FLAGS="-fPIC"" shift # past argument with no value ;; --arm64-ios_toolchain) CONFIG_FLAGS_OPUS="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/arm64-ios.cmake" - CONFIG_FLAGS_AAC="--host=aarch64-apple-darwin20.4 --enable-static --disable-shared" - CONFIG_FLAGS_FLAC="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/arm64-ios.cmake -DWITH_OGG=OFF -DBUILD_CXXLIBS=OFF" + CONFIG_FLAGS_AAC="--host=aarch64-apple-darwin20.4 --enable-static --disable-shared --with-pic" + CONFIG_FLAGS_FLAC="-DCMAKE_TOOLCHAIN_FILE=../../../build/cmake/toolchains/arm64-ios.cmake -DWITH_OGG=OFF -DBUILD_CXXLIBS=OFF -DCMAKE_C_FLAGS="-fPIC"" shift # past argument with no value ;; @@ -86,29 +184,114 @@ if test "x$want_help" = xyes; then show_help fi +#Delete old libraries +rm -rf $CODECS_DIR/lib + +echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>Codec Download<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" + +CLEAN=yes +DOWNLOAD=yes + +if [ $CLEAN = yes ] ; then + echo "Cleaning: $OPUS_DIR" + rm -f -r $OPUS_DIR + + echo "Cleaning: $AAC_DIR" + rm -f -r $AAC_DIR + + echo "Cleaning: $FLAC_DIR" + rm -f -r $FLAC_DIR + + mkdir $OPUS_DIR + mkdir $AAC_DIR + mkdir $FLAC_DIR + [ "$DOWNLOAD" = "yes" ] || exit 0 +fi + +#Download OPUS +if [ ! -f $OPUS_DIR/$OPUS_TAR ] +then + echo "Downloading opus please wait..." + prepare_download + download_file $OPUS_DOWNLOAD_LINK $OPUS_DIR/$OPUS_TAR +fi + +if [ ! -f $OPUS_DIR/$OPUS_TAR ] +then + echo "Failed to download opus! Please download manually\nand save it in this directory as $OPUS_TAR" + exit 1 +fi + +if [ -f $OPUS_DIR/$OPUS_TAR ] +then + echo "Unpacking opus" + tar -zxf $OPUS_DIR/$OPUS_TAR -C $OPUS_DIR +fi + +#Download AAC +if [ ! -f $AAC_DIR/$AAC_TAR ] +then + echo "Downloading aac please wait..." + prepare_download + download_file $AAC_DOWNLOAD_LINK $AAC_DIR/$AAC_TAR +fi + +if [ ! -f $AAC_DIR/$AAC_TAR ] +then + echo "Failed to download aac! Please download manually\nand save it in this directory as $AAC_TAR" + exit 1 +fi + +if [ -f $AAC_DIR/$AAC_TAR ] +then + echo "Unpacking aac" + tar -zxf $AAC_DIR/$AAC_TAR -C $AAC_DIR +fi + +#Download FLAC +if [ ! -f $FLAC_DIR/$FLAC_TAR ] +then + echo "Downloading flac please wait..." + prepare_download + download_file $FLAC_DOWNLOAD_LINK $FLAC_DIR/$FLAC_TAR +fi + +if [ ! -f $FLAC_DIR/$FLAC_TAR ] +then + echo "Failed to download flac! Please download manually\nand save it in this directory as $FLAC_TAR" + exit 1 +fi + +if [ -f $FLAC_DIR/$FLAC_TAR ] +then + echo "Unpacking flac" + tar -xf $FLAC_DIR/$FLAC_TAR -C $FLAC_DIR +fi + + echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>OPUS Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" -cd $OPUS_DIR +cd $OPUS_DIR/opus-1.4 rm -rf build cmake -B build ./ $CONFIG_FLAGS_OPUS cmake --build build --clean-first -cp -f build/libopus.a $CODEC_LIB_DIR +cmake --install build --prefix $CODECS_DIR echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>AAC Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" -cd $AAC_DIR +cd $AAC_DIR/fdk-aac-free-2.0.0 rm -rf build mkdir build cd build -../configure $CONFIG_FLAGS_AAC +../configure $CONFIG_FLAGS_AAC --prefix=$CODECS_DIR make -cp -f .libs/libfdk-aac.a $CODEC_LIB_DIR +make install echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>FLAC Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" -cd $FLAC_DIR +cd $FLAC_DIR/flac-1.4.2 rm -rf build cmake -B build ./ $CONFIG_FLAGS_FLAC cmake --build build --clean-first -cp -f build/src/libFLAC/libFLAC.a $CODEC_LIB_DIR +cmake --install build --prefix $CODECS_DIR diff --git a/code/dep_external/src/binaural/README.md b/code/dep_external/src/binaural/README.md index 03fa2676..5741d275 100755 --- a/code/dep_external/src/binaural/README.md +++ b/code/dep_external/src/binaural/README.md @@ -1,6 +1,6 @@ README.md ========= -# Dependent Codec Libraries +# Dependent Externals Libraries ## Contents 1. [Downloading the opensource](#Downloading-the-opensource) @@ -10,21 +10,20 @@ README.md ## Downloading the opensource - 1. [visr](https://github.com/ebu/bear/releases/download/v0.0.1-pre/visr-0.13.0-pre-5e13f020.zip) - 2. [boost](https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.zip) - -Please download the opensource and unzip to directory separately as following: -~~~ - rd-audio-visr-public-master - boost_1_82_0 -~~~ + 1. [bear](https://github.com/ebu/bear) + 2. [resonance-audio](https://github.com/resonance-audio/resonance-audio) + ## Building the libraries ### Prerequisites 1. [CMake](https://cmake.org) version 3.6 or higher. - 2. Tool chains if need cross compiling. - + 2. [boost](https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.zip), version 1.82 +~~~ + $ ./bootstrap.sh --with-toolset=gcc + $ ./b2 toolset=gcc + $ ./b2 install +~~~ ### Basic build "build.sh" is an example to build, you can run it directly at your side. \ No newline at end of file diff --git a/code/dep_external/src/binaural/build.sh b/code/dep_external/src/binaural/build.sh index 07a61fc4..ab440db7 100755 --- a/code/dep_external/src/binaural/build.sh +++ b/code/dep_external/src/binaural/build.sh @@ -9,74 +9,74 @@ # www.aomedia.org/license/patent. # -rm -rf build -mkdir build -cd build +set -e -git clone https://github.com/pybind/pybind11 - -git clone https://github.com/ebu/bear - -git clone https://github.com/resonance-audio/resonance-audio - -BOOST_DIR="$( cd "$(dirname "$0")" ; pwd -P )/../boost_1_82_0" -PYBIND_DIR="$( cd "$(dirname "$0")" ; pwd -P )/pybind11" -VISR_DIR="$( cd "$(dirname "$0")" ; pwd -P )/../rd-audio-visr-public-master" +PROGDIR=`pwd` +VISR_DIR="$( cd "$(dirname "$0")" ; pwd -P )/visr" BEAR_DIR="$( cd "$(dirname "$0")" ; pwd -P )/bear" RESONANCE_DIR="$( cd "$(dirname "$0")" ; pwd -P )/resonance-audio" -BINAURAL_LIB_DIR="$( cd "$(dirname "$0")" ; pwd -P )/../../../lib/binaural" -IAMF2BEAR_DIR="$( cd "$(dirname "$0")" ; pwd -P )/../iamf2bear" -IAMF2RESONANCE_DIR="$( cd "$(dirname "$0")" ; pwd -P )/../iamf2resonance" +EXTERNALS_DIR="$( cd "$(dirname "$0")" ; pwd -P )/../.." +IAMF2BEAR_DIR="$( cd "$(dirname "$0")" ; pwd -P )/iamf2bear" +IAMF2RESONANCE_DIR="$( cd "$(dirname "$0")" ; pwd -P )/iamf2resonance" + +declare -a CONFIG_FLAGS_BEAR +declare -a CONFIG_FLAGS_BEAR2 declare -a CONFIG_FLAGS_VISR -CONFIG_FLAGS="" -CONFIG_FLAGS_BEAR="" -CONFIG_FLAGS_VISR="-DBUILD_PYTHON_BINDINGS=ON -DBUILD_DOCUMENTATION=OFF -DBUILD_AUDIOINTERFACES_PORTAUDIO=OFF -DBUILD_USE_SNDFILE_LIBRARY=OFF" -CONFIG_FLAGS_VISR2="" -CONFIG_FLAGS_LIB="" - -echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>boost Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" -cd $BOOST_DIR -./bootstrap.sh --with-libraries=filesystem,system,thread --with-toolset=gcc -./b2 toolset=gcc -cp -f stage/lib/libboost_system.so.1.82.0 $BINAURAL_LIB_DIR -cp -f stage/lib/libboost_filesystem.so.1.82.0 $BINAURAL_LIB_DIR -cp -f stage/lib/libboost_thread.so.1.82.0 $BINAURAL_LIB_DIR - -echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>pybind11 Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" -cd $PYBIND_DIR -cmake -B build $CONFIG_FLAGS -cd build -make -j12 +CONFIG_FLAGS_BEAR="-DBUILD_PYTHON_BINDINGS=OFF" +CONFIG_FLAGS_BEAR2="$VISR_DIR/build/cmake" +CONFIG_FLAGS_VISR="-DBUILD_PYTHON_BINDINGS=OFF -DBUILD_DOCUMENTATION=OFF -DBUILD_AUDIOINTERFACES_PORTAUDIO=OFF -DBUILD_USE_SNDFILE_LIBRARY=OFF" + +#Delete old libraries +rm -rf $EXTERNALS_DIR/lib/binaural/* + +CLEAN=yes +DOWNLOAD=yes + +if [ $CLEAN = yes ] ; then + echo "Cleaning: $VISR_DIR" + rm -f -r $VISR_DIR + + echo "Cleaning: $BEAR_DIR" + rm -f -r $BEAR_DIR + + echo "Cleaning: $RESONANCE_DIR" + rm -f -r $RESONANCE_DIR + [ "$DOWNLOAD" = "yes" ] || exit 0 +fi + +cd $PROGDIR +git clone -b visr --single-branch https://github.com/ebu/bear.git visr echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>VISR Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" cd $VISR_DIR sed -i '1 i set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)' src/libefl/CMakeLists.txt -cmake -B build . $CONFIG_FLAGS_VISR -cd build -cmake --build . $CONFIG_FLAGS_VISR2 -sudo make install -cp -f lib/libefl.so $BINAURAL_LIB_DIR -cp -f lib/libobjectmodel.so $BINAURAL_LIB_DIR -cp -f lib/libpanning.so $BINAURAL_LIB_DIR -cp -f lib/libpml.so $BINAURAL_LIB_DIR -cp -f lib/librbbl.so $BINAURAL_LIB_DIR -cp -f lib/librcl.so $BINAURAL_LIB_DIR -cp -f lib/librrl.so $BINAURAL_LIB_DIR -cp -f lib/libvisr.so $BINAURAL_LIB_DIR +rm -f -r build +cmake -B build . $CONFIG_FLAGS_VISR -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=NEVER +cmake --build build +cmake --install build --prefix $IAMF2BEAR_DIR +cd $PROGDIR +git clone https://github.com/ebu/bear echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>BEAR Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" cd $BEAR_DIR -git submodule update --init --recursive +git submodule update --init --recursive cd visr_bear -export PYBIND11_DIR=$PYBIND_DIR -cmake -B build . $CONFIG_FLAGS_BEAR -cd build -make -j12 -cp -f src/libbear.a $IAMF2BEAR_DIR -cp -f submodules/libear/src/libear.a $IAMF2BEAR_DIR - -echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>resonance Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" +rm -f -r build +cmake -B build . $CONFIG_FLAGS_BEAR -DVISR_DIR=$CONFIG_FLAGS_BEAR2 +cmake --build build --clean-first +cmake --install build --prefix $IAMF2BEAR_DIR + + +echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>iamf2bear Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" +cd $IAMF2BEAR_DIR +cmake . -DCMAKE_INSTALL_PREFIX=$EXTERNALS_DIR +make +make install + +cd $PROGDIR +git clone https://github.com/resonance-audio/resonance-audio +echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>Resonance Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" cd $RESONANCE_DIR ./third_party/clone_core_deps.sh rm -rf third_party/eigen @@ -84,14 +84,10 @@ cp -rf ../bear/visr_bear/submodules/libear/submodules/eigen third_party/ ./build.sh -t=RESONANCE_AUDIO_API -p=Debug cp -rf install/resonance_audio $IAMF2RESONANCE_DIR -echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>libiamf2bear Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" -cd $IAMF2BEAR_DIR -cmake . $CONFIG_FLAGS_LIB -make -cp -f libiamf2bear.so $BINAURAL_LIB_DIR - -echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>libiamf2resonance Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" +echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>iamf2resonance Compile<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" cd $IAMF2RESONANCE_DIR -cmake . $CONFIG_FLAGS_LIB +cmake . -DCMAKE_INSTALL_PREFIX=$EXTERNALS_DIR make -cp -f libiamf2resonance.so $BINAURAL_LIB_DIR \ No newline at end of file +make install + + diff --git a/code/dep_external/src/binaural/iamf2bear/CMakeLists.txt b/code/dep_external/src/binaural/iamf2bear/CMakeLists.txt index 57cd39be..53f54212 100755 --- a/code/dep_external/src/binaural/iamf2bear/CMakeLists.txt +++ b/code/dep_external/src/binaural/iamf2bear/CMakeLists.txt @@ -2,30 +2,53 @@ cmake_minimum_required(VERSION 3.6) project (iamf2bear) -SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11") SET(CMAKE_POSITION_INDEPENDENT_CODE ON) option(BUILD_SHARED_LIBS "Build shared library" ON) +set(EXTERNAL_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib") +set(EXTERNAL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include") -set(CODEC_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") -set(CODEC_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/include") - +find_package(Boost REQUIRED) +include_directories(${Boost_INCLUDE_DIRS}) include_directories( - ${CODEC_INCLUDE_DIR} + ${EXTERNAL_INCLUDE_DIR} ) link_directories ( - ${CODEC_LIB_DIR} + ${EXTERNAL_LIB_DIR} +) + +set(3rd_libraries + efl + objectmodel + panning + pml + rbbl + rcl + rrl + visr ) +set(available_libraries) +foreach(library IN LISTS 3rd_libraries) + file( GLOB cmake_varibale ${EXTERNAL_LIB_DIR}/*${library}*) + list(APPEND available_libraries ${cmake_varibale}) +endforeach() if(BUILD_SHARED_LIBS) add_library(${PROJECT_NAME} SHARED iamf2bear.cpp) - target_link_libraries (${PROJECT_NAME} bear ear) + target_link_libraries (${PROJECT_NAME} ${3rd_libraries} bear ear) endif() - - set(IAMF2RESONANCE_PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/iamf_bear_api.h) set_target_properties(iamf2bear PROPERTIES PUBLIC_HEADER "${IAMF2RESONANCE_PUBLIC_HEADER}") + +install(TARGETS ${PROJECT_NAME} + LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/binaural + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/include/bear) + +install(FILES ${available_libraries} + DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/binaural) + diff --git a/code/dep_external/src/binaural/iamf2bear/iamf2bear.cpp b/code/dep_external/src/binaural/iamf2bear/iamf2bear.cpp index f1983f88..68d5540e 100755 --- a/code/dep_external/src/binaural/iamf2bear/iamf2bear.cpp +++ b/code/dep_external/src/binaural/iamf2bear/iamf2bear.cpp @@ -40,10 +40,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #endif #include +#if defined(__APPLE__) +#include +#endif #include -#include "../include/bear/api.hpp" -#include "../include/bear/variable_block_size.hpp" +#include "bear/api.hpp" +#include "bear/variable_block_size.hpp" #include "ear/ear.hpp" #include "iamf_bear_api.h" using namespace bear; @@ -99,8 +102,12 @@ static int getmodulepath(char *path, int buffsize) int count = 0, i = 0; #if defined(_WIN32) count = GetModuleFileName(NULL, path, buffsize); +#elifdef __APPLE__ + uint32_t size = MAX_PATH; + _NSGetExecutablePath(path, &size); + count = size; #else - count = readlink("/proc/self/exe", path, buffsize); + count = readlink("/proc/self/exe", path, buffsize); #endif for (i = count - 1; i >= 0; --i) { if (path[i] == '\\' || path[i] == '/') { @@ -121,10 +128,10 @@ extern "C" EXPORT_API void *CreateBearAPI(char *tf_data_path) if (tf_data_path == NULL || strlen(tf_data_path) >= sizeof(thiz->tf_data)) { if (getmodulepath(mod_path, sizeof(mod_path)) > 0) { strcpy(thiz->tf_data, mod_path); -#ifdef __linux__ - strcat(thiz->tf_data, "/default.tf"); -#elif _WIN32 +#if defined(_WIN32) strcat(thiz->tf_data, "\\default.tf"); +#else + strcat(thiz->tf_data, "/default.tf"); #endif } else { free(thiz); diff --git a/code/dep_external/src/binaural/iamf2resonance/CMakeLists.txt b/code/dep_external/src/binaural/iamf2resonance/CMakeLists.txt index c3f60523..01f68137 100755 --- a/code/dep_external/src/binaural/iamf2resonance/CMakeLists.txt +++ b/code/dep_external/src/binaural/iamf2resonance/CMakeLists.txt @@ -2,28 +2,32 @@ cmake_minimum_required(VERSION 3.6) project (iamf2resonance) -SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -O3") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11") SET(CMAKE_POSITION_INDEPENDENT_CODE ON) option(BUILD_SHARED_LIBS "Build shared library" ON) -set(CODEC_LIB_DIR "${PROJECT_SOURCE_DIR}/resonance_audio/lib") -set(CODEC_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/resonance_audio/include") +set(EXTERNAL_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/resonance_audio/lib") +set(EXTERNAL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/resonance_audio/include") include_directories( - ${CODEC_INCLUDE_DIR} + ${EXTERNAL_INCLUDE_DIR} ) link_directories ( - ${CODEC_LIB_DIR} + ${EXTERNAL_LIB_DIR} ) if(BUILD_SHARED_LIBS) - add_library(${PROJECT_NAME} SHARED resonance_audio_api2.cc) + add_library(${PROJECT_NAME} SHARED iamf2resonance.cc) target_link_libraries (${PROJECT_NAME} ResonanceAudioStatic) endif() -set(IAMF2RESONANCE_PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/resonance_audio_api2.h) -set_target_properties(iamf2resonance PROPERTIES PUBLIC_HEADER "${IAMF2RESONANCE_PUBLIC_HEADER}") \ No newline at end of file +set(IAMF2RESONANCE_PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/iamf_resonance_api.h) +set_target_properties(iamf2resonance PROPERTIES PUBLIC_HEADER "${IAMF2RESONANCE_PUBLIC_HEADER}") + +install(TARGETS ${PROJECT_NAME} + LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/binaural + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/include/resonance) \ No newline at end of file diff --git a/code/dep_external/src/binaural/iamf2resonance/resonance_audio_api2.cc b/code/dep_external/src/binaural/iamf2resonance/iamf2resonance.cc similarity index 97% rename from code/dep_external/src/binaural/iamf2resonance/resonance_audio_api2.cc rename to code/dep_external/src/binaural/iamf2resonance/iamf2resonance.cc index 16dec3a0..8531f6bd 100755 --- a/code/dep_external/src/binaural/iamf2resonance/resonance_audio_api2.cc +++ b/code/dep_external/src/binaural/iamf2resonance/iamf2resonance.cc @@ -19,7 +19,7 @@ limitations under the License. #define DLL_EXPORTS #include "resonance_audio_api.h" -#include "resonance_audio_api2.h" +#include "iamf_resonance_api.h" namespace vraudio { diff --git a/code/dep_external/src/binaural/iamf2resonance/resonance_audio_api2.h b/code/dep_external/src/binaural/iamf2resonance/iamf_resonance_api.h similarity index 100% rename from code/dep_external/src/binaural/iamf2resonance/resonance_audio_api2.h rename to code/dep_external/src/binaural/iamf2resonance/iamf_resonance_api.h diff --git a/code/test/tools/iamfdec/CMakeLists.txt b/code/test/tools/iamfdec/CMakeLists.txt index 35d708ff..46611213 100755 --- a/code/test/tools/iamfdec/CMakeLists.txt +++ b/code/test/tools/iamfdec/CMakeLists.txt @@ -14,7 +14,7 @@ aux_source_directory (src DIR_IAMFDEC_SRC) set(LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") set(INCLUDE_IAMF_DIR "${CMAKE_INSTALL_PREFIX}/include/iamf") set(INCLUDE_DEP_EXTERNAL_WAV_DIR "../../../dep_external/include/wav") -if(CMAKE_SYSTEM_NAME MATCHES "Darwin") +if((CMAKE_SYSTEM_NAME MATCHES "Darwin") OR (CMAKE_SYSTEM_NAME MATCHES "Android")) else() SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,--no-as-need -Werror=unused-variable") endif() @@ -56,7 +56,7 @@ add_executable (iamfdec ${DIR_IAMFDEC_SRC}) if(MULTICHANNEL_BINAURALIZER OR HOA_BINAURALIZER) if(MULTICHANNEL_BINAURALIZER) - target_link_libraries (iamfdec iamf m iamf2bear boost_filesystem boost_system boost_thread efl objectmodel panning pml rbbl rcl rrl visr) + target_link_libraries (iamfdec iamf m iamf2bear efl objectmodel panning pml rbbl rcl rrl visr) endif() if(HOA_BINAURALIZER) target_link_libraries (iamfdec iamf m iamf2resonance)