Installing on Fedora and the RHEL 9 family¶
Run the setup script from the repository root, then build. The script supports Fedora 40 and later, RHEL 9, Rocky Linux 9 and AlmaLinux 9; on the RHEL family it enables EPEL first (scripts/setup/fedora.sh).
Setup script¶
bash scripts/setup/fedora.sh # CPU build dependencies and linters
ENABLE_CUDA=true bash scripts/setup/fedora.sh # + CUDA toolkit from NVIDIA's repository
ENABLE_SYCL=true bash scripts/setup/fedora.sh # + Intel oneAPI DPC++ compiler
INSTALL_LINTERS=false bash scripts/setup/fedora.sh # skip shfmt and the Python linters
The switches take the value true; any other value, 1 included, leaves the option off. INSTALL_LINTERS is on unless you set it to false.
Manual install¶
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y \
clang clang-tools-extra cppcheck \
meson ninja-build nasm pkgconf-pkg-config \
python3 python3-pip python3-virtualenv \
doxygen shellcheck
core/meson.build needs Meson 1.4.0 or later. If your release ships an older meson, install it from the hash-pinned lock instead:
CUDA (optional)¶
The project builds and tests with CUDA 13.4 (CUDA_VERSION in build-config.env). Use NVIDIA's repository for your Fedora release (fedora40, fedora41, ...):
sudo dnf config-manager --add-repo \
https://developer.download.nvidia.com/compute/cuda/repos/fedora41/x86_64/cuda-fedora41.repo
sudo dnf install -y cuda-toolkit
export PATH=/usr/local/cuda/bin:$PATH
See the CUDA backend guide.
SYCL / oneAPI (optional)¶
sudo tee /etc/yum.repos.d/oneAPI.repo <<'EOF'
[oneAPI]
name=Intel(R) oneAPI repository
baseurl=https://yum.repos.intel.com/oneapi
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
EOF
sudo dnf install -y intel-oneapi-compiler-dpcpp-cpp intel-oneapi-runtime-libs \
level-zero-devel libva-devel
source /opt/intel/oneapi/setvars.sh
These are the packages the setup script installs; intel-basekit works as well. See the SYCL backend guide.
Intel QSV (optional, for vmaf-tune)¶
libvpl-tools adds sample_multi_transcode and the oneVPL probe utilities. GPUs older than Tiger Lake also need intel-mediasdk. Fedora's ffmpeg from RPM Fusion is built with oneVPL. Intel QSV has the hardware matrix and the FFmpeg requirements.
Build¶
From the repository root:
Leave out the -Denable_* options you did not install SDKs for. The binary is build/tools/vmaf.