diff --git a/tooling/ffmpeg/build-ffmpeg.sh b/tooling/ffmpeg/build-ffmpeg.sh index 26296f5aa..a841b1faf 100755 --- a/tooling/ffmpeg/build-ffmpeg.sh +++ b/tooling/ffmpeg/build-ffmpeg.sh @@ -138,11 +138,14 @@ if [ -d /opt/homebrew/lib/pkgconfig/openjpeg ]; then export PKG_CONFIG_PATH="${PKG_CONFIG_PATH:-}:/opt/homebrew/lib/pkgconfig/openjpeg" fi enable_if_pkg libopenjp2 libopenjpeg -# openh264 is redundant for us (decode: FFmpeg's native h264; encode: -# x264) and snappy only feeds the hap encoder; neither MinGW package -# satisfies the static link — skip both on Windows. +# snappy only feeds the hap encoder and the MinGW package does not +# satisfy the static link — skip it on Windows. openh264 is deliberately +# not probed anywhere: it is redundant (decode: FFmpeg's native h264; +# encode: libx264) and every external FFmpeg links dynamically turns +# into a runtime dependency on the distributor's soname package +# (libopenh264-7 vs -8 across releases), which is exactly the kind of +# dependency the editor should not carry for an unused codec. if [ -z "${MSYSTEM:-}" ]; then - enable_if_pkg openh264 libopenh264 enable_if_pkg snappy libsnappy fi enable_if_pkg webp libwebp diff --git a/tooling/install-deps.sh b/tooling/install-deps.sh index af36bd48c..1c3ae41cc 100755 --- a/tooling/install-deps.sh +++ b/tooling/install-deps.sh @@ -59,7 +59,7 @@ if [[ "$OSTYPE" == msys* || "$OSTYPE" == cygwin* || -n "${MSYSTEM:-}" ]]; then mingw-w64-ucrt-x86_64-nasm \ mingw-w64-ucrt-x86_64-x264 mingw-w64-ucrt-x86_64-x265 \ mingw-w64-ucrt-x86_64-dav1d mingw-w64-ucrt-x86_64-libvpx \ - mingw-w64-ucrt-x86_64-openh264 mingw-w64-ucrt-x86_64-openjpeg2 \ + mingw-w64-ucrt-x86_64-openjpeg2 \ mingw-w64-ucrt-x86_64-libtheora mingw-w64-ucrt-x86_64-libwebp \ mingw-w64-ucrt-x86_64-lame mingw-w64-ucrt-x86_64-opus \ mingw-w64-ucrt-x86_64-libvorbis mingw-w64-ucrt-x86_64-speex \ @@ -79,7 +79,7 @@ fi case "$(uname -s)" in Darwin) run brew install cmake pkg-config nasm \ - x264 x265 dav1d libvpx openh264 openjpeg theora webp \ + x264 x265 dav1d libvpx openjpeg theora webp \ lame opus libvorbis speex snappy libass freetype fribidi \ fontconfig gnutls ;; @@ -89,17 +89,17 @@ case "$(uname -s)" in PKGS=( build-essential clang libclang-dev cmake python3 pkg-config nasm libx264-dev libx265-dev libdav1d-dev libvpx-dev - libopenh264-dev libopenjp2-7-dev libtheora-dev libwebp-dev + libopenjp2-7-dev libtheora-dev libwebp-dev libmp3lame-dev libopus-dev libvorbis-dev libspeex-dev libsnappy-dev libass-dev libfreetype-dev libfribidi-dev libfontconfig-dev libgnutls28-dev libva-dev libdrm-dev git ) - # A single unavailable package (e.g. Ubuntu's multiverse-only - # libopenh264-dev on images without that component) must not kill - # the whole install: the FFmpeg configure probes every optional - # piece, so degrade to installing the rest individually. + # A single unavailable package (e.g. a codec library a minimal + # image does not carry) must not kill the whole install: the + # FFmpeg configure probes every optional piece, so degrade to + # installing the rest individually. if ! run "${SUDO[@]}" apt-get install -y "${PKGS[@]}"; then echo "Some packages are unavailable here; installing the rest individually" >&2 for pkg in "${PKGS[@]}"; do @@ -130,7 +130,7 @@ case "$(uname -s)" in DNFPKGS=( gcc gcc-c++ clang clang-devel cmake python3 pkgconf-pkg-config nasm x264-devel x265-devel libdav1d-devel libvpx-devel - openh264-devel openjpeg-devel libtheora-devel libwebp-devel + openjpeg-devel libtheora-devel libwebp-devel lame-devel opus-devel libvorbis-devel speex-devel snappy-devel libass-devel freetype-devel fribidi-devel fontconfig-devel gnutls-devel libva-devel libdrm-devel @@ -144,7 +144,7 @@ case "$(uname -s)" in fi elif command -v pacman >/dev/null; then run "${SUDO[@]}" pacman -S --needed --noconfirm base-devel clang cmake python pkgconf nasm \ - x264 x265 dav1d libvpx openh264 openjpeg2 libtheora libwebp \ + x264 x265 dav1d libvpx openjpeg2 libtheora libwebp \ lame opus libvorbis speex snappy libass freetype2 fribidi \ fontconfig gnutls ffnvcodec-headers libva libdrm else