SpeexDSP Documentation

repository·master·Indexed 20 days ago

https://github.com/xiph/speexdsp

A 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.

Tokens
931
Snippets
4
Records
7
Agent score
72%

What's inside SpeexDSP

  1. Overview of SpeexDSP

    master
    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.
  2. Cross-compile SpeexDSP for Blackfin uClinux from Git

    master

    To 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-asm flag to approximately double the processing speed, though it is optional. The --enable-fixed-point flag 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
    make
  3. Cross-compile SpeexDSP for Blackfin uClinux from a tarball

    master

    To 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-asm flag to approximately double the processing speed, though it is optional. The --enable-fixed-point flag is required for this architecture.

    ./configure --enable-blackfin-asm --enable-fixed-point --host=bfin-uclinux
    cd libspeexdsp
    make
  4. Enable Win32 specific features via Preprocessor Definitions

    master

    To 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_SSE and FIXED_POINT are mutually exclusive. You cannot enable both at the same time.

  5. Optimize SpeexDSP for Trimedia compilers

    master

    To enable optimized code paths for the Trimedia architecture, ensure the TM_ASM macro is defined. This enables specialized assembly/optimized code in several core files including arch.h, fftwrap.c, filterbank.c, kiss_fft.c, kiss_fftr.c, mdf.c, and preprocess.c.

    Additionally, you can enable floating-point processing for the mdf and preprocess modules to improve performance on Trimedia hardware, even while keeping the encoder/decoder in fixed-point mode. Define the PREPROCESS_MDF_FLOAT macro to trigger this behavior. This macro automatically undefines FIXED_POINT in the relevant modules.

    // To enable optimized assembly paths
    #define TM_ASM
    
    // To enable floating point for mdf and preprocess on Trimedia
    #define PREPROCESS_MDF_FLOAT
  6. Configure KISS FFT usage via USE_COMPACT_KISS_FFT

    master

    The project provides a USE_COMPACT_KISS_FFT macro to manage FFT memory usage. This macro is intended to be configured in config.h. Enabling this macro facilitates integration by modifying how preprocess.c and mdf.c handle initialization and destruction, and shifts power_spectrum to fftwrap.c to allow shared optimized code between the two modules.

    // In config.h
    #define USE_COMPACT_KISS_FFT