2022-08-03 22:10:19 +00:00
|
|
|
|
SoX Resampler Library Copyright (c) 2007-16 robs@users.sourceforge.net
|
2016-03-23 05:33:14 +00:00
|
|
|
|
|
|
|
|
|
INSTALLATION GUIDE CONTENTS
|
|
|
|
|
|
|
|
|
|
* Standard build
|
|
|
|
|
* Build customisation
|
2022-08-03 22:10:19 +00:00
|
|
|
|
* Cross-compilation
|
2016-03-23 05:33:14 +00:00
|
|
|
|
* Integration with other build systems
|
2022-08-03 22:10:19 +00:00
|
|
|
|
* Run-time configuration
|
2016-03-23 05:33:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
STANDARD BUILD
|
|
|
|
|
|
|
|
|
|
1. Prerequisites:
|
|
|
|
|
|
|
|
|
|
Before you can build this library, you need to have available on your
|
|
|
|
|
system:
|
|
|
|
|
|
|
|
|
|
* A C-compiler with 64-bit integer support and, optionally, OpenMP, SIMD.
|
|
|
|
|
|
|
|
|
|
* A 'make' utility (most compiler installations already have one of these).
|
|
|
|
|
|
2022-08-03 22:10:19 +00:00
|
|
|
|
* CMake v3.0 or newer: https://cmake.org/download/
|
2016-03-23 05:33:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. Build:
|
|
|
|
|
|
|
|
|
|
At a command prompt, change directory (`cd') to the one containing this
|
|
|
|
|
file, then enter:
|
|
|
|
|
|
|
|
|
|
go (on MS-Windows with nmake)
|
|
|
|
|
or
|
2022-08-03 22:10:19 +00:00
|
|
|
|
./go (on Unix-like systems)
|
2016-03-23 05:33:14 +00:00
|
|
|
|
|
|
|
|
|
This should build the library and run a few sanity tests.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. Installation:
|
|
|
|
|
|
|
|
|
|
Note that this step may need to be performed by a system
|
2022-08-03 22:10:19 +00:00
|
|
|
|
administrator. Enter:
|
2016-03-23 05:33:14 +00:00
|
|
|
|
|
|
|
|
|
nmake install (on MS-Windows)
|
|
|
|
|
or
|
2022-08-03 22:10:19 +00:00
|
|
|
|
cd Release; make install (on Unix-like)
|
2016-03-23 05:33:14 +00:00
|
|
|
|
|
|
|
|
|
|
2022-08-03 22:10:19 +00:00
|
|
|
|
4. Preparation for use:
|
2016-03-23 05:33:14 +00:00
|
|
|
|
|
|
|
|
|
To use the library you may need to set up appropriate paths to the
|
|
|
|
|
library and its header file in your development environment.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5. Installation test
|
|
|
|
|
|
|
|
|
|
To test the installation, build and run some of the example programmes
|
|
|
|
|
(see examples/README).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BUILD CUSTOMISATION
|
|
|
|
|
|
2022-08-03 22:10:19 +00:00
|
|
|
|
If it is necessary to customise the build, then steps 2 and 3 above should be
|
|
|
|
|
substituted as follows: change directory to the one containing this file, then
|
|
|
|
|
enter commands along the lines:
|
2016-03-23 05:33:14 +00:00
|
|
|
|
|
|
|
|
|
mkdir build
|
|
|
|
|
cd build
|
2022-08-03 22:10:19 +00:00
|
|
|
|
cmake -Wno-dev -DCMAKE_BUILD_TYPE=Release [OPTIONS] ..
|
2016-03-23 05:33:14 +00:00
|
|
|
|
make
|
|
|
|
|
make test
|
|
|
|
|
sudo make install
|
|
|
|
|
|
2022-08-03 22:10:19 +00:00
|
|
|
|
N.B. The CMAKE_BUILD_TYPE to use for library deployment is Release.
|
|
|
|
|
|
2016-03-23 05:33:14 +00:00
|
|
|
|
To list help on the available options, enter:
|
|
|
|
|
|
|
|
|
|
cmake -LH ..
|
|
|
|
|
|
|
|
|
|
Options, if given, should be preceded with '-D', e.g.
|
|
|
|
|
|
2022-08-03 22:10:19 +00:00
|
|
|
|
-DBUILD_SHARED_LIBS:BOOL=OFF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Resampling engines
|
|
|
|
|
|
|
|
|
|
As available on a given system, options for including up-to five resampling
|
|
|
|
|
‘engines’ are available (per above) as follows:
|
|
|
|
|
|
|
|
|
|
WITH_CR32: for constant-rate HQ resampling,
|
|
|
|
|
WITH_CR32S: SIMD variant of previous,
|
|
|
|
|
WITH_CR64: for constant-rate VHQ resampling,
|
|
|
|
|
WITH_CR64S: SIMD variant of previous,
|
|
|
|
|
WITH_VR32: for variable-rate HQ resampling.
|
2016-03-23 05:33:14 +00:00
|
|
|
|
|
2022-08-03 22:10:19 +00:00
|
|
|
|
By default, these options are all set to ON.
|
2016-03-23 05:33:14 +00:00
|
|
|
|
|
2022-08-03 22:10:19 +00:00
|
|
|
|
When both SIMD and non-SIMD engine variants are included, run-time selection
|
|
|
|
|
is automatic (based on CPU capability) for x86 CPUs, and can be automatic for
|
|
|
|
|
ARM CPUs if the 3rd-party library `libavutil' is available at libsoxr
|
|
|
|
|
build-time. Which engine has been selected for a specific configuration and
|
|
|
|
|
invocation of the library can be checked using example #3, which reports it.
|
|
|
|
|
See also Run-time Configuration, below.
|
2016-03-23 05:33:14 +00:00
|
|
|
|
|
|
|
|
|
|
2022-08-03 22:10:19 +00:00
|
|
|
|
|
|
|
|
|
CROSS-COMPILATION
|
|
|
|
|
|
|
|
|
|
E.g. targeting a Linux ARM system:
|
|
|
|
|
|
|
|
|
|
mkdir build
|
|
|
|
|
cd build
|
|
|
|
|
cmake -DCMAKE_SYSTEM_NAME=Linux \
|
|
|
|
|
-DCMAKE_C_COMPILER=arm-linux-gnueabi-gcc \
|
|
|
|
|
..
|
|
|
|
|
or, also building the examples (one of which uses C++):
|
|
|
|
|
|
|
|
|
|
cmake -DCMAKE_SYSTEM_NAME=Linux \
|
|
|
|
|
-DCMAKE_C_COMPILER=arm-linux-gnueabi-gcc \
|
|
|
|
|
-DCMAKE_CXX_COMPILER=arm-linux-gnueabi-g++ \
|
|
|
|
|
-DBUILD_EXAMPLES=1 \
|
|
|
|
|
..
|
|
|
|
|
|
|
|
|
|
E.g. with Mingw (Linux host), using a tool-chain file:
|
2016-03-23 05:33:14 +00:00
|
|
|
|
|
|
|
|
|
mkdir build
|
|
|
|
|
cd build
|
|
|
|
|
cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-x86_64-mingw-w64-mingw32.cmake \
|
|
|
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
|
|
|
..
|
|
|
|
|
make
|
|
|
|
|
|
|
|
|
|
where ~/Toolchain-x86_64-mingw-w64-mingw32.cmake might contain:
|
|
|
|
|
|
|
|
|
|
SET(CMAKE_SYSTEM_NAME Windows)
|
|
|
|
|
SET(CMAKE_C_COMPILER /usr/bin/x86_64-w64-mingw32-gcc)
|
|
|
|
|
SET(CMAKE_CXX_COMPILER /usr/bin/x86_64-w64-mingw32-g++)
|
|
|
|
|
SET(CMAKE_RC_COMPILER /usr/bin/x86_64-w64-mingw32-windres)
|
|
|
|
|
SET(CMAKE_Fortran_COMPILER /usr/bin/x86_64-w64-mingw32-gfortran)
|
|
|
|
|
SET(CMAKE_AR:FILEPATH /usr/bin/x86_64-w64-mingw32-ar)
|
|
|
|
|
SET(CMAKE_RANLIB:FILEPATH /usr/bin/x86_64-w64-mingw32-ranlib)
|
|
|
|
|
SET(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)
|
|
|
|
|
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
|
|
|
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
|
|
|
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
|
|
|
SET(QT_BINARY_DIR /usr/x86_64-w64-mingw32/bin /usr/bin)
|
|
|
|
|
SET(Boost_COMPILER -gcc47)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INTEGRATION WITH OTHER BUILD SYSTEMS
|
|
|
|
|
|
|
|
|
|
Autotools-based systems might find it useful to create a file called
|
|
|
|
|
`configure' in the directory containing this file, consisting of the line:
|
2022-08-03 22:10:19 +00:00
|
|
|
|
cmake -DBUILD_SHARED_LIBS=OFF .
|
2016-03-23 05:33:14 +00:00
|
|
|
|
(or with other build options as required).
|
|
|
|
|
|
2022-08-03 22:10:19 +00:00
|
|
|
|
For MS Visual Studio, see msvc/README.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RUN-TIME CONFIGURATION
|
|
|
|
|
|
|
|
|
|
The libsoxr API structure ‘soxr_runtime_spec_t’ allows application developers
|
|
|
|
|
to optimise some aspects of libsoxr’s operation for a particular application.
|
|
|
|
|
Optimal performance however, might depend on an individual end-user’s run-
|
|
|
|
|
time system and the end-user’s preferences. Hence environment variables are
|
|
|
|
|
available to set (override) run-time parameters as follows:
|
|
|
|
|
|
|
|
|
|
Env. variable Equivalent soxr_runtime_spec_t item (see soxr.h)
|
|
|
|
|
------------------ -----------------------------------
|
|
|
|
|
SOXR_COEFS_SIZE coef_size_kbytes
|
|
|
|
|
SOXR_COEF_INTERP SOXR_COEF_INTERP_xxx
|
|
|
|
|
SOXR_LARGE_DFT_SIZE log2_large_dft_size
|
|
|
|
|
SOXR_MIN_DFT_SIZE log2_min_dft_size
|
|
|
|
|
SOXR_NUM_THREADS num_threads
|
|
|
|
|
|
|
|
|
|
Additionally, the SOXR_USE_SIMD32 and SOXR_USE_SIMD64 boolean environment
|
|
|
|
|
variables can be used to override automatic selection (or to provide manual
|
|
|
|
|
selection where automatic selection is not available) between SIMD and
|
|
|
|
|
non-SIMD engine variants.
|