SpeexDSP Documentation
repository·master·Indexed 20 days ago
https://github.com/xiph/speexdspA patent-free, Open Source/Free Software digital signal processing (DSP) library providing signal processing algorithms for audio-related applications. Documentation includes cross-compilation guides for Blackfin uClinux, optimization and configuration for Trimedia compilers, and preprocessor definitions for Win32 features such as SSE and fixed-point arithmetic.
What's inside SpeexDSP
- SpeexDSP is a patent-free, Open Source/Free Software Digital Signal Processing (DSP) library. It provides a collection of signal processing algorithms for developers building audio-related applications.
Cross-compile SpeexDSP for Blackfin uClinux from Git
masterTo cross-compile SpeexDSP for the Blackfin DSP (specifically for the STAMP development board) using the Git repository, follow these steps. Note that you must have the toolchain available from http://blackfin.uclinux.org/ installed on your system.
Use the
--enable-blackfin-asmflag to approximately double the processing speed, though it is optional. The--enable-fixed-pointflag is required for this architecture.git clone git://git.xiph.org/speexdsp.git cd speexdsp ./autogen.sh ./configure --enable-blackfin-asm --enable-fixed-point --host=bfin-uclinux cd libspeexdsp makeCross-compile SpeexDSP for Blackfin uClinux from a tarball
masterTo cross-compile SpeexDSP for the Blackfin DSP (specifically for the STAMP development board) using a source tarball, follow these steps. Note that you must have the toolchain available from http://blackfin.uclinux.org/ installed on your system.
Use the
--enable-blackfin-asmflag to approximately double the processing speed, though it is optional. The--enable-fixed-pointflag is required for this architecture../configure --enable-blackfin-asm --enable-fixed-point --host=bfin-uclinux cd libspeexdsp makeEnable Win32 specific features via Preprocessor Definitions
masterTo enable specific hardware or mathematical optimizations in SpeexDSP on Windows, you must manually add the corresponding macros to the "Preprocessor Definitions" section of your Visual C (VC) project configuration settings.
Available Feature Macros:
USE_SSE: Enables Intel Streaming SIMD Extensions (SSE).FIXED_POINT: Enables fixed-point arithmetic.EPIC_48K: Enables Epic 48k support.
Important Constraint:
USE_SSEandFIXED_POINTare mutually exclusive. You cannot enable both at the same time.Optimize SpeexDSP for Trimedia compilers
masterTo enable optimized code paths for the Trimedia architecture, ensure the
TM_ASMmacro is defined. This enables specialized assembly/optimized code in several core files includingarch.h,fftwrap.c,filterbank.c,kiss_fft.c,kiss_fftr.c,mdf.c, andpreprocess.c.Additionally, you can enable floating-point processing for the
mdfandpreprocessmodules to improve performance on Trimedia hardware, even while keeping the encoder/decoder in fixed-point mode. Define thePREPROCESS_MDF_FLOATmacro to trigger this behavior. This macro automatically undefinesFIXED_POINTin the relevant modules.// To enable optimized assembly paths #define TM_ASM // To enable floating point for mdf and preprocess on Trimedia #define PREPROCESS_MDF_FLOATUse profile options for debugging
masterThe project includes profile options for performance analysis. It is recommended to use these profile options only if your standard compiler profiling tools fail to work correctly.Configure KISS FFT usage via USE_COMPACT_KISS_FFT
masterThe project provides a
USE_COMPACT_KISS_FFTmacro to manage FFT memory usage. This macro is intended to be configured inconfig.h. Enabling this macro facilitates integration by modifying howpreprocess.candmdf.chandle initialization and destruction, and shiftspower_spectrumtofftwrap.cto allow shared optimized code between the two modules.// In config.h #define USE_COMPACT_KISS_FFT