Skip to content

build: drop FFmpeg from the build and packages - #813

Merged
tawei-amd merged 2 commits into
mainfrom
fix/drop-ffmpeg-build
Oct 19, 2026
Merged

tawei-amd merged 2 commits into
mainfrom
fix/drop-ffmpeg-build

Conversation

@tawei-amd

@tawei-amd tawei-amd commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Since #808 (images) and #809 (audio, Whisper), no code calls FFmpeg. The build still pulled it in:

  • Portable Linux (XRT + HRX): configure fetched and compiled FFmpeg n7.1 and a static zlib, then the linker threw all of it away.
  • .deb: CMake still required the distro libav*/libsw* packages via pkg-config, so they stayed in Build-Depends.
  • Windows zip + MSI: shipped 7 FFmpeg DLLs (avcodec, avdevice, avfilter, avformat, avutil, swresample, swscale) that neither flm.exe nor any other DLL imports.

This PR removes all of that:

  • src/CMakeLists.txt: drop the static FFmpeg/zlib source build, the pkg-config/vcpkg/conda-prefix lookups and every FFmpeg link line.
  • debian/control, Dockerfile: drop libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev. (nasm stays; libjpeg-turbo uses it for SIMD.)
  • src/lib/*.dll, src/inno/flm.iss, src/wix/flm.wxs: delete the FFmpeg DLLs. zlib1.dll stays because libcurl.dll imports it. The MSI uses <MajorUpgrade>, so upgrades remove the old files.
  • THIRD_PARTY_NOTICES.txt: remove the FFmpeg entry and renumber. The LGPL-2.1 text stays, because the HRX Linux tarball still bundles LGPL-2.1 libraries (GnuTLS, libtasn1, librtmp, keyutils, glibc pieces) through libcurl. zlib's "Used in" now says only the HRX tarball bundles libz.so.1.
  • Docs: remove FFmpeg from the build instructions (docs/linux-getting-started.md now lists libedit-dev instead, which the build has required since fix(cli): use libedit instead of GNU readline for line editing #805).
  • asr-test.yml: trigger on the audio decoders (src/cmake/FlmAudioCodecs.cmake, src/include/dr_libs) instead of the FFmpeg DLLs and the FFTW files removed in fix: replace FFTW with pocketfft and ship third-party notices #798.

🤖 Generated with Claude Code

tawei-amd and others added 2 commits October 18, 2026 18:37
Nothing calls FFmpeg any more: images decode through libjpeg-turbo and
LodePNG (#808) and audio through dr_libs, libvorbis and libopus (#809).
The build still pulled it in, though. The portable Linux builds compiled
FFmpeg n7.1 (and a static zlib for it) from source at configure time only
for the linker to discard it, the .deb needed the distro libav*-dev
packages to configure, and the Windows zip and MSI shipped seven FFmpeg
DLLs that nothing imports.

Remove the source build, the pkg-config, vcpkg and conda-prefix lookups
and every FFmpeg link line; drop the libav*/libsw* build dependencies
from debian/control and the Dockerfile; delete the FFmpeg DLLs from
src/lib and the Inno and WiX installers. zlib1.dll stays: libcurl.dll
imports it.

THIRD_PARTY_NOTICES.txt loses the FFmpeg entry and, with it, the LGPL-2.1
text, which nothing else needed. The ASR test now triggers on the audio
decoders instead of the FFmpeg DLLs and the long-gone FFTW files.

Co-Authored-By: Claude <[email protected]>
The HRX tarball check from #804 only looked for a shared FFmpeg in one
tarball. Replace it with a script that every Linux package runs through
(XRT, HRX and models-from-source tarballs, all four .deb): it fails if a
bundled file, any ELF NEEDED entry or a .deb Depends names FFmpeg, the
GPL codecs distro FFmpeg pulls in (x264, x265, xvid, libdvdnav,
libdvdread), FFTW or GNU readline. Against the v1.0.9 HRX tarball it
reports all of them; current main's packages pass.

The FFmpeg configure/build log artifacts go with the source build.

Co-Authored-By: Claude <[email protected]>
@tawei-amd
tawei-amd merged commit 78db96b into main Oct 19, 2026
37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant