mirror of
https://github.com/cookiengineer/audacity
synced 2025-11-01 06:33:53 +01:00
upgrade to libsoxr 0.0.4 from current git
This commit is contained in:
@@ -1,260 +1,280 @@
|
|||||||
# SoX Resampler Library Copyright (c) 2007-12 robs@users.sourceforge.net
|
# SoX Resampler Library Copyright (c) 2007-12 robs@users.sourceforge.net
|
||||||
# Licence for this file: LGPL v2.1 See LICENCE for details.
|
# Licence for this file: LGPL v2.1 See LICENCE for details.
|
||||||
|
|
||||||
cmake_minimum_required (VERSION 2.8 FATAL_ERROR)
|
cmake_minimum_required (VERSION 2.8 FATAL_ERROR)
|
||||||
|
|
||||||
project (soxr C)
|
project (soxr C)
|
||||||
set (DESCRIPTION_SUMMARY "One-dimensional sample-rate conversion library")
|
set (DESCRIPTION_SUMMARY "One-dimensional sample-rate conversion library")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Release versioning:
|
# Release versioning:
|
||||||
|
|
||||||
set (PROJECT_VERSION_MAJOR 0)
|
set (PROJECT_VERSION_MAJOR 0)
|
||||||
set (PROJECT_VERSION_MINOR 0)
|
set (PROJECT_VERSION_MINOR 0)
|
||||||
set (PROJECT_VERSION_PATCH 3)
|
set (PROJECT_VERSION_PATCH 5)
|
||||||
|
|
||||||
# For shared-object; if, since the last public release:
|
# For shared-object; if, since the last public release:
|
||||||
# * library code changed at all: ++revision
|
# * library code changed at all: ++revision
|
||||||
# * interfaces changed at all: ++current, revision = 0
|
# * interfaces changed at all: ++current, revision = 0
|
||||||
# * interfaces added: ++age
|
# * interfaces added: ++age
|
||||||
# * interfaces removed: age = 0
|
# * interfaces removed: age = 0
|
||||||
|
|
||||||
set (SO_VERSION_CURRENT 0)
|
set (SO_VERSION_CURRENT 0)
|
||||||
set (SO_VERSION_REVISION 0)
|
set (SO_VERSION_REVISION 0)
|
||||||
set (SO_VERSION_AGE 0)
|
set (SO_VERSION_AGE 0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Main options:
|
# Main options:
|
||||||
|
|
||||||
include (CMakeDependentOption)
|
include (CMakeDependentOption)
|
||||||
|
|
||||||
if (NOT CMAKE_BUILD_TYPE)
|
if (NOT CMAKE_BUILD_TYPE)
|
||||||
set (CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
|
set (CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
option (BUILD_TESTS "Build sanity-tests." OFF)
|
option (BUILD_TESTS "Build sanity-tests." OFF)
|
||||||
option (BUILD_SHARED_LIBS "Build shared libraries." ON)
|
option (BUILD_SHARED_LIBS "Build shared libraries." ON)
|
||||||
option (BUILD_EXAMPLES "Build examples." OFF)
|
option (BUILD_EXAMPLES "Build examples." OFF)
|
||||||
option (WITH_OPENMP "Include OpenMP threading." ON)
|
option (WITH_OPENMP "Include OpenMP threading." ON)
|
||||||
option (WITH_LSR_BINDINGS "Include a `libsamplerate'-like interface." ON)
|
option (WITH_LSR_BINDINGS "Include a `libsamplerate'-like interface." ON)
|
||||||
cmake_dependent_option (WITH_SINGLE_PRECISION "Build with single precision (for up to 20-bit accuracy)." ON
|
cmake_dependent_option (WITH_SINGLE_PRECISION "Build with single precision (for up to 20-bit accuracy)." ON
|
||||||
"WITH_DOUBLE_PRECISION" ON)
|
"WITH_DOUBLE_PRECISION" ON)
|
||||||
cmake_dependent_option (WITH_DOUBLE_PRECISION "Build with double precision (for up to 32-bit accuracy)." ON
|
cmake_dependent_option (WITH_DOUBLE_PRECISION "Build with double precision (for up to 32-bit accuracy)." ON
|
||||||
"WITH_SINGLE_PRECISION" ON)
|
"WITH_SINGLE_PRECISION" ON)
|
||||||
cmake_dependent_option (WITH_SIMD "Use SIMD (for faster single precision)." ON
|
cmake_dependent_option (WITH_SIMD "Use SIMD (for faster single precision)." ON
|
||||||
"WITH_SINGLE_PRECISION" OFF)
|
"WITH_SINGLE_PRECISION" OFF)
|
||||||
cmake_dependent_option (WITH_AVFFT "Use libavcodec (LGPL) for SIMD DFT." OFF
|
cmake_dependent_option (WITH_AVFFT "Use libavcodec (LGPL) for SIMD DFT." OFF
|
||||||
"WITH_SIMD;NOT WITH_PFFFT" OFF)
|
"WITH_SIMD;NOT WITH_PFFFT" OFF)
|
||||||
cmake_dependent_option (WITH_PFFFT "Use PFFFT (BSD-like licence) for SIMD DFT." ON
|
cmake_dependent_option (WITH_PFFFT "Use PFFFT (BSD-like licence) for SIMD DFT." ON
|
||||||
"WITH_SIMD;NOT WITH_AVFFT" OFF)
|
"WITH_SIMD;NOT WITH_AVFFT" OFF)
|
||||||
if (UNIX)
|
if (UNIX)
|
||||||
cmake_dependent_option (BUILD_LSR_TESTS "Build LSR tests." OFF
|
cmake_dependent_option (BUILD_LSR_TESTS "Build LSR tests." OFF
|
||||||
"WITH_LSR_BINDINGS" OFF)
|
"WITH_LSR_BINDINGS" OFF)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Introspection:
|
# Introspection:
|
||||||
|
|
||||||
list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)
|
list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)
|
||||||
|
|
||||||
include (CheckFunctionExists)
|
include (CheckFunctionExists)
|
||||||
include (CheckIncludeFiles)
|
include (CheckIncludeFiles)
|
||||||
include (CheckLibraryExists)
|
include (CheckLibraryExists)
|
||||||
include (TestBigEndian)
|
include (TestBigEndian)
|
||||||
|
|
||||||
check_library_exists (m pow "" NEED_LIBM)
|
check_library_exists (m pow "" NEED_LIBM)
|
||||||
if (NEED_LIBM)
|
if (NEED_LIBM)
|
||||||
set (CMAKE_REQUIRED_LIBRARIES "m;${CMAKE_REQUIRED_LIBRARIES}")
|
set (CMAKE_REQUIRED_LIBRARIES "m;${CMAKE_REQUIRED_LIBRARIES}")
|
||||||
link_libraries (m)
|
link_libraries (m)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (WITH_OPENMP)
|
if (WITH_OPENMP)
|
||||||
find_package (OpenMP)
|
find_package (OpenMP)
|
||||||
endif ()
|
endif ()
|
||||||
if (OPENMP_FOUND)
|
if (OPENMP_FOUND)
|
||||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
|
||||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
|
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (WITH_SIMD)
|
if (WITH_SIMD)
|
||||||
find_package (SIMD)
|
find_package (SIMD)
|
||||||
if (SIMD_FOUND)
|
if (SIMD_FOUND)
|
||||||
set (HAVE_SIMD 1)
|
set (HAVE_SIMD 1)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (WITH_SINGLE_PRECISION)
|
if (WITH_SINGLE_PRECISION)
|
||||||
set (HAVE_SINGLE_PRECISION 1)
|
set (HAVE_SINGLE_PRECISION 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (WITH_DOUBLE_PRECISION)
|
if (WITH_DOUBLE_PRECISION)
|
||||||
set (HAVE_DOUBLE_PRECISION 1)
|
set (HAVE_DOUBLE_PRECISION 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (WITH_AVFFT)
|
if (WITH_AVFFT)
|
||||||
find_package (LibAVCodec)
|
find_package (LibAVCodec)
|
||||||
if (AVCODEC_FOUND)
|
if (AVCODEC_FOUND)
|
||||||
include_directories (${AVCODEC_INCLUDE_DIRS})
|
include_directories (${AVCODEC_INCLUDE_DIRS})
|
||||||
link_libraries (${AVCODEC_LIBRARIES})
|
link_libraries (${AVCODEC_LIBRARIES})
|
||||||
set (HAVE_AVFFT 1)
|
set (HAVE_AVFFT 1)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (EXISTS ${PROJECT_SOURCE_DIR}/src/vr32.c)
|
if (EXISTS ${PROJECT_SOURCE_DIR}/src/vr32.c)
|
||||||
set (HAVE_VR 1)
|
set (HAVE_VR 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
check_function_exists (lrint HAVE_LRINT)
|
check_function_exists (lrint HAVE_LRINT)
|
||||||
check_include_files (fenv.h HAVE_FENV_H)
|
check_include_files (fenv.h HAVE_FENV_H)
|
||||||
test_big_endian (WORDS_BIGENDIAN)
|
test_big_endian (WORDS_BIGENDIAN)
|
||||||
|
|
||||||
macro (make_exist)
|
macro (make_exist)
|
||||||
foreach (x ${ARGN})
|
foreach (x ${ARGN})
|
||||||
if (NOT ${x})
|
if (NOT ${x})
|
||||||
set (${x} 0)
|
set (${x} 0)
|
||||||
endif ()
|
endif ()
|
||||||
endforeach ()
|
endforeach ()
|
||||||
endmacro ()
|
endmacro ()
|
||||||
|
|
||||||
make_exist (HAVE_LRINT HAVE_FENV_H WORDS_BIGENDIAN HAVE_SIMD HAVE_VR)
|
make_exist (HAVE_LRINT HAVE_FENV_H WORDS_BIGENDIAN HAVE_SIMD HAVE_VR)
|
||||||
make_exist (HAVE_SINGLE_PRECISION HAVE_DOUBLE_PRECISION HAVE_AVFFT)
|
make_exist (HAVE_SINGLE_PRECISION HAVE_DOUBLE_PRECISION HAVE_AVFFT)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Compiler configuration:
|
# Compiler configuration:
|
||||||
|
|
||||||
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
|
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
|
||||||
set (PROJECT_CXX_FLAGS "-Wconversion -Wall -W -pedantic -Wundef -Wcast-align -Wpointer-arith -Wno-long-long")
|
set (PROJECT_CXX_FLAGS "-Wconversion -Wall -W -pedantic -Wundef -Wcast-align -Wpointer-arith -Wno-long-long")
|
||||||
set (PROJECT_C_FLAGS "${PROJECT_CXX_FLAGS} -Wnested-externs -Wmissing-prototypes -Wstrict-prototypes")
|
set (PROJECT_C_FLAGS "${PROJECT_CXX_FLAGS} -Wnested-externs -Wmissing-prototypes -Wstrict-prototypes")
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL "Release")
|
if (CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||||
set (CMAKE_SHARED_LINKER_FLAGS "-s") # strip
|
set (CMAKE_SHARED_LINKER_FLAGS "-s") # strip
|
||||||
endif ()
|
endif ()
|
||||||
#option (VISIBILITY_HIDDEN "Build with -fvisibility=hidden." ON)
|
#option (VISIBILITY_HIDDEN "Build with -fvisibility=hidden." ON)
|
||||||
if (VISIBILITY_HIDDEN)
|
if (VISIBILITY_HIDDEN)
|
||||||
add_definitions (-fvisibility=hidden)
|
add_definitions (-fvisibility=hidden)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
add_definitions (-D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS)
|
add_definitions (-D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS)
|
||||||
option (ENABLE_STATIC_RUNTIME "Visual Studio, link with runtime statically." OFF)
|
option (ENABLE_STATIC_RUNTIME "Visual Studio, link with runtime statically." OFF)
|
||||||
if (ENABLE_STATIC_RUNTIME)
|
if (ENABLE_STATIC_RUNTIME)
|
||||||
foreach (flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
foreach (flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||||
string (REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
|
string (REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
|
||||||
endforeach ()
|
endforeach ()
|
||||||
endif ()
|
endif ()
|
||||||
# By default, do not warn when built on machines using only VS Express:
|
# By default, do not warn when built on machines using only VS Express:
|
||||||
if (NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
|
if (NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
|
||||||
set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
|
set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Build configuration:
|
# Build configuration:
|
||||||
|
|
||||||
if (${BUILD_SHARED_LIBS} AND ${CMAKE_SYSTEM_NAME} STREQUAL Windows) # Allow exes to find dlls:
|
if (${BUILD_SHARED_LIBS} AND ${CMAKE_SYSTEM_NAME} STREQUAL Windows) # Allow exes to find dlls:
|
||||||
set (BIN ${PROJECT_BINARY_DIR}/bin/)
|
set (BIN ${PROJECT_BINARY_DIR}/bin/)
|
||||||
set (EXAMPLES_BIN ${BIN})
|
set (EXAMPLES_BIN ${BIN})
|
||||||
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BIN})
|
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BIN})
|
||||||
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BIN})
|
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BIN})
|
||||||
else ()
|
else ()
|
||||||
set (BIN ./)
|
set (BIN ./)
|
||||||
set (EXAMPLES_BIN ../examples/)
|
set (EXAMPLES_BIN ../examples/)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set (LIB_TYPE STATIC)
|
set (LIB_TYPE STATIC)
|
||||||
if (BUILD_SHARED_LIBS)
|
if (BUILD_SHARED_LIBS)
|
||||||
set (LIB_TYPE SHARED)
|
set (LIB_TYPE SHARED)
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
add_definitions (-DSOXR_DLL)
|
add_definitions (-DSOXR_DLL)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Installation configuration:
|
# Installation configuration:
|
||||||
|
|
||||||
set (LIB_SUFFIX "" CACHE STRING "Define suffix of libraries directory name (32 or 64).")
|
set (LIB_SUFFIX "" CACHE STRING "Define suffix of libraries directory name (32 or 64).")
|
||||||
set (BIN_INSTALL_DIR "bin" CACHE PATH "The subdirectory to the binaries." FORCE)
|
set (BIN_INSTALL_DIR "bin" CACHE PATH "The subdirectory to the binaries." FORCE)
|
||||||
set (LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "The subdirectory to the libraries." FORCE)
|
set (LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "The subdirectory to the libraries." FORCE)
|
||||||
set (INCLUDE_INSTALL_DIR "include" CACHE PATH "The subdirectory to the headers." FORCE)
|
set (INCLUDE_INSTALL_DIR "include" CACHE PATH "The subdirectory to the headers." FORCE)
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
option (BUILD_FRAMEWORK "Build an OS X framework." OFF)
|
option (BUILD_FRAMEWORK "Build an OS X framework." OFF)
|
||||||
set (FRAMEWORK_INSTALL_DIR "/Library/Frameworks" CACHE STRING "Directory to install frameworks to.")
|
set (FRAMEWORK_INSTALL_DIR "/Library/Frameworks" CACHE STRING "Directory to install frameworks to.")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Top-level:
|
# Top-level:
|
||||||
|
|
||||||
set (PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
|
set (PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
|
||||||
math (EXPR SO_VERSION_MAJOR "${SO_VERSION_CURRENT} - ${SO_VERSION_AGE}")
|
math (EXPR SO_VERSION_MAJOR "${SO_VERSION_CURRENT} - ${SO_VERSION_AGE}")
|
||||||
math (EXPR SO_VERSION_MINOR "${SO_VERSION_AGE}")
|
math (EXPR SO_VERSION_MINOR "${SO_VERSION_AGE}")
|
||||||
math (EXPR SO_VERSION_PATCH "${SO_VERSION_REVISION}")
|
math (EXPR SO_VERSION_PATCH "${SO_VERSION_REVISION}")
|
||||||
set (SO_VERSION ${SO_VERSION_MAJOR}.${SO_VERSION_MINOR}.${SO_VERSION_PATCH})
|
set (SO_VERSION ${SO_VERSION_MAJOR}.${SO_VERSION_MINOR}.${SO_VERSION_PATCH})
|
||||||
|
|
||||||
configure_file (
|
configure_file (
|
||||||
${PROJECT_SOURCE_DIR}/${PROJECT_NAME}-config.h.in
|
${PROJECT_SOURCE_DIR}/${PROJECT_NAME}-config.h.in
|
||||||
${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.h)
|
${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.h)
|
||||||
include_directories (${PROJECT_BINARY_DIR})
|
include_directories (${PROJECT_BINARY_DIR})
|
||||||
|
|
||||||
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
|
if (BUILD_TESTS OR BUILD_LSR_TESTS)
|
||||||
file (COPY doc/logo.png DESTINATION doc)
|
enable_testing ()
|
||||||
add_custom_target (docs doxygen)
|
endif ()
|
||||||
|
|
||||||
if (BUILD_TESTS OR BUILD_LSR_TESTS)
|
|
||||||
enable_testing ()
|
|
||||||
endif ()
|
# Subdirectories:
|
||||||
|
|
||||||
|
include_directories (${PROJECT_SOURCE_DIR}/src)
|
||||||
|
|
||||||
# Subdirectories:
|
add_subdirectory (src)
|
||||||
|
if (BUILD_TESTS)
|
||||||
include_directories (${PROJECT_SOURCE_DIR}/src)
|
add_subdirectory (tests)
|
||||||
|
endif ()
|
||||||
add_subdirectory (src)
|
if (BUILD_LSR_TESTS)
|
||||||
if (BUILD_TESTS)
|
add_subdirectory (lsr-tests)
|
||||||
add_subdirectory (tests)
|
endif ()
|
||||||
endif ()
|
if (BUILD_EXAMPLES OR BUILD_TESTS)
|
||||||
if (BUILD_LSR_TESTS)
|
add_subdirectory (examples)
|
||||||
add_subdirectory (lsr-tests)
|
endif ()
|
||||||
endif ()
|
|
||||||
if (BUILD_EXAMPLES OR BUILD_TESTS)
|
|
||||||
add_subdirectory (examples)
|
|
||||||
endif ()
|
# Rough-and-ready distclean for anyone still doing in-tree builds:
|
||||||
|
|
||||||
|
if (UNIX)
|
||||||
|
add_custom_target (distclean
|
||||||
# Deinstallation:
|
COMMAND make clean && rm -rf
|
||||||
|
CMakeCache.txt
|
||||||
configure_file (
|
CMakeFiles
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/deinstall.cmake.in"
|
cmake_install.cmake
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/deinstall.cmake"
|
CPackConfig.cmake
|
||||||
IMMEDIATE @ONLY)
|
CPackSourceConfig.cmake
|
||||||
|
deinstall.cmake
|
||||||
add_custom_target (deinstall
|
Makefile
|
||||||
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/deinstall.cmake")
|
soxr-config.h
|
||||||
|
src/CMakeFiles
|
||||||
|
src/cmake_install.cmake
|
||||||
|
src/libsoxr-dev.src
|
||||||
# Packaging:
|
src/libsoxr-lsr.pc
|
||||||
|
src/libsoxr.pc
|
||||||
if (UNIX)
|
src/libsoxr.src
|
||||||
set (CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
|
src/Makefile)
|
||||||
set (CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
|
endif ()
|
||||||
set (CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
|
|
||||||
|
|
||||||
set (CPACK_SOURCE_GENERATOR "TBZ2")
|
|
||||||
set (CPACK_SOURCE_IGNORE_FILES "/Debug/;/Release/;/cpack/;\\\\.swp$;\\\\.gitignore;.*vr32\\\\.c")
|
# Deinstallation:
|
||||||
|
|
||||||
include (CPack)
|
configure_file (
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/deinstall.cmake.in"
|
||||||
if (IS_DIRECTORY ${PROJECT_SOURCE_DIR}/cpack)
|
"${CMAKE_CURRENT_BINARY_DIR}/deinstall.cmake"
|
||||||
add_subdirectory (cpack)
|
IMMEDIATE @ONLY)
|
||||||
endif ()
|
|
||||||
endif ()
|
add_custom_target (deinstall
|
||||||
|
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/deinstall.cmake")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Packaging:
|
||||||
|
|
||||||
|
if (UNIX)
|
||||||
|
set (CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
|
||||||
|
set (CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
|
||||||
|
set (CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
|
||||||
|
|
||||||
|
set (CPACK_SOURCE_GENERATOR "TBZ2")
|
||||||
|
set (CPACK_SOURCE_IGNORE_FILES "/Debug/;/Release/;/cpack/;\\\\.swp$;\\\\.gitignore")
|
||||||
|
|
||||||
|
include (CPack)
|
||||||
|
|
||||||
|
if (IS_DIRECTORY ${PROJECT_SOURCE_DIR}/cpack)
|
||||||
|
add_subdirectory (cpack)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|||||||
@@ -1,50 +1,50 @@
|
|||||||
SoX Resampler Library Copyright (c) 2007-12 robs@users.sourceforge.net
|
SoX Resampler Library Copyright (c) 2007-12 robs@users.sourceforge.net
|
||||||
|
|
||||||
The SoX Resampler library `libsoxr' performs one-dimensional sample-rate
|
The SoX Resampler library `libsoxr' performs one-dimensional sample-rate
|
||||||
conversion - it may be used, for example, to resample PCM-encoded audio.
|
conversion -- it may be used, for example, to resample PCM-encoded audio.
|
||||||
For higher-dimensional resampling, such as for visual-image processing, you
|
For higher-dimensional resampling, such as for visual-image processing, you
|
||||||
should look elsewhere.
|
should look elsewhere.
|
||||||
|
|
||||||
It aims to be fast (e.g. multi-channel resampling can utilise multiple
|
It aims to give fast¹ and very high quality² results for any constant
|
||||||
CPU-cores), high-quality (i.e. bit-perfect up to 32-bits, for occupied-
|
(rational or irrational) resampling ratio. Phase-response, preserved
|
||||||
bandwidths up to 98%¹), and to allow any rational or irrational resampling
|
bandwidth, aliasing, and rejection level parameters are all configurable;
|
||||||
ratio. Phase-response, preserved bandwidth, aliasing, and rejection level
|
alternatively, simple `preset' configurations may be selected. An
|
||||||
parameters are all configurable; alternatively, simple `preset'
|
experimental, variable-rate resampling mode of operation is also included.
|
||||||
configurations may be selected.
|
|
||||||
|
The resampler is currently available either as part of `libsox' (the audio
|
||||||
The resampler is currently available either as part of `libsox' (the audio
|
file-format and effect library), or stand-alone as `libsoxr' (this package).
|
||||||
file-format and effect library), or stand-alone as `libsoxr' (this package).
|
The interfaces to libsox and libsoxr are slightly different, with that of
|
||||||
The interfaces to libsox and libsoxr are slightly different, with that of
|
libsoxr designed specifically for resampling. An application requiring
|
||||||
libsoxr designed specifically for resampling. An application requiring
|
support for other effects, or for reading-from or writing-to audio files or
|
||||||
support for other effects, or for reading-from or writing-to audio files or
|
devices, should use libsox (or other libraries such as libsndfile or
|
||||||
devices, should use libsox (or other libraries such as libsndfile or
|
libavformat).
|
||||||
libavformat).
|
|
||||||
|
Libsoxr provides a simple API that allows interfacing using the most
|
||||||
Libsoxr provides a simple API that allows interfacing using any commonly-
|
commonly-used sample formats and buffering schemes: sample-formats may be
|
||||||
used sample format or buffering scheme: clients may use either floating-
|
either floating-point or integer, and multiple channels either interleaved
|
||||||
point or integer sample formats, and, in the case of multiple channels,
|
or split in separate buffers. The API is documented in the header file
|
||||||
either channel-interleaved, or split channels. The API is currently
|
`soxr.h', together with sample code found in the 'examples' directory.
|
||||||
documented in the header file `soxr.h' and by example code in the 'examples'
|
|
||||||
directory.
|
For compatibility with the popular `libsamplerate' library, the header file
|
||||||
|
`soxr-lsr.h' is provided and may be used as an alternative API.³ Note
|
||||||
For compatibility with the popular `libsamplerate' library, the header file
|
however, that libsoxr does not provide a full emulation of libsamplerate
|
||||||
`soxr-lsr.h' is provided and may be used as an alternative API. For details
|
and that using this approach, only a sub-set of libsoxr's features are
|
||||||
of that API, see http://www.mega-nerd.com/SRC/api.html. Note however, that
|
available.
|
||||||
libsoxr does not provide a full emulation of libsamplerate; in particular,
|
|
||||||
`vari-speeding' is not supported.
|
The design was inspired by Laurent De Soras' paper `The Quest For The
|
||||||
|
Perfect Resampler', http://ldesoras.free.fr/doc/articles/resampler-en.pdf;
|
||||||
For build and installation instructions, see the file `INSTALL'; for
|
in essence, it combines Julius O. Smith's `Bandlimited Interpolation'
|
||||||
copyright and licensing information, see the file `LICENCE'.
|
technique (https://ccrma.stanford.edu/~jos/resample/resample.pdf) with FFT-
|
||||||
|
based over-sampling.
|
||||||
The resampler was inspired by Laurent De Soras' paper `The Quest For The
|
|
||||||
Perfect Resampler', http://ldesoras.free.fr/doc/articles/resampler-en.pdf;
|
Note that for real-time resampling, libsoxr may have a higher latency
|
||||||
it combines Julius O. Smith's `Bandlimited Interpolation' technique
|
than non-FFT based resamplers. For example, when using the `High Quality'
|
||||||
(https://ccrma.stanford.edu/~jos/resample/resample.pdf) with FFT-based
|
configuration to resample between 44100Hz and 48000Hz, the latency is
|
||||||
over-sampling.
|
around 1000 output samples, i.e. roughly 20ms.
|
||||||
|
|
||||||
Its use of FFTs means that, for real-time resampling, libsoxr may have a
|
For build and installation instructions, see the file `INSTALL'; for
|
||||||
higher latency than non-FFT based resamplers. E.g. when using the `High
|
copyright and licensing information, see the file `LICENCE'.
|
||||||
Quality' configuration to resample between 44100Hz and 48kHz, the latency is
|
________
|
||||||
around 1000 output samples, i.e. roughly 20 ms.
|
¹ For example, multi-channel resampling can utilise multiple CPU-cores.
|
||||||
|
² Bit-perfect within practical occupied-bandwidth limits.
|
||||||
¹ Note that no practical resampler can be bit-perfect to 100% bandwidth.
|
³ For details of that API, see http://www.mega-nerd.com/SRC/api.html.
|
||||||
|
|||||||
28
lib-src/libsoxr/configure
vendored
28
lib-src/libsoxr/configure
vendored
@@ -1,15 +1,13 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# SoX Resampler Library Copyright (c) 2007-12 robs@users.sourceforge.net
|
# SoX Resampler Library Copyright (c) 2007-12 robs@users.sourceforge.net
|
||||||
# Licence for this file: LGPL v2.1 See LICENCE for details.
|
# Licence for this file: LGPL v2.1 See LICENCE for details.
|
||||||
|
|
||||||
# Wrapper to allow easier integration with projects using autotools.
|
# Wrapper to allow easier integration with projects using autotools.
|
||||||
|
|
||||||
# Such projects will probably be using static libs so should pass
|
# Such projects will probably be using static libs so should pass
|
||||||
# -DBUILD_SHARED_LIBS=OFF amongst any other options needed.
|
# -DBUILD_SHARED_LIBS=OFF amongst any other options needed.
|
||||||
|
|
||||||
# Autotools options should not be passed to this script.
|
# Autotools options should not be passed to this script.
|
||||||
|
|
||||||
# Configure for Audacity.
|
cmake $* .
|
||||||
# cmake $* .
|
|
||||||
cmake -DBUILD_SHARED_LIBS=OFF -DWITH_OPENMP=OFF .
|
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# SoX Resampler Library Copyright (c) 2007-12 robs@users.sourceforge.net
|
# SoX Resampler Library Copyright (c) 2007-12 robs@users.sourceforge.net
|
||||||
# Licence for this file: LGPL v2.1 See LICENCE for details.
|
# Licence for this file: LGPL v2.1 See LICENCE for details.
|
||||||
|
|
||||||
build=$1
|
build=$1
|
||||||
test x$build = x && build=Release
|
test x$build = x && build=Release
|
||||||
|
|
||||||
mkdir -p $build
|
rm -f CMakeCache.txt # Prevent interference from any in-tree build
|
||||||
cd $build
|
|
||||||
|
mkdir -p $build
|
||||||
cmake -DCMAKE_BUILD_TYPE=$build -DBUILD_TESTS=ON .. &&
|
cd $build
|
||||||
make &&
|
|
||||||
(make test || echo "FAILURE details in $build/Testing/Temporary/LastTest.log")
|
cmake -DCMAKE_BUILD_TYPE=$build -DBUILD_TESTS=ON .. &&
|
||||||
|
make &&
|
||||||
|
(make test || echo "FAILURE details in $build/Testing/Temporary/LastTest.log")
|
||||||
|
|||||||
@@ -1,24 +1,27 @@
|
|||||||
@echo off
|
@echo off
|
||||||
rem SoX Resampler Library Copyright (c) 2007-12 robs@users.sourceforge.net
|
rem SoX Resampler Library Copyright (c) 2007-12 robs@users.sourceforge.net
|
||||||
rem Licence for this file: LGPL v2.1 See LICENCE for details.
|
rem Licence for this file: LGPL v2.1 See LICENCE for details.
|
||||||
|
|
||||||
set build=%1
|
set build=%1
|
||||||
if x%build% == x set build=Release
|
if x%build% == x set build=Release
|
||||||
|
|
||||||
mkdir %build%
|
rem Prevent interference from any in-tree build
|
||||||
cd %build%
|
del/f CMakeCache.txt
|
||||||
|
|
||||||
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=%build% -DBUILD_TESTS=ON ..
|
mkdir %build%
|
||||||
if errorlevel 1 goto end
|
cd %build%
|
||||||
|
|
||||||
nmake
|
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=%build% -DBUILD_TESTS=ON ..
|
||||||
if errorlevel 1 goto end
|
if errorlevel 1 goto end
|
||||||
|
|
||||||
nmake test
|
nmake
|
||||||
if errorlevel 1 goto error
|
if errorlevel 1 goto end
|
||||||
goto end
|
|
||||||
|
nmake test
|
||||||
:error
|
if errorlevel 1 goto error
|
||||||
echo FAILURE details in Testing\Temporary\LastTest.log
|
goto end
|
||||||
|
|
||||||
:end
|
:error
|
||||||
|
echo FAILURE details in Testing\Temporary\LastTest.log
|
||||||
|
|
||||||
|
:end
|
||||||
|
|||||||
Reference in New Issue
Block a user