Skip to content

Installing on Arch Linux

bash scripts/setup/arch.sh                     # CPU-only
ENABLE_CUDA=1 bash scripts/setup/arch.sh       # + CUDA toolkit from extra
ENABLE_SYCL=1 bash scripts/setup/arch.sh       # + intel-oneapi-basekit (AUR)
INSTALL_LINTERS=1 bash scripts/setup/arch.sh   # + clang-tidy/cppcheck/iwyu

Manual install

sudo pacman -S --needed \
    base-devel meson ninja pkgconf nasm \
    python python-pip \
    clang cppcheck doxygen

CUDA (optional)

sudo pacman -S --needed cuda cuda-tools

SYCL (optional, AUR)

yay -S intel-oneapi-basekit
source /opt/intel/oneapi/setvars.sh

Intel QSV (optional, for h264_qsv / hevc_qsv / av1_qsv)

The fork's three QSV codec adapters in tools/vmaf-tune/ require an FFmpeg built with the Intel oneVPL dispatcher (libvpl) — Intel archived Media SDK / libmfx in May 2023 and oneVPL is the supported successor.

sudo pacman -S --needed libvpl vpl-gpu-rt
# vpl-gpu-rt is the runtime for Tiger Lake and newer iGPUs / Arc;
# legacy iGPUs (Skylake … Comet Lake) need `intel-media-sdk` instead.

Verified 2026-05-08 against extra/libvpl 2.16.0-2 and extra/vpl-gpu-rt 26.1.5-1.

The FFmpeg in extra is built with --enable-libvpl from FFmpeg n6.0 onward; no extra build step is needed if you use the distro FFmpeg. If you build FFmpeg yourself, see Hardware capability matrix below for codec / generation gating.

Intel Quick Sync hardware capability matrix

Verified 2026-05-08 against Wikipedia: Intel Quick Sync Video — Hardware decoding and encoding.

CPU / GPU generation H.264 enc/dec HEVC 8-bit enc/dec HEVC 10-bit enc/dec AV1 decode AV1 encode
Skylake / Kaby Lake / Coffee Lake (Gen 9) yes yes decode only no no
Ice Lake (Gen 11) yes yes yes no no
Tiger Lake / Alder Lake / Raptor Lake (Xe LP) yes yes yes yes no
Arc Alchemist (Xe HPG, A-series, 2022) yes yes yes yes yes
Arc Battlemage (Xe2, B-series) yes yes yes yes yes

av1_qsv therefore requires Arc Alchemist or newer; hevc_qsv 10-bit requires Ice Lake or newer.

Build

cd core
meson setup ../build -Denable_cuda=true -Denable_sycl=true
ninja -C ../build