2
0
mirror of https://github.com/rehlds/revoice.git synced 2025-03-04 01:25:31 +03:00
revoice/external/speex/CMakeLists.txt
the_hunter 19e2898a0d Add option ENABLE_VORBIS_PSY
Enable Vorbis psychoacoustic model for the Speex codec.
This is an experimental feature in the Speex codec that improves sound quality.
It allows the Speex codec to use the Vorbis psychoacoustic model for better speech compression,
especially at higher bitrates.
This model helps identify which parts of the sound are less noticeable to the human ear
and compresses them more, while preserving overall quality.
2025-02-24 23:56:13 +02:00

204 lines
5.1 KiB
CMake

#-------------------------------------------------------------------------------
# Project Definition
#-------------------------------------------------------------------------------
project( "Speex"
VERSION "1.2.1"
DESCRIPTION "Speex voice codec"
HOMEPAGE_URL "https://gitlab.xiph.org/xiph/speex"
LANGUAGES "C"
)
#-------------------------------------------------------------------------------
# Options
#-------------------------------------------------------------------------------
option(SPEEX_USE_KISS_FFT "Use KISS Fast Fourier Transform (otherwise OggVorbis)" OFF)
#-------------------------------------------------------------------------------
# Target Definition
#-------------------------------------------------------------------------------
set(TARGET_NAME "speex")
set(TARGET_ALIAS "Speex::${TARGET_NAME}")
add_library("${TARGET_NAME}")
add_library("${TARGET_ALIAS}" ALIAS "${TARGET_NAME}")
#-------------------------------------------------------------------------------
# Source Files
#-------------------------------------------------------------------------------
target_sources("${TARGET_NAME}"
PUBLIC
"include/speex/speex_bits.h"
"include/speex/speex_callbacks.h"
"include/speex/speex_config_types.h"
"include/speex/speex_header.h"
"include/speex/speex_stereo.h"
"include/speex/speex_types.h"
"include/speex/speex.h"
PRIVATE
"src/arch.h"
"src/bfin.h"
"src/bits.c"
"src/cb_search_bfin.h"
"src/cb_search_sse.h"
"src/cb_search.c"
"src/cb_search.h"
"src/exc_10_16_table.c"
"src/exc_10_32_table.c"
"src/exc_20_32_table.c"
"src/exc_5_256_table.c"
"src/exc_5_64_table.c"
"src/exc_8_128_table.c"
"src/fftwrap.h"
"src/filters_bfin.h"
"src/filters_sse.h"
"src/filters.c"
"src/filters.h"
"src/fixed_bfin.h"
"src/fixed_debug.h"
"src/fixed_generic.h"
"src/gain_table_lbr.c"
"src/gain_table.c"
"src/hexc_10_32_table.c"
"src/hexc_table.c"
"src/high_lsp_tables.c"
"src/lpc_bfin.h"
"src/lpc.c"
"src/lpc.h"
"src/lsp_bfin.h"
"src/lsp_tables_nb.c"
"src/lsp.c"
"src/lsp.h"
"src/ltp_bfin.h"
"src/ltp_sse.h"
"src/ltp.c"
"src/ltp.h"
"src/math_approx.h"
"src/misc_bfin.h"
"src/modes_wb.c"
"src/modes.c"
"src/modes.h"
"src/nb_celp.c"
"src/nb_celp.h"
"src/os_support.h"
"src/quant_lsp_bfin.h"
"src/quant_lsp.c"
"src/quant_lsp.h"
"src/sb_celp.c"
"src/sb_celp.h"
"src/speex_callbacks.c"
"src/speex_header.c"
"src/speex.c"
"src/stack_alloc.h"
"src/stereo.c"
"src/vbr.c"
"src/vbr.h"
"src/vq_bfin.h"
"src/vq_sse.h"
"src/vq.c"
"src/vq.h"
"src/window.c"
$<$<BOOL:${SPEEX_USE_KISS_FFT}>:
"src/_kiss_fft_guts.h"
"src/kiss_fft.c"
"src/kiss_fft.h"
"src/kiss_fftr.c"
"src/kiss_fftr.h"
>
$<$<NOT:$<BOOL:${SPEEX_USE_KISS_FFT}>>:
"src/smallft.c"
"src/smallft.h"
>
$<$<BOOL:${ENABLE_SPEEX_VORBIS_PSY}>:
"src/vorbis_psy.c"
"src/vorbis_psy.h"
>
)
#-------------------------------------------------------------------------------
# Include Directories
#-------------------------------------------------------------------------------
target_include_directories("${TARGET_NAME}"
PUBLIC
"${PROJECT_SOURCE_DIR}/include"
PRIVATE
"${PROJECT_SOURCE_DIR}/include/speex"
)
#-------------------------------------------------------------------------------
# Compile Definitions
#-------------------------------------------------------------------------------
target_compile_definitions("${TARGET_NAME}"
PRIVATE
_USE_SSE
FLOATING_POINT
SPEEX_MAJOR_VERSION=${PROJECT_VERSION_MAJOR}
SPEEX_MINOR_VERSION=${PROJECT_VERSION_MINOR}
SPEEX_MICRO_VERSION=${PROJECT_VERSION_PATCH}
SPEEX_VERSION="${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
SPEEX_EXTRA_VERSION=""
$<$<PLATFORM_ID:Windows>:
_USE_SSE2
_USE_MATH_DEFINES
alloca=_alloca
inline=__inline
EXPORT=
>
$<$<NOT:$<PLATFORM_ID:Windows>>:
HAVE_ALLOCA_H
HAVE_GETOPT_H
USE_ALLOCA
VAR_ARRAYS
EXPORT=__attribute__\(\(visibility\(\"default\"\)\)\)
>
$<$<BOOL:${ENABLE_SPEEX_VORBIS_PSY}>:VORBIS_PSYCHO>
$<IF:$<BOOL:${SPEEX_USE_KISS_FFT}>,USE_KISS_FFT,USE_SMALLFT>
)
#-------------------------------------------------------------------------------
# Compile Options
#-------------------------------------------------------------------------------
target_compile_options("${TARGET_NAME}"
PRIVATE
-UARM4_ASM
-UARM5E_ASM
-UBFIN_ASM
-UDISABLE_FLOAT_API
-UDISABLE_VBR
-UENABLE_VALGRIND
-UFIXED_POINT_DEBUG
$<$<PLATFORM_ID:Windows>:
-UHAVE_GETOPT_H
-UUSE_ALLOCA
>
$<IF:$<C_COMPILER_ID:MSVC>,/W0,-w>
)
#-------------------------------------------------------------------------------
# Link Libraries
#-------------------------------------------------------------------------------
target_link_libraries("${TARGET_NAME}"
PUBLIC
$<$<NOT:$<PLATFORM_ID:Windows>>:
"m"
>
)