ThinkMeta LogoDeutsch
English
Case study: LAME/fpMP3

LAME is an open source project around MP3. The LAME encoder is very popular since on the one hand it is freely available and on the other hand it can produce MP3 files of high quality.

Version 3.98.2 of LAME's source code was examined in the case study.

Objectives:
Because of massive data dependencies the algorithms of the LAME encoder are very difficult to parallelize. This property makes the encoder the ideal test candidate for the use of Fiber Pool since the framework was developed in particular for parallel execution of dependent tasks.

In the case study it was examined whether the performance of the algorithms can be increased on multicore processors by using Fiber Pool and asynchronous programming.

Limitations:
Next to MP3 the LAME encoder can produce also MPEG-2 or MPEG-2.5 and accepts both stereo and mono files in different sampling rates. The encoding quality can be influenced by a great number of command line parameters.

In order to reduce complexity, however, only parts of them were implemented in the case study:

  • Only MP3 files can be produced (MPEG-1 Layer 3).
  • Only WAV files in the following format are supported as input: stereo, 44.1 kHz, 16-bit.
  • MP3 files are produced in the following format: (joint-)stereo, 44.1 kHz.
  • Only the most important command line parameters were taken over.

Download of the source code:
The source code is contained in the Fiber Pool API which can be downloaded here.

Note: By default, the use of SSE/SSE2/SSE4 instructions is enabled in the source code. It can be disabled in the header file "stdafx.h".

The source code can be used under the GPL license, Version 3.