Skip to the content.

42. Multimedia Libraries and Drivers


Many multimedia programs require libraries and/or drivers in order to function properly. The packages in this section fall into this category. Generally you only need to install these if you are installing a program which has the library listed as either a requirement, or as an option to enable it to support certain functionality.

42.1 ALSA-1.2.7


The Linux kernel now provides ALSA support by default. However, applications need to interface to that capability. The following six sections of the book deal with the separate components of ALSA: the libraries, the plugins, the utilities, the tools, the firmware and the OSS compatibility libraries.

42.2 alsa-lib-1.2.8


Introduction to ALSA Library

The ALSA Library package contains the ALSA library used by programs (including ALSA Utilities) requiring access to the ALSA sound interface.

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

Package Information

ALSA Library Dependencies

Optional

Doxygen-1.9.6, Python-2.7.18, and alsa-ucm-conf

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/alsa-lib

Kernel Configuration

If needed, enable the following options in the kernel configuration and recompile the kernel:

Device Drivers --->
    <*/M> Sound card support --->                  [CONFIG_SOUND]
        <*/M> Advanced Linux Sound Architecture ---> [CONFIG_SND]
                Select settings and drivers appropriate for your hardware.

In the Device Drivers ⇒ Sound card support ⇒ Advanced Linux Sound Architecture section of the kernel configuration, select the settings and drivers appropriate for your hardware. If necessary, recompile and install your new kernel.

Installation of ALSA Library

Install ALSA Library by running the following commands:

./configure &&
make

If you have Doxygen installed and you wish to build the library API documentation, run the following commands from the top-level directory of the source tree:

make doc

To test the results, issue: make check.

Now, as the root user:

make install

To install the API documentation, run the following command as the root user:

install -v -d -m755 /usr/share/doc/alsa-lib-1.2.8/html/search &&
install -v -m644 doc/doxygen/html/*.* \
                /usr/share/doc/alsa-lib-1.2.8/html &&
install -v -m644 doc/doxygen/html/search/* \
                /usr/share/doc/alsa-lib-1.2.8/html/search

Configuring ALSA Library

Config Files

~/.asoundrc and /etc/asound.conf

Configuration Information

The default alsa.conf is adequate for most installations. For extra functionality and/or advanced control of your sound device, you may need to create additional configuration files. For information on the available configuration parameters, visit https://www.alsa-project.org/main/index.php/Asoundrc.

Contents

Installed Program: aserver

Installed Library: libasound.so and libatopology.so

Installed Directories: /usr/include/alsa, /usr/share/alsa and /usr/share/doc/alsa-lib-1.2.8

Short Descriptions

aserver   is the ALSA server

libasound.so   contains the ALSA API functions

libatopology.so   contains API functions for the ALSA topologies.

42.3 alsa-plugins-1.2.7.1


Introduction to ALSA Plugins

The ALSA Plugins package contains plugins for various audio libraries and sound servers.

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

Package Information

ALSA Plugins Dependencies

Required

alsa-lib-1.2.8

Optional

FFmpeg-5.1.2, libsamplerate-0.2.2, PulseAudio-16.1, Speex-1.2.1, JACK, libavtp, and maemo

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/alsa-plugins

Installation of ALSA Plugins

Install ALSA Plugins by running the following commands:

./configure --sysconfdir=/etc &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None

Installed Libraries: Numerous libasound_module_<module>.so modules including conf_pulse, ctl_arcam_av, ctl_oss, ctl_pulse, pcm_a52, pcm_jack, pcm_oss, pcm_pulse, pcm_speex, pcm_upmix, pcm_usb_stream, pcm_vdownmix, rate_lavrate, rate_samplerate, and rate_speexrate*

Installed Directories: /usr/lib/alsa-lib

Short Descriptions

libasound_module_pcm_oss.so   Allows native ALSA applications to run on OSS.

libasound_module_pcm_upmix.so   Allows upmixing sound to 4 or 6 channels.

libasound_module_pcm_vdownmix.so   Allows downmixing sound from 4-6 channels to 2 channel stereo output.

libasound_module_pcm_jack.so   Allows native ALSA applications to work with jackd.

libasound_module_pcm_pulse.so   Allows native ALSA applications to access a PulseAudio sound daemon.

libasound_module_pcm_a52.so   Converts S16 linear sound format to A52 compressed format and sends it to an SPDIF output.

libasound_module_rate_samplerate.so   Provides an external rate converter through libsamplerate.

42.4 alsa-utils-1.2.8


Introduction to ALSA Utilities

The ALSA Utilities package contains various utilities which are useful for controlling your sound card.

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

Package Information

ALSA Utilities Dependencies

Required

alsa-lib-1.2.8

Optional

docutils-0.19, fftw-3.3.10, libsamplerate-0.2.2, xmlto-0.0.28, and Dialog

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/alsa-utils

Installation of ALSA Utilities

Install ALSA Utilities by running the following commands:

./configure --disable-alsaconf \
            --disable-bat   \
            --disable-xmlto \
            --with-curses=ncursesw &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--disable-alsaconf: This switch disables building the alsaconf configuration tool which is incompatible with Udev.

--disable-xmlto: Omit this switch if you have installed xmlto-0.0.28 and wish to regenerate the man pages.

--disable-bat: Omit this switch if you have installed fftw-3.3.10 and wish to install the Basic Audio Tester (BAT).

--with-curses=ncursesw: This switch forces the use of wide-character ncurses libraries.

Configuring ALSA Utilities

Config Files

/var/lib/alsa/asound.state

Configuration Information

Note that all channels of your sound card are muted by default. You can use the alsamixer program to change this. Use speaker-test to check that your settings have been applied correctly. You should hear “pink noise” on your speakers.

The alsactl program is normally run from a standard udev rule. The first time it is run, it will complain that there is no state in /var/lib/alsa/asound.state. You can prevent this by running the following command as the root user:

alsactl -L store

The volume settings should be restored from the saved state by Udev when the device is detected (during boot or when plugged in for USB devices).

All sound devices are not accessible for any user except root and members of the audio group. Add any users that might use the sound devices to that group:

usermod -a -G audio <username>

Note

You may need to log out and back in again to refresh your group memberships. ‘su <username>’ should work as well.

On systems which have multiple sound cards, you may need to adjust the default audio device so that you can get output from your speakers. To set the default device, first check the /proc/asound/cards file to determine which number you need to set. After you know this information, set the default card with the following command as the root user:

cat > /etc/asound.conf << "EOF"
# Begin /etc/asound.conf

defaults.pcm.card 1
defaults.ctl.card 1

# End /etc/asound.conf
EOF

Contents

Installed Programs: aconnect, alsactl, alsaloop, alsamixer, alsatplg, alsaucm, alsa-info.sh, amidi, amixer, aplay, aplaymidi, arecord (symlink), arecordmidi, aseqdump, aseqnet, axfer, iecset, and speaker-test

Installed Libraries: None

Installed Directories: /usr/share/sounds/alsa and /var/lib/alsa

Short Descriptions

aconnect   is a utility for connecting and disconnecting two existing ports in the ALSA sequencer system.

alsactl   is used to control advanced settings for ALSA sound card drivers. Use this if alsamixer cannot utilize all of your sound card’s features.

alsaloop   allows creation of a PCM loopback between a PCM capture device and a PCM playback device.

alsamixer   is an Ncurses based mixer program for use with the ALSA sound card drivers.

alsatplg   is a utility used to compile topology configuration files into binary files for kernel drivers.

alsaucm   allows applications to access the hardware in an abstracted manner.

amidi   is used to read from and write to ALSA RawMIDI ports.

amixer   allows command-line control of the mixers for the ALSA sound card drivers.

aplay   is a command-line soundfile player for the ALSA sound card drivers.

aplaymidi   is a command-line utility that plays the specified MIDI file(s) to one or more ALSA sequencer ports.

arecord   is a command-line soundfile recorder for the ALSA sound card drivers.

arecordmidi   is a command-line utility that records a standard MIDI file from one or more ALSA sequencer ports.

aseqdump   is a command-line utility that prints the sequencer events it receives as text.

aseqnet   is an ALSA sequencer client which sends and receives event packets over a network.

axfer   is a command-line recorder and player used to transfer audio frames between sound devices and files.

iecset   is a small utility to set or dump the IEC958 (or so-called “S/PDIF”) status bits of the specified sound card via the ALSA control API.

speaker-test   is a command-line speaker test tone generator for ALSA.

42.5 alsa-tools-1.2.5


Introduction to ALSA Tools

The ALSA Tools package contains advanced tools for certain sound cards.

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

Package Information

ALSA Tools Dependencies

Required

alsa-lib-1.2.8

Optional

GTK+-2.24.33 (to build echomixer, envy24control and rmedigicontrol), GTK+-3.24.36 (to build hdajackretask) and FLTK-1.3.8 (to build hdspconf and hdspmixer)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/alsa-tools

Installation of ALSA Tools

Note

When installing multiple packages in a script, the installation needs to be done as the root user. There are three general options that can be used to do this:

  1. Run the entire script as the root user (not recommended).

  2. Use the sudo command from the Sudo-1.9.13p1 package.

  3. Use su -c “command arguments” (quotes required) which will ask for the root password for every iteration of the loop.

One way to handle this situation is to create a short bash function that automatically selects the appropriate method. Once the command is set in the environment, it does not need to be set again.

as_root()
{
  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"
  fi
}

export -f as_root

First, start a subshell that will exit on error:

bash -e

Now, remove a tool that needs Qt2 or 3 and two unneeded files (for the BLFS instructions below):

rm -rf qlo10k1 Makefile gitcompile

The ALSA Tools package is only needed by those with advanced requirements for their sound card. The tools can be built all together at once, but if only a subset is needed, you need to cd into the directory of each tool you wish to compile and run the commands. Here, we present instructions to build all tools.

Install all ALSA Tools by running the following commands:

for tool in *
do
  case $tool in
    seq )
      tool_dir=seq/sbiload
    ;;
    * )
      tool_dir=$tool
    ;;
  esac

  pushd $tool_dir
    ./configure --prefix=/usr
    make
    as_root make install
    as_root /sbin/ldconfig
  popd

done
unset tool tool_dir

Finally, exit the shell that was started earlier:

exit

Contents

Installed Programs: as10k1, cspctl, dl10k1, echomixer, envy24control, hda-verb, hdajackretask, hdajacksensetest, hdspconf, hdsploader, hdspmixer, hwmixvolume, init_audigy, init_audigy_eq10, init_live, lo10k1, ld10k1, ld10k1d, mixartloader, pcxhrloader, rmedigicontrol, sbiload, sscape_ctl, us428control, usx2yloader, and vxloader

Installed Library: liblo10k1.so

Installed Directories: /etc/hotplug, /usr/include/lo10k1, /usr/share/ld10k1, and /usr/share/sounds

Short Descriptions

as10k1   is an assembler for the emu10k1 DSP chip present in the Creative SB Live, PCI 512, and emu APS sound cards. It is used to make audio effects such as a flanger, chorus or reverb.

cspctl   is an SB16/AWE32 Creative Signal Processor (ASP/CSP) control program.

echomixer   is the Linux equivalent of the Echoaudio console application from Echoaudio. It is a tool to control all the features of any Echoaudio soundcard. This includes clock sources, input and output gains, mixers, etc.

envy24control   is a control tool for Envy24 (ice1712) based sound cards.

hdajackretask   is a GUI to make it easy to retask your jacks - e g, turn your Mic jack into an extra Headphone, or why not make them both line outs and connect them to your surround receiver.

hda-verb   is a small program to send HD-audio commands to the given ALSA hwdep device on the hd-audio interface.

hdspconf   is a GUI to control the Hammerfall HDSP Alsa Settings. Up to four hdsp cards are supported.

hdsploader   is used to load the firmware required by the Hammerfall HDSP sound cards.

hdspmixer   is the Linux equivalent of the Totalmix application from RME. It is a tool to control the advanced routing features of the RME Hammerfall DSP soundcard series.

hwmixvolume   allows you to control the volume of individual streams on sound cards that use hardware mixing.

init_audigy*   are tools used to initialize Creative Sound Blaster Audigy-series cards.

init_live   is a tool used to initialize Creative Sound Blaster Live cards.

ld10k1   is the server of a EMU10K{1,2} patch loader for ALSA.

lo10k1   is the client of a EMU10K{1,2} patch loader for ALSA.

dl10k1   loads config dumps generated by lo10k1 and ld10k1.

ld10k1d   is an init script for the ld10k1 patch loader.

mixartloader   is a helper program to load the firmware binaries onto the Digigram’s miXart board sound drivers. The following modules require this program: snd-mixart. These drivers don’t work properly at all until the certain firmwares are loaded, i.e. no PCM nor mixer devices will appear.

pcxhrloader   is a helper program to load the firmware binaries onto Digigram’s pcxhr compatible board sound drivers. The following modules require this program: snd-pcxhr. These drivers don’t work properly at all until certain firmwares are loaded, i.e. no PCM nor mixer devices will appear.

rmedigicontrol   is a control tool for RME Digi32 and RME Digi96 sound cards. It provides a graphical frontend for all the sound card controls and switches.

sbiload   is an OPL2/3 FM instrument loader for the ALSA sequencer.

sscape_ctl   is an ALSA SoundScape control utility.

us428control   is a Tascam US-428 control program.

usx2yloader   is a helper program to load the 2nd Phase firmware binaries onto the Tascam USX2Y USB sound cards. It has proven to work so far for the US122, US224 and US428. The snd-usb-usx2y module requires this program.

vxloader   is a helper program to load the firmware binaries onto the Digigram’s VX-board sound drivers. The following modules require this program: snd-vx222, snd-vxpocket, snd-vxp440. These drivers don’t work properly at all until the certain firmwares are loaded, i.e. no PCM nor mixer devices will appear.

42.6 alsa-firmware-1.2.4


Introduction to ALSA Firmware

The ALSA Firmware package contains firmware for certain sound cards.

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

Package Information

ALSA Firmware Dependencies

Required

alsa-tools-1.2.5

Optional

AS31 (for rebuilding the firmware from source)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/alsa-firmware

Installation of ALSA Firmware

The ALSA Firmware package is only needed by those with advanced requirements for their sound card. See the README for configure options.

Install ALSA Firmware by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None

Installed Libraries: None

Installed Directories: Several directories in /lib/firmware and /usr/share/alsa/firmware

42.7 alsa-oss-1.1.8


Introduction to alsa-oss

The alsa-oss package contains the alsa-oss compatibility library. This is used by programs which wish to use the alsa-oss sound interface.

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

Package Information

ALSA OSS Dependencies

Required

alsa-lib-1.2.8

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/alsa-oss

Installation of ALSA OSS

Install ALSA OSS by running the following commands:

./configure --disable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Program: aoss

Installed Libraries: libalsatoss.so, libaoss.so, and libossredir.a

Installed Directories: None

Short Descriptions

aoss   is a simple wrapper script which facilitates the use of the ALSA oss compatibility library. It just sets the appropriate LD_PRELOAD path and then runs the command.

42.8 AudioFile-0.3.6


Introduction to AudioFile

The AudioFile package contains the audio file libraries and two sound file support programs useful to support basic sound file formats.

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

Package Information

Additional Downloads

AudioFile Dependencies

Required

alsa-lib-1.2.8

FLAC-1.4.2

Optional

asciidoc-10.2.0 and Valgrind-3.20.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/audiofile

Installation of AudioFile

Install AudioFile by running the following commands:

patch -Np1 -i ../audiofile-0.3.6-consolidated_patches-1.patch &&
autoreconf -fiv                             &&

./configure --prefix=/usr --disable-static  &&

make

Now, as the root user:

make install

To test the results, issue: make check. Note that the tests will fail if the –disable-static option is used and tests are executed before make install. You have three options:

(a) configure without –disable-static, run the tests, but do not install, then start a fresh build using –disable-static just for installing the package.

(b) configure with –disable-static, but only run the tests after the package is installed.

(c) configure with –disable-static, but only run the tests after a DESTDIR install.

Command Explanations

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

Contents

Installed Programs: sfconvert and sfinfo

Installed Libraries: libaudiofile.so

Installed Directories: None

Short Descriptions

sfinfo   displays the sound file format, audio encoding, sampling rate and duration for audio formats supported by this library.

sfconvert   converts sound file formats where the original format and destination format are supported by this library.

libaudiofile.so   contains functions used by programs to support AIFF, AIFF-compressed, Sun/NeXT, WAV and BIC audio formats.

42.9 FAAC-1_30


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 11.3 platform.

Package Information

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

Installation of FAAC

Install FAAC by running the following commands:

./bootstrap                                &&
./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.2.8 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.10.1 package and play back the decoded file (requires the aplay program from the alsa-utils-1.2.8 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

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

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:

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.

42.10 FAAD2-2.10.1


Introduction to FAAD2

FAAD2 is a decoder 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 package is known to build and work properly using an LFS 11.3 platform.

Package Information

Additional Downloads

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/faad2

Installation of FAAD2

Install FAAD2 by running the following commands:

./bootstrap                                &&
./configure --prefix=/usr --disable-static &&
make

This package does not come with a test suite. However, basic functionality can be tested by decoding the sample AAC file:

./frontend/faad -o sample.wav ../sample.aac

This should display a copyright message and the following information about the sample file:

sample.aac file info:
ADTS, 4.608 sec, 13 kbps, 16000 Hz

  ---------------------
 | Config:  2 Ch       |
  ---------------------
 | Ch |    Position    |
  ---------------------
 | 00 | Left front     |
 | 01 | Right front    |
  ---------------------

Now play the result (requires the aplay program from the alsa-utils-1.2.8 package):

aplay sample.wav

aplay should identify the file as “Signed 16 bit Little Endian, Rate 16000 Hz, Stereo”, and you should hear some piano notes.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Program: faad

Installed Library: libfaad.so and libfaad_drm.so

Installed Directories: None

Short Descriptions

faad   is a command-line utility for decoding AAC and MP4 files.

libfaad.so   contains functions for decoding AAC streams.

42.11 fdk-aac-2.0.2


Introduction to fdk-aac

fdk-aac package provides the Fraunhofer FDK AAC library, which is purported to be a high quality Advanced Audio Coding implementation.

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

Package Information

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/fdk-aac

Installation of fdk-aac

Install fdk-aac by running the following commands:

./configure --prefix=/usr --disable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Programs: None

Installed Library: libfdk-aac.so

Installed Directory: /usr/include/fdk-aac

Short Descriptions

libfdk-aac.so   provides the functions used to encode audio in AAC format.

42.12 FLAC-1.4.2


Introduction to FLAC

FLAC is an audio CODEC similar to MP3, but lossless, meaning that audio is compressed without losing any information.

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

Package Information

FLAC Dependencies

Optional

libogg-1.3.5, DocBook-utils-0.6.14, Doxygen-1.9.6, and Valgrind-3.20.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/flac

Installation of FLAC

Install FLAC by running the following commands:

./configure --prefix=/usr                                \
            --disable-thorough-tests                     \
            --docdir=/usr/share/doc/flac-1.4.2          &&
make

To test the results, issue: make check. Note that if you passed the --enable-exhaustive-tests and --enable-valgrind-testing parameters to configure and then run the test suite, it will take a very long time (up to 300 SBUs) and use about 375 MB of disk space.

Now, as the root user:

make install

Command Explanations

--disable-thorough-tests: This parameter is used so that the test suite will complete in a reasonable amount of time. Remove it if you desire more extensive tests.

Contents

Installed Programs: flac and metaflac

Installed Libraries: libFLAC.so and libFLAC++.so

Installed Directories: /usr/include/FLAC, /usr/include/FLAC++ and /usr/share/doc/flac-1.4.2

Short Descriptions

flac   is a command-line utility for encoding, decoding and converting FLAC files.

metaflac   is a program for listing, adding, removing, or editing metadata in one or more FLAC files.

libFLAC{,++}.so   these libraries provide native FLAC and Ogg FLAC C/C++ APIs for programs utilizing FLAC.

42.13 frei0r-plugins-1.8.0


Introduction to Frei0r-plugins

Frei0r is a minimalistic plugin API for video effects. Note that the 0 in the name is a zero, not a capital letter o.

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

Package Information

Frei0r-plugins Dependencies

gavl-1.4.0

Optional

Doxygen-1.9.6 and opencv-4.7.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/frei0r

Installation of Frei0r-plugins

Install Frei0r by running the following commands:

mkdir -vp build &&
cd        build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_BUILD_TYPE=Release  \
      -Wno-dev ..                 &&

make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

-DWITHOUT_OPENCV=TRUE: This option instructs the make procedure to disable building plugins dependent upon opencv.

-DWITHOUT_GAVL=TRUE: This option instructs the make procedure to disable building plugins dependent upon gavl.

Contents

Installed Program: None

Installed Libraries: Over 130 video effects plugins

Installed Directories: /usr/lib/frei0r-1

42.14 gavl-1.4.0


Introduction to Gavl

Gavl is short for Gmerlin Audio Video Library. It is a low level library that handles the details of audio and video formats like colorspaces, samplerates, multichannel configurations etc. It provides standardized definitions for those formats as well as container structures for carrying audio samples or video images inside an application.

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

Package Information

Gavl Dependencies

Required

libpng-1.6.39

Optional

Doxygen-1.9.6

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gavl

Installation of Gavl

Install Gavl by running the following commands:

LIBS=-lm                      \
./configure --prefix=/usr     \
            --without-doxygen \
            --docdir=/usr/share/doc/gavl-1.4.0 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

LIBS=-lm: This variable ensures the math library is searched when linking.

--without-doxygen: This switch disables use of Doxygen. Omit if Doxygen is installed and you wish to build the API documentation.

Contents

Installed Program: None

Installed Libraries: libgavl.so

Installed Directories: /usr/include/gavl and /usr/share/doc/gavl-1.4.0

Short Descriptions

libgavl.so   is the Gmerlin Audio Video Library.

42.15 gstreamer-1.22.0


Introduction to gstreamer

gstreamer is a streaming media framework that enables applications to share a common set of plugins for tasks such as video encoding and decoding, audio encoding and decoding, audio and video filters, audio visualisation, web streaming and anything else that streams in real-time or otherwise. This package only provides base functionality and libraries. You may need at least gst-plugins-base-1.22.0 and one of Good, Bad, Ugly or Libav plugins.

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

Package Information

gstreamer Dependencies

Required

GLib-2.74.5

gobject-introspection-1.74.0

Optional

GTK+-3.24.36 (for examples), Gsl-2.7.1 (used by one test if installed), libunwind-1.6.2, Valgrind-3.20.0, bash-completion, hotdoc, and libdw

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gstreamer10

Installation of gstreamer

Install gstreamer by running the following commands:

mkdir build &&
cd    build &&

meson  --prefix=/usr       \
       --buildtype=release \
       -Dgst_debug=false   \
       -Dpackage-origin=https://www.linuxfromscratch.org/blfs/view/11.3-systemd/ \
       -Dpackage-name="GStreamer 1.22.0 BLFS" &&
ninja

To test the results, issue: ninja test.

Caution

If you are reinstalling gstreamer from a previous version, it is best if you remove the prior version, including plugins, before installing the new version. If there is a mixture of versions installed, using processes may hang or not work properly. As the root user:

rm -rf /usr/bin/gst-* /usr/{lib,libexec}/gstreamer-1.0

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

Contents

Installed Programs: gst-inspect-1.0, gst-launch-1.0, gst-stats-1.0, gst-tester-1.0, and gst-typefind-1.0

Installed Libraries: libgstbase-1.0.so, libgstcheck-1.0.so, libgstcontroller-1.0.so, libgstnet-1.0.so, and libgstreamer-1.0.so

Installed Directories: /usr/{include,lib,libexec,share}/gstreamer-1.0

Short Descriptions

gst-inspect-1.0   is a tool that prints out information on available gstreamer plugins, information about a particular plugin, or information about a particular element.

gst-launch-1.0   is a tool that builds and runs basic gstreamer pipelines.

gst-stats-1.0   is a tool used to gather statistics about gstreamer operations.

gst-tester-1.0   runs a test plan in TAP compatible format while integrating with the meson test harness.

gst-typefind-1.0   uses the gstreamer type finding system to determine the relevant gstreamer plugin to parse or decode files, and the corresponding MIME type.

libgstbase-1.0.so   provides some base classes to be extended by elements and utility classes that are most useful for plugin developers.

libgstcheck-1.0.so   provides functionality for writing unit tests that use the check framework.

libgstcontroller-1.0.so   provides functionality to animate element properties over time.

libgstnet-1.0.so   provides network elements and objects.

libgstreamer-1.0.so   provides all of the core gstreamer services, including initialization, plugin management and types, as well as the object hierarchy that defines elements and bins, along with some more specialized elements.

42.16 gst-plugins-base-1.22.0


Introduction to GStreamer Base Plug-ins

The GStreamer Base Plug-ins is a well-groomed and well-maintained collection of GStreamer plug-ins and elements, spanning the range of possible types of elements one would want to write for GStreamer. You will need at least one of Good, Bad, Ugly or Libav plugins for GStreamer applications to function properly.

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

Package Information

GStreamer Base Plug-ins Dependencies

Required

gstreamer-1.22.0

alsa-lib-1.2.8, CDParanoia-III-10.2 (for building the CDDA plugin), gobject-introspection-1.74.0, ISO Codes-4.12.0, libgudev-237, libjpeg-turbo-2.1.5.1, libogg-1.3.5, libpng-1.6.39, libtheora-1.1.1, libvorbis-1.3.7, Mesa-22.3.5, Pango-1.50.12, wayland-protocols-1.31, and Xorg Libraries

Optional

graphene-1.10.8, GTK+-3.24.36 (for examples), Opus-1.3.1, Qt-5.15.8 (for examples), SDL-1.2.15, SDL2-2.26.3, Valgrind-3.20.0, hotdoc, libvisual, Orc, and Tremor

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gst10-plugins-base

Installation of GStreamer Base Plug-ins

Note

If you need a plugin for a given dependency, that dependency needs to be installed before this package.

Install GStreamer Base Plug-ins by running the following commands:

mkdir build &&
cd    build &&

meson  --prefix=/usr       \
       --buildtype=release \
       -Dpackage-origin=https://www.linuxfromscratch.org/blfs/view/11.3-systemd/ \
       -Dpackage-name="GStreamer 1.22.0 BLFS"    \
       --wrap-mode=nodownload &&
ninja

To test the results, issue: ninja test. The tests require an X terminal running, or all of the GL tests will fail. Five tests may produce timeouts on some systems depending on their graphics hardware and speed.

Note

When installing, the build process does some additional linking. If you do not have Xorg in /usr, the LIBRARY_PATH variable needs to be defined for the root user. If using sudo to assume root, use the -E option to pass your current environment variables for the install process.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

--wrap-mode=nodownload: This switch prevents meson from downloading any optional dependency which is not installed on the system.

Contents

Installed Programs: gst-device-monitor-1.0, gst-discoverer-1.0, and gst-play-1.0

Installed Libraries: libgstallocators-1.0.so, libgstapp-1.0.so, libgstaudio-1.0.so, libgstfft-1.0.so, libgstgl-1.0.so, libgstpbutils-1.0.so, libgstriff-1.0.so, libgstrtp-1.0.so, libgstrtsp-1.0.so, libgstsdp-1.0.so, libgsttag-1.0.so, libgstvideo-1.0.so, and several plugins under /usr/lib/gstreamer-1.0

Installed Directories: /usr/include/gstreamer-1.0/gst/{allocators,app,audio,fft,gl,pbutils}, /usr/include/gstreamer-1.0/gst/{riff,rtp,rtsp,sdp,tag,video}, and /usr/share/gst-plugins-base

Short Descriptions

gst-device-monitor-1.0   is a command line tool that can be used to test GStreamer’s device monitoring functionality.

gst-discoverer-1.0   is a tool that can be used to print basic metadata and stream information about a media file.

gst-play-1.0   is a command line tool that can be used to test basic playback using the playbin element.

42.17 gst-plugins-good-1.22.0


Introduction to GStreamer Good Plug-ins

The GStreamer Good Plug-ins is a set of plug-ins considered by the GStreamer developers to have good quality code, correct functionality, and the preferred license (LGPL for the plug-in code, LGPL or LGPL-compatible for the supporting library). A wide range of video and audio decoders, encoders, and filters are included.

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

Package Information

GStreamer Good Plug-ins Dependencies

Required

gst-plugins-base-1.22.0

Cairo-1.17.6, FLAC-1.4.2, gdk-pixbuf-2.42.10, LAME-3.100, libsoup-2.74.3, libsoup-3.2.2, libvpx-1.13.0, mpg123-1.31.2, NASM-2.16.01, and PulseAudio-16.1

Optional

AAlib-1.4rc5, ALSA OSS-1.1.8, GTK+-3.24.36 (for examples), libdv-1.0.0, Qt-5.15.8, Speex-1.2.1, taglib-1.13, Valgrind-3.20.0, v4l-utils-1.22.1, Wayland-1.21.0, hotdoc, JACK, libcaca, libavc1394, libiec61883, libraw1394, libshout, Orc, TwoLame, and WavPack

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gst10-plugins-good

Installation of GStreamer Good Plug-ins

Note

If you need a plugin for a given dependency, that dependency needs to be installed before this package.

Install GStreamer Good Plug-ins by running the following commands:

mkdir build &&
cd    build &&

meson  --prefix=/usr       \
       --buildtype=release \
       -Dpackage-origin=https://www.linuxfromscratch.org/blfs/view/11.3-systemd/ \
       -Dpackage-name="GStreamer 1.22.0 BLFS" &&
ninja

To test the results, issue: ninja test. One test, elements_flvmux is known to fail on some systems.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

Contents

Installed Programs: None

Installed Libraries: Several plugins under /usr/lib/gstreamer-1.0

Installed Directories: /usr/share/gstreamer-1.0/presets

42.18 gst-plugins-bad-1.22.0


Introduction to GStreamer Bad Plug-ins

The GStreamer Bad Plug-ins package contains a set of plug-ins that aren’t up to par compared to the rest. They might be close to being good quality, but they’re missing something - be it a good code review, some documentation, a set of tests, a real live maintainer, or some actual wide use.

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

Package Information

GStreamer Bad Plug-ins Dependencies

Required

gst-plugins-base-1.22.0

libdvdread-6.1.3, libdvdnav-6.1.1, and SoundTouch-2.3.2

Optional

BlueZ-5.66, cURL-7.88.1, FAAC-1_30, FAAD2-2.10.1, fdk-aac-2.0.2, GTK+-3.24.36 (for examples), gst-plugins-good-1.22.0 (for one test), Little CMS-2.14, libass-0.17.0, libexif-0.6.24 (for one test), librsvg-2.54.5, libsoup-2.74.3 (for one test), libsndfile-1.2.0, libssh2-1.10.0, libusb-1.0.26, libva-2.17.0, libwebp-1.3.0, libxkbcommon-1.5.0, neon-0.32.5, Nettle-3.8.1 or libgcrypt-1.10.1 (for SSL support in hls plugin, if both are not installed OpenSSL will be used instead), opencv-4.7.0 (with additional modules), OpenJPEG-2.5.0, Opus-1.3.1, SBC-2.0, SDL-1.2.15, Valgrind-3.20.0, Wayland-1.21.0 (GTK+-3.24.36 must have been compiled with wayland support), wpebackend-fdo-1.14.0, x265-20230215, aom, bs2b, Chromaprint, dssim, Flite, FluidSynth, Game Music Emu, GSM, hotdoc, LADSPA, libavtp, libdc1394-2, libdca, libde265, libkate, libmfx, libmms, libmodplug, libnice, libofa, libopenmpt, libopenni, libsrtp, lilv, LRDF, ltc-tools, microdns, MJPEG Tools, OpenAL, OpenEXR, OpenH264, Orc, rtmpdump, spandsp, Srt, svthevcenc, VO AAC, VO AMRWB, Vulkan, WildMidi, WPE-WebKit, ZBAR, ZVBI, and zxing

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gst10-plugins-bad

Installation of GStreamer Bad Plug-ins

Note

If you need a plugin for a given dependency, that dependency needs to be installed before this package.

Install GStreamer Bad Plug-ins by running the following commands:

mkdir build &&
cd    build &&

meson  --prefix=/usr       \
       --buildtype=release \
       -Dgpl=enabled       \
       -Dpackage-origin=https://www.linuxfromscratch.org/blfs/view/11.3-systemd/ \
       -Dpackage-name="GStreamer 1.22.0 BLFS" &&
ninja

To test the results, issue: ninja test. Several tests need a terminal emulator in a graphical session. two tests, elements_vapostproc and elements_vacompositor are known to fail. If gst-plugins-good-1.22.0 is not installed, two tests elements_rtpsrc and elements_rtpsink will fail.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

-Dgpl=enabled: Without this switch, plugins with dependencies on (A)GPL licensed libraries are not built.

Contents

Installed Programs: gst-transcoder-1.0 and playout

Installed Libraries: libgstadaptivedemux-1.0.so, libgstbadaudio-1.0.so, libgstbasecamerabinsrc-1.0.so, libgstcodecparsers-1.0.so, libgstcodecs-1.0.so, libgstinsertbin-1.0.so, libgstisoff-1.0.so, libgstmpegts-1.0.so, libgstphotography-1.0.so, libgstplay-1.0.so, libgstplayer-1.0.so, libgstsctp-1.0.so, libgsttranscoder-1.0.so, libgsturidownloader-1.0.so, libgstva-1.0.so, libgstwayland-1.0.so, libgstwebrtc-1.0.so, and several plugins under /usr/lib/gstreamer-1.0

Installed Directories: /usr/include/gstreamer-1.0/gst/{audio,basecamerabinsrc,codecparsers}, /usr/include/gstreamer-1.0/gst/{insertbin,interfaces,isoff,mpegts}, /usr/include/gstreamer-1.0/gst/{play,player,sctp,transcoder}, and /usr/include/gstreamer-1.0/gst/{uridownloader,wayland,webrtc}

Short Descriptions

gst-transcoder-1.0   is used to transcode a stream into a different format.

playout   is an example application used to sequentially play a list of audio-video files.

42.19 gst-plugins-ugly-1.22.0


Introduction to GStreamer Ugly Plug-ins

The GStreamer Ugly Plug-ins is a set of plug-ins considered by the GStreamer developers to have good quality and correct functionality, but distributing them might pose problems. The license on either the plug-ins or the supporting libraries might not be how the GStreamer developers would like. The code might be widely known to present patent problems.

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

Package Information

GStreamer Ugly Plug-ins Dependencies

Required

gst-plugins-base-1.22.0

liba52-0.7.4 (needed to play DVD’s), libdvdread-6.1.3, and x264-20230215

Optional

libmpeg2-0.5.1, libcdio-2.1.0 (for CD-ROM drive access), Valgrind-3.20.0, hotdoc, libsidplay, OpenCore AMR, Orc, and TwoLame

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gst10-plugins-ugly

Installation of GStreamer Ugly Plug-ins

Note

If you need a plugin for a given dependency, that dependency needs to be installed before this package.

Install GStreamer Ugly Plug-ins by running the following commands:

mkdir build &&
cd    build &&

meson  --prefix=/usr       \
       --buildtype=release \
       -Dgpl=enabled       \
       -Dpackage-origin=https://www.linuxfromscratch.org/blfs/view/11.3-systemd/ \
       -Dpackage-name="GStreamer 1.22.0 BLFS" &&
ninja

To test the results, issue: ninja test.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

-Dgpl=enabled: Without this switch, plugins with dependencies on (A)GPL licensed libraries are not built.

Contents

Installed Programs: None

Installed Libraries: Several plugins under /usr/lib/gstreamer-1.0

Installed Directories: None

42.20 gst-libav-1.22.0


Introduction to GStreamer Libav

The GStreamer Libav package contains GStreamer plugins for Libav (a fork of FFmpeg).

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

Package Information

GStreamer Libav Dependencies

Required

FFmpeg-5.1.2 and gst-plugins-base-1.22.0

yasm-1.3.0

Optional

hotdoc

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gst10-libav

Installation of GStreamer Libav

Install GStreamer Libav by running the following commands:

mkdir build &&
cd    build &&

meson  --prefix=/usr       \
       --buildtype=release \
       -Dpackage-origin=https://www.linuxfromscratch.org/blfs/view/11.3-systemd/ \
       -Dpackage-name="GStreamer 1.22.0 BLFS" &&
ninja

The tests are not recommended. Test 6 of 6 times out after 3 minutes. To run the tests anyway, issue: ninja test.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

Contents

Installed Programs: None

Installed Library: libgstlibav.so in /usr/lib/gstreamer-1.0 directory

Installed Directory: None

42.21 gstreamer-vaapi-1.22.0


Introduction to gstreamer-vaapi

The gstreamer-vaapi package contains a gstreamer plugin for hardware accelerated video decode/encode for the prevailing coding standards today (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).

Note

On systems without hardware acceleration (notably virtual machines under qemu-7.2.0), this package may cause the X server to crash. The BLFS team recommends not to install this package in this case.

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

Package Information

gstreamer-vaapi Dependencies

Required

GTK+-3.24.36, gstreamer-1.22.0, gst-plugins-base-1.22.0, gst-plugins-bad-1.22.0, and libva-2.17.0

Optional

hotdoc

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gstreamer10-vaapi

Installation of gstreamer-vaapi

Install gstreamer-vaapi by running the following commands:

mkdir build &&
cd    build &&

meson  --prefix=/usr       \
       --buildtype=release \
       -Dpackage-origin=https://www.linuxfromscratch.org/blfs/view/11.3-systemd/ &&
ninja

This package does not come with a vi working test suite.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

Contents

Installed Programs: None

Installed Library: libgstvaapi.so in /usr/lib/gstreamer-1.0

Installed Directory: None

42.22 id3lib-3.8.3


Introduction to id3lib

id3lib is a library for reading, writing and manipulating id3v1 and id3v2 multimedia data containers.

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

Package Information

Additional Downloads

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/id3lib

Installation of Id3lib

Install id3lib by running the following commands:

patch -Np1 -i ../id3lib-3.8.3-consolidated_patches-1.patch &&

libtoolize -fc                &&
aclocal                       &&
autoconf                      &&
automake --add-missing --copy &&

./configure --prefix=/usr --disable-static &&
make

This packages does not come with a working test suite.

Now, as the root user:

make install  &&
cp doc/man/* /usr/share/man/man1 &&

install -v -m755 -d /usr/share/doc/id3lib-3.8.3 &&
install -v -m644 doc/*.{gif,jpg,png,ico,css,txt,php,html} \
                    /usr/share/doc/id3lib-3.8.3

Command Explanations

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

Contents

Installed Programs: id3convert, id3cp, id3info, and id3tag

Installed Library: libid3.so

Installed Directories: /usr/include/id3 and /usr/share/doc/id3lib-3.8.3

Short Descriptions

id3convert   converts between id3v1/v2 tagging formats.

id3cp   extracts id3v1/v2 tags from digital audio files.

id3info   prints id3v1/v2 tag contents.

id3tag   is a utility for editing id3v1/v2 tags.

libid3.so   provides functions for the id3v1/v2 tag editing programs as well as other external programs and libraries.

42.23 Liba52-0.7.4


Introduction to Liba52

liba52 is a free library for decoding ATSC A/52 (also known as AC-3) streams. The A/52 standard is used in a variety of applications, including digital television and DVD.

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

Package Information

Optional

djbfft

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/liba52

Installation of Liba52

Install liba52 by running the following commands:

./configure --prefix=/usr \
            --mandir=/usr/share/man \
            --enable-shared \
            --disable-static \
            CFLAGS="${CFLAGS:--g -O2} $([ $(uname -m) = x86_64 ] && echo -fPIC)" &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
cp liba52/a52_internal.h /usr/include/a52dec &&
install -v -m644 -D doc/liba52.txt \
    /usr/share/doc/liba52-0.7.4/liba52.txt

Command Explanations

CFLAGS="-g -O2 ...: This sets CFLAGS to -g -O2 (which is the default) but then on x86_64 adds -fPIC. This is needed to compile liba52 on x86_64.

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

cp liba52/a52_internal.h …: Copying this header file into /usr/include/a52dec allows some other programs (such as xine-lib) to compile and link against a system installed liba52.

Contents

Installed Programs: a52dec and extract_a52

Installed Library: liba52.so

Installed Directories: /usr/include/a52dec and /usr/share/doc/liba52-0.7.4

Short Descriptions

a52dec   plays ATSC A/52 audio streams.

extract_a52   extracts ATSC A/52 audio from an MPEG stream.

liba52.so   provides functions for the programs dealing with ATSC A/52 streams.

42.24 Libao-1.2.0


Introduction to Libao

The libao package contains a cross-platform audio library. This is useful to output audio on a wide variety of platforms. It currently supports WAV files, OSS (Open Sound System), ESD (Enlighten Sound Daemon), ALSA (Advanced Linux Sound Architecture), NAS (Network Audio system), aRTS (analog Real-Time Synthesizer), and PulseAudio (next generation GNOME sound architecture).

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

Package Information

Libao Dependencies

Optional

a graphical environment, ALSA-1.2.7, and PulseAudio-16.1

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libao

Installation of Libao

Install libao by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 README /usr/share/doc/libao-1.2.0

Configuring Libao

Config Files

/etc/libao.conf and ~/.libao

Configuration Information

Currently, the only configuration option available is setting the default output device. Issue man libao.conf for details.

Contents

Installed Programs: None

Installed Libraries: libao.so and plugins under /usr/lib/ao/plugins-4

Installed Directories: /usr/include/ao, /usr/lib/ao and /usr/share/doc/libao-1.2.0

Short Descriptions

libao.so   provides functions for programs wishing to output sound over supported platforms.

42.25 libass-0.17.0


Introduction to libass

libass is a portable subtitle renderer for the ASS/SSA (Advanced Substation Alpha/Substation Alpha) subtitle format that allows for more advanced subtitles than the conventional SRT and similar formats.

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

Package Information

libass Dependencies

Required

FreeType-2.13.0, FriBidi-1.0.12, and NASM-2.16.01

Fontconfig-2.14.2

Optional

HarfBuzz-7.0.0 and libunibreak

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libass

Installation of libass

Install libass by running the following commands:

./configure --prefix=/usr --disable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

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

--disable-fontconfig: Use this switch if you didn’t install Fontconfig.

Contents

Installed Programs: None

Installed Library: libass.so

Installed Directory: /usr/include/ass

Short Descriptions

libass.so   provides the functions used to render ASS/SSA subtitle format.

42.26 libcanberra-0.30


Introduction to libcanberra

libcanberra is an implementation of the XDG Sound Theme and Name Specifications, for generating event sounds on free desktops, such as GNOME.

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

Package Information

Additional Downloads

libcanberra Dependencies

Required

libvorbis-1.3.7

alsa-lib-1.2.8, gstreamer-1.22.0, and GTK+-3.24.36

Optional

GTK+-2.24.33, PulseAudio-16.1, and tdb

sound-theme-freedesktop-0.8, or another theme, for example from the gnome-look website

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libcanberra

Installation of libcanberra

At first, apply a patch to fix an issue causing some applications to crash in Wayland based desktop environment:

patch -Np1 -i ../libcanberra-0.30-wayland-1.patch

Install libcanberra by running the following commands:

./configure --prefix=/usr --disable-oss &&
make

This package does not come with a test suite.

Now, as the root user:

make docdir=/usr/share/doc/libcanberra-0.30 install

Command Explanations

--disable-oss: disable optional deprecated OSS support

--disable-gtk: disable optional GTK+ 2 support

--disable-gtk3: disable optional GTK+ 3 support

Contents

Installed Programs: canberra-boot and canberra-gtk-play

Installed Libraries: libcanberra-gtk.so, libcanberra-gtk3.so and libcanberra.so

Installed Directories: /usr/lib/libcanberra-0.30, /usr/share/doc/libcanberra-0.30 and /usr/share/gtk-doc/html/libcanberra

Short Descriptions

canberra-gtk-play   is an application used for playing sound events.

libcanberra-gtk.so   contains the libcanberra bindings for GTK+ 2.

libcanberra-gtk3.so   contains the libcanberra bindings for GTK+ 3.

libcanberra.so   contains the libcanberra API functions.

42.27 libcddb-1.3.2


Introduction to libcddb

The libcddb is a library that implements the different protocols (CDDBP, HTTP, SMTP) to access data on a CDDB server.

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

Package Information

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libcddb

Installation of libcddb

By default this package accesses freedb.org, which is already closed. Modify the default to use gnudb.gnudb.org instead, and fix two stale test data files:

sed -e '/DEFAULT_SERVER/s/freedb.org/gnudb.gnudb.org/' \
    -e '/DEFAULT_PORT/s/888/&0/'                       \
    -i include/cddb/cddb_ni.h                          &&
sed '/^Genre:/s/Trip-Hop/Electronic/' -i tests/testdata/920ef00b.txt &&
sed '/DISCID/i# Revision: 42'         -i tests/testcache/misc/12340000

Install libcddb by running the following commands:

./configure --prefix=/usr --disable-static &&
make

To test the results, issue: make check -k. The test suite needs the Internet connection. One test fails due to missing test server.

Now, as the root user:

make install

Contents

Installed Programs: cddb_query

Installed Library: libcddb.so

Installed Directories: /usr/include/cddb

Short Descriptions

cddb_query   provides a user interface to a CDDB server.

42.28 libcdio-2.1.0


Introduction to libcdio

The libcdio is a library for CD-ROM and CD image access. The associated libcdio-cdparanoia library reads audio from the CD-ROM directly as data, with no analog step between, and writes the data to a file or pipe as .wav, .aifc or as raw 16 bit linear PCM.

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

Package Information

Additional Downloads

libcdio Dependencies

Optional

libcddb-1.3.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libcdio

Installation of libcdio

Install libcdio by running the following commands:

./configure --prefix=/usr --disable-static &&
make

To test the results, issue: make check -k. One test named realpath is known to fail.

Now, as the root user:

make install

Now install libcdio-paranoia:

tar -xf ../libcdio-paranoia-10.2+2.0.1.tar.bz2 &&
cd libcdio-paranoia-10.2+2.0.1 &&

./configure --prefix=/usr --disable-static &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: cdda-player, cd-drive, cd-info, cd-paranoia, cd-read, iso-info, iso-read, and mmc-tool

Installed Library: libcdio.so, libcdio++.so, libcdio_cdda, libcdio_paranoia, libiso9660, libiso9660++, and libudf.so

Installed Directories: /usr/include/cdio and /usr/include/cdio++

Short Descriptions

cd-drive   shows CD-ROM drive characteristics.

cd-info   shows information about a CD or CD-image.

cd-paranoia   is an audio CD reading utility which includes extra data verification features.

cd-read   reads Information from a CD or CD-image.

cdda-player   is a simple curses CD player.

iso-info   shows Information about an ISO 9660 image.

iso-read   reads portions of an ISO 9660 image.

mmc-tool   issues libcdio multimedia commands.

libcdio.so   contains the primary cdio API functions.

42.29 libdiscid-0.6.2


Introduction to libdiscid

The libdiscid package contains a library for creating MusicBrainz DiscIDs from audio CDs. It reads a CD’s table of contents (TOC) and generates an identifier which can be used to lookup the CD at MusicBrainz (https://musicbrainz.org). Additionally, it provides a submission URL for adding the DiscID to the database.

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

Package Information

Optional

Doxygen-1.9.6

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libdiscid

Installation of libdiscid

Install libdiscid by running the following commands:

./configure --prefix=/usr --disable-static &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Programs: None

Installed Library: libdiscid.so

Installed Directory: /usr/include/discid

Short Descriptions

libdiscid.so   contains the DiscID API functions.

42.30 libdvdcss-1.4.3


Introduction to libdvdcss

libdvdcss is a simple library designed for accessing DVDs as a block device without having to bother about the decryption.

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

Package Information

libdvdcss Dependencies

Optional (to Create Documentation)

Doxygen-1.9.6

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libdvdcss

Installation of libdvdcss

Install libdvdcss by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/libdvdcss-1.4.3 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Programs: None

Installed Library: libdvdcss.so

Installed Directories: /usr/include/dvdcss and /usr/share/doc/libdvdcss-1.4.3

Short Descriptions

libdvdcss.so   provides the functionality that is required for transparent DVD access with CSS decryption.

42.31 Libdvdread-6.1.3


Introduction to Libdvdread

libdvdread is a library which provides a simple foundation for reading DVDs.

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

Package Information

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libdvdread

Installation of Libdvdread

Install libdvdread by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/libdvdread-6.1.3 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Programs: None

Installed Library: libdvdread.so

Installed Directories: /usr/include/dvdread and /usr/share/doc/libdvdread-6.1.3

Short Descriptions

libdvdread.so   provides functionality required to access DVDs.

42.32 Libdvdnav-6.1.1


Introduction to Libdvdnav

libdvdnav is a library that allows easy use of sophisticated DVD navigation features such as DVD menus, multiangle playback and even interactive DVD games.

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

Package Information

Libdvdnav Dependencies

Required

libdvdread-6.1.3

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libdvdnav

Installation of Libdvdnav

Install libdvdnav by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/libdvdnav-6.1.1 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Programs: None

Installed Library: libdvdnav.so

Installed Directories: /usr/include/dvdnav and /usr/share/doc/libdvdnav-6.1.1

Short Descriptions

libdvdnav.so   is the DVD navigation library.

42.33 Libdv-1.0.0


Introduction to Libdv

The Quasar DV Codec (libdv) is a software CODEC for DV video, the encoding format used by most digital camcorders. It can be used to copy videos from camcorders using a firewire (IEEE 1394) connection.

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

Package Information

Libdv Dependencies

Optional

popt-1.19, SDL-1.2.15, and a graphical environment

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libdv

Installation of Libdv

Install libdv by running the following commands:

./configure --prefix=/usr \
            --disable-xv \
            --disable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d      /usr/share/doc/libdv-1.0.0 &&
install -v -m644 README* /usr/share/doc/libdv-1.0.0

Command Explanations

--disable-xv: This parameter is required if an X Window System is not installed. It also prevents configure testing for libXv which is only used for an obsolete program playdv that will not be built with current linux headers and would also need other obsolete dependencies.

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

Contents

Installed Programs: dubdv, dvconnect, and encodedv

Installed Library: libdv.so

Installed Directories: /usr/include/libdv and /usr/share/doc/libdv-1.0.0

Short Descriptions

dubdv   inserts audio into a digital video stream.

dvconnect   is a small utility to send or capture raw data from and to the camcorder.

encodedv   encodes a series of images to a digital video stream.

libdv.so   provides functions for programs interacting with the Quasar DV CODEC.

42.34 libmad-0.15.1b


Introduction to libmad

libmad is a high-quality MPEG audio decoder capable of 24-bit output.

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

Package Information

Additional Downloads

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libmad

Installation of libmad

Install libmad by running the following commands:

patch -Np1 -i ../libmad-0.15.1b-fixes-1.patch                &&
sed "s@AM_CONFIG_HEADER@AC_CONFIG_HEADERS@g" -i configure.ac &&
touch NEWS AUTHORS ChangeLog                                 &&
autoreconf -fi                                               &&

./configure --prefix=/usr --disable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Some packages check for the pkg-config file for libmad. This file is particularly needed so that Cdrdao can recognize the installed libmad.

As the root user:

cat > /usr/lib/pkgconfig/mad.pc << "EOF"
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: mad
Description: MPEG audio decoder
Requires:
Version: 0.15.1b
Libs: -L${libdir} -lmad
Cflags: -I${includedir}
EOF

Command Explanations

touch NEWS AUTHORS ChangeLog: Prevent autoreconf from returning an error.

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

Contents

Installed Programs: None

Installed Library: libmad.so

Installed Directories: None

Short Descriptions

libmad.so   is a MPEG audio decoder library.

42.35 libmpeg2-0.5.1


Introduction to libmpeg2

The libmpeg2 package contains a library for decoding MPEG-2 and MPEG-1 video streams. The library is able to decode all MPEG streams that conform to certain restrictions: “constrained parameters” for MPEG-1, and “main profile” for MPEG-2. This is useful for programs and applications needing to decode MPEG-2 and MPEG-1 video streams.

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

Package Information

libmpeg2 Dependencies

Optional

a graphical environment and SDL-1.2.15

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libmpeg2

Installation of libmpeg2

Install libmpeg2 by running the following commands:

sed -i 's/static const/static/' libmpeg2/idct_mmx.c &&

./configure --prefix=/usr    \
            --enable-shared  \
            --disable-static &&
make

To test the results, issue: make check. To perform a more comprehensive regression test, see the file test/README in the source tree.

Now, as the root user:

make install &&

install -v -m755 -d /usr/share/doc/libmpeg2-0.5.1 &&
install -v -m644 README doc/libmpeg2.txt \
                    /usr/share/doc/libmpeg2-0.5.1

Command Explanations

sed -i …: This sed fixes problems with recent GCC compilers.

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

Contents

Installed Programs: corrupt_mpeg2, extract_mpeg2 and mpeg2dec

Installed Libraries: libmpeg2.so and libmpeg2convert.so

Installed Directories: /usr/include/mpeg2dec and /usr/share/doc/libmpeg2-0.5.1

Short Descriptions

extract_mpeg2   extracts MPEG video streams from a multiplexed stream.

mpeg2dec   decodes MPEG1 and MPEG2 video streams.

libmpeg2.so   contains API functions used to decode MPEG video streams.

libmpeg2convert.so   contains API functions used for color conversions of MPEG video streams.

42.36 libmusicbrainz-2.1.5


Introduction to libmusicbrainz

The libmusicbrainz package contains a library which allows you to access the data held on the MusicBrainz server. This is useful for adding MusicBrainz lookup capabilities to other applications.

MusicBrainz is a community music metadatabase that attempts to create a comprehensive music information site. You can use the MusicBrainz data either by browsing the web site, or you can access the data from a client program — for example, a CD player program can use MusicBrainz to identify CDs and provide information about the CD, about the artist or other related information.

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

Package Information

Additional Downloads

libmusicbrainz Dependencies

Optional to Build the Python Bindings

Python-2.7.18

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libmusicbrainz

Installation of libmusicbrainz

Install libmusicbrainz by running the following commands:

patch -Np1 -i ../libmusicbrainz-2.1.5-missing-includes-1.patch &&

CXXFLAGS="${CXXFLAGS:--O2 -g} -std=c++98" \
./configure --prefix=/usr --disable-static &&
make

If Python is installed, build the bindings with the following commands:

(cd python && python2 setup.py build)

This package does not come with a stand-alone test suite (to test you must have Python installed and perform the test after the package is installed).

Now, as the root user:

make install &&
install -v -m644 -D docs/mb_howto.txt \
    /usr/share/doc/libmusicbrainz-2.1.5/mb_howto.txt

To test the Python bindings, issue the following: (cd python && python2 setup.py test).

If you built the Python bindings, issue the following commands as the root user to install them:

(cd python && python2 setup.py install)

Command Explanations

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

Contents

Installed Programs: None

Installed Library: libmusicbrainz.so

Installed Directories: /usr/include/musicbrainz and /usr/share/doc/libmusicbrainz-2.1.5

Short Descriptions

libmusicbrainz.so   contains API functions to access the MusicBrainz database, both for looking up data and also for submitting new data.

42.37 libmusicbrainz-5.1.0


Introduction to libmusicbrainz

The libmusicbrainz package contains a library which allows you to access the data held on the MusicBrainz server.

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

Package Information

Additional Downloads

libmusicbrainz Dependencies

Required

CMake-3.25.2, libxml2-2.10.3 and neon-0.32.5

Optional

Doxygen-1.9.6

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libmusicbrainz5

Installation of libmusicbrainz

First, fix a problem caused by CMake-3.18.0:

patch -Np1 -i ../libmusicbrainz-5.1.0-cmake_fixes-1.patch

Install libmusicbrainz by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release .. &&
make

If you have installed Doxygen-1.9.6, optionally build the API documentation:

doxygen ../Doxyfile

This package does not come with a test suite.

Now, as the root user:

make install

If you have built the API documentation, install, as the root user:

rm -rf /usr/share/doc/libmusicbrainz-5.1.0 &&
cp -vr docs/ /usr/share/doc/libmusicbrainz-5.1.0

Contents

Installed Programs: None

Installed Library: libmusicbrainz5.so

Installed Directory: /usr/include/libmusicbrainz5 and /usr/share/doc/libmusicbrainz-5.1.0

Short Descriptions

libmusicbrainz5.so   contains API functions for accessing the MusicBrainz database.

42.38 libogg-1.3.5


Introduction to libogg

The libogg package contains the Ogg file structure. This is useful for creating (encoding) or playing (decoding) a single physical bit stream.

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

Package Information

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libogg

Installation of libogg

Install libogg by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/libogg-1.3.5 &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Programs: None

Installed Library: libogg.so

Installed Directories: /usr/include/ogg and /usr/share/doc/libogg-1.3.5

Short Descriptions

libogg.so   provides the functions required for programs to read or write Ogg formatted bit streams.

42.39 libquicktime-1.2.4


Introduction to libquicktime

The libquicktime package contains the libquicktime library, various plugins and codecs, along with graphical and command line utilities used for encoding and decoding QuickTime files. This is useful for reading and writing files in the QuickTime format. The goal of the project is to enhance, while providing compatibility with the Quicktime 4 Linux library.

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

Package Information

libquicktime Dependencies

Optional

alsa-lib-1.2.8, Doxygen-1.9.6, FAAC-1_30, FAAD2-2.10.1, GTK+-2.24.33, LAME-3.100, libdv-1.0.0, libjpeg-turbo-2.1.5.1, libpng-1.6.39, libvorbis-1.3.7, x264-20230215, Xorg Libraries, and Schroedinger

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libquicktime

Installation of libquicktime

Install libquicktime by running the following commands:

./configure --prefix=/usr     \
            --enable-gpl      \
            --without-doxygen \
            --without-ffmpeg  \
            --docdir=/usr/share/doc/libquicktime-1.2.4
make

This package does not come with a test suite.

Now, as the root user:

make install &&

install -v -m755 -d /usr/share/doc/libquicktime-1.2.4 &&
install -v -m644    README doc/{*.txt,*.html,mainpage.incl} \
                    /usr/share/doc/libquicktime-1.2.4

Command Explanations

--enable-gpl: Changes the licence to GPL. This enables some extra plugins, such as FAAC, FAAD2, and x264.

--without-doxygen: This is necessary if you do not have Doxygen, omit this if it is installed and you wish the API documentation installed.

--without-ffmpeg: This switch disables ffmpeg support because it is incompatible with ffmpeg-5.

--with-libdv: Build with libdv support. Not enabled by default.

Contents

Installed Programs: libquicktime_config, lqtplay, lqtremux, lqt_transcode, qt2text, qtdechunk, qtdump, qtinfo, qtrechunk, qtstreamize, and qtyuv4toyuv

Installed Libraries: libquicktime.so and several plugin codec libraries

Installed Directories: /usr/include/lqt, /usr/lib/libquicktime, and /usr/share/doc/libquicktime-1.2.4

Short Descriptions

libquicktime_config   is a graphical front end to examine and configure the available libquicktime audio and video codecs.

lqtplay   is a simple QuickTime movie player for X Window System.

lqt_transcode   is a command-line program used to encode video and/or audio files from one format to another.

qt2text   is used to dump all text strings from a quicktime file.

qtdechunk   can take movies containing rgb frames and write them out as ppm images.

qtdump   displays the parsed contents of the provided file.

qtinfo   prints various pieces of metadata parsed by the libquicktime library for the provided file.

qtrechunk   concatenates input frames into a QuickTime movie.

qtstreamize   is used to make a file streamable by placing the moov header at the beginning of the file.

qtyuv4toyuv   is used to write a YUV4 encoded movie as a planar YUV 4:2:0 file.

libquicktime.so   is a library for reading and writing QuickTime files. It provides convenient access to QuickTime files with a variety of supported codecs. The library contains new functions integrated with all the original QuickTime 4 Linux library functions used to encode and decode QuickTime files.

42.40 libsamplerate-0.2.2


Introduction to libsamplerate

libsamplerate is a sample rate converter for audio.

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

Package Information

libsamplerate Dependencies

Optional

alsa-lib-1.2.8, libsndfile-1.2.0, and fftw-3.3.10 (for tests)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libsamplerate

Installation of libsamplerate

Install libsamplerate by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/libsamplerate-0.2.2 &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Program: None

Installed Library: libsamplerate.so

Installed Directory: /usr/share/doc/libsamplerate-0.2.2

42.41 libsndfile-1.2.0


Introduction to libsndfile

Libsndfile is a library of C routines for reading and writing files containing sampled audio data.

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

Package Information

libsndfile Dependencies

FLAC-1.4.2, Opus-1.3.1, and libvorbis-1.3.7

Optional

alsa-lib-1.2.8, LAME-3.100, mpg123-1.31.2, Speex-1.2.1, and SQLite-3.40.1

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libsndfile

Installation of libsndfile

Install libsndfile by running the following commands:

./configure --prefix=/usr    \
            --docdir=/usr/share/doc/libsndfile-1.2.0 &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: sndfile-cmp, sndfile-concat, sndfile-convert, sndfile-deinterleave, sndfile-info, sndfile-interleave, sndfile-metadata-get, sndfile-metadata-set, sndfile-play, and sndfile-salvage

Installed Library: libsndfile.so

Installed Directory: /usr/share/doc/libsndfile-1.2.0

Short Descriptions

sndfile-cmp   compares two audio files.

sndfile-concat   concatenates two or more audio files.

sndfile-convert   converts a sound files from one format to another.

sndfile-deinterleave   splits a multi-channel into multiple single channel files.

sndfile-info   displays information about a sound file.

sndfile-interleave   converts multiple single channel files into a multi-channel file.

sndfile-metadata-get   retrieves metadata from a sound file.

sndfile-metadata-set   sets metadata in a sound file.

sndfile-play   plays a sound file.

sndfile-salvage   Salvages the audio data from WAV files which are more than 4G in length.

libsndfile.so   contains the libsndfile API functions.

42.42 libtheora-1.1.1


Introduction to libtheora

libtheora is a reference implementation of the Theora video compression format being developed by the Xiph.Org Foundation.

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

Package Information

libtheora Dependencies

Required

libogg-1.3.5

libvorbis-1.3.7

Optional

SDL-1.2.15 and libpng-1.6.39 (both to build the example players), Doxygen-1.9.6, texlive-20220321 (or install-tl-unx), BibTex, and Transfig (all four to build the API documentation), and Valgrind-3.20.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/Libtheora

Installation of libtheora

Install libtheora by running the following commands:

sed -i 's/png_\(sizeof\)/\1/g' examples/png2theora.c &&
./configure --prefix=/usr --disable-static &&
make

If you wish to run the tests, issue: make check.

Now, as the root user:

make install

If you wish to install the examples (so that you can hack on theora), install them as the root user:

cd examples/.libs &&
for E in *; do
  install -v -m755 $E /usr/bin/theora_${E}
done

Command Explanations

sed -i ‘s/png_(sizeof)/\1/g’ examples/png2theora.c: This sed fixes build with libpng 1.6.

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

Contents

Installed Programs: None, unless you installed the examples

Installed Libraries: libtheora.so, libtheoraenc.so, and libtheoradec.so

Installed Directories: /usr/include/theora and /usr/share/doc/libtheora-1.1.1

Short Descriptions

libtheora*.so   contains the functions to read and write video files.

42.43 libvorbis-1.3.7


Introduction to libvorbis

The libvorbis package contains a general purpose audio and music encoding format. This is useful for creating (encoding) and playing (decoding) sound in an open (patent free) format.

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

Package Information

libvorbis Dependencies

Required

libogg-1.3.5

Optional

Doxygen-1.9.6 and texlive-20220321 (or install-tl-unx) (specifically, pdflatex and htlatex) to build the PDF documentation

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/Libvorbis

Installation of libvorbis

Install libvorbis by running the following commands:

./configure --prefix=/usr --disable-static &&
make

To test the results, issue: make -j1 check.

Now, as the root user:

make install &&
install -v -m644 doc/Vorbis* /usr/share/doc/libvorbis-1.3.7

Command Explanations

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

--enable-docs: This switch enables building the documentation in formats other than the supplied html.

Contents

Installed Programs: None

Installed Libraries: libvorbis.so, libvorbisenc.so and libvorbisfile.so

Installed Directories: /usr/include/vorbis and /usr/share/doc/libvorbis-1.3.7

Short Descriptions

libvorbis.so   provides the functions used to read and write sound files.

42.44 libvpx-1.13.0


Introduction to libvpx

This package, from the WebM project, provides the reference implementations of the VP8 Codec, used in most current html5 video, and of the next-generation VP9 Codec.

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

Package Information

libvpx Dependencies

yasm-1.3.0 or NASM-2.16.01, and Which-2.21 (so configure can find yasm)

Optional

cURL-7.88.1 (to download test files) and Doxygen-1.9.6 (to build documentation)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libvpx

Installation of libvpx

Install libvpx by running the following commands:

sed -i 's/cp -p/cp/' build/make/Makefile &&

mkdir libvpx-build            &&
cd    libvpx-build            &&

../configure --prefix=/usr    \
             --enable-shared  \
             --disable-static &&
make

To test the results, issue: LD_LIBRARY_PATH=. make test. The test suite downloads many files as part of its test process. A few parts of it will use all available cores.

Now, as the root user:

make install

Command Explanations

sed … : This command corrects ownership and permissions of installed files.

mkdir libvpx-build && cd libvpx-build: The libvpx developers recommend building in a dedicated build directory.

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

--disable-vp8: This switch prevents building of VP8 codec support.

--disable-vp9: This switch prevents building of VP9 codec support.

--target=generic-gnu: This switch disables optimizations specific for x86 and x86-64, allowing to build this package without nasm and yasm installed.

LD_LIBRARY_PATH=.: This is needed for the test suite to use the library that was just built.

Contents

Installed Programs: vpxdec and vpxenc

Installed Libraries: libvpx.so

Installed Directories: /usr/include/vpx

Short Descriptions

vpxdec   is the WebM Project VP8 and VP9 decoder.

vpxenc   is the WebM project VP8 and VP9 encoder.

libvpx.so   provides functions to use the VP8 and VP9 video codecs.

42.45 MLT-7.12.0


Introduction to MLT

MLT package is the Media Lovin Toolkit. It is an open source multimedia framework, designed and developed for television broadcasting. It provides a toolkit for broadcasters, video editors, media players, transcoders, web streamers and many more types of applications.

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

Package Information

MLT Dependencies

Required

frei0r-plugins-1.8.0 and Qt-5.15.8

Optional

Doxygen-1.9.6, fftw-3.3.10, libexif-0.6.24, SDL-1.2.15, SDL2-2.26.3, JACK, MOVEit, SoX, and vid.stab

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/mlt

Installation of MLT

Install MLT by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_BUILD_TYPE=Release  \
      -Wno-dev .. &&

make

This package does not come with a test suite. However a test .mp4 file can be played in a local graphical environment with **./src/melt/melt .mp4**.

Note

This application uses advanced graphical capabilities. In some cases, firmware for your specific graphics adaptor may be needed. See the section called “Firmware for Video Cards” for more information.

Now, as the root user:

make install

Contents

Installed Program: melt-7 and melt (symlink to melt-7)

Installed Libraries: libmlt-7.so, libmlt++-7.so, and over twenty plugins

Installed Directories: /usr/include/mlt-7, /usr/lib/mlt-7, /usr/lib/cmake/Mlt7, and /usr/share/mlt-7

Short Descriptions

melt   is a test tool for MLT.

42.46 Opus-1.3.1


Introduction to Opus

Opus is a lossy audio compression format developed by the Internet Engineering Task Force (IETF) that is particularly suitable for interactive speech and audio transmission over the Internet. This package provides the Opus development library and headers.

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

Package Information

Optional

Doxygen-1.9.6 and texlive-20220321 (or install-tl-unx)

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/Opus

Installation of Opus

Install Opus by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/opus-1.3.1 &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

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

Contents

Installed Programs: None

Installed Library: libopus.so

Installed Directory: /usr/include/opus and /usr/share/doc/opus-1.3.1

Short Descriptions

libopus.so   provides the functions used to read and write Opus format.

42.47 Pipewire-0.3.66


Introduction to Pipewire

The pipewire package contains a server and userspace API to handle multimedia pipelines. This includes a universal API to connect to multimedia devices, as well as sharing multimedia files between applications.

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

Package Information

Pipewire Dependencies

BlueZ-5.66, gstreamer-1.22.0, gst-plugins-base-1.22.0, PulseAudio-16.1, SBC-2.0, and v4l-utils-1.22.1

Optional

alsa-lib-1.2.8, Avahi-0.8, BlueZ-5.66, fdk-aac-2.0.2, FFmpeg-5.1.2, libcanberra-0.30, libdrm-2.4.115 (for one example and libcamera support), libxcb-1.15, libsndfile-1.2.0, libusb-1.0.26, Opus-1.3.1, SDL2-2.26.3 (for some examples), Valgrind-3.20.0, Xorg Libraries, Doxygen-1.9.6 and Graphviz-7.1.0 (for documentation), JACK, ldacBT, libcamera, Vulkan, WirePlumber (runtime, for running Pipewire daemon), and xmltoman

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/pipewire

Installation of Pipewire

Install pipewire by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release -Dsession-managers= .. &&
ninja

To test the result, issue: ninja test. One test named test-support is known to fail.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

-Dsession-managers=: This switch prevents automatic downloading external dependencies.

-Ddocs=true: This switch enables the generation of HTML documentation. The optional dependencies for documentation need to be installed for this to work.

-Dman=true: This switch enables the generation of manual pages. The optional dependencies for documentation need to be installed for this to work.

-Dffmpeg=enabled: This switch enables using ffmpeg for audio conversion as a SPA backend.

Contents

Installed Programs: pipewire, pipewire-avb, pipewire-pulse, pw-cat, pw-cli, pw-dot, pw-dump, pw-jack, pw-link, pw-loopback, pw-metadata, pw-mididump, pw-mon, pw-profiler, pw-reserve, pw-top, pw-v4l2, spa-acp-tool, spa-inspect, spa-json-dump, spa-monitor, spa-resample, and pw-dsdplay, pw-midiplay, pw-midirecord, pw-play, and pw-record (symlinks to pw-cat)

Installed Libraries: libpipewire-0.3.so and 56 modules below /usr/lib/pipewire-0.3 and /usr/lib/spa-0.2

Installed Directories: /usr/include/pipewire-0.3, /usr/include/spa-0.2, /usr/lib/alsa-lib, /usr/lib/pipewire-0.3, /usr/lib/spa-0.2, /usr/share/alsa-card-profile, /usr/share/pipewire, and /usr/share/spa-0.2

Short Descriptions

pipewire   is a service that allows access to multimedia devices and allows sharing of multimedia files between applications.

pipewire-media-session   is a service that allows a desktop environment to know when media files are being played through pipewire.

pipewire-pulse   starts a Pulseaudio-compatible version of the pipewire service.

pw-cat   allows you to play or record media using a pipewire instance.

pw-cli   allows you to interact with a pipewire instance.

pw-dot   lists all of the daemons and objects in use by pipewire.

pw-dump   dumps debug messages from a local or remote pipewire instance to the console.

pw-jack   runs JACK applications on a pipewire instance.

pw-link   links pipewire ports together.

pw-loopback   initializes a loopback link between two different pipewire ports. This is useful for testing and debugging.

pw-metadata   inspects, adds, and removes metadata for objects.

pw-mididump   dumps MIDI messages from a file to the screen.

pw-mon   allows you to monitor pipewire instances.

pw-profiler   tracks memory usage and API calls used by pipewire.

pw-reserve   reserves or monitors a device via D-Bus.

pw-top   displays real-time performance information from pipewire.

pw-v4l2   runs v4l2 applications on a pipewire instance.

spa-acp-tool   inspects the card profile of a given sound card.

spa-inspect   allows you to inspect pipewire plugins.

spa-json-dump   dumps the current pipewire configuration in JSON format.

spa-monitor   allows you to monitor pipewire plugins.

spa-resample   resamples a given file.

libpipewire-0.3.so   contains API functions for handling multimedia pipelines.

42.48 PulseAudio-16.1


Introduction to PulseAudio

PulseAudio is a sound system for POSIX OSes, meaning that it is a proxy for sound applications. It allows you to do advanced operations on your sound data as it passes between your application and your hardware. Things like transferring the audio to a different machine, changing the sample format or channel count and mixing several sounds into one are easily achieved using a sound server.

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

Package Information

PulseAudio Dependencies

Required

libsndfile-1.2.0

alsa-lib-1.2.8, dbus-1.14.6, GLib-2.74.5, Speex-1.2.1 and Xorg Libraries

Optional

Avahi-0.8 BlueZ-5.66, Doxygen-1.9.6 (for documentation), fftw-3.3.10, GTK+-3.24.36, libsamplerate-0.2.2, SBC-2.0 (Bluetooth support), Valgrind-3.20.0, JACK, libasyncns, LIRC, ORC, soxr, TDB, and WebRTC AudioProcessing

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/pulseaudio

Installation of PulseAudio

Install PulseAudio by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Ddatabase=gdbm     \
      -Ddoxygen=false     \
      -Dbluez5=disabled   &&
ninja

To test the results, issue: ninja test. One test fails if the tests are not run as the root user, but this can be ignored.

Now, as the root user:

ninja install

Running PulseAudio as a system-wide daemon is possible but not recommended. See https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/ for more information. While still as the root user, remove the D-Bus configuration file for the system wide daemon to avoid creating unnecessary system users and groups:

rm -fv /etc/dbus-1/system.d/pulseaudio-system.conf

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

-Dbluez5=disabled: This switch prevents a runtime error if dbus-1.14.6 and SBC-2.0 are both installed but BlueZ-5.66 is not installed. Remove this if you have installed all three packages.

-Ddoxygen=false: This allows the package to compile if Doxygen-1.9.6 is not installed. Remove this if you have installed this and wish to build the documentation.

Configuring PulseAudio

Config Files

There are system wide configuration files: /etc/pulse/daemon.conf, /etc/pulse/client.conf, /etc/pulse/default.pa, and user configuration files with the same names in ~/.config/pulse. User configuration files take precedence over system wide ones.

Configuration Information

You may have to configure the audio system. You can start pulseaudio in command line mode using pulseaudio -C and then list various information and change settings. See man pulse-cli-syntax.

If pulseaudio was working but you no-longer have sound, after checking for hardware issues (speakers or headphones not connected, external amplifier not connected) you may need to fix it.

One suggestion is to close the application, such as firefox where sound has stopped working, then run: pactl list short sinks followed by: pacmd set-default-sink <sink #> and then restart the application.

If that does not work, a more drastic approach often works. After closing the application, close pulseaudio, either using pulseaudio –kill or, if that fails, killall -KILL pulseaudio and then rm -rf ~/.config/pulse/* (and perhaps also rm -rf ~/.pulse/* if you have used a very old version of pulse on this machine), then run pulseaudio –verbose to restart it. If the daemon starts, restart the application. See man pulseaudio for more options.

Contents

Installed Programs: pacat, pacmd, pactl, padsp, pamon (symlink to pacat), paplay (symlink to pacat), parec (symlink to pacat), parecord (symlink to pacat), qpaeq, pasuspender, pax11publish, pulseaudio, and start-pulseaudio-x11

Installed Libraries: libpulse.so, libpulse-mainloop-glib.so, libpulse-simple.so, libpulsecommon-16.1.so, libpulsecore-16.1.so, and libpulsedsp.so

Installed Directories: /etc/pulse, /usr/include/pulse, /usr/lib/cmake/PulseAudio, /usr/lib/{pulseaudio,pulse-16.1}, /usr/libexec/pulse, and /usr/share/pulseaudio

Short Descriptions

pacat   plays back or records raw or encoded audio streams on a PulseAudio sound server.

pacmd   is a tool used to reconfigure a PulseAudio sound server during runtime.

pactl   is used to control a running PulseAudio sound server.

padsp   is the PulseAudio OSS Wrapper.

pamon   is a symbolic link to pacat.

paplay   is used to play audio files on a PulseAudio sound server.

parec   is a symbolic link to pacat.

parecord   is a symbolic link to pacat.

pasuspender   is a tool that can be used to tell a local PulseAudio sound server to temporarily suspend access to the audio devices, to allow other applications to access them directly.

pax11publish   is the PulseAudio X11 Credential Utility.

pa-info   is a shell script that prints various information relating to the Pulseaudio server currently in use.

pulseaudio   is a networked low-latency sound server for Linux.

qpaeq   is an equalizer interface for PulseAudio equalizer sinks (Requires fftw-3.3.10 at build time).

start-pulseaudio-x11   starts PulseAudio and registers it to the X11 session manager.

42.49 SBC-2.0


Introduction to SBC

The SBC is a digital audio encoder and decoder used to transfer data to Bluetooth audio output devices like headphones or loudspeakers.

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

Package Information

SBC Dependencies

Optional

libsndfile-1.2.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/sbc

Installation of SBC

Install SBC by running the following commands:

./configure --prefix=/usr --disable-static --disable-tester &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--disable-tester: This disables the SBC tester. Remove it if you have installed libsndfile-1.2.0.

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

Contents

Installed Programs: sbcdec, sbcenc, and sbcinfo

Installed Library: libsbc.so

Installed Directory: /usr/include/sbc

Short Descriptions

sbcdec   is a SBC decoder utility.

sbcenc   is a SBC encoder utility.

sbcinfo   is a subband codec (SBC) analyzer.

libsbc.so   contains the SBC API functions.

42.50 SDL-1.2.15


Introduction to SDL

The Simple DirectMedia Layer (SDL for short) is a cross-platform library designed to make it easy to write multimedia software, such as games and emulators.

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

Package Information

SDL Dependencies

Xorg Libraries (if they are not present, the corresponding modules are not built)

Optional

AAlib-1.4rc5, ALSA-1.2.7, GLU-9.0.2, NASM-2.16.01, PulseAudio-16.1, Pth-2.0.7, a graphical environment, DirectFB, GGI, libcaca, PicoGUI, and SVGAlib

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/sdl

Installation of SDL

Install SDL by running the following commands:

sed -e '/_XData32/s:register long:register _Xconst long:' \
    -i src/video/x11/SDL_x11sym.h &&

./configure --prefix=/usr --disable-static &&

make

Now, as the root user:

make install &&

install -v -m755 -d /usr/share/doc/SDL-1.2.15/html &&
install -v -m644    docs/html/*.html \
                    /usr/share/doc/SDL-1.2.15/html

Testing SDL

If you wish to, test the installation of SDL using the included test programs. It is not required to install any of the resulting binaries to validate the installation. Issue the following commands to build the test programs:

cd test &&
./configure &&
make

You’ll need to manually run all the test programs (they are listed in the README file in this directory). Many of them will need to be manually killed, and you’ll need to turn your speakers on with the volume at a suitable level.

Command Explanations

sed -e …: This command fixes compilation with libX11-1.6.0 and later.

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

--disable-alsa-shared: This switch disables dynamically loading ALSA shared libraries.

--disable-sdl-dlopen: This switch disables using dlopen for shared object loading. Loading image backend libraries like libpng dynamically on the fly does not work.

--disable-x11-shared: This switch disables dynamically loading X11 shared libraries.

Configuring SDL

Configuration Information

As with most libraries, there is no configuration to do, save that the library directory, i.e., /opt/lib or /usr/local/lib should appear in /etc/ld.so.conf so that ldd can find the shared libraries. After checking that this is the case, /sbin/ldconfig should be run while logged in as root.

Contents

Installed Program: sdl-config

Installed Libraries: libSDL.so and libSDLmain.a

Installed Directories: /usr/include/SDL and /usr/share/doc/SDL-1.2.15

Short Descriptions

sdl-config   determines the compile and linker flags that should be used to compile and link programs that use libSDL.

libSDL.so   contains functions that provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D frame buffer across multiple platforms.

42.51 SDL2-2.26.3


Introduction to SDL2

The Simple DirectMedia Layer Version 2 (SDL2 for short) is a cross-platform library designed to make it easy to write multimedia software, such as games and emulators.

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

Package Information

SDL2 Dependencies

libxkbcommon-1.5.0, wayland-protocols-1.31, and Xorg Libraries (if those are not present, the corresponding modules are not built)

Optional

ALSA-1.2.7, Doxygen-1.9.6 (to create documentation), ibus-1.5.27, NASM-2.16.01, PulseAudio-16.1, libsamplerate-0.2.2, a graphical environment, DirectFB, fcitx, and jack

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/sdl

Installation of SDL2

Install SDL2 by running the following commands:

./configure --prefix=/usr &&
make

If you have Doxygen-1.9.6 installed and want to build the html documentation, run the following commands:

pushd docs  &&
  doxygen   &&
popd

Note

If you wish to build and run the package regression tests, do not delete the static libraries below until after the tests are built.

Now, as the root user:

make install              &&
rm -v /usr/lib/libSDL2*.a

If you built the documentation, install it as the root user:

install -v -m755 -d        /usr/share/doc/SDL2-2.26.3/html &&
cp -Rv  docs/output/html/* /usr/share/doc/SDL2-2.26.3/html

Testing SDL2

If you wish to, test the installation of SDL2 using the included test programs. None of the resulting binaries need to be installed. Issue the following commands to build the test programs:

cd test &&
./configure &&
make

Each of the test programs (they are listed in the README file in this directory) will need to be run individually. Many of them will need to be manually killed. Additionally, speakers need to be on with the volume at a suitable level.

Command Explanations

rm -v /usr/lib/libSDL2*.a: Normally static libraries can be disabled with a --disable-static option to configure, but that breaks the build in this package.

--disable-alsa-shared: This switch disables dynamically loading ALSA shared libraries.

--disable-sdl-dlopen: This switch disables using dlopen for shared object loading. Loading image backend libraries like libpng dynamically on the fly does not work.

--disable-x11-shared: This switch disables dynamically loading X11 shared libraries.

Configuring SDL2

Configuration Information

As with most libraries, there is no configuration to do, save that the library directory, i.e., /opt/lib or /usr/local/lib should appear in /etc/ld.so.conf so that ldd can find the shared libraries. After checking that this is the case, /sbin/ldconfig should be run while logged in as root.

Contents

Installed Program: sdl2-config

Installed Libraries: libSDL2.so

Installed Directories: /usr/include/SDL2, /usr/lib/cmake/SDL2, and /usr/share/doc/SDL-2.26.3

Short Descriptions

sdl2-config   determines the compile and linker flags that should be used to compile and link programs that use libSDL2.

libSDL2.so   contains functions that provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D frame buffer across multiple platforms.

42.52 sound-theme-freedesktop-0.8


Introduction to Sound Theme Freedesktop

The Sound Theme Freedesktop package contains sound themes for the desktop.

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

Package Information

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/sound-theme-freedesktop

Installation of Sound Theme Freedesktop

Install Sound Theme Freedesktop by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None

Installed Libraries: None

Installed Directories: /usr/share/sounds/freedesktop

42.53 SoundTouch-2.3.2


Introduction to SoundTouch

The SoundTouch package contains an open-source audio processing library that allows changing the sound tempo, pitch and playback rate parameters independently from each other.

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

Package Information

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/soundtouch

Installation of SoundTouch

Note

The tarball expands to ‘soundtouch’ instead of the expected ‘soundtouch-2.3.2’

Install SoundTouch by running the following commands:

Caution

The bootstrap command below fails if the ACLOCAL environment variable is set as specified in Xorg-7. If it is used, ACLOCAL needs to be unset for this package and then reset for other packages.

./bootstrap &&
./configure --prefix=/usr \
            --docdir=/usr/share/doc/soundtouch-2.3.2 &&
make

This package does not come with a test suite.

Now, as the root user:

make install 

Command Explanations

--enable-openmp: This switch adds support for running the algorithms in parallel across several processor cores using OpenMP implementation provided by GCC.

Contents

Installed Program: soundstretch

Installed Library: libSoundTouch.so

Installed Directories: /usr/include/soundtouch and /usr/share/doc/soundtouch-2.3.2

Short Descriptions

soundstretch   is a program for processing WAV audio files by modifying sound tempo, pitch and playback rate properties independently from each other.

libSoundTouch.so   contains SoundTouch API functions.

42.54 Speex-1.2.1


Introduction to Speex

Speex is an audio compression format designed specifically for speech. It is well-adapted to internet applications and provides useful features that are not present in most other CODECs.

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

Package Information

Additional Downloads

Speex Dependencies

Required

libogg-1.3.5

Optional

Valgrind-3.20.0

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/speex

Installation of Speex

This package consists of two separate tarballs. They need to be extracted and built independently.

Install Speex by running the following commands:

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/speex-1.2.1 &&
make

This package does not come with a test suite.

As the root user:

make install

Now extract and install the speexdsp package:

cd ..                          &&
tar -xf speexdsp-1.2.1.tar.gz &&
cd speexdsp-1.2.1             &&

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/speexdsp-1.2.1 &&
make

Again, as the root user:

make install

Command Explanations

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

Contents

Installed Programs: speexenc and speexdec

Installed Libraries: libspeex.so and libspeexdsp.so

Installed Directories: /usr/include/speex and /usr/share/doc/speex-1.2.1

Short Descriptions

speexdec   decodes a Speex file and produces a WAV or raw file.

speexenc   encodes a WAV or raw file using Speex.

libspeex.so   provides functions for the audio encoding/decoding programs.

libspeexdsp.so   is a speech processing library that goes along with the Speex codec.

42.55 Taglib-1.13


Introduction to Taglib

Taglib is a library used for reading, writing and manipulating audio file tags and is used by applications such as Amarok and VLC.

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

Package Information

Taglib Dependencies

Required

CMake-3.25.2

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/taglib

Installation of Taglib

Install Taglib by running the following commands:

mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_BUILD_TYPE=Release  \
      -DBUILD_SHARED_LIBS=ON \
      .. &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: taglib-config

Installed Libraries: libtag.so and libtag_c.so

Installed Directories: /usr/include/taglib

Short Descriptions

taglib-config   is a tool used to print information about the taglib installation.

42.56 v4l-utils-1.22.1


Introduction to v4l-utils

v4l-utils provides a series of utilities for media devices, allowing to handle the proprietary formats available at most webcams (libv4l), and providing tools to test V4L devices.

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

Package Information

v4l-utils Dependencies

Required

LLVM-15.0.7 (with target BPF)

alsa-lib-1.2.8, GLU-9.0.2, libjpeg-turbo-2.1.5.1, and Qt-5.15.8

Optional

Doxygen-1.9.6 and SDL2-2.26.3

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/v4l-utils

Installation of v4l-utils

Install v4l-utils by running the following commands:

./configure --prefix=/usr     \
            --sysconfdir=/etc \
            --disable-static  &&
make

This package does not come with a test suite.

Now, as the root user:

make -j1 install

Contents

Installed Programs: cec-compliance, cec-ctl, cec-follower, cx18-ctl, decode_tm6000, dvb-fe-tool, dvb-format-convert, dvbv5-daemon, dvbv5-scan, dvbv5-zap, ir-ctl, ir-keytable, ivtv-ctl, media-ctl, qv4l2, qvidcap, rds-ctl, v4l2-compliance, v4l2-ctl, v4l2-dbg, and v4l2-sysfs-path

Installed Library: libdvbv5.so, libv4l1.so, libv4l2.so, libv4l2rds.so, libv4lconvert.so, v4l1compat.so, and v4l2convert.so

Installed Directories: /etc/rc_keymaps, /lib/udev/rc_keymaps, /usr/include/libdvbv5, and /usr/lib/libv4l

Short Descriptions

cx18-ctl   is a tool to handle cx18 based devices.

decode_tm6000   decodes multiplexed formats from TM5600/TM6000 USB devices.

dvb-fe-tool   is a command line tool for digital TV services.

dvb-format-convert   is a tool meant to convert among different file formats. It is compliant with version 5 of the DVB API.

dvbv5-scan   is a command line frequency scanning tool for digital TV services that are compliant with version 5 of the DVB API.

dvbv5-zap   is a command line tuning tool for digital TV services that is compliant with version 5 of the DVB API.

ir-keytable   is a tool that lists the Remote Controller devices, allows one to get/set IR keycode/scancode tables, test events generated by IR, and to adjust other Remote Controller options.

ivtv-ctl   is a utility that can control many card settings, like changing the inputs from tuner to svideo or composite, setting video resolution or changing video mode (PAL, SECAM, NTSC).

media-ctl   is a utility used to configure V4L2 devices.

qv4l2   is used to test video4linux capture devices.

qvidcap   is used to capture video from a V4L2 device.

rds-ctl   is a utility for decoding raw RDS data from V4L2 Radio devices and offers simple ways to access the received RDS information.

v4l2-compliance   is a compliance test tool.

v4l2-ctl   is a tool to control v4l2 controls from the cmdline.

v4l2-dbg   is a tool to directly get and set registers of v4l2 devices.

v4l2-sysfs-path   checks the media devices installed on a machine and the corresponding device nodes.

42.57 x264-20230215


Introduction to x264

x264 package provides a library for encoding video streams into the H.264/MPEG-4 AVC format.

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

Package Information

x264 Dependencies

NASM-2.16.01

Optional

ffms2, gpac or liblsmash

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/x264

Installation of x264

Install x264 by running the following commands:

./configure --prefix=/usr \
            --enable-shared \
            --disable-cli &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--disable-cli: This switch disables building the command-line encoder which is redundant since it requires FFmpeg for most of the input formats.

--disable-asm: Use this switch if you didn’t install NASM.

Contents

Installed Programs: None

Installed Library: libx264.so

Installed Directory: None

Short Descriptions

libx264.so   provides the functions used to encode video streams into the H.264/MPEG-4 AVC format.

42.58 x265-20230215


Introduction to x265

x265 package provides a library for encoding video streams into the H.265/HEVC format.

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

Package Information

x265 Dependencies

Required

CMake-3.25.2

NASM-2.16.01

Optional

numactl

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/x265

Installation of x265

Install x265 by running the following commands:

mkdir bld &&
cd    bld &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DGIT_ARCHETYPE=1           \
      -Wno-dev ../source          &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
rm -vf /usr/lib/libx265.a 

Command Explanations

-DGIT_ARCHETYPE=1: Upstream no longer provides releases. BLFS is using a git snapshot, but if the builder has not installed git the build will not install the shared library or the pkgconfig file without this switch.

-Wno-dev: This switch is used to suppress warnings intended for the package’s developers.

rm -vf /usr/lib/libx265.a: BLFS does not recommend using static libraries.

Contents

Installed Program: x265

Installed Library: libx265.so

Installed Directories: None

Short Descriptions

libx265.so   provides the functions used to encode video streams into the H.265/HEVC format.

42.59 xine-lib-1.2.13


Introduction to Xine Libraries

The Xine Libraries package contains xine libraries. These are useful for interfacing with external plug-ins that allow the flow of information from the source to the audio and video hardware.

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

Package Information

Xine Libraries Dependencies

Required

a graphical environment, FFmpeg-5.1.2, and at least one of: ALSA-1.2.7, PulseAudio-16.1, or JACK

libdvdnav-6.1.1

Optional

AAlib-1.4rc5, FAAD2-2.10.1, FLAC-1.4.2, gdk-pixbuf-2.42.10, GLU-9.0.2, ImageMagick-7.1.0-61, liba52-0.7.4, libdvdcss-1.4.3, libmad-0.15.1b, libmng-2.0.3, libnsl-2.0.0, libtheora-1.1.1, libva-2.17.0 (requires GLU-9.0.2), libvdpau-1.5, libvorbis-1.3.7, libvpx-1.13.0, Mesa-22.3.5, Samba-4.17.5, SDL-1.2.15, Speex-1.2.1, Doxygen-1.9.6 (to create the API documentation), v4l-utils-1.22.1 DirectFB, libbluray, libcaca, libdca, libFAME, libmodplug, musepack, VCDImager, and WavPack,

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/xine-lib

Installation of Xine Libraries

First, fix building this package with binutils-2.39:

sed -e '/xine_set_flags/s/XINE_PROTECTED//' -i include/xine.h

Install Xine Libraries by running the following commands:

./configure --prefix=/usr          \
            --disable-vcd          \
            --with-external-dvdnav \
            --docdir=/usr/share/doc/xine-lib-1.2.13 &&
make

To create the API documentation, Doxygen must be installed and issue the following command:

doxygen doc/Doxyfile

This package does not come with a test suite.

Now, as the root user:

make install

Note

When installing, the Makefile does some additional linking. If you do not have Xorg in /usr, the LIBRARY_PATH variable needs to be defined for the root user. If using sudo to assume root, use the -E option to pass your current environment variables for the install process.

If you built the API documentation, issue the following commands as the root user to install it:

install -v -m755 -d /usr/share/doc/xine-lib-1.2.13/api &&
install -v -m644    doc/api/* \
                    /usr/share/doc/xine-lib-1.2.13/api

Command Explanations

--disable-vcd: This switch is required to compile Xine Lib without VCDImager installed. Remove this option if you have installed VCDImager.

--with-external-dvdnav: This switch is required, because internal libraries cannot decrypt DVD.

--docdir=/usr/share/doc/xine-lib-1.2.13: This switch causes the documentation to be installed into a versioned directory instead of the default /usr/share/doc/xine-lib.

--disable-vaapi: use this switch if libva-2.17.0 is installed and GLU-9.0.2 is not, to prevent a build failure.

Contents

Installed Programs: xine-config and xine-list-1.2

Installed Libraries: libxine.so and numerous plugin modules and video extensions under /usr/lib/xine/plugins/2.8

Installed Fonts: Output display engine fonts located in /usr/share/xine-lib/fonts

Installed Directories: /usr/include/xine, /usr/lib/xine, /usr/share/xine-lib, and /usr/share/doc/xine-lib-1.2.13

Short Descriptions

xine-config   provides information to programs trying to link with the xine libraries.

xine-list-1.2   is used to get supported file type information from xine-lib.

libxine.so   provides the API for processing audio/video files.

42.60 XviD-1.3.7


Introduction to XviD

XviD is an MPEG-4 compliant video CODEC.

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

Package Information

XviD Dependencies

Optional

yasm-1.3.0 or NASM-2.16.01

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/xvid

Installation of XviD

Note

This package tarball expands to xvidcore, not the expected xvidcore-1.3.7.

Install XviD by running the following commands:

cd build/generic &&
sed -i 's/^LN_S=@LN_S@/& -f -v/' platform.inc.in &&

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

sed -i '/libdir.*STATIC_LIB/ s/^/#/' Makefile &&
make install &&

chmod -v 755 /usr/lib/libxvidcore.so.4.3 &&
install -v -m755 -d /usr/share/doc/xvidcore-1.3.7/examples &&
install -v -m644 ../../doc/* /usr/share/doc/xvidcore-1.3.7 &&
install -v -m644 ../../examples/* \
    /usr/share/doc/xvidcore-1.3.7/examples

Command Explanations

sed -i ‘s/^LN_S=@LN_S@/& -f -v/’ platform.inc.in: Fix error during make install if reinstalling or upgrading.

sed -i ‘/libdir.*STATIC_LIB/ s/^/#/’ Makefile: This command disables installing the static library.

Contents

Installed Programs: None

Installed Library: libxvidcore.so

Installed Directory: /usr/share/doc/xvidcore-1.3.7

Short Descriptions

libxvidcore.so   provides functions to encode and decode most MPEG-4 video data.