FAAC-1.28

Introduction to FAAC

FAAC is an encoder for a lossy sound compression scheme specified in MPEG-2 Part 7 and MPEG-4 Part 3 standards and known as Advanced Audio Coding (AAC). This encoder is useful for producing files that can be played back on iPod. Moreover, iPod does not understand other sound compression schemes in video files.

This package is known to build and work properly using an LFS-8.0 platform.

Package Information

Additional Downloads

FAAC Dependencies

Optional

libmp4v2 from mpeg4ip (untested, as of 2007-09-28, development of the project is stopped; an internal version of the library is used if the external one is not found).

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/faac

Installation of FAAC

Install FAAC by running the following commands:

patch -Np1 -i ../faac-1.28-glibc_fixes-1.patch &&

sed -i -e '/obj-type/d' -e '/Long Term/d' frontend/main.c &&

CFLAGS=-std=c99 CXXFLAGS=-std=c++98 \
./configure --prefix=/usr --disable-static &&
make

This package does not come with a test suite. However, basic functionality can be tested by encoding a sample WAV file (the sample file is installed by the alsa-utils-1.1.3 package:

./frontend/faac -o Front_Left.mp4 /usr/share/sounds/alsa/Front_Left.wav

Then, decode the result using the faad program from the FAAD2-2.7 package and play back the decoded file (requires the aplay program from the alsa-utils-1.1.3 package:

faad Front_Left.mp4
aplay Front_Left.wav

aplay should identify the file as “Signed 16 bit Little Endian, Rate 48000 Hz, Stereo”, and you should hear the words “front left”.

Now, as the root user:

make install

Command Explanations

CFLAGS=... CXXFLAGS=...: These environment variables fix a problem with compiling under GCC-6.x.

sed -i ...: This command removes documentation for the --obj-type parameter from the faac --long-help command output. This parameter is already disabled in FAAC-1.28 due to sound quality issues with object types other than “Low Complexity”.

--disable-static: This switch prevents installation of static versions of the libraries.

--enable-drm: This option is supposed to enable support for encoding files for Digital Radio Mondiale, but actually breaks the base functionality of the package (e.g., the resulting faac program produces files that cannot be decoded by FAAD2-2.7, even if compiled with DRM support). Don't use it.

Other AAC encoders

The quality of FAAC is not up to par with the best AAC encoders currently available. Also, it only supports AAC and not High Efficiency AAC (also known as aacPlus), which provides better quality at low bitrates by means of using the “spectral band replication” technology. There are the following alternative programs for producing AAC and HE-AAC streams:

  • Nero AAC Codec: available only in the binary form, the command-line AAC and HE-AAC encoders for Linux are in the same archive as the Windows application.

  • 3GPP Enhanced aacPlus general audio codec: available in the source form, can encode only HE-AAC up to 48 kbps out of the box, but the maximum bitrate can be changed by editing the tuning table in the FloatFR_sbrenclib/src/sbr_main.c file.

Note, however, that iPod supports only Low Complexity AAC profile, which is the default in FAAC, but may not be the default in Nero AAC Encoder and is completely unavailable in the 3GPP encoder.

Contents

Installed Program: faac
Installed Libraries: libfaac.so and libmp4v2.so
Installed Directories: None

Short Descriptions

faac

is a command-line AAC encoder.

libfaac.so

contains functions for encoding AAC streams.

libmp4v2.so

contains functions for creating and manipulating MP4 files.

Last updated on 2017-02-17 16:10:58 -0800