The Helix MP3 Decoder


The Helix MP3 Decoder

The Helix MP3 decoder provides MPEG-compliant decoding of MP3 content. Both floating-point and fixed-point decoder implementations are available. The fixed-point decoder is optimized especially for ARM processors but can run on any 32-bit fixed-point processor which can perform a long multiply operation (two 32-bit inputs generating a 64-bit result) and long multiply-accumulate (long multiply with 64-bit accumulator).

Key Features

  • Pure 32-bit fixed-point implementation
  • High-quality C reference code for porting to new platforms
  • Optimized for ARM processors
  • Fully reentrant and statically linkable
  • Optional C++ API for compatibility with Helix clients
  • Designed for high performance and low power consumption in handheld and mobile devices
  • Full layer 3 support for
    • MPEG1 layer 3 - sampling frequencies: 48 KHz, 44.1 KHz, 32 KHz
    • MPEG2 layer 3 - sampling frequencies: 24 KHz, 22.05 KHz, 16 KHz
    • MPEG2.5 layer 3 - sampling frequencies: 12 KHz, 11.025 KHz, 8 KHz
  • Supports constant bitrate, variable bitrate, and free bitrate modes
  • Supports mono and all stereo modes (normal stereo, joint stereo, dual-mono)
  • Option to use Intel® IPP performance libraries (if available)
    • Easy to link in either IPP libraries or Helix code

Technical Specifications

Average CPU Usage

Sample Rate
Bit Rate
Processor Model (1)
48.0 KHz
320 Kbps
30 MHz
24 MHz
27 MHz
20 MHz
20 MHz
20 MHz
44.1 KHz
128 Kbps
26 MHz
21 MHz
24 MHz
17 MHz
17 MHz
17 MHz

(1) Tested with ARMulator, simulated zero-wait-state memory

Memory Usage

  • ROM = 13446 Bytes (const globals)
  • RAM = 23816 Bytes (heap)
    • Total Data Memory = 37262 Bytes
  • Code Size = 21000 Bytes (approximately - depends on compiler)

Frequently Asked Questions

Where is the code in CVS?

  • See the Helix Datatype project page:
    The CVS root is /cvsroot/datatype, and the module name (path) is mp3/codec/fixpt

Where does the build system put the code in my local source tree?

  • datatype/mp3/codec/fixpt

How does the build system decide whether to build the fixed-point or floating-point MP3 decoder?

  • If HELIX_CONFIG_FIXEDPOINT is defined in your profile, it will build the fixed-point decoder. Otherwise it will build the floating-point version.

Copyright © 1995-2004 RealNetworks, Inc. All rights reserved. RealNetworks and Helix are trademarks of RealNetworks.
All other trademarks or registered trademarks are the property of their respective holders.