#### Beyond Linux® From Scratch (systemd Edition) - Version r13.0-491

### Chapter 42. Multimedia Libraries and Drivers

- Prev

  Opus-1.6.1

- Next

  PulseAudio-17.0

- Up
- Home

# Pipewire-1.6.4

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

### Note

Development versions of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable versions of the books.

### Package Information

- Download (HTTP): https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/1.6.4/pipewire-1.6.4.tar.bz2

- Download MD5 sum: 9f770dc4f064186ada8cc56189ce70e0

- Download size: 2.0 MB

- Estimated disk space required: 108 MB (with tests)

- Estimated build time: 0.7 SBU (with tests, both using parallelism=4)

### Pipewire Dependencies

#### Recommended

BlueZ-5.86, gstreamer-1.28.2, gst-plugins-base-1.28.2, PulseAudio-17.0, SBC-2.2, v4l-utils-1.32.0, and Wireplumber-0.5.14 (runtime)

#### Optional

alsa-lib-1.2.15.3, Avahi-0.8, fdk-aac-2.0.3, FFmpeg-8.1, libcanberra-0.30, libdrm-2.4.133 (for one example and libcamera support), libxcb-1.17.0, libsndfile-1.2.2, libusb-1.0.29, Opus-1.6.1, sdl2-compat-2.32.68 (for some examples), Valgrind-3.26.0, Vulkan-Loader-1.4.341.0, Xorg Libraries, Doxygen-1.17.0 and Graphviz-14.1.5 (for documentation), ffado, JACK, LC3plus, ldacBT, libcamera, libmysofa, lilv, and xmltoman

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

## Installation of Pipewire

Install pipewire by running the following commands:

    mkdir build &&
    cd    build &&

    meson setup ..                             \
          --prefix=/usr                        \
          --buildtype=release                  \
          -D session-managers="[]"             &&
    ninja

To test the result, issue: ninja test.

Now, as the `root` user:

    ninja install

## Command Explanations

`CFLAGS="-Wno-error=discarded-qualifiers"`: This environment variable prevents a build error due to discarding "const" qualifiers from pointer target types.

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

`-D session-managers="[]"`: This switch allows specifying the session managers to build as subprojects. We specify an empty list to prevent meson from downloading any external copy of the session managers. A Pipewire session manager recommended by the PipeWire developers for general use, Wireplumber-0.5.14, is available as a separate BLFS package. Build it after installing Pipewire if you need to run the Pipewire daemon (for example in order to support Snapshot-50.0).

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

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

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

`-D vulkan=enabled`: This switch enables using Vulkan for video rendering as a SPA backend.

## Contents

Installed Programs: pipewire, pw-cat, pw-cli, pw-config, 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 pipewire-aes67, pipewire-avb, pipewire-pulse (symlinks to pipewire), pw-dsdplay, pw-encplay, pw-midiplay, pw-midirecord, pw-play, pw-record (symlinks to pw-cat)
Installed Libraries: libpipewire-0.3.so and 60 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-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-config | allows you to interact with pipewire's configuration system for debugging purposes or syntax checking
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

- Prev

  Opus-1.6.1

- Next

  PulseAudio-17.0

- Up
- Home