Commit 335ef7b7 authored by TYAGIRIS's avatar TYAGIRIS
Browse files

Merge branch 'isar_selection_delivery_script' into 'isar_selection_branch'

[split-non-be] [ref-using-main] fix prepare delivery script, clean up makefile, cmake list and readme

See merge request !1488
parents 307293d4 710d64f7
Loading
Loading
Loading
Loading
Loading
+20 −66
Original line number Diff line number Diff line
@@ -27,15 +27,12 @@
#        # or build on command line, e.g.:
#        cmake --build . --config Debug
#        cmake --build . --config Release
#
# INCLUDE_SPLIT is not set by default. If split rendering is used, then add -D INCLUDE_SPLIT=1 to the build command


cmake_minimum_required(VERSION 3.1)

set(CMAKE_C_STANDARD 99)

set(INCLUDE_SPLIT 1)

# configuration options for UNIX
if(UNIX)
  set(TARGET_PLATFORM ""  CACHE STRING "i686 / x86_64")
@@ -116,11 +113,6 @@ elseif(WIN32)
    -D_CRT_SECURE_NO_WARNINGS
    /MP
  )
  if(NOT INCLUDE_SPLIT)
    add_compile_options("/W4")
    # to be uncommented in CI
    # add_compile_options("/WX")
  endif()
endif()

# configuration options for all platforms
@@ -140,9 +132,7 @@ if(UNIX)
  target_link_libraries(lib_com PRIVATE m)
endif()
target_include_directories(lib_com PUBLIC lib_com PRIVATE lib_enc lib_dec lib_rend lib_debug lib_isar)
if(INCLUDE_SPLIT)
target_include_directories(lib_com PRIVATE lib_lc3plus)
endif()

file(GLOB libDebugSrcs "lib_debug/*.c")
file(GLOB libDebugHeaders "lib_debug/*.h")
@@ -155,11 +145,8 @@ file(GLOB libEncHeaders "lib_enc/*.h")
add_library(lib_enc ${libEncSrcs} ${libEncHeaders})
target_link_libraries(lib_enc lib_com lib_debug)
target_include_directories(lib_enc PUBLIC lib_enc PRIVATE lib_dec lib_rend lib_isar)
if(INCLUDE_SPLIT)
target_include_directories(lib_enc PRIVATE lib_lc3plus)
endif()

if(INCLUDE_SPLIT)
file(GLOB libLC3plusSrcs "lib_lc3plus/*.c")
file(GLOB libLC3plusHeaders "lib_lc3plus/*.h")
add_library(lib_lc3plus ${libLC3plusSrcs} ${libLC3plusHeaders})
@@ -168,31 +155,13 @@ if(INCLUDE_SPLIT)
if(WMOPS)
  target_link_libraries(lib_lc3plus lib_debug)
endif()
endif()

file(GLOB libRendSrcs "lib_rend/*.c")
file(GLOB libRendHeaders "lib_rend/*.h")
if(NOT INCLUDE_SPLIT)
  list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*lc3plus.*\.c$")
  list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_cldfb_codec.*\.c$")
  list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*splitRend.*\.c$")
  list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*splitrenderer.*\.c$")
  list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_lcld.*\.c$")
  list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_Pred.*\.c$")
  list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_RMSEnv.*\.c$")
  list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_PerceptualModel.*\.c$")
  list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_lcld_rom_tables.*\.c$")
  list(FILTER libRendHeaders EXCLUDE REGEX ".*lib_rend\/.*lc3plus.*\.h$")
  list(FILTER libRendHeaders EXCLUDE REGEX ".*lib_rend\/.*splitRend.*\.h$")
  list(FILTER libRendHeaders EXCLUDE REGEX ".*lib_rend\/.*ivas_cldfb_codec.*\.h$")
  list(FILTER libRendHeaders EXCLUDE REGEX ".*lib_rend\/.*ivas_lcld_rom_tables.*\.h$")
endif()

add_library(lib_rend ${libRendSrcs} ${libRendHeaders})
target_link_libraries(lib_rend lib_dec lib_com lib_debug) # Todo refactor: This dependency on lib_dec should be removed.
if(INCLUDE_SPLIT)
target_link_libraries(lib_rend lib_lc3plus lib_isar)
endif()
target_include_directories(lib_rend PUBLIC lib_rend PRIVATE lib_enc lib_isar)


@@ -204,31 +173,21 @@ target_include_directories(lib_dec PUBLIC lib_dec lib_rend PRIVATE lib_enc lib_i

file(GLOB libUtilSrcs "lib_util/*.c")
file(GLOB libUtilHeaders "lib_util/*.h")
if(NOT INCLUDE_SPLIT)
  list(FILTER libUtilSrcs EXCLUDE REGEX ".*lib_util\/.*split_rend.*\.c$")
endif()
add_library(lib_util ${libUtilSrcs} ${libUtilHeaders})
target_include_directories(lib_util PUBLIC lib_util PRIVATE lib_com lib_enc lib_dec lib_rend lib_debug)
if(INCLUDE_SPLIT)
target_include_directories(lib_util PRIVATE lib_lc3plus lib_isar)
endif()

if(INCLUDE_SPLIT)
if(NOT WMOPS)
  add_executable(ivas_lc3plus_unit_test ${CMAKE_SOURCE_DIR}/scripts/split_rendering/lc3plus/ivas_lc3plus_unit_test.c)
  target_link_libraries(ivas_lc3plus_unit_test lib_rend lib_dec lib_util lib_com lib_debug lib_isar)
endif()
endif()


if(INCLUDE_SPLIT)
file(GLOB libISARSrcs "lib_isar/*.c")
file(GLOB libISARHeaders "lib_isar/*.h")

add_library(lib_isar ${libISARSrcs} ${libISARHeaders})
target_link_libraries(lib_isar lib_com lib_debug lib_lc3plus) # Todo refactor: This dependency on lib_dec should be removed.
target_include_directories(lib_isar PUBLIC lib_isar PRIVATE lib_enc lib_dec lib_rend)
endif()


add_executable(IVAS_cod apps/encoder.c)
@@ -247,12 +206,9 @@ add_executable(IVAS_rend apps/renderer.c)
target_link_libraries(IVAS_rend lib_rend lib_util lib_isar)
target_include_directories(IVAS_rend PRIVATE lib_enc)

if(INCLUDE_SPLIT)
  message("ISAR Included")
add_executable(ISAR_post_rend apps/isar_post_rend.c)
target_link_libraries(ISAR_post_rend lib_isar lib_util)
target_include_directories(ISAR_post_rend PRIVATE lib_isar)
endif()

if(COPY_EXECUTABLES_FROM_BUILD_DIR)
  # Optionally copy executables to the same place where Make puts them (useful for tests that expect executables in specific places)
@@ -260,12 +216,10 @@ if(COPY_EXECUTABLES_FROM_BUILD_DIR)
  add_custom_command(TARGET IVAS_dec POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$<TARGET_FILE:IVAS_dec>" "${CMAKE_CURRENT_SOURCE_DIR}/")
  add_custom_command(TARGET IVAS_rend POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$<TARGET_FILE:IVAS_rend>" "${CMAKE_CURRENT_SOURCE_DIR}/")
  add_custom_command(TARGET ISAR_post_rend POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$<TARGET_FILE:ISAR_post_rend>" "${CMAKE_CURRENT_SOURCE_DIR}/")
  if(INCLUDE_SPLIT)
  if (NOT WMOPS)
    add_custom_command(TARGET ivas_lc3plus_unit_test POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$<TARGET_FILE:ivas_lc3plus_unit_test>" "${CMAKE_CURRENT_SOURCE_DIR}/scripts/split_rendering/lc3plus")
  endif()
endif()
endif()

# Allow creating packages for CMake install
install(TARGETS lib_enc lib_dec lib_rend lib_com lib_util ARCHIVE DESTINATION lib)
+0 −21
Original line number Diff line number Diff line
@@ -13,8 +13,6 @@ SRC_APP = apps
BUILD        = build
OBJDIR       = obj

INCLUDE_SPLIT = 1

SRC_DIRS  = $(sort -u $(SRC_LIBCOM) $(SRC_LIBDEBUG) $(SRC_LIBDEC) $(SRC_LIBENC) $(SRC_LIBREND) $(SRC_LIBISAR) $(SRC_LC3PLUS) $(SRC_LIBUTIL) $(SRC_APP)) 

# Name of CLI binaries
@@ -142,12 +140,7 @@ SRCS_LIBENC = $(foreach DIR,$(SRC_LIBENC),$(patsubst $(DIR)/%,%,$(wildcard $(D
SRCS_LIBREND  = $(foreach DIR,$(SRC_LIBREND),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c)))
SRCS_LIBUTIL  = $(foreach DIR,$(SRC_LIBUTIL),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c)))
SRCS_LIBISAR  = $(foreach DIR,$(SRC_LIBISAR),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c)))
ifeq "$(INCLUDE_SPLIT)" "1"
SRCS_LC3PLUS  = $(foreach DIR,$(SRC_LC3PLUS),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c)))
else
# SRCS_LIBREND := $(filter-out $(SRCS_SPLIT_REND),$(SRCS_LIBREND))
# SRCS_LIBUTIL := $(filter-out $(SRCS_SPLIT_REND),$(SRCS_LIBUTIL))
endif

OBJS_LIBCOM      = $(addprefix $(OBJDIR)/,$(SRCS_LIBCOM:.c=.o))
OBJS_LIBDEBUG    = $(addprefix $(OBJDIR)/,$(SRCS_LIBDEBUG:.c=.o))
@@ -194,11 +187,7 @@ $(LIB_LIBREND): $(OBJS_LIBREND) $(OBJS_LIBISAR)
	$(QUIET_AR)$(AR) rcs $@ $^

$(LIB_LC3PLUS): $(OBJS_LC3PLUS)
ifeq "$(INCLUDE_SPLIT)" "1"
	$(QUIET_AR)$(AR) rcs $@ $^
else
	
endif

$(LIB_LIBUTIL): $(OBJS_LIBUTIL)
	$(QUIET_AR)$(AR) rcs $@ $^
@@ -207,23 +196,13 @@ $(CLI_APIENC): $(OBJS_CLI_APIENC) $(LIB_LIBENC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(L
	$(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIENC) -L. -livasenc -livascom -livasutil -livasdebug $(LDLIBS) -o $(CLI_APIENC)

$(CLI_APIDEC): $(OBJS_CLI_APIDEC) $(LIB_LIBDEC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LC3PLUS) $(LIB_LIBISAR)
ifeq "$(INCLUDE_SPLIT)" "1"
	$(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIDEC) -L. -livasdec -livascom -livasutil -livasdebug -llc3plus $(LDLIBS) -o $(CLI_APIDEC)
else
	$(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIDEC) -L. -livasdec -livascom -livasutil -livasdebug $(LDLIBS) -o $(CLI_APIDEC)
endif

$(CLI_APIREND): $(OBJS_CLI_APPREND) $(LIB_LIBREND) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LIBDEC) $(LIB_LC3PLUS) $(LIB_LIBISAR)
ifeq "$(INCLUDE_SPLIT)" "1"
	$(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APPREND) -L. -livasrend -lisar -livasdec -livasutil -livasdebug -livascom -llc3plus $(LDLIBS) -o $(CLI_APIREND)
else
	$(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APPREND) -L. -livasrend -livasdec -livasutil -livasdebug -livascom $(LDLIBS) -o $(CLI_APIREND)
endif

$(CLI_APIPOSTREND): $(OBJS_CLI_APPPOSTREND) $(LIB_LIBISAR) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LC3PLUS)
ifeq "$(INCLUDE_SPLIT)" "1"
	$(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APPPOSTREND) -L. -lisar -livasutil -livasdebug -livascom -llc3plus $(LDLIBS) -o $(CLI_APIPOSTREND)
endif

libs: $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBREND) $(LIB_LIBISAR) $(LIB_LC3PLUS) $(LIB_LIBUTIL)

+17 −4
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ the following two separate programs:

        IVAS_dec        Decoder
        IVAS_rend       Renderer
        ISAR_post_rend  ISAR_post_renderer        
		


@@ -57,6 +58,7 @@ Same as described in Readme.txt while the structure looks as follows:
    |-- lib_enc
    |-- lib_lc3plus
    |-- lib_rend
    |-- lib_isar    
    |-- lib_util
    |-- readme.txt
    |-- readme_split_rendering.txt
@@ -99,10 +101,21 @@ Usage: IVAS_rend [options]
Additional options:
-------------------
-om File            : Coded metadata File for BINAURAL_SPLIT_PCM output mode
-im File            : Coded metadata File for BINAURAL_SPLIT_PCM input mode
-prbfi File         : Split rendering option: bfi File


The usage of the "ISAR_post_rend" program:
-------------------------------------

Usage: ISAR_post_rend [options]

Options:
--------
-i File             : Input File (input file is bitstream if format is BINAURAL_SPLIT_CODED, PCM or WAV file if format is BINAURAL_SPLIT_PCM)
-if Format          : Audio Format of input (BINAURAL_SPLIT_CODED, BINAURAL_SPLIT_PCM)
-im File            : Coded metadata File for BINAURAL_SPLIT_PCM input mode
-o File             : Output audio File (BINAURAL always)
-fs                 : Input sampling rate in kHz (48)
-prbfi File         : Split rendering option: bfi File
                       

                       RUNNING THE SELF TEST
+5 −56
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ DATE=`eval date +%Y_%m_%d`
OUTDIR=c-code
TMPCLEANDIR=clean-c-code
ROOT=$(dirname $0)/..
STRIP_SPLITREND=0
PREPARE_ZIP=1

# check, whether coan exists
@@ -56,9 +55,6 @@ while getopts "$ALL_OPTS" OPTION; do
    case "${OPTION}" in
        -)
            case "${OPTARG}" in
                strip_sr)
                    STRIP_SPLITREND=1
                    ;;
                no_zip)
                    PREPARE_ZIP=0
                    ;;
@@ -98,6 +94,7 @@ cp -R ${ROOT}/lib_dec $OUTDIR
cp -R ${ROOT}/lib_enc $OUTDIR
cp -R ${ROOT}/lib_util $OUTDIR
cp -R ${ROOT}/lib_rend $OUTDIR
cp -R ${ROOT}/lib_isar $OUTDIR
cp -R ${ROOT}/lib_lc3plus $OUTDIR
cp -R ${ROOT}/apps $OUTDIR
mkdir $OUTDIR/lib_debug
@@ -131,59 +128,10 @@ recode lat1..ibmpc ${OUTDIR}/LICENSE.md # unix2dos ...
cp ${ROOT}/.clang-format ${OUTDIR}

# enable split rendering againg by default
# in case we strip it later, it will be explicitly disabled again belo
# in case we strip it later, it will be explicitly disabled again below
sed -i.bak -e "s/\/\*\ *\(#define\ *SPLIT_REND_WITH_HEAD_ROT\ *\)\*\//\1/g" ${OUTDIR}/lib_com/options.h


##########################
#                        #
# Strip Split Rendering  #
#                        #
##########################

if [ $STRIP_SPLITREND -ne 0 ]; then

  echo "Stripping Split Rendering"
  
  ${ROOT}/scripts/strip_split_rendering.sh ${OUTDIR}

  # strip macros
  declare -a sr_macros=(
      "SPLIT_REND_WITH_HEAD_ROT"
  )

  if coan_exists; then

    for macro in ${sr_macros[@]}; do
      coan source --replace --no-transients -K -U${macro} $OUTDIR/lib_{com,dec,enc,util,rend}/*.[hc]
      coan source --replace --no-transients -K -U${macro} $OUTDIR/apps/*.[hc]
      sed -i.bak "/#define\ *$macro/d" $OUTDIR/lib_com/options.h
    done

  else

    echo "Coan required in path; Aborting. Available at https://coan2.sourceforge.net/"
    exit -1

  fi

  # patch Makefile
  patch ${OUTDIR}/Makefile < ${ROOT}/scripts/makefile_noSR.patch

  # delete readme_split_rendering
  rm ${OUTDIR}/readme_split_rendering.txt

  # clean-up *.bak-files
  find $OUTDIR -name "*.bak" -exec rm \{\} \;

else

  # patch Makefile so that split rendering sources are built by default
  patch ${OUTDIR}/Makefile < ${ROOT}/scripts/makefile_SR.patch  

fi


##########################
#                        #
# Stripping              #
@@ -206,7 +154,7 @@ if coan_exists; then
  ${ROOT}/scripts/parse_options_h.sh -c $tmpfile >> $COAN_LIST

  # apply coan
  coan source --replace --no-transients -K --file $COAN_LIST $OUTDIR/lib_{com,dec,enc,util,rend}/*.[hc]
  coan source --replace --no-transients -K --file $COAN_LIST $OUTDIR/lib_{com,dec,enc,util,rend,isar}/*.[hc]
  coan source --replace --no-transients -K --file $COAN_LIST $OUTDIR/apps/*.[hc]

  # remove rejected switches from options.h
@@ -292,6 +240,7 @@ if coan_exists; then
  echo "-UDEBUG_AGC_ENCODER_CMD_OPTION"        >> $COAN_LIST
  echo "-UDEBUG_JBM_CMD_OPTION"                >> $COAN_LIST
  echo "-UVARIABLE_SPEED_DECODING"             >> $COAN_LIST
  echo "-UDISABLE_LIMITER"                     >> $COAN_LIST
  echo "-UDBG_WAV_WRITER"                      >> $COAN_LIST
  echo "-USPLIT_REND_WITH_HEAD_ROT_DEBUG"      >> $COAN_LIST
  echo "-USPLIT_POSE_CORRECTION_DEBUG"         >> $COAN_LIST
@@ -306,7 +255,7 @@ if coan_exists; then
  rm -f $tmpfile

  # apply coan
  coan source --replace --no-transients -K --file $COAN_LIST $OUTDIR/lib_{com,dec,enc,util,rend}/*.[hc]
  coan source --replace --no-transients -K --file $COAN_LIST $OUTDIR/lib_{com,dec,enc,util,rend,isar}/*.[hc]
  coan source --replace --no-transients -K --file $COAN_LIST $OUTDIR/apps/*.[hc]

  # remove rejected switches from options.h