From 839c0f53cd11e51cdd07486901d669834451f1dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Wed, 17 Dec 2025 00:53:13 +0100 Subject: [PATCH 1/2] Enable AV1, VP8, webp in older FFmpegs --- .../f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb | 17 ++++++++++++++--- .../f/FFmpeg/FFmpeg-7.0.2-GCCcore-13.3.0.eb | 17 ++++++++++++++--- .../f/FFmpeg/FFmpeg-7.1.1-GCCcore-14.2.0.eb | 17 ++++++++++++++--- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb index fca8bca7cfa1..54c59b205a50 100644 --- a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb @@ -24,6 +24,13 @@ dependencies = [ ('x264', '20231019'), ('LAME', '3.100'), ('x265', '3.5'), + ('dav1d', '1.5.2'), + ('SVT-AV1', '3.1.2'), + ('libaom', '3.10.0'), + ('libvpx', '1.15.2'), + ('libwebp', '1.3.2'), + ('libvorbis', '1.3.7'), + ('libopus', '1.5.2'), ('X11', '20231019'), ('freetype', '2.13.2'), ('fontconfig', '2.14.2'), @@ -31,9 +38,13 @@ dependencies = [ ('SDL2', '2.28.5'), ] -configopts = '--enable-pic --enable-shared --enable-gpl --enable-version3 --enable-nonfree --cc="$CC" --cxx="$CXX" ' -configopts += '--enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfreetype --enable-fontconfig ' -configopts += '--enable-libfribidi --enable-sdl2 --disable-htmlpages' +configopts = ' '.join([ + '--enable-pic --enable-shared --enable-gpl --enable-version3 --cc="$CC" --cxx="$CXX"', + '--enable-nonfree --enable-libx264 --enable-libx265 --enable-libmp3lame', + '--enable-libvpx --enable-libwebp --enable-libvorbis --enable-libopus', + '--enable-libdav1d --enable-libaom --enable-libsvtav1', + '--enable-libfreetype --enable-fontconfig --enable-libfribidi --enable-sdl2 --disable-htmlpages', +]) sanity_check_paths = { 'files': ['bin/ff%s' % x for x in ['mpeg', 'probe', 'play']] + diff --git a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.0.2-GCCcore-13.3.0.eb b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.0.2-GCCcore-13.3.0.eb index f6a6b35c91eb..805aaf71fee8 100644 --- a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.0.2-GCCcore-13.3.0.eb +++ b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.0.2-GCCcore-13.3.0.eb @@ -24,6 +24,13 @@ dependencies = [ ('x264', '20240513'), ('LAME', '3.100'), ('x265', '3.6'), + ('dav1d', '1.5.2'), + ('SVT-AV1', '3.1.2'), + ('libaom', '3.10.0'), + ('libvpx', '1.15.2'), + ('libwebp', '1.4.0'), + ('libvorbis', '1.3.7'), + ('libopus', '1.5.2'), ('X11', '20240607'), ('freetype', '2.13.2'), ('fontconfig', '2.15.0'), @@ -31,9 +38,13 @@ dependencies = [ ('SDL2', '2.30.6'), ] -configopts = '--enable-pic --enable-shared --enable-gpl --enable-version3 --enable-nonfree --cc="$CC" --cxx="$CXX" ' -configopts += '--enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfreetype --enable-fontconfig ' -configopts += '--enable-libfribidi --enable-sdl2 --disable-htmlpages' +configopts = ' '.join([ + '--enable-pic --enable-shared --enable-gpl --enable-version3 --cc="$CC" --cxx="$CXX"', + '--enable-nonfree --enable-libx264 --enable-libx265 --enable-libmp3lame', + '--enable-libvpx --enable-libwebp --enable-libvorbis --enable-libopus', + '--enable-libdav1d --enable-libaom --enable-libsvtav1', + '--enable-libfreetype --enable-fontconfig --enable-libfribidi --enable-sdl2 --disable-htmlpages', +]) sanity_check_paths = { 'files': ['bin/ff%s' % x for x in ['mpeg', 'probe', 'play']] + diff --git a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.1.1-GCCcore-14.2.0.eb b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.1.1-GCCcore-14.2.0.eb index 8d1743d2b86d..6f79c7cfa0db 100644 --- a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.1.1-GCCcore-14.2.0.eb +++ b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.1.1-GCCcore-14.2.0.eb @@ -24,6 +24,13 @@ dependencies = [ ('x264', '20250619'), ('LAME', '3.100'), ('x265', '4.1'), + ('dav1d', '1.5.2'), + ('SVT-AV1', '3.1.2'), + ('libaom', '3.10.0'), + ('libvpx', '1.15.2'), + ('libwebp', '1.5.0'), + ('libvorbis', '1.3.7'), + ('libopus', '1.5.2'), ('X11', '20250521'), ('freetype', '2.13.3'), ('fontconfig', '2.16.2'), @@ -31,9 +38,13 @@ dependencies = [ ('SDL2', '2.32.8'), ] -configopts = '--enable-pic --enable-shared --enable-gpl --enable-version3 --enable-nonfree --cc="$CC" --cxx="$CXX" ' -configopts += '--enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfreetype --enable-fontconfig ' -configopts += '--enable-libfribidi --enable-sdl2 --disable-htmlpages' +configopts = ' '.join([ + '--enable-pic --enable-shared --enable-gpl --enable-version3 --cc="$CC" --cxx="$CXX"', + '--enable-nonfree --enable-libx264 --enable-libx265 --enable-libmp3lame', + '--enable-libvpx --enable-libwebp --enable-libvorbis --enable-libopus', + '--enable-libdav1d --enable-libaom --enable-libsvtav1', + '--enable-libfreetype --enable-fontconfig --enable-libfribidi --enable-sdl2 --disable-htmlpages', +]) sanity_check_paths = { 'files': ['bin/ff%s' % x for x in ['mpeg', 'probe', 'play']] + From 730d419f2ce0032fbc9eb79b232b175f461233a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Wed, 17 Dec 2025 17:49:53 +0100 Subject: [PATCH 2/2] Patch for newer SVT-AV1 --- .../f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb | 6 +++- .../f/FFmpeg/FFmpeg-7.0.2-GCCcore-13.3.0.eb | 6 +++- .../f/FFmpeg/FFmpeg-7.1.1-GCCcore-14.2.0.eb | 6 +++- .../f/FFmpeg/FFmpeg-7.1.1_svtav1_compat.patch | 30 +++++++++++++++++++ 4 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.1.1_svtav1_compat.patch diff --git a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb index 54c59b205a50..5ce71e8b31fe 100644 --- a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb @@ -10,7 +10,11 @@ toolchain = {'name': 'GCCcore', 'version': '13.2.0'} source_urls = ['https://%(namelower)s.org/releases/'] sources = [SOURCELOWER_TAR_BZ2] -checksums = ['47d062731c9f66a78380e35a19aac77cebceccd1c7cc309b9c82343ffc430c3d'] +patches = ['%(name)s-7.1.1_svtav1_compat.patch'] +checksums = [ + {'ffmpeg-6.0.tar.bz2': '47d062731c9f66a78380e35a19aac77cebceccd1c7cc309b9c82343ffc430c3d'}, + {'FFmpeg-7.1.1_svtav1_compat.patch': '50af862d25bbeddd0d2e3eff7ebe25899651ee24cc23ed6f785180b5523d246e'}, +] builddependencies = [ ('binutils', '2.40'), diff --git a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.0.2-GCCcore-13.3.0.eb b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.0.2-GCCcore-13.3.0.eb index 805aaf71fee8..401160128b99 100644 --- a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.0.2-GCCcore-13.3.0.eb +++ b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.0.2-GCCcore-13.3.0.eb @@ -10,7 +10,11 @@ toolchain = {'name': 'GCCcore', 'version': '13.3.0'} source_urls = ['https://%(namelower)s.org/releases/'] sources = [SOURCELOWER_TAR_BZ2] -checksums = ['1ed250407ea8f955cca2f1139da3229fbc13032a0802e4b744be195865ff1541'] +patches = ['%(name)s-7.1.1_svtav1_compat.patch'] +checksums = [ + {'ffmpeg-7.0.2.tar.bz2': '1ed250407ea8f955cca2f1139da3229fbc13032a0802e4b744be195865ff1541'}, + {'FFmpeg-7.1.1_svtav1_compat.patch': '50af862d25bbeddd0d2e3eff7ebe25899651ee24cc23ed6f785180b5523d246e'}, +] builddependencies = [ ('binutils', '2.42'), diff --git a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.1.1-GCCcore-14.2.0.eb b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.1.1-GCCcore-14.2.0.eb index 6f79c7cfa0db..d567241e5740 100644 --- a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.1.1-GCCcore-14.2.0.eb +++ b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.1.1-GCCcore-14.2.0.eb @@ -10,7 +10,11 @@ toolchain = {'name': 'GCCcore', 'version': '14.2.0'} source_urls = ['https://%(namelower)s.org/releases/'] sources = [SOURCELOWER_TAR_BZ2] -checksums = ['0c8da2f11579a01e014fc007cbacf5bb4da1d06afd0b43c7f8097ec7c0f143ba'] +patches = ['%(name)s-%(version)s_svtav1_compat.patch'] +checksums = [ + {'ffmpeg-7.1.1.tar.bz2': '0c8da2f11579a01e014fc007cbacf5bb4da1d06afd0b43c7f8097ec7c0f143ba'}, + {'FFmpeg-7.1.1_svtav1_compat.patch': '50af862d25bbeddd0d2e3eff7ebe25899651ee24cc23ed6f785180b5523d246e'}, +] builddependencies = [ ('binutils', '2.42'), diff --git a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.1.1_svtav1_compat.patch b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.1.1_svtav1_compat.patch new file mode 100644 index 000000000000..fb1a372e5a13 --- /dev/null +++ b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-7.1.1_svtav1_compat.patch @@ -0,0 +1,30 @@ +From d1ed5c06e3edc5f2b5f3664c80121fa55b0baa95 Mon Sep 17 00:00:00 2001 +From: Gyan Doshi +Date: Sat, 22 Feb 2025 10:38:53 +0530 +Subject: [PATCH] avcodec/libsvtav1: unbreak build with latest svtav1 + +SVT-AV1 made a change in their public API in 988e930c but without a +version bump or any other accessible marker, thus breaking ffmpeg build +with current versions of SVT-AV1. + +They have finally bumped versions a month later, so check added. +--- + libavcodec/libsvtav1.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c +index 79b28eb4df546..43fe531fde74d 100644 +--- a/libavcodec/libsvtav1.c ++++ b/libavcodec/libsvtav1.c +@@ -435,7 +435,11 @@ static av_cold int eb_enc_init(AVCodecContext *avctx) + + svt_enc->eos_flag = EOS_NOT_REACHED; + ++#if SVT_AV1_CHECK_VERSION(3, 0, 0) ++ svt_ret = svt_av1_enc_init_handle(&svt_enc->svt_handle, &svt_enc->enc_params); ++#else + svt_ret = svt_av1_enc_init_handle(&svt_enc->svt_handle, svt_enc, &svt_enc->enc_params); ++#endif + if (svt_ret != EB_ErrorNone) { + return svt_print_error(avctx, svt_ret, "Error initializing encoder handle"); + }