summaryrefslogtreecommitdiff
path: root/media-video
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2025-03-12 01:49:51 +0000
committerV3n3RiX <venerix@koprulu.sector>2025-03-12 01:49:51 +0000
commitef0fedb39c21a343a3f316726f272bad9005b22c (patch)
tree0d64e58453e117f61a9e1641532926278f51b72e /media-video
parentcf7807d7aea23a99a144afceaba961cfed652b5f (diff)
gentoo auto-resync : 12:03:2025 - 01:49:51edge
Diffstat (limited to 'media-video')
-rw-r--r--media-video/Manifest.gzbin23036 -> 23229 bytes
-rw-r--r--media-video/dvdstyler/Manifest2
-rw-r--r--media-video/dvdstyler/dvdstyler-3.2.1-r2.ebuild (renamed from media-video/dvdstyler/dvdstyler-3.2.1-r1.ebuild)6
-rw-r--r--media-video/ffdiaporama/Manifest2
-rw-r--r--media-video/ffdiaporama/ffdiaporama-2.2_pre20240203-r1.ebuild (renamed from media-video/ffdiaporama/ffdiaporama-2.2_pre20240203.ebuild)2
-rw-r--r--media-video/ffmpeg-compat/Manifest11
-rw-r--r--media-video/ffmpeg-compat/ffmpeg-compat-4.4.5.ebuild484
-rw-r--r--media-video/ffmpeg-compat/ffmpeg-compat-6.1.2.ebuild562
-rw-r--r--media-video/ffmpeg-compat/metadata.xml121
-rw-r--r--media-video/ffmpeg/Manifest25
-rw-r--r--media-video/ffmpeg/ffmpeg-4.4.5-r2.ebuild484
-rw-r--r--media-video/ffmpeg/ffmpeg-6.1.1-r8.ebuild615
-rw-r--r--media-video/ffmpeg/ffmpeg-6.1.2-r1.ebuild562
-rw-r--r--media-video/ffmpeg/ffmpeg-7.0.2-r1.ebuild617
-rw-r--r--media-video/ffmpeg/ffmpeg-7.1.1.ebuild576
-rw-r--r--media-video/ffmpeg/ffmpeg-9999.ebuild1014
-rw-r--r--media-video/ffmpeg/files/chromium-r3.patch53
-rw-r--r--media-video/ffmpeg/files/ffmpeg-6.1.1-memory-leak.patch129
-rw-r--r--media-video/ffmpeg/files/ffmpeg-6.1.1-vulkan-rename.patch127
-rw-r--r--media-video/ffmpeg/files/ffmpeg-7.1.1-svt-av1-3.patch13
-rw-r--r--media-video/ffmpeg/metadata.xml173
-rw-r--r--media-video/mpv/Manifest4
-rw-r--r--media-video/mpv/mpv-0.39.0-r1.ebuild (renamed from media-video/mpv/mpv-0.39.0.ebuild)4
-rw-r--r--media-video/mpv/mpv-9999.ebuild2
-rw-r--r--media-video/noad/Manifest1
-rw-r--r--media-video/noad/noad-0.8.8-r1.ebuild72
-rw-r--r--media-video/peek/Manifest2
-rw-r--r--media-video/peek/peek-1.5.1-r2.ebuild (renamed from media-video/peek/peek-1.5.1-r1.ebuild)4
-rw-r--r--media-video/simplescreenrecorder/Manifest4
-rw-r--r--media-video/simplescreenrecorder/simplescreenrecorder-0.4.4-r4.ebuild (renamed from media-video/simplescreenrecorder/simplescreenrecorder-0.4.4-r3.ebuild)5
-rw-r--r--media-video/simplescreenrecorder/simplescreenrecorder-9999.ebuild3
-rw-r--r--media-video/ttcut/Manifest2
-rw-r--r--media-video/ttcut/ttcut-0.19.6_p2-r1.ebuild (renamed from media-video/ttcut/ttcut-0.19.6_p2.ebuild)4
-rw-r--r--media-video/vidcutter/Manifest4
-rw-r--r--media-video/vidcutter/vidcutter-6.0.5.1_p20230201-r1.ebuild (renamed from media-video/vidcutter/vidcutter-6.0.5.1_p20230201.ebuild)4
-rw-r--r--media-video/vidcutter/vidcutter-9999.ebuild4
36 files changed, 3569 insertions, 2128 deletions
diff --git a/media-video/Manifest.gz b/media-video/Manifest.gz
index d186573a799e..abac61c5bfa9 100644
--- a/media-video/Manifest.gz
+++ b/media-video/Manifest.gz
Binary files differ
diff --git a/media-video/dvdstyler/Manifest b/media-video/dvdstyler/Manifest
index a8351c075848..c61d257cdce3 100644
--- a/media-video/dvdstyler/Manifest
+++ b/media-video/dvdstyler/Manifest
@@ -2,5 +2,5 @@ AUX ffmpeg5.patch 3209 BLAKE2B fdf3f68d7cc292c37ca7b8cbc023de80b696c3b01b9326d6c
AUX wx30.patch 624 BLAKE2B fa464a7e39d721e52eec106794ecee23e802e7b57d2448d2d95c5cb932864615cf6e969d7a31ee3c1154265aeb1725c8fd65bd30271085bb782adf351df8d7f8 SHA512 aa2404bcca318e5fc5adea98bf1efa4a91128a3067e0ed1a4313f61ac55c17b4b9524655221c7d3107f1264a7ed5dcde33bc8c9bc63ff5a5bb3006a2e9cabfa0
AUX wx32.patch 424 BLAKE2B 68eb622d8417f4b01391dd1aad10cc0e2575434149bbde54803e97010a2b367014225b17761f34a5b5a52356eb4aef4bc4bb0037cc6efe988918476bff8e5b11 SHA512 7d97ac865b7efb883d054f01a0702e4867a9da132cc1ab7fc2c1cc74d8ee252ce07e9b4a2f1e197ca6dd50d5923cf84c20e6d5908799d7bc214cf9e496221e51
DIST DVDStyler-3.2.1.tar.bz2 9040634 BLAKE2B f6c3ec5d6595b650ead167ae6532a0849cc6545e1531f10483a7dd2f9962ea6cd4494b7eb8224bbc6e70588b1054fc13a13a5e2f5d977b5b80692c7cc2553d53 SHA512 09124a6c8db2b8d8072bfe2f7de98474d736a36a66d5124eab1b925da9ca830901f554ca80d9a4403365616001d869237002a2cb467cf3cc11b37aea12ff9d90
-EBUILD dvdstyler-3.2.1-r1.ebuild 1744 BLAKE2B be3cc796d5c57cf09a6d7e39daebcfbb6b3ca8058dd0b6c7bf825a2776ebfb740a7eca54e85dafa7c0f1b218b851b9e9a7b286dcf17924c56a0c45f50c92a6ec SHA512 37657998a7abbb8c7b0f94decb3473a3e0d5ee889d9331e2a278d727a45322fcce48d83c352639b12a19aba393efc6639ac5cf751c87cf9b11cb2071276b0c29
+EBUILD dvdstyler-3.2.1-r2.ebuild 1752 BLAKE2B cd8aaf15cdae8a34c7ebb74d3ae138d4fc7aeeb75d97fa558515322d24f926f0ec4ca007898fddaa1dc49ac36f21fe9a2cc7fc4485f138d557d88f5bc290d295 SHA512 03b2c1fe1b6123a7c5f01443d7c4b2cb1188f53d590d552e2aac65774031f11d9954340575109e8af6f8ae1fb797e71164aba8e3e47f1539bca6c59f39e39646
MISC metadata.xml 303 BLAKE2B 968311b2bad01107bc5da7eb9357989f0d9030ee07696d1ba676a4d5cc59773b8b474bae5167f0cdf1b39e5e182f41aec3b64dd7ac0df04302024ae75481c551 SHA512 8cb99add5aa709b0f9b14bc8c5fab09c958fa0b04f20bf4657e7a125761bec3e59fa6893a4b4633b8dc1d84c598ba518f757adef2ab1a5866a45f8c7cd59cf61
diff --git a/media-video/dvdstyler/dvdstyler-3.2.1-r1.ebuild b/media-video/dvdstyler/dvdstyler-3.2.1-r2.ebuild
index 9da92a439bf5..825c9de9e393 100644
--- a/media-video/dvdstyler/dvdstyler-3.2.1-r1.ebuild
+++ b/media-video/dvdstyler/dvdstyler-3.2.1-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -22,11 +22,11 @@ DEPEND="
app-cdr/cdrtools
>=app-cdr/dvd+rw-tools-7.1
media-libs/libexif:=
+ media-libs/libjpeg-turbo:=
>=media-libs/wxsvg-1.5.23:=
>=media-video/dvdauthor-0.7.1
- >=media-video/ffmpeg-2.6:0=[encode]
+ media-video/ffmpeg:=[encode(+)]
>=media-video/xine-ui-0.99.7
- virtual/jpeg:0
x11-libs/wxGTK:${WX_GTK_VER}=[gstreamer,X]
sys-apps/dbus
udev? ( >=virtual/libudev-215:= )
diff --git a/media-video/ffdiaporama/Manifest b/media-video/ffdiaporama/Manifest
index a13b55a0435d..cec79741d3ab 100644
--- a/media-video/ffdiaporama/Manifest
+++ b/media-video/ffdiaporama/Manifest
@@ -1,3 +1,3 @@
DIST ffdiaporama-2.2_pre20240203.tar.gz 63277387 BLAKE2B 466f8c38b4e308b024f1a8961a0efb0ec5f6c5fe651a8165bd74d8e87823bf3134c5234012f1bd7637d339df92d495f1fc4acaf63670b30ec220e1667963caa0 SHA512 e5e46997df7c90016380f15e4b8b5bab4c8df97e536d4f90216e09ab3c09114dba1b034ea8ce23a6b3c04808ba35e92fd850ab1c1bd8fa1db3e7d8ae7cb6d212
-EBUILD ffdiaporama-2.2_pre20240203.ebuild 1235 BLAKE2B 7374977c769a3996d8d53c96705e04d504a7d0549ab147d686181709040d70fd6dc3ace9298aaba033d46fa774772cdf17e0b25f300f330d92674d64ecdb82c9 SHA512 3de38e58beb9ac31852b366b7ea3f110a012ab3d45771cfe20bd6c6fab6cb4c3e5ea72b11299eb7dbaaa1c78107775212ac2015a9b16d18c3cd52936fba04a59
+EBUILD ffdiaporama-2.2_pre20240203-r1.ebuild 1238 BLAKE2B c6ab621a35317517fbc2b3797ca73381108a3b8baacfd90e2b0e0b3ee0224639d27f2c38d6d375eb208f70d27c030d26cdbdd2de6c390005e19d87e50696b665 SHA512 1db08293c38ddc9a0bbfb17af5a8a12148e03f0d81541b2e6620dd3d7eecbb751ace87057363cf4ecacb5aa5c2e8480d22d53de5cff710eafcf32563fcdec6e7
MISC metadata.xml 2289 BLAKE2B 508259cbede84e5680f8cf7f481143ab52c3915adef22a0f39198e20174b64327ae7570ce583c585a65aaf39f4478b10e3bf248155c0b49fd00a9e7f70051a34 SHA512 9df8bd5dfab9954b93b61d6460a6d94b5b42a9973d1e27a10b2210d7fe955a70d3f327ce558091055924c3dd9dcf04c84a7bcd475bd5bf7e7808ec4291af48d7
diff --git a/media-video/ffdiaporama/ffdiaporama-2.2_pre20240203.ebuild b/media-video/ffdiaporama/ffdiaporama-2.2_pre20240203-r1.ebuild
index 6e7189a3b361..6f789a7d3c07 100644
--- a/media-video/ffdiaporama/ffdiaporama-2.2_pre20240203.ebuild
+++ b/media-video/ffdiaporama/ffdiaporama-2.2_pre20240203-r1.ebuild
@@ -27,7 +27,7 @@ RDEPEND="
dev-qt/qtwidgets:5
dev-qt/qtxml:5
media-gfx/exiv2:=
- >=media-video/ffmpeg-6:=[encode]
+ >=media-video/ffmpeg-6:=[encode(+)]
openclipart? ( media-gfx/openclipart[svg,-gzip] )"
DEPEND="${RDEPEND}"
diff --git a/media-video/ffmpeg-compat/Manifest b/media-video/ffmpeg-compat/Manifest
new file mode 100644
index 000000000000..fecfba901746
--- /dev/null
+++ b/media-video/ffmpeg-compat/Manifest
@@ -0,0 +1,11 @@
+DIST ffmpeg-4.4-patchset-1.tar.xz 9916 BLAKE2B 9b41de6b048601f2af41864c3262b3348330f792eea71df4cfab5e740626ee6c633ac5569e6e91d953143f6ad0fac15c840ef0643925e91261f8b4a32e2d386c SHA512 b11d9e182ddb0a48f50d63f5e0bd7fd99f4b8fa7dd17179a3bfbc9419dabb76401408a81ae2d5f118fbf67f28dcfdc3bfb5b7ac70f740259e3ebad8d1ba049bb
+DIST ffmpeg-4.4.5.tar.xz 9575596 BLAKE2B 546df09f7731d22e532a18d9ba9be184283f62b7a2e9470e745e536802bc2263a00f11ed6ab0aee8fc60c5f728826311cbf3542084ba3a64b65a61d76295cd64 SHA512 70df4e63ef507a7ec76da34438142499139769728fd5130d9cf48d56c110ec82c3d6a7e6d1622da03c70167fa861d901d016bbe52c21d2b284b8a0d9f30811dc
+DIST ffmpeg-4.4.5.tar.xz.asc 520 BLAKE2B 505987208ed58b548f910299adb1324e6eba655cc37e6f03cac32c8623e16a4a884e822c745fb72b1934129a8c0a2706bb8bfb785715e6a68e43f737cb8ed365 SHA512 bcfee8986681dfbefd3add741fcbbc5e223bb06c9800797e68fde968c114055ac3fc02ce8731ed269bf30c92d6c990c7f636f82d42379920012e8a0ace8d527e
+DIST ffmpeg-6.1-patchset-1.tar.xz 11296 BLAKE2B 5227d0c7f52a4f217d5517da11c2327585375c9d860f31415e1079f4f1f9186637e07c7da0e168c732cc7abb953440f0ba952395db83074588eb31bee1d5bc9f SHA512 20fe94536a5c3873d0126ff535a3bff595dedc7787162f160ecde6cbd357b9eb3749c9d7b7543aa39896ceb4e656494d31811bf26682776cdfc693fe030cd77b
+DIST ffmpeg-6.1.2.tar.xz 10466152 BLAKE2B ff1f2b2bb60ccc4c37b6ffda2a0e6a0be80c451dc99f6d4a99bd95a1bdc44c494d62377c53383ccfb5b818573a1971948d7db34119099dbc56d7258724831d3c SHA512 3a009184d971fc3168e1322d1d724aae787ed0e9c152d8d1813ea0b9099bda3b35c41fcabbd7b140560e7a8fa9fa1ffd7f0938432d5d498c43829fc6cc3d9e08
+DIST ffmpeg-6.1.2.tar.xz.asc 520 BLAKE2B f26a2d6f5423f93090f2a448172e49f3858aeb5a00f326207d374bbb70fa8942c7ee1a7c55338b2db664b647c983cd5ab4fd8d71efe5c37af4c90385ca17d0ab SHA512 a26dba1f4870b964080b45f8468f5ce3591eb6aa69be426bf4afbe5a60c3cbd0fe5056dc86ca7bb817c04ae30d39160cb7773772a9a2123ae7f095b18a6d7050
+DIST ffmpeg-rpi-6.1-r3.patch 800738 BLAKE2B b7e449ee5eec8b50a3b3bba233c5269f3b6845dbd18a619b844c841a97345ce24c7a5d7f4da05b08e3cb49668426b9044f3d3553d9c2ef3a50aec7199bfa3c09 SHA512 aeaf12afabf5f2192fb0b6ef47397d8477b109e49cee8c02a890d1656a27b1985c62c719ef72966d8c97b0709918233b65ea2e0ef988771507e4be137fcd9158
+DIST ffmpeg-rpi-6.1-r3.patch.asc 833 BLAKE2B 31fd5823c06d5884f7b0980de9072c35bbf4e1d6c0ed20b089439325d50956127238ca29469b003dba623b888a5aae3c4d8ad177862534e77b8e51f29cbed96c SHA512 3d8943b7151e20f73e9c14b121c501847bd7e01f2cf57ff135fc8c223653ec9d433bfe4012fa564f70c0471980b66d7ec3d9b5b1b14865187187719ba110cb5f
+EBUILD ffmpeg-compat-4.4.5.ebuild 14409 BLAKE2B d048d28498f200c3e1587931b822dbca7faaf30999be51715711e16d484d511160452e80e9406ee4e908656539bc337e865186540e324b8565067b92ec7847db SHA512 6af2f4f570074e6f146f558ef9596b39eb8b05ba87c2cf3939ab47be52d531e66a6f85f4550b16f68f272c75b78b3e3938f938dcb03839294ff2729e4d3f5918
+EBUILD ffmpeg-compat-6.1.2.ebuild 16538 BLAKE2B 723fa6b72bf020386ba64d8435bae59eccc8961a19ee3a865f1747d4e0dbf6ae9051a13a25334a2e4aa819bb3eca16cae90355f7af80d3f6986ad196821b00ca SHA512 c0da5de68124cbcea8edfbe85dd4eb32aacfa75ce60e4b390d4686fbe7cb5ced9ea494fbae0daff450e3c1de0da1abfbc1d84c95dcc1c96f92ed961362af3179
+MISC metadata.xml 7605 BLAKE2B af1dae9179eb75099f73330e42f95be290f59e99e4062f265e0cf339d9d2e9fd3ef5265600e8e497b2edd58d2501ded48fb92fe6e3c92f1c5015fe79a999c187 SHA512 6093fd6f4c22221cc3ee7bde293f0ea9bffbcaecac8c3735f515cc37a1c48b69b6ee38acd34c892c1c72e14bc4f823714e446224f1bc4806e7bad52190fd63e2
diff --git a/media-video/ffmpeg-compat/ffmpeg-compat-4.4.5.ebuild b/media-video/ffmpeg-compat/ffmpeg-compat-4.4.5.ebuild
new file mode 100644
index 000000000000..e86d43b6f530
--- /dev/null
+++ b/media-video/ffmpeg-compat/ffmpeg-compat-4.4.5.ebuild
@@ -0,0 +1,484 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic multilib-minimal toolchain-funcs
+
+FFMPEG_SUBSLOT=56.58.58 # avutil.avcodec.avformat SONAME
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI=(
+ https://git.ffmpeg.org/ffmpeg.git
+ https://github.com/FFmpeg/FFmpeg.git
+ )
+else
+ inherit verify-sig
+ SRC_URI="
+ https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz
+ verify-sig? ( https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz.asc )
+ https://dev.gentoo.org/~ionen/distfiles/ffmpeg-$(ver_cut 1-2)-patchset-1.tar.xz
+ "
+ S=${WORKDIR}/ffmpeg-${PV} # avoid ${P}
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+fi
+
+DESCRIPTION="Complete solution to record/convert/stream audio and video"
+HOMEPAGE="https://ffmpeg.org/"
+
+[[ ${PN} == *-compat ]] && FFMPEG_UNSLOTTED= || FFMPEG_UNSLOTTED=1
+
+FFMPEG_IUSE_MAP=(
+ # [+]flag[:[^][!]opt1,...][@<v3|nonfree>]], ^ = native-only, ! = override
+ # remember to keep LICENSE, REQUIRED_USE, and RESTRICT in sync
+ X:libxcb,libxcb-shape,libxcb-shm,libxcb-xfixes,xlib
+ alsa
+ amrenc:libvo-amrwbenc@v3
+ amr:libopencore-amrnb,libopencore-amrwb@v3
+ appkit
+ bluray:libbluray
+ bs2b:libbs2b
+ bzip2:bzlib
+ cdio:libcdio
+ chromaprint
+ codec2:libcodec2
+ cuda:cuda-llvm
+ +dav1d:libdav1d
+ doc:^htmlpages
+ +drm:libdrm
+ fdk:libfdk-aac@nonfree
+ flite:libflite
+ +fontconfig:libfontconfig
+ frei0r
+ fribidi:libfribidi
+ gcrypt
+ gme:libgme
+ gmp:@v3
+ +gnutls # unused if USE=openssl, default for bug #905113,#917627
+ +gpl
+ gsm:libgsm
+ iec61883:libiec61883
+ ieee1394:libdc1394
+ jack:libjack
+ jpeg2k:libopenjpeg
+ kvazaar:libkvazaar
+ ladspa
+ lame:libmp3lame
+ libaom
+ libaribb24:@v3 # reminder: req use on gpl unneeded if >=1.0.4 (not in tree)
+ +libass
+ libcaca
+ libilbc
+ librtmp:librtmp
+ libsoxr
+ libtesseract
+ lv2
+ lzma
+ modplug:libmodplug
+ nvenc:cuvid,ffnvcodec,nvdec,nvenc
+ openal
+ opencl
+ opengl
+ openh264:libopenh264
+ openmpt:libopenmpt
+ openssl:openssl,!gnutls@v3ifgpl # still LGPL2.1+ if USE=-gpl
+ opus:libopus
+ +postproc # exposed as a USE for clarity with the GPL requirement
+ pulseaudio:libpulse
+ rabbitmq:^librabbitmq # no multilib
+ rav1e:^librav1e # no multilib
+ rubberband:librubberband
+ samba:libsmbclient@v3 # GPL-3+ only
+ sdl:sdl2
+ snappy:libsnappy
+ sndio
+ speex:libspeex
+ srt:libsrt
+ ssh:libssh
+ svg:librsvg
+ svt-av1:libsvtav1
+ theora:libtheora
+ +truetype:libfreetype
+ twolame:libtwolame
+ v4l:libv4l2
+ vaapi
+ vdpau
+ vidstab:libvidstab
+ vorbis:libvorbis
+ vpx:libvpx
+ vulkan
+ webp:libwebp
+ x264:libx264
+ x265:libx265
+ +xml:libxml2
+ xvid:libxvid
+ zeromq:^libzmq # no multilib
+ zimg:libzimg
+ +zlib
+ zvbi:libzvbi
+)
+
+# all-rights is used to express the GPL incompatibility (RESTRICT=bindist)
+LICENSE="
+ gpl? (
+ GPL-2+
+ amr? ( GPL-3+ ) amrenc? ( GPL-3+ ) libaribb24? ( GPL-3+ )
+ gmp? ( GPL-3+ ) openssl? ( GPL-3+ )
+ fdk? ( all-rights-reserved )
+ )
+ !gpl? (
+ LGPL-2.1+
+ amr? ( LGPL-3+ ) amrenc? ( LGPL-3+ ) libaribb24? ( LGPL-3+ )
+ gmp? ( LGPL-3+ )
+ )
+ samba? ( GPL-3+ )
+"
+[[ ${FFMPEG_UNSLOTTED} ]] && : 0 || : "$(ver_cut 1)"
+SLOT="${_}/${FFMPEG_SUBSLOT}"
+IUSE="${FFMPEG_IUSE_MAP[*]%:*}"
+REQUIRED_USE="
+ fribidi? ( truetype )
+ gmp? ( !librtmp )
+ libaribb24? ( gpl ) cdio? ( gpl ) frei0r? ( gpl ) postproc? ( gpl )
+ rubberband? ( gpl ) samba? ( gpl ) vidstab? ( gpl ) x264? ( gpl )
+ x265? ( gpl ) xvid? ( gpl )
+"
+RESTRICT="gpl? ( fdk? ( bindist ) )"
+
+# dlopen: vulkan-loader
+RDEPEND="
+ virtual/libiconv[${MULTILIB_USEDEP}]
+ X? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libXext[${MULTILIB_USEDEP}]
+ x11-libs/libXv[${MULTILIB_USEDEP}]
+ x11-libs/libxcb:=[${MULTILIB_USEDEP}]
+ )
+ alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
+ amr? ( media-libs/opencore-amr[${MULTILIB_USEDEP}] )
+ amrenc? ( media-libs/vo-amrwbenc[${MULTILIB_USEDEP}] )
+ bluray? ( media-libs/libbluray:=[${MULTILIB_USEDEP}] )
+ bs2b? ( media-libs/libbs2b[${MULTILIB_USEDEP}] )
+ bzip2? ( app-arch/bzip2[${MULTILIB_USEDEP}] )
+ cdio? ( dev-libs/libcdio-paranoia:=[${MULTILIB_USEDEP}] )
+ chromaprint? ( media-libs/chromaprint:=[${MULTILIB_USEDEP}] )
+ codec2? ( media-libs/codec2:=[${MULTILIB_USEDEP}] )
+ dav1d? ( media-libs/dav1d:=[${MULTILIB_USEDEP}] )
+ drm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
+ fdk? ( media-libs/fdk-aac:=[${MULTILIB_USEDEP}] )
+ flite? ( app-accessibility/flite[${MULTILIB_USEDEP}] )
+ fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] )
+ frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
+ fribidi? ( dev-libs/fribidi[${MULTILIB_USEDEP}] )
+ gcrypt? ( dev-libs/libgcrypt:=[${MULTILIB_USEDEP}] )
+ gme? ( media-libs/game-music-emu[${MULTILIB_USEDEP}] )
+ gmp? ( dev-libs/gmp:=[${MULTILIB_USEDEP}] )
+ gnutls? ( !openssl? (
+ net-libs/gnutls:=[${MULTILIB_USEDEP}]
+ ) )
+ gsm? ( media-sound/gsm[${MULTILIB_USEDEP}] )
+ iec61883? (
+ media-libs/libiec61883[${MULTILIB_USEDEP}]
+ sys-libs/libavc1394[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ ieee1394? (
+ media-libs/libdc1394:2=[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ jack? ( virtual/jack[${MULTILIB_USEDEP}] )
+ jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] )
+ kvazaar? ( media-libs/kvazaar:=[${MULTILIB_USEDEP}] )
+ lame? ( media-sound/lame[${MULTILIB_USEDEP}] )
+ libaom? ( media-libs/libaom:=[${MULTILIB_USEDEP}] )
+ libaribb24? ( media-libs/aribb24[${MULTILIB_USEDEP}] )
+ libass? ( media-libs/libass:=[${MULTILIB_USEDEP}] )
+ libcaca? ( media-libs/libcaca[${MULTILIB_USEDEP}] )
+ libilbc? ( media-libs/libilbc:=[${MULTILIB_USEDEP}] )
+ librtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] )
+ libsoxr? ( media-libs/soxr[${MULTILIB_USEDEP}] )
+ libtesseract? ( app-text/tesseract:=[${MULTILIB_USEDEP}] )
+ lv2? (
+ media-libs/lilv[${MULTILIB_USEDEP}]
+ media-libs/lv2[${MULTILIB_USEDEP}]
+ )
+ lzma? ( app-arch/xz-utils[${MULTILIB_USEDEP}] )
+ modplug? ( media-libs/libmodplug[${MULTILIB_USEDEP}] )
+ openal? ( media-libs/openal[${MULTILIB_USEDEP}] )
+ opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
+ opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
+ openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
+ openmpt? ( media-libs/libopenmpt[${MULTILIB_USEDEP}] )
+ openssl? ( >=dev-libs/openssl-3:=[${MULTILIB_USEDEP}] )
+ opus? ( media-libs/opus[${MULTILIB_USEDEP}] )
+ pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
+ rabbitmq? ( net-libs/rabbitmq-c:= )
+ rav1e? ( >=media-video/rav1e-0.4:=[capi] )
+ rubberband? ( media-libs/rubberband:=[${MULTILIB_USEDEP}] )
+ samba? ( net-fs/samba:=[client,${MULTILIB_USEDEP}] )
+ sdl? ( media-libs/libsdl2[sound(+),video(+),${MULTILIB_USEDEP}] )
+ snappy? ( app-arch/snappy:=[${MULTILIB_USEDEP}] )
+ sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] )
+ speex? ( media-libs/speex[${MULTILIB_USEDEP}] )
+ srt? ( net-libs/srt:=[${MULTILIB_USEDEP}] )
+ ssh? ( net-libs/libssh:=[sftp,${MULTILIB_USEDEP}] )
+ svg? (
+ dev-libs/glib:2[${MULTILIB_USEDEP}]
+ >=gnome-base/librsvg-2.52:2[${MULTILIB_USEDEP}]
+ x11-libs/cairo[${MULTILIB_USEDEP}]
+ )
+ svt-av1? ( >=media-libs/svt-av1-0.8.4:=[${MULTILIB_USEDEP}] )
+ theora? ( media-libs/libtheora[encode,${MULTILIB_USEDEP}] )
+ truetype? ( media-libs/freetype:2[${MULTILIB_USEDEP}] )
+ twolame? ( media-sound/twolame[${MULTILIB_USEDEP}] )
+ v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
+ vaapi? ( media-libs/libva:=[X?,${MULTILIB_USEDEP}] )
+ vdpau? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libvdpau[${MULTILIB_USEDEP}]
+ )
+ vidstab? ( media-libs/vidstab[${MULTILIB_USEDEP}] )
+ vorbis? ( media-libs/libvorbis[${MULTILIB_USEDEP}] )
+ vpx? ( media-libs/libvpx:=[${MULTILIB_USEDEP}] )
+ vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )
+ webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] )
+ x264? ( media-libs/x264:=[${MULTILIB_USEDEP}] )
+ x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
+ xml? ( dev-libs/libxml2[${MULTILIB_USEDEP}] )
+ xvid? ( media-libs/xvid[${MULTILIB_USEDEP}] )
+ zeromq? ( net-libs/zeromq:= )
+ zimg? ( media-libs/zimg[${MULTILIB_USEDEP}] )
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ zvbi? ( media-libs/zvbi[${MULTILIB_USEDEP}] )
+"
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ kernel_linux? ( >=sys-kernel/linux-headers-6 )
+ ladspa? ( media-libs/ladspa-sdk )
+ nvenc? ( media-libs/nv-codec-headers )
+ opencl? ( dev-util/opencl-headers )
+ vulkan? ( dev-util/vulkan-headers )
+"
+BDEPEND="
+ app-alternatives/awk
+ dev-lang/perl
+ virtual/pkgconfig
+ amd64? (
+ || (
+ dev-lang/nasm
+ dev-lang/yasm
+ )
+ )
+ cuda? ( llvm-core/clang:*[llvm_targets_NVPTX] )
+ doc? ( sys-apps/texinfo )
+"
+[[ ${PV} != 9999 ]] &&
+ BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-ffmpeg )"
+
+DOCS=( CREDITS Changelog README.md doc/APIchanges )
+[[ ${PV} != 9999 ]] && DOCS+=( RELEASE_NOTES )
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libavutil/avconfig.h
+)
+
+PATCHES=(
+ "${WORKDIR}"/patches
+)
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] || return
+
+ if use chromaprint && has_version 'media-libs/chromaprint[tools]'; then
+ ewarn "media-libs/chromaprint is installed with USE=tools which links to"
+ ewarn "ffmpeg, and USE=chromaprint is enabled on ffmpeg which links to"
+ ewarn "chromaprint (circular). This may cause issues when updating ffmpeg."
+ ewarn
+ ewarn "If get a build failure with 'ERROR: chromaprint not found' or so,"
+ ewarn "first rebuild chromaprint with USE=-tools, then rebuild ffmpeg, and"
+ ewarn "then finally rebuild chromaprint with USE=tools again (bug #862996)."
+ fi
+
+ [[ ${EXTRA_FFMPEG_CONF} ]] && # drop this eventually
+ die "EXTRA_FFMPEG_CONF is set in the environment, please use EXTRA_ECONF instead"
+}
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ else
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/ffmpeg-${PV}.tar.xz{,.asc} \
+ "${BROOT}"/usr/share/openpgp-keys/ffmpeg.asc
+ fi
+ default
+ fi
+}
+
+src_prepare() {
+ default
+
+ # respect user preferences
+ sed -i '/cflags -fdiagnostics-color/d' configure || die
+
+ # handle *FLAGS here to avoid repeating for each ABI below (bug #923491)
+ filter-lto
+ use elibc_musl && append-cppflags -D__musl__ #940733
+}
+
+multilib_src_configure() {
+ local conf=( "${S}"/configure ) # not autotools-based
+
+ local prefix=${EPREFIX}/usr
+ if [[ ! ${FFMPEG_UNSLOTTED} ]]; then
+ prefix+=/lib/ffmpeg${SLOT%/*}
+ # could get SONAME clashes, so prefer rpath over LDPATH
+ conf+=(
+ --enable-rpath
+ --disable-doc
+ )
+ fi
+
+ conf+=(
+ --prefix="${prefix}"
+ --libdir="${prefix}"/$(get_libdir)
+ --shlibdir="${prefix}"/$(get_libdir)
+ --mandir="${prefix}"/share/man # ignoring slotted MANPATH
+ --docdir="${EPREFIX}"/usr/share/doc/${PF}/html
+
+ --ar="$(tc-getAR)"
+ --cc="$(tc-getCC)"
+ --cxx="$(tc-getCXX)"
+ --nm="$(tc-getNM)"
+ --pkg-config="$(tc-getPKG_CONFIG)"
+ --ranlib="$(tc-getRANLIB)"
+ --disable-stripping
+
+ # overrides users' -g/-O, let *FLAGS handle these
+ --disable-debug
+ --disable-optimizations
+ --optflags=' '
+
+ # not worth supporting on this version, use ffmpeg-6+
+ --disable-lto
+
+ # basic defaults that should not really need a USE
+ --enable-iconv
+ --enable-pic
+ --enable-shared
+ --disable-static
+ $(multilib_native_enable manpages) # needs pod2man
+ --disable-podpages
+ --disable-txtpages
+
+ # disabled primarily due to being unpackaged
+ --disable-decklink
+ --disable-libdavs2
+ --disable-libklvanc
+ --disable-libmysofa
+ --disable-libopenvino
+ --disable-libshine
+ --disable-libtls
+ --disable-libuavs3d
+ --disable-libxavs
+ --disable-libxavs2
+ --disable-pocketsphinx
+ --disable-rkmpp
+ --disable-vapoursynth
+
+ # disabled for other or additional reasons
+ --disable-amf # may or may not be broken, use ffmpeg-6+ (bug #910271)
+ --disable-cuda-nvcc # prefer cuda-llvm for less issues
+ --disable-libcelt # obsolete (bug #664158)
+ --disable-libglslang # use ffmpeg-6+ with USE=shaderc instead
+ --disable-liblensfun # https://trac.ffmpeg.org/ticket/9112 (abandoned?)
+ --disable-libmfx # use ffmpeg-6+ with USE=qsv instead
+ --disable-libnpp # use ffmpeg-6+, ebuild support was only added there
+ --disable-libopencv # leaving for later due to circular opencv[ffmpeg]
+ --disable-librist # librist itself needs attention first (bug #822012)
+ --disable-libtensorflow # causes headaches, and is gone
+ --disable-libvmaf # use ffmpeg-6+ instead, needs old vmaf library
+ --disable-mbedtls # messy with slots, tests underlinking issues
+ --disable-mmal # unsupported
+ --disable-omx # unsupported (bug #653386)
+ --disable-omx-rpi # ^
+
+ # to avoid obscure issues like bug #915384 and simplify the ebuild,
+ # not passing the following (use EXTRA_ECONF if really must):
+ # --cpu: adds -march=<exact> after the user's more adapted
+ # =native, its logic also does not account for -mno-*
+ # --disable/enable-<cpufeature>: safer to detect at runtime
+ )
+
+ # broken on x32 (bug #427004), and not PIC safe on x86 (bug #916067)
+ [[ ${ABI} == @(x32|x86) ]] && conf+=( --disable-asm )
+
+ if tc-is-cross-compiler; then
+ conf+=(
+ --enable-cross-compile
+ --arch="$(tc-arch-kernel)"
+ --cross-prefix="${CHOST}-"
+ --host-cc="$(tc-getBUILD_CC)"
+ )
+ case ${CHOST} in
+ *mingw32*) conf+=( --target-os=mingw32 );;
+ *linux*) conf+=( --target-os=linux );;
+ esac
+ fi
+
+ # import options from FFMPEG_IUSE_MAP
+ local flag license mod v
+ local -A optmap=() licensemap=()
+ for v in "${FFMPEG_IUSE_MAP[@]}"; do
+ [[ ${v} =~ \+?([^:]+):?([^@]*)@?(.*) ]] || die "${v}"
+ flag=${BASH_REMATCH[1]}
+ license=${BASH_REMATCH[3]}
+ v=${BASH_REMATCH[2]:-${flag}}
+ for v in ${v//,/ }; do
+ mod=${v::1}
+ v=${v#[\!\^]}
+ if [[ ${mod} == '!' ]]; then
+ if use ${flag}; then
+ optmap[${v}]=--disable-${v}
+ unset licensemap[${v}]
+ fi
+ elif [[ ! -v optmap[${v}] ]]; then
+ if [[ ${mod} == '^' ]]; then
+ optmap[${v}]=$(multilib_native_use_enable ${flag} ${v})
+ else
+ optmap[${v}]=$(use_enable ${flag} ${v})
+ fi
+ use ${flag} && licensemap[${v}]=${license}
+ fi
+ done
+ done
+ for license in "${licensemap[@]}"; do
+ case ${license} in
+ v3ifgpl) use gpl || continue ;&
+ v3) optmap[v3]=--enable-version3 ;;
+ nonfree) use gpl && optmap[nonfree]=--enable-nonfree ;;
+ esac
+ done
+ conf+=(
+ "${optmap[@]}"
+ ${EXTRA_ECONF}
+ )
+
+ einfo "${conf[*]}" # no edo.eclass due to noisy long command in errors
+ "${conf[@]}" || die "configure failed, see ${BUILD_DIR}/ffbuild/config.log"
+}
+
+multilib_src_compile() {
+ emake V=1
+}
+
+multilib_src_test() {
+ local -x LD_LIBRARY_PATH=$(printf %s: "${BUILD_DIR}"/lib*)${LD_LIBRARY_PATH}
+ emake V=1 -k fate
+}
+
+multilib_src_install() {
+ emake V=1 DESTDIR="${D}" install
+}
diff --git a/media-video/ffmpeg-compat/ffmpeg-compat-6.1.2.ebuild b/media-video/ffmpeg-compat/ffmpeg-compat-6.1.2.ebuild
new file mode 100644
index 000000000000..bde869a247e0
--- /dev/null
+++ b/media-video/ffmpeg-compat/ffmpeg-compat-6.1.2.ebuild
@@ -0,0 +1,562 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic multilib-minimal toolchain-funcs
+
+FFMPEG_SOC_PATCH=ffmpeg-rpi-6.1-r3.patch
+FFMPEG_SUBSLOT=58.60.60 # avutil.avcodec.avformat SONAME
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI=(
+ https://git.ffmpeg.org/ffmpeg.git
+ https://github.com/FFmpeg/FFmpeg.git
+ )
+else
+ inherit verify-sig
+ SRC_URI="
+ https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz
+ verify-sig? ( https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz.asc )
+ ${FFMPEG_SOC_PATCH:+"
+ soc? (
+ https://dev.gentoo.org/~chewi/distfiles/${FFMPEG_SOC_PATCH}
+ verify-sig? ( https://dev.gentoo.org/~chewi/distfiles/${FFMPEG_SOC_PATCH}.asc )
+ )
+ "}
+ https://dev.gentoo.org/~ionen/distfiles/ffmpeg-$(ver_cut 1-2)-patchset-1.tar.xz
+ "
+ S=${WORKDIR}/ffmpeg-${PV} # avoid ${P}
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+fi
+
+DESCRIPTION="Complete solution to record/convert/stream audio and video"
+HOMEPAGE="https://ffmpeg.org/"
+
+[[ ${PN} == *-compat ]] && FFMPEG_UNSLOTTED= || FFMPEG_UNSLOTTED=1
+
+FFMPEG_IUSE_MAP=(
+ # [+]flag[:[^][!]opt1,...][@<v3|nonfree>]], ^ = native-only, ! = override
+ # remember to keep LICENSE, REQUIRED_USE, and RESTRICT in sync
+ X:libxcb,libxcb-shape,libxcb-shm,libxcb-xfixes,xlib
+ alsa
+ amf
+ amrenc:libvo-amrwbenc@v3
+ amr:libopencore-amrnb,libopencore-amrwb@v3
+ appkit
+ bluray:libbluray
+ bs2b:libbs2b
+ bzip2:bzlib
+ cdio:libcdio
+ chromaprint
+ codec2:libcodec2
+ cuda:cuda-llvm
+ +dav1d:libdav1d
+ doc:^htmlpages
+ +drm:libdrm
+ fdk:libfdk-aac@nonfree
+ flite:libflite
+ +fontconfig:libfontconfig
+ frei0r
+ fribidi:libfribidi
+ gcrypt
+ gme:libgme
+ gmp:@v3
+ +gnutls # unused if USE=openssl, default for bug #905113,#917627
+ +gpl
+ gsm:libgsm
+ iec61883:libiec61883
+ ieee1394:libdc1394
+ jack:libjack
+ jpeg2k:libopenjpeg
+ jpegxl:libjxl
+ kvazaar:libkvazaar
+ ladspa
+ lame:libmp3lame
+ lcms:lcms2
+ libaom
+ libaribb24:@v3 # reminder: req use on gpl unneeded if >=1.0.4 (not in tree)
+ +libass
+ libcaca
+ libilbc
+ libplacebo
+ librtmp:librtmp
+ libsoxr
+ libtesseract
+ lv2
+ lzma
+ modplug:libmodplug
+ npp:^libnpp@nonfree # no multilib
+ nvenc:cuvid,ffnvcodec,nvdec,nvenc
+ openal
+ opencl
+ opengl
+ openh264:libopenh264
+ openmpt:libopenmpt
+ openssl:openssl,!gnutls@v3ifgpl # still LGPL2.1+ if USE=-gpl
+ opus:libopus
+ +postproc # exposed as a USE for clarity with the GPL requirement
+ pulseaudio:libpulse
+ qsv:libvpl
+ rabbitmq:^librabbitmq # no multilib
+ rav1e:^librav1e # no multilib
+ rubberband:librubberband
+ samba:libsmbclient@v3 # GPL-3+ only
+ sdl:sdl2
+ shaderc:libshaderc
+ snappy:libsnappy
+ sndio
+ speex:libspeex
+ srt:libsrt
+ ssh:libssh
+ svg:librsvg
+ svt-av1:libsvtav1
+ theora:libtheora
+ +truetype:libfreetype,libharfbuzz
+ twolame:libtwolame
+ v4l:libv4l2
+ vaapi
+ vdpau
+ vidstab:libvidstab
+ vmaf:libvmaf
+ vorbis:libvorbis
+ vpx:libvpx
+ vulkan
+ webp:libwebp
+ x264:libx264
+ x265:libx265
+ +xml:libxml2
+ xvid:libxvid
+ zeromq:^libzmq # no multilib
+ zimg:libzimg
+ +zlib
+ zvbi:libzvbi
+)
+
+# all-rights is used to express the GPL incompatibility (RESTRICT=bindist)
+LICENSE="
+ gpl? (
+ GPL-2+
+ amr? ( GPL-3+ ) amrenc? ( GPL-3+ ) libaribb24? ( GPL-3+ )
+ gmp? ( GPL-3+ ) openssl? ( GPL-3+ )
+ fdk? ( all-rights-reserved ) npp? ( all-rights-reserved )
+ )
+ !gpl? (
+ LGPL-2.1+
+ amr? ( LGPL-3+ ) amrenc? ( LGPL-3+ ) libaribb24? ( LGPL-3+ )
+ gmp? ( LGPL-3+ )
+ )
+ samba? ( GPL-3+ )
+"
+[[ ${FFMPEG_UNSLOTTED} ]] && : 0 || : "$(ver_cut 1)"
+SLOT="${_}/${FFMPEG_SUBSLOT}"
+IUSE="
+ ${FFMPEG_IUSE_MAP[*]%:*}
+ ${FFMPEG_UNSLOTTED:+chromium}
+ ${FFMPEG_SOC_PATCH:+soc}
+"
+REQUIRED_USE="
+ cuda? ( nvenc )
+ fribidi? ( truetype )
+ gmp? ( !librtmp )
+ libplacebo? ( || ( sdl vulkan ) )
+ npp? ( nvenc )
+ shaderc? ( vulkan )
+ libaribb24? ( gpl ) cdio? ( gpl ) frei0r? ( gpl ) postproc? ( gpl )
+ rubberband? ( gpl ) samba? ( gpl ) vidstab? ( gpl ) x264? ( gpl )
+ x265? ( gpl ) xvid? ( gpl )
+ ${FFMPEG_UNSLOTTED:+chromium? ( opus )}
+ ${FFMPEG_SOC_PATCH:+soc? ( drm )}
+"
+RESTRICT="gpl? ( fdk? ( bindist ) npp? ( bindist ) )"
+
+# dlopen: amdgpu-pro-amf, vulkan-loader
+COMMON_DEPEND="
+ virtual/libiconv[${MULTILIB_USEDEP}]
+ X? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libXext[${MULTILIB_USEDEP}]
+ x11-libs/libXv[${MULTILIB_USEDEP}]
+ x11-libs/libxcb:=[${MULTILIB_USEDEP}]
+ )
+ alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
+ amr? ( media-libs/opencore-amr[${MULTILIB_USEDEP}] )
+ amrenc? ( media-libs/vo-amrwbenc[${MULTILIB_USEDEP}] )
+ bluray? ( media-libs/libbluray:=[${MULTILIB_USEDEP}] )
+ bs2b? ( media-libs/libbs2b[${MULTILIB_USEDEP}] )
+ bzip2? ( app-arch/bzip2[${MULTILIB_USEDEP}] )
+ cdio? ( dev-libs/libcdio-paranoia:=[${MULTILIB_USEDEP}] )
+ chromaprint? ( media-libs/chromaprint:=[${MULTILIB_USEDEP}] )
+ codec2? ( media-libs/codec2:=[${MULTILIB_USEDEP}] )
+ dav1d? ( media-libs/dav1d:=[${MULTILIB_USEDEP}] )
+ drm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
+ fdk? ( media-libs/fdk-aac:=[${MULTILIB_USEDEP}] )
+ flite? ( app-accessibility/flite[${MULTILIB_USEDEP}] )
+ fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] )
+ frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
+ fribidi? ( dev-libs/fribidi[${MULTILIB_USEDEP}] )
+ gcrypt? ( dev-libs/libgcrypt:=[${MULTILIB_USEDEP}] )
+ gme? ( media-libs/game-music-emu[${MULTILIB_USEDEP}] )
+ gmp? ( dev-libs/gmp:=[${MULTILIB_USEDEP}] )
+ gnutls? ( !openssl? (
+ net-libs/gnutls:=[${MULTILIB_USEDEP}]
+ ) )
+ gsm? ( media-sound/gsm[${MULTILIB_USEDEP}] )
+ iec61883? (
+ media-libs/libiec61883[${MULTILIB_USEDEP}]
+ sys-libs/libavc1394[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ ieee1394? (
+ media-libs/libdc1394:2=[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ jack? ( virtual/jack[${MULTILIB_USEDEP}] )
+ jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] )
+ jpegxl? ( media-libs/libjxl:=[$MULTILIB_USEDEP] )
+ kvazaar? ( media-libs/kvazaar:=[${MULTILIB_USEDEP}] )
+ lame? ( media-sound/lame[${MULTILIB_USEDEP}] )
+ lcms? ( media-libs/lcms:2[$MULTILIB_USEDEP] )
+ libaom? ( media-libs/libaom:=[${MULTILIB_USEDEP}] )
+ libaribb24? ( media-libs/aribb24[${MULTILIB_USEDEP}] )
+ libass? ( media-libs/libass:=[${MULTILIB_USEDEP}] )
+ libcaca? ( media-libs/libcaca[${MULTILIB_USEDEP}] )
+ libilbc? ( media-libs/libilbc:=[${MULTILIB_USEDEP}] )
+ libplacebo? ( media-libs/libplacebo:=[$MULTILIB_USEDEP] )
+ librtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] )
+ libsoxr? ( media-libs/soxr[${MULTILIB_USEDEP}] )
+ libtesseract? ( app-text/tesseract:=[${MULTILIB_USEDEP}] )
+ lv2? (
+ media-libs/lilv[${MULTILIB_USEDEP}]
+ media-libs/lv2[${MULTILIB_USEDEP}]
+ )
+ lzma? ( app-arch/xz-utils[${MULTILIB_USEDEP}] )
+ modplug? ( media-libs/libmodplug[${MULTILIB_USEDEP}] )
+ npp? ( dev-util/nvidia-cuda-toolkit:= )
+ openal? ( media-libs/openal[${MULTILIB_USEDEP}] )
+ opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
+ opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
+ openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
+ openmpt? ( media-libs/libopenmpt[${MULTILIB_USEDEP}] )
+ openssl? ( >=dev-libs/openssl-3:=[${MULTILIB_USEDEP}] )
+ opus? ( media-libs/opus[${MULTILIB_USEDEP}] )
+ pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
+ qsv? ( media-libs/libvpl:=[${MULTILIB_USEDEP}] )
+ rabbitmq? ( net-libs/rabbitmq-c:= )
+ rav1e? ( >=media-video/rav1e-0.5:=[capi] )
+ rubberband? ( media-libs/rubberband:=[${MULTILIB_USEDEP}] )
+ samba? ( net-fs/samba:=[client,${MULTILIB_USEDEP}] )
+ sdl? ( media-libs/libsdl2[sound(+),video(+),${MULTILIB_USEDEP}] )
+ shaderc? ( media-libs/shaderc[${MULTILIB_USEDEP}] )
+ snappy? ( app-arch/snappy:=[${MULTILIB_USEDEP}] )
+ sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] )
+ speex? ( media-libs/speex[${MULTILIB_USEDEP}] )
+ srt? ( net-libs/srt:=[${MULTILIB_USEDEP}] )
+ ssh? ( net-libs/libssh:=[sftp,${MULTILIB_USEDEP}] )
+ svg? (
+ dev-libs/glib:2[${MULTILIB_USEDEP}]
+ >=gnome-base/librsvg-2.52:2[${MULTILIB_USEDEP}]
+ x11-libs/cairo[${MULTILIB_USEDEP}]
+ )
+ svt-av1? ( >=media-libs/svt-av1-0.9:=[${MULTILIB_USEDEP}] )
+ theora? ( media-libs/libtheora[encode,${MULTILIB_USEDEP}] )
+ truetype? (
+ media-libs/freetype:2[${MULTILIB_USEDEP}]
+ media-libs/harfbuzz:=[${MULTILIB_USEDEP}]
+ )
+ twolame? ( media-sound/twolame[${MULTILIB_USEDEP}] )
+ v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
+ vaapi? ( media-libs/libva:=[X?,${MULTILIB_USEDEP}] )
+ vdpau? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libvdpau[${MULTILIB_USEDEP}]
+ )
+ vidstab? ( media-libs/vidstab[${MULTILIB_USEDEP}] )
+ vmaf? ( media-libs/libvmaf:=[${MULTILIB_USEDEP}] )
+ vorbis? ( media-libs/libvorbis[${MULTILIB_USEDEP}] )
+ vpx? ( media-libs/libvpx:=[${MULTILIB_USEDEP}] )
+ vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )
+ webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] )
+ x264? ( media-libs/x264:=[${MULTILIB_USEDEP}] )
+ x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
+ xml? ( dev-libs/libxml2[${MULTILIB_USEDEP}] )
+ xvid? ( media-libs/xvid[${MULTILIB_USEDEP}] )
+ zeromq? ( net-libs/zeromq:= )
+ zimg? ( media-libs/zimg[${MULTILIB_USEDEP}] )
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ zvbi? ( media-libs/zvbi[${MULTILIB_USEDEP}] )
+ ${FFMPEG_SOC_PATCH:+"
+ soc? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
+ "}
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ amf? ( media-video/amdgpu-pro-amf )
+"
+DEPEND="
+ ${COMMON_DEPEND}
+ X? ( x11-base/xorg-proto )
+ amf? ( media-libs/amf-headers )
+ kernel_linux? ( >=sys-kernel/linux-headers-6 )
+ ladspa? ( media-libs/ladspa-sdk )
+ nvenc? ( >=media-libs/nv-codec-headers-12.1.14.0 )
+ opencl? ( dev-util/opencl-headers )
+ vulkan? ( dev-util/vulkan-headers )
+"
+BDEPEND="
+ app-alternatives/awk
+ dev-lang/perl
+ virtual/pkgconfig
+ amd64? (
+ || (
+ dev-lang/nasm
+ dev-lang/yasm
+ )
+ )
+ cuda? ( llvm-core/clang:*[llvm_targets_NVPTX] )
+ doc? ( sys-apps/texinfo )
+"
+[[ ${PV} != 9999 ]] &&
+ BDEPEND+="
+ verify-sig? (
+ sec-keys/openpgp-keys-ffmpeg
+ ${FFMPEG_SOC_PATCH:+"
+ soc? ( >=sec-keys/openpgp-keys-gentoo-developers-20240708 )
+ "}
+ )
+ "
+
+DOCS=( CREDITS Changelog README.md doc/APIchanges )
+[[ ${PV} != 9999 ]] && DOCS+=( RELEASE_NOTES )
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libavutil/avconfig.h
+)
+
+PATCHES=(
+ "${WORKDIR}"/patches
+)
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] || return
+
+ if use chromaprint && has_version 'media-libs/chromaprint[tools]'; then
+ ewarn "media-libs/chromaprint is installed with USE=tools which links to"
+ ewarn "ffmpeg, and USE=chromaprint is enabled on ffmpeg which links to"
+ ewarn "chromaprint (circular). This may cause issues when updating ffmpeg."
+ ewarn
+ ewarn "If get a build failure with 'ERROR: chromaprint not found' or so,"
+ ewarn "first rebuild chromaprint with USE=-tools, then rebuild ffmpeg, and"
+ ewarn "then finally rebuild chromaprint with USE=tools again (bug #862996)."
+ fi
+
+ [[ ${EXTRA_FFMPEG_CONF} ]] && # drop this eventually
+ die "EXTRA_FFMPEG_CONF is set in the environment, please use EXTRA_ECONF instead"
+}
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ else
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/ffmpeg-${PV}.tar.xz{,.asc} \
+ "${BROOT}"/usr/share/openpgp-keys/ffmpeg.asc
+ in_iuse soc && use soc &&
+ verify-sig_verify_detached "${DISTDIR}"/${FFMPEG_SOC_PATCH}{,.asc} \
+ "${BROOT}"/usr/share/openpgp-keys/gentoo-developers.asc
+ fi
+ default
+ fi
+}
+
+src_prepare() {
+ in_iuse chromium && PATCHES+=( "${FILESDIR}"/chromium-r3.patch )
+ in_iuse soc && use soc && PATCHES+=( "${DISTDIR}"/${FFMPEG_SOC_PATCH} )
+
+ default
+
+ # respect user preferences
+ sed -i '/cflags -fdiagnostics-color/d' configure || die
+
+ # handle *FLAGS here to avoid repeating for each ABI below (bug #923491)
+ FFMPEG_ENABLE_LTO=
+ if tc-is-lto; then
+ : "$(get-flag flto)" # get -flto=<val> (e.g. =thin)
+ FFMPEG_ENABLE_LTO=--enable-lto${_#-flto}
+ fi
+ filter-lto
+
+ use elibc_musl && append-cppflags -D__musl__ #940733
+
+ if use npp; then
+ local cuda=${ESYSROOT}/opt/cuda/targets/$(usex amd64 x86_64 sbsa)-linux
+ append-cppflags -I"${cuda}"/include
+ append-ldflags -L"${cuda}"/lib
+ fi
+}
+
+multilib_src_configure() {
+ local conf=( "${S}"/configure ) # not autotools-based
+
+ local prefix=${EPREFIX}/usr
+ if [[ ! ${FFMPEG_UNSLOTTED} ]]; then
+ prefix+=/lib/ffmpeg${SLOT%/*}
+ # could get SONAME clashes, so prefer rpath over LDPATH
+ conf+=(
+ --enable-rpath
+ --disable-doc
+ )
+ fi
+
+ conf+=(
+ --prefix="${prefix}"
+ --libdir="${prefix}"/$(get_libdir)
+ --shlibdir="${prefix}"/$(get_libdir)
+ --mandir="${prefix}"/share/man # ignoring slotted MANPATH
+ --docdir="${EPREFIX}"/usr/share/doc/${PF}/html
+
+ --ar="$(tc-getAR)"
+ --cc="$(tc-getCC)"
+ --cxx="$(tc-getCXX)"
+ --nm="$(tc-getNM)"
+ --pkg-config="$(tc-getPKG_CONFIG)"
+ --ranlib="$(tc-getRANLIB)"
+ --disable-stripping
+
+ # overrides users' -g/-O, let *FLAGS handle these
+ --disable-debug
+ --disable-optimizations
+ --optflags=' '
+
+ # pass option over *FLAGS due to special logic (bug #566282,#754654)
+ ${FFMPEG_ENABLE_LTO}
+
+ # basic defaults that should not really need a USE
+ --enable-iconv
+ --enable-pic
+ --enable-shared
+ --disable-static
+ $(multilib_native_enable manpages) # needs pod2man
+ --disable-podpages
+ --disable-txtpages
+
+ # disabled primarily due to being unpackaged
+ --disable-decklink
+ --disable-libaribcaption
+ --disable-libdavs2
+ --disable-libklvanc
+ --disable-libmysofa
+ --disable-libopenvino
+ --disable-libshine
+ --disable-libtls
+ --disable-libuavs3d
+ --disable-libxavs
+ --disable-libxavs2
+ --disable-pocketsphinx
+ --disable-rkmpp
+ --disable-vapoursynth
+
+ # disabled for other or additional reasons
+ --disable-cuda-nvcc # prefer cuda-llvm for less issues
+ --disable-libcelt # obsolete (bug #664158)
+ --disable-libglslang # prefer USE=shaderc (bug #918989,#920283,#922333)
+ --disable-liblensfun # https://trac.ffmpeg.org/ticket/9112 (abandoned?)
+ --disable-libmfx # prefer libvpl for USE=qsv
+ --disable-libopencv # leaving for later due to circular opencv[ffmpeg]
+ --disable-librist # librist itself needs attention first (bug #822012)
+ --disable-libtensorflow # causes headaches, and is gone
+ --disable-mbedtls # messy with slots, tests underlinking issues
+ --disable-mmal # prefer USE=soc
+ --disable-omx # unsupported (bug #653386)
+ --disable-omx-rpi # ^
+
+ # to avoid obscure issues like bug #915384 and simplify the ebuild,
+ # not passing the following (use EXTRA_ECONF if really must):
+ # --cpu: adds -march=<exact> after the user's more adapted
+ # =native, its logic also does not account for -mno-*
+ # --disable/enable-<cpufeature>: safer to detect at runtime
+ )
+
+ in_iuse soc && use soc &&
+ conf+=(
+ --disable-epoxy
+ --enable-libudev
+ --enable-sand
+ --enable-v4l2-request
+ )
+
+ # broken on x32 (bug #427004), and not PIC safe on x86 (bug #916067)
+ [[ ${ABI} == @(x32|x86) ]] && conf+=( --disable-asm )
+
+ if tc-is-cross-compiler; then
+ conf+=(
+ --enable-cross-compile
+ --arch="$(tc-arch-kernel)"
+ --cross-prefix="${CHOST}-"
+ --host-cc="$(tc-getBUILD_CC)"
+ )
+ case ${CHOST} in
+ *mingw32*) conf+=( --target-os=mingw32 );;
+ *linux*) conf+=( --target-os=linux );;
+ esac
+ fi
+
+ # import options from FFMPEG_IUSE_MAP
+ local flag license mod v
+ local -A optmap=() licensemap=()
+ for v in "${FFMPEG_IUSE_MAP[@]}"; do
+ [[ ${v} =~ \+?([^:]+):?([^@]*)@?(.*) ]] || die "${v}"
+ flag=${BASH_REMATCH[1]}
+ license=${BASH_REMATCH[3]}
+ v=${BASH_REMATCH[2]:-${flag}}
+ for v in ${v//,/ }; do
+ mod=${v::1}
+ v=${v#[\!\^]}
+ if [[ ${mod} == '!' ]]; then
+ if use ${flag}; then
+ optmap[${v}]=--disable-${v}
+ unset licensemap[${v}]
+ fi
+ elif [[ ! -v optmap[${v}] ]]; then
+ if [[ ${mod} == '^' ]]; then
+ optmap[${v}]=$(multilib_native_use_enable ${flag} ${v})
+ else
+ optmap[${v}]=$(use_enable ${flag} ${v})
+ fi
+ use ${flag} && licensemap[${v}]=${license}
+ fi
+ done
+ done
+ for license in "${licensemap[@]}"; do
+ case ${license} in
+ v3ifgpl) use gpl || continue ;&
+ v3) optmap[v3]=--enable-version3 ;;
+ nonfree) use gpl && optmap[nonfree]=--enable-nonfree ;;
+ esac
+ done
+ conf+=(
+ "${optmap[@]}"
+ ${EXTRA_ECONF}
+ )
+
+ einfo "${conf[*]}" # no edo.eclass due to noisy long command in errors
+ "${conf[@]}" || die "configure failed, see ${BUILD_DIR}/ffbuild/config.log"
+}
+
+multilib_src_compile() {
+ emake V=1
+ in_iuse chromium && use chromium && multilib_is_native_abi &&
+ emake V=1 libffmpeg
+}
+
+multilib_src_test() {
+ local -x LD_LIBRARY_PATH=$(printf %s: "${BUILD_DIR}"/lib*)${LD_LIBRARY_PATH}
+ emake V=1 -k fate
+}
+
+multilib_src_install() {
+ emake V=1 DESTDIR="${D}" install
+ in_iuse chromium && use chromium && multilib_is_native_abi &&
+ emake V=1 DESTDIR="${D}" install-libffmpeg
+}
diff --git a/media-video/ffmpeg-compat/metadata.xml b/media-video/ffmpeg-compat/metadata.xml
new file mode 100644
index 000000000000..895198538495
--- /dev/null
+++ b/media-video/ffmpeg-compat/metadata.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>ionen@gentoo.org</email>
+ <name>Ionen Wolkens</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>chewi@gentoo.org</email>
+ <name>James Le Cuirot</name>
+ <description>soc USE flag</description>
+ </maintainer>
+ <use>
+ <flag name="amf">Enable AMD's Advanced Media Framework support via <pkg>media-video/amdgpu-pro-amf</pkg></flag>
+ <flag name="amr">Enable Adaptive Multi-Rate Audio support via <pkg>media-libs/opencore-amr</pkg></flag>
+ <flag name="amrenc">Enable Adaptive Multi-Rate Audio encoding support via <pkg>media-libs/vo-amrwbenc</pkg></flag>
+ <flag name="appkit">Enable Apple AppKit framework</flag>
+ <flag name="bluray">Enable Blu-ray filesystems reading support via <pkg>media-libs/libbluray</pkg></flag>
+ <flag name="bs2b">Enable Bauer Stereo-to-Binaural filter support via <pkg>media-libs/libbs2b</pkg></flag>
+ <flag name="cdio">Enable audio CDs reading via <pkg>dev-libs/libcdio-paranoia</pkg></flag>
+ <flag name="chromaprint">Enable audio fingerprinting support via <pkg>media-libs/chromaprint</pkg></flag>
+ <flag name="codec2">Enable codec2 low bit rate speech codec support via <pkg>media-libs/codec2</pkg></flag>
+ <flag name="cuda">Enable support for various GPU-accelerated filters using NVIDIA PTX compiled with <pkg>llvm-core/clang</pkg></flag>
+ <flag name="dav1d">Enable AV1 decoding support via <pkg>media-libs/dav1d</pkg></flag>
+ <flag name="drm">
+ Enable use of <pkg>x11-libs/libdrm</pkg> for various hardware
+ accelerated functions and Kernel Mode Setting screen capture
+ </flag>
+ <flag name="fdk">
+ Enable AAC (Advanced Audio Coding) encoding support via
+ <pkg>media-libs/fdk-aac</pkg> in addition to FFmpeg's own
+ implementation (warning: if USE=gpl is enabled, this produces
+ a non-redistributable build)
+ </flag>
+ <flag name="flite">Enable text-to-speech filter support via <pkg>app-accessibility/flite</pkg></flag>
+ <flag name="frei0r">Enable use of filters through <pkg>media-plugins/frei0r-plugins</pkg></flag>
+ <flag name="fribidi">Enable Bidi support for the drawtext filter via <pkg>dev-libs/fribidi</pkg></flag>
+ <flag name="gcrypt">
+ Enable using <pkg>dev-libs/libgcrypt</pkg> for rtmp(t)e support (not
+ needed if using any of USE=gmp,librtmp,openssl), and for obtaining
+ random bytes (not needed if USE=openssl)</flag>
+ <flag name="gme">Enables various game music formats support via <pkg>media-libs/game-music-emu</pkg></flag>
+ <flag name="gnutls">
+ Enable using <pkg>net-libs/gnutls</pkg> for TLS/HTTPS support
+ and other minor functions (has no effect if USE=openssl is set)
+ </flag>
+ <flag name="gpl">Enable use of GPL licensed code, should be kept enabled unless LGPL binaries are needed</flag>
+ <flag name="iec61883">Enable FireWire DV/HDV input device support via <pkg>media-libs/libiec61883</pkg></flag>
+ <flag name="kvazaar">Enable H.265/HEVC encoding support via <pkg>media-libs/kvazaar</pkg></flag>
+ <flag name="lcms">Enable ICC profile support via <pkg>media-libs/lcms</pkg></flag>
+ <flag name="libaom">
+ Enable AV1 de/encoding via <pkg>media-libs/libaom</pkg> (warning: this
+ is the reference implementation and is slower than the alternatives)
+ </flag>
+ <flag name="libaribb24">Enable ARIB text and caption decoding via <pkg>media-libs/aribb24</pkg></flag>
+ <flag name="libilbc">Enable internet Low Bitrate Codec de/encoding support via <pkg>media-libs/libilbc</pkg></flag>
+ <flag name="libplacebo">Enable use of GPU-accelerated filters from <pkg>media-libs/libplacebo</pkg></flag>
+ <flag name="librtmp">
+ Enable Real Time Messaging Protocol support via <pkg>media-video/rtmpdump</pkg>
+ in addition to FFmpeg's own implementation
+ </flag>
+ <flag name="libsoxr">Enable use of the audio resampler from <pkg>media-libs/soxr</pkg></flag>
+ <flag name="libtesseract">Enable Optical Character Recognition (OCR) filter support via <pkg>app-text/tesseract</pkg></flag>
+ <flag name="lv2">Enable use of filters through <pkg>media-libs/lv2</pkg></flag>
+ <flag name="npp">
+ Enable Nvidia Performance Primitives-based filters via
+ <pkg>dev-util/nvidia-cuda-toolkit</pkg> (warning: if USE=gpl
+ is enabled, this produces non-redistributable build)
+ </flag>
+ <flag name="openh264">Enable H.264 encoding support via <pkg>media-libs/openh264</pkg></flag>
+ <flag name="openmpt">Enable MPTM tracked music files decoding support via <pkg>media-libs/libopenmpt</pkg></flag>
+ <flag name="openssl">
+ Enable using <pkg>dev-libs/openssl</pkg> for TLS/HTTPS support
+ and other minor functions (USE=gnutls has no effect if set)
+ </flag>
+ <flag name="postproc">
+ Enable libpostproc video post processing library support
+ (should not disable this unless need to disable USE=gpl)
+ </flag>
+ <flag name="qsv">Enable Intel Quick Sync Video support via <pkg>media-libs/libvpl</pkg></flag>
+ <flag name="rabbitmq">Enable AMQP stream support via <pkg>net-libs/rabbitmq-c</pkg></flag>
+ <flag name="rav1e">Enable AV1 encoding support via <pkg>media-video/rav1e</pkg></flag>
+ <flag name="rubberband">Enable time-stretching and pitch-shifting audio filter support via <pkg>media-libs/rubberband</pkg></flag>
+ <flag name="sdl">Enable use of the Simple Direct Layer library (required for the ffplay command)</flag>
+ <flag name="shaderc">Enable support for various GPU-accelerated filters using Vulkan compiled with <pkg>media-libs/shaderc</pkg></flag>
+ <flag name="snappy">
+ Enable Snappy compression support via <pkg>app-arch/snappy</pkg>
+ (required for Vidvox Hap encoder support)
+ </flag>
+ <flag name="sndio">Enable audio output support via <pkg>media-sound/sndio</pkg></flag>
+ <flag name="soc">Apply additional patches for efficient playback on some SoCs (e.g. ARM, RISC-V)</flag>
+ <flag name="srt">Enable Secure Reliable Transport (SRT) support via <pkg>net-libs/srt</pkg></flag>
+ <flag name="ssh">Enable SSH/SFTP support via <pkg>net-libs/libssh</pkg></flag>
+ <flag name="svt-av1">Enable AV1 encoding support via <pkg>media-libs/svt-av1</pkg></flag>
+ <flag name="truetype">
+ Enable drawtext filter support via <pkg>media-libs/freetype</pkg>
+ and <pkg>media-libs/harfbuzz</pkg>
+ </flag>
+ <flag name="twolame">
+ Enable MP2 encoding support via <pkg>media-sound/twolame</pkg>
+ in addition to FFmpeg's own implementation
+ </flag>
+ <flag name="vidstab">Enable video stabilization filter support via <pkg>media-libs/vidstab</pkg></flag>
+ <flag name="vmaf">Enable Netflix's perceptual video quality assessment filter support via <pkg>media-libs/libvmaf</pkg></flag>
+ <flag name="vpx">
+ Enable VP8 and VP9 de/encoding support via <pkg>media-libs/libvpx</pkg>
+ in addition to FFmpeg's own implementation (for decoding only)
+ </flag>
+ <flag name="x265">Enable H.265/HEVC encoding support via <pkg>media-libs/x265</pkg></flag>
+ <flag name="xml">Enable Dynamic Adaptive Streaming over HTTP (DASH) stream support using <pkg>dev-libs/libxml2</pkg></flag>
+ <flag name="zeromq">Enable ZMQ command receiver filter and streaming support via <pkg>net-libs/zeromq</pkg></flag>
+ <flag name="zimg">Enable zscale filter support using <pkg>media-libs/zimg</pkg></flag>
+ <flag name="zvbi">Enable teletext decoding support via <pkg>media-libs/zvbi</pkg></flag>
+ </use>
+ <upstream>
+ <bugs-to>https://trac.ffmpeg.org/</bugs-to>
+ <doc>https://ffmpeg.org/documentation.html</doc>
+ <remote-id type="cpe">cpe:/a:ffmpeg:ffmpeg</remote-id>
+ <remote-id type="github">FFmpeg/FFmpeg</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/media-video/ffmpeg/Manifest b/media-video/ffmpeg/Manifest
index 6f2a41e94f19..93c7025a9168 100644
--- a/media-video/ffmpeg/Manifest
+++ b/media-video/ffmpeg/Manifest
@@ -1,5 +1,6 @@
AUX chromium-r1.patch 1582 BLAKE2B 48547a7d53fd1f0f44b682c7e2306e79f007f8e96b36253f76775c4a3ced54ffaaf403dfaae94e81aa26c60887677b2dabdd2c5cef9fc4553e203f8259453910 SHA512 808daad5afed13a6d3926c9f9ab5cb58f80e16969533022c7ee959147908bb2c12d066d2125a6b6975ef9304d9b8d49c39aeb0a047009adabb4529e3cf54498f
AUX chromium-r2.patch 1602 BLAKE2B e3f5441dfb3b8b6975da9dc6c1283c814fae24d0c373b86a2b6b8706d7169a63504f258fcef57c28f738aa7dba0b1f3186afebe45e13e1ab14b7538bdeb1b86e SHA512 31ff29d8fdf91cb4151a6a32902aaac55bb0062383619a655db20351582a88c487da528c6cf319717e4f39a140e3721de9d499c3e96ca0ea231aa4651f41ed9d
+AUX chromium-r3.patch 1878 BLAKE2B fc3b2344c8819f66f94b75911854193a1a6e8760a7767ab1e3deb966ab1587f426b14076705dae5dc76916bce07301747fe9c8c1d7268eed408594b1dad0b615 SHA512 e685946343bc0f0384b612ca1b009f1c5f03de03b4ac4e029e16ef720e28eaa59af6d692fb1d70822c191501e9c6cc374533f90581564aa8830122ab511db727
AUX chromium.c 215 BLAKE2B 2b5149d401433a362149cd4ff020cdc2217388e3ecac4aef86e7a46c7abb0d13a050eb61eab859578ecb9682e075451e2ccf7c2bda5c7ec397f71b9d06c1cf48 SHA512 552ef0a6316e743be717bdb8f49b69ab0b2acda828ff87f581aaf816d403ff59d5153a57f0bfd3b64e37a4fb8d261f0449b520b7e26feb7fd444cb480dc895b5
AUX ffmpeg-4.4.3-get_cabac_inline_x86-32-bit.patch 1068 BLAKE2B b547cd925bfd506e08d44395c67916fe20b30f397a36adf53fcf277660c45aef9d3d8c014b2bbfcf038539618affb9dd8ff5d93f2fe622e4282c61c4d1b26861 SHA512 779e921e783b800e6bf9bc95af73d44a170287676d17bc22f2b7cd91e393f410ec3f6c7bfa173497443a65496047f39f37cac1d56507271411893c5bdcb37d8b
AUX ffmpeg-4.4.4-amd-av1-vaapi.patch 11092 BLAKE2B d3561619dd226102116c729475691a4d10382abbe09be3ca79beed61c4b785e76e01d13ef956fce5233a8d525d84b27cb191bb91bc1b9538e72794b98ac31c6a SHA512 3ef47e1f6ab0eacc7a17ee31fcf0ccd6e90812689cd94cbfd4763db57aadff09eafb6dca7a20931bc95208109c6fd00370d6b9a6b3cb9d1bfe55b2436fd5eda8
@@ -17,31 +18,31 @@ AUX ffmpeg-6.1-opencl-parallel-gmake-fix.patch 370 BLAKE2B 46afba747d26105e55203
AUX ffmpeg-6.1-wint-conversion.patch 3514 BLAKE2B fcb65b882af964a8f45f71ea3f885fc016e3f89c3d6f0bd6d661d489715c0f746e763a86c6ade1515e212b01559d90ea9c2a97c965e0c0f9087b8396cdd58414 SHA512 7e09fc1a811a21aee9eef0370e57a37817652229a6b0e58cd2e8723e8336124396fe40f6a7c6c5f860046410596027d27d900371ff86609b86ef94dd0633977f
AUX ffmpeg-6.1.1-amd-av1-vaapi.patch 11069 BLAKE2B f30d00fd00215b8753ba720bde8b040f03fadb9ae6d1e3ebf98ae20564104a55aa220ac91ab082e3086943677a9be6d8b709170765605ecb681458ad215e44d9 SHA512 cf8127f3e50c28824367ca489568eb1e8ff11207291b2354d4bf8027a2bc4a884e24e76bad4fd023cf80268c04e0893f3d6d1fbd8ccf4b9c5e69b74ae41775d4
AUX ffmpeg-6.1.1-incmptbl-pntr-types.patch 2314 BLAKE2B cfd05bdec613ec3c7c7a57f294b2d56959bb062eb2bfac8f799784bf913601b7a455d7e8d706054b32ac94c894773edc37417ac022cbbd64f5faca53c0193118 SHA512 c3b4abca88d831ddfefd9639fb26df636ba0fb0f5a502c30fe26d0672b8a3e0168af098647c0204c56857b46fa22add3c880bef737592a6c35f85f191eabafd4
-AUX ffmpeg-6.1.1-memory-leak.patch 4184 BLAKE2B 93499876d5bab3dede021f646146f449d209f520ace803d9d46b0132d32aaea2bf6047c67f8804545a8eb90530c8884f5c687836cff2af111baeb52bbf1884ba SHA512 926c662c27f379c9f91ee48eb23090ba7d0c429a0e00a1ebc0fcba75657c0091da1a1b11441a61cfa77e6ba659906127bf3a51ad17d9ff921455d5495381b658
-AUX ffmpeg-6.1.1-vulkan-rename.patch 5784 BLAKE2B 25e85dc0e5d3915a709d86be60a938f4669d87a370c98bd5d17b94fd3e1fec4ae78a6fc696dd862ce5c932987aac601dfcf8f8c8a6a2acd8adf6166a4368b11d SHA512 f7d2a10b1c143d9ddbc08f0faa96ccabbbadb7ab2e293cef53f77f93b44560bf099b4a40e434295925683963887afaf34ee28052737b4207ca531d399e0243f5
AUX ffmpeg-6.1.1-wint-inconversion-libgcrypt.patch 3442 BLAKE2B 21d441dd39595c13b7be7407c774a9e3a9d4ae8b2334aeed79d2fa5b88f4c637665b782b0705fabe6283062549138453fb01d1c1d4bbcd799474a7590e59ed75 SHA512 aa8c0c259e7ab98afd608e4c2167eebe4e373000713c84a2052b9836cd04a029d6123bc1ce27a84589048ee3634ab8b30a8e501ff48394d3fccf9f13c85273af
AUX ffmpeg-6.1.1-wint-inconversion-vulkan.patch 1565 BLAKE2B 275132b55cdd9b6e1671dc2db5cf5aea1b6198d0942f2ecda5078902ad62172742bf29e17ba63847133b7eb3ff93ccb832ad92e7a7c42ab8c8cc917e964be888 SHA512 fef857daa13fe2b146d22764ede340ccf348d21beda5db4635273c37e22acb054e9d000466fd06b057c97187ba406e5fb08b929808b49e64d67ffcfa0e459a9e
+AUX ffmpeg-7.1.1-svt-av1-3.patch 522 BLAKE2B d5a4fccee8ba6c90e3bf606c21deff17f58303aa244d44279d09225608af6cc213169deda3e16b160af4a912c2eb30ab9f45459811ae77b0297f05a3851af98b SHA512 9affc7f64ceb77e3da0679e6721572a9c638a4d99e06976f989562bd7babc3ad3090c2729f009a84de5e19d5aeeb6056d977aeb6bff381675f4ec3efdcb3e9bc
AUX vmaf-models-default-path.patch 1126 BLAKE2B 71f83765dc89b85e929af393f9d1415d119e71a91aaf45e8a32fd4fff270a129ca797c3b383a6074bea32fb582816660022a59d33bb6f557514df038baaf0271 SHA512 4d21f4b1622d8e47d2821ecac6b893847ada74d75db7d8aaac70efc7e6e7a6607c011b6fb2d015cb0c5e05f6a56e4feed43eca7d35b0f686a68261e6d9981b6a
+DIST ffmpeg-4.4-patchset-1.tar.xz 9916 BLAKE2B 9b41de6b048601f2af41864c3262b3348330f792eea71df4cfab5e740626ee6c633ac5569e6e91d953143f6ad0fac15c840ef0643925e91261f8b4a32e2d386c SHA512 b11d9e182ddb0a48f50d63f5e0bd7fd99f4b8fa7dd17179a3bfbc9419dabb76401408a81ae2d5f118fbf67f28dcfdc3bfb5b7ac70f740259e3ebad8d1ba049bb
DIST ffmpeg-4.4.5.tar.xz 9575596 BLAKE2B 546df09f7731d22e532a18d9ba9be184283f62b7a2e9470e745e536802bc2263a00f11ed6ab0aee8fc60c5f728826311cbf3542084ba3a64b65a61d76295cd64 SHA512 70df4e63ef507a7ec76da34438142499139769728fd5130d9cf48d56c110ec82c3d6a7e6d1622da03c70167fa861d901d016bbe52c21d2b284b8a0d9f30811dc
DIST ffmpeg-4.4.5.tar.xz.asc 520 BLAKE2B 505987208ed58b548f910299adb1324e6eba655cc37e6f03cac32c8623e16a4a884e822c745fb72b1934129a8c0a2706bb8bfb785715e6a68e43f737cb8ed365 SHA512 bcfee8986681dfbefd3add741fcbbc5e223bb06c9800797e68fde968c114055ac3fc02ce8731ed269bf30c92d6c990c7f636f82d42379920012e8a0ace8d527e
-DIST ffmpeg-6.1.1.tar.xz 10458600 BLAKE2B 77827ff92b47c773ed82e7b7793dbb135c370fe23501169cb1eab08ff5ede77cfd5b397e8fb1d38756812cc82277898fd5c74b7d8495842556570c0c5570daeb SHA512 fca3f8635f29182e3ae0fe843a8a53614e4b47e22c11508df3ff7cdbafbb4b5ee0d82d9b3332871f7c1032033b1cad2f67557d7c5f7f7d85e2adadca122965d5
-DIST ffmpeg-6.1.1.tar.xz.asc 520 BLAKE2B 801cd976d10363d1f9fc302351b330cb57e609a266407627ef378172f28974f4a18435b8a77b9cc7a8ff7b75701185211739f685629bbda961c3588c15af1221 SHA512 0e10c1f560bab0812d759d286656593dea5940f02bb52d88d9ba7f10b12b9cc3d7aa2a41c5f7a45b319069e04dce22dc1286b3c1ba685b35cd6d04cd81c5a0f5
+DIST ffmpeg-6.1-patchset-1.tar.xz 11296 BLAKE2B 5227d0c7f52a4f217d5517da11c2327585375c9d860f31415e1079f4f1f9186637e07c7da0e168c732cc7abb953440f0ba952395db83074588eb31bee1d5bc9f SHA512 20fe94536a5c3873d0126ff535a3bff595dedc7787162f160ecde6cbd357b9eb3749c9d7b7543aa39896ceb4e656494d31811bf26682776cdfc693fe030cd77b
DIST ffmpeg-6.1.2.tar.xz 10466152 BLAKE2B ff1f2b2bb60ccc4c37b6ffda2a0e6a0be80c451dc99f6d4a99bd95a1bdc44c494d62377c53383ccfb5b818573a1971948d7db34119099dbc56d7258724831d3c SHA512 3a009184d971fc3168e1322d1d724aae787ed0e9c152d8d1813ea0b9099bda3b35c41fcabbd7b140560e7a8fa9fa1ffd7f0938432d5d498c43829fc6cc3d9e08
DIST ffmpeg-6.1.2.tar.xz.asc 520 BLAKE2B f26a2d6f5423f93090f2a448172e49f3858aeb5a00f326207d374bbb70fa8942c7ee1a7c55338b2db664b647c983cd5ab4fd8d71efe5c37af4c90385ca17d0ab SHA512 a26dba1f4870b964080b45f8468f5ce3591eb6aa69be426bf4afbe5a60c3cbd0fe5056dc86ca7bb817c04ae30d39160cb7773772a9a2123ae7f095b18a6d7050
-DIST ffmpeg-7.0.2.tar.xz 10795332 BLAKE2B f6536f41f784f1b49ed0728d80a522676dfe1facbeb7fec3f7796683ce28c73e41508f9a5dd1e5cd18d3ff787d562bb1e6a5085ee0660076b84a76040587e5a8 SHA512 2fc66e919db53f6b12f845c0f9b92f3d8a7ec1db1ff533d29e679a6524f32567babf2d0791da039dcf2918c4d4cbb3f99c2898d3795345f03112238af8edcbd9
-DIST ffmpeg-7.0.2.tar.xz.asc 520 BLAKE2B edaadb45588938a524b64d82f96d224c2060648c10649adeba4a3546863eea45b674ebca80e7839e92138ae0b375afd22e0b4552d4d5a68dbb021e706f965b6d SHA512 b41eeb8044754bfcf2cf67a3ed4a4e74194ee6e5f4ed5f03aa03bb68772f6bacd7a1839d8e9740573889230a71d3bc7d52b4625542f4c892e8de8c61deda2c51
+DIST ffmpeg-7.1.1.tar.xz 11019500 BLAKE2B 85d1850bfa39ec28d358b5454daa7c1cf8580af73a6f83e7c070ea94db40ad485adbaeb89e886e0b3908e0f1765bd9f2b40ddd838e33e0a76e5b286917535310 SHA512 42486e485c8fc6f3ec61598a1a7cb40360535762b3fcf28c10d7c6840bc55afe3334434912746e69eef862d3cedf45a02953bde73d38547d2d9a7a38a65e123a
+DIST ffmpeg-7.1.1.tar.xz.asc 520 BLAKE2B 3bb276ab356ba50a805a76e3e3cd2113141c28daf69d1f43aceded79769fffd686729f9db99df1046c88d5c1a6f12d224e34ddf409aa9989acfa87ebbbcd0155 SHA512 480846fd939d00f2ea90c0256081519a6996c7a990d0f66444a7ae1bce2e5ad6380f5d751efc9bde18da9c4d34738ade57dd66288b989dfd074c484562e20e75
DIST ffmpeg-7.1.tar.xz 11011364 BLAKE2B 91b012d12a0f2bc1742d7d2e634e358d5d10976ad1fd0c44f40fa7a0fd102bc11e3b51237c2e3b0baa4b4d7d505e21d4336baa3293b20a7c4e3a0433dfc53362 SHA512 7282fff068452bf154b2bf814e7f20d44ed4d961687dffd841bd77b88f26d9eee2cf4cf02e9a60b48b50e77a0c34731580d9e7c0945e3bc14c8ace840d920cde
DIST ffmpeg-7.1.tar.xz.asc 520 BLAKE2B f7bfc9633a88b172c3d2b17eb612dd8fb619bef3f8aa22fcefecde7c8026aeff3978155aebd281937eafaf61f1c4ad18d3adeafdc2d8c4289f4f9312f3fc58db SHA512 063daa6007abb86de454ba61ba47c75d8251fac07e1b2366aab022a7d80d0bb658f678f2ca2f7c422ad3f5d289201509818f312fe81d72a4176954184b5f2fe6
DIST ffmpeg-rpi-6.1-r3.patch 800738 BLAKE2B b7e449ee5eec8b50a3b3bba233c5269f3b6845dbd18a619b844c841a97345ce24c7a5d7f4da05b08e3cb49668426b9044f3d3553d9c2ef3a50aec7199bfa3c09 SHA512 aeaf12afabf5f2192fb0b6ef47397d8477b109e49cee8c02a890d1656a27b1985c62c719ef72966d8c97b0709918233b65ea2e0ef988771507e4be137fcd9158
DIST ffmpeg-rpi-6.1-r3.patch.asc 833 BLAKE2B 31fd5823c06d5884f7b0980de9072c35bbf4e1d6c0ed20b089439325d50956127238ca29469b003dba623b888a5aae3c4d8ad177862534e77b8e51f29cbed96c SHA512 3d8943b7151e20f73e9c14b121c501847bd7e01f2cf57ff135fc8c223653ec9d433bfe4012fa564f70c0471980b66d7ec3d9b5b1b14865187187719ba110cb5f
-DIST ffmpeg-rpi-7.0.patch 807653 BLAKE2B 2d7d4fb55313c0ea227bf714af08fe17c118969aef972cf85bd8bf33643da08b2a224b2ea7c369a58e62fb758c0e8747c6cc6694672b889016fdb16b3d33f530 SHA512 cf65f68f6b0fa351d273c1b4fd74fca63a40cbd802bcd14124018784164fd1c6a09de3d9b0e0631eaf4c8b4fbcb846cc47a7831ad70eb0cfac6d21a51bd09941
-DIST ffmpeg-rpi-7.0.patch.asc 833 BLAKE2B 3086d77e2cc05b7c295fcaef26a9a0d32775999d1bab9075eeeb0a80804b35928698efe870a432558ece55d7873e016422a00013e7d0cca160b71172c31ab449 SHA512 cc885f01b9547f17c6ef1d26d7d1d053186fdf57aa31c0a411a2ab1c0246cec9c2aeef8687e7f8eb0c998d3379712541c60432bc2521a3db1b45d72d316c2d2b
+DIST ffmpeg-rpi-7.1.1.patch 847869 BLAKE2B efc3fef1810034b40eee1f637499171529fc6027c4fc0ef66da587c704a7742b454903aa060b21305e1d9a714eb31d96cd93f93d7cadb5815a0de22ac040b9e1 SHA512 a3f9013aec9b17e0fc1689d946e57e251a88eac3f9e7856d46fe9614fea29211feaf106d32a31f97c0e8c83c1685ca454c31f9bcb5dafb669a0933d683e581c8
+DIST ffmpeg-rpi-7.1.1.patch.asc 833 BLAKE2B a30e8d0216325ac86a3b7f8ac132a61a1d3eb97eff5e758cdad5af89e74ecfb577bda6438b263651d772b265a38f8ac6bf5056598f6f707411236245f939045a SHA512 a75547b38ab1445b94fea2d38f60c93092a70ecd45ec6ec0830084280d684c631a49ccbf46327ac4052ade3e7934b257f8d2c3aa107950ec9da0e66873f3e5be
DIST ffmpeg-rpi-7.1.patch 759127 BLAKE2B 90588440a30ba6cd1cb32e92cccc1ae11a85d518f654a9e8148564b843553af911f33ee0fa938d56fe175c27dab95bdeaa4aa2296ced493e8e7aaab7a5d02e47 SHA512 675a4c8197a59b11e014dd2344b6d7262ea0fbb97c34b1f038d94904759cad8888fd396611e0137b0e196996ab2123db72ddfe17d7fcf8f0c34ca4a22889c172
DIST ffmpeg-rpi-7.1.patch.asc 833 BLAKE2B a0874b58be460f512f924c07db93ecb198d1399c6c99d7921d5fa3db220b05b2ca7e7d34d5c68eae66fb4d03e03eaf0b5c7e019e2a293364b50395c575a36a94 SHA512 7f62d98c7c64329c353881fd441f5af8745f76c31a39485c44ea50ce9dead74c05465f310974fc2ceb23e9ac2c8b5b97a9be8957c574e478d883c65cb3041840
EBUILD ffmpeg-4.4.5-r1.ebuild 19956 BLAKE2B b7ca0c144bc5250f4455e55d78954dab2f07adb7fedbc5171d56d26a38c831e841535a5a3e1055220f0b50b327205bf569a7ac40747cd095a5f2f5138c5a5de0 SHA512 6e8807befe505591f79ccafaca9aae56d08b0ab10c151ec0d743727514c9c3c84368c8cf0e56441d9b20379c24d4e01a48f7264b11a1da1e3a4954f18306f196
-EBUILD ffmpeg-6.1.1-r8.ebuild 20456 BLAKE2B 629969f63995246d9309f230447b554d55847361da6a28787b2b442402a9de8699dab6759c9775d1b27c06be67536d4ca1e61949b06c9bc4f36bc7e61f5aada4 SHA512 7c78b6ccfa8e95bff43dc344a08411305a76614c365b95315c26cc3adb8443a76514688c27dabf7403eb2ae63a94377a3743de9b6d8c5c75ed1a13683c15fc4f
+EBUILD ffmpeg-4.4.5-r2.ebuild 14409 BLAKE2B d048d28498f200c3e1587931b822dbca7faaf30999be51715711e16d484d511160452e80e9406ee4e908656539bc337e865186540e324b8565067b92ec7847db SHA512 6af2f4f570074e6f146f558ef9596b39eb8b05ba87c2cf3939ab47be52d531e66a6f85f4550b16f68f272c75b78b3e3938f938dcb03839294ff2729e4d3f5918
+EBUILD ffmpeg-6.1.2-r1.ebuild 16538 BLAKE2B 723fa6b72bf020386ba64d8435bae59eccc8961a19ee3a865f1747d4e0dbf6ae9051a13a25334a2e4aa819bb3eca16cae90355f7af80d3f6986ad196821b00ca SHA512 c0da5de68124cbcea8edfbe85dd4eb32aacfa75ce60e4b390d4686fbe7cb5ced9ea494fbae0daff450e3c1de0da1abfbc1d84c95dcc1c96f92ed961362af3179
EBUILD ffmpeg-6.1.2.ebuild 20422 BLAKE2B e97868eb815439d994a4a80018eaeca23e9e25a18b58cb841710e560ed0467bc54ffeeba7a18257d8f91a6e948f52a382519cd7f7caf34b467d1a8d6c56bde4e SHA512 40dec5943ce7641360d6500df8f5843f863064b75d074b0b2e948449c592f761634c9c2064ec7b6b2854ec07b1e4d003b0c6c11fcee729ec6c3e5ea9a0e4ee81
-EBUILD ffmpeg-7.0.2-r1.ebuild 20397 BLAKE2B a97acf1dc1ad501cd5a80dd23844c75ba473826d358387ff931cf0a29107525349b374087837e71a8a7cce4f91ffe5197191f301715fd19df573d0f550bb03e8 SHA512 34b49696021a942eb52a3a7e6085315b86d9632b016f4e2df6981a9a4c59e85171d8d3f8106efae6c74916f74f8ffec7fd0131952bc9b0b3718cdd4c65a019e1
+EBUILD ffmpeg-7.1.1.ebuild 16967 BLAKE2B 6aa88f806c9e07250203df0407b34e6ed5e40a12e8883477a847e3c3b6b2a3e7e1ac019f6b757c2503f8b21889e54ea59cdd783da3364724049c3a8fc4c82b6a SHA512 4574118055f19c7964a60a58ed3e70116f4af17e124199ecd6c7a08f6b6d41f73ff18e97492234784a31f0b95eac4b4c68fac8994ececf19b23013915feb0003
EBUILD ffmpeg-7.1.ebuild 20587 BLAKE2B 359f402ab63c8b3c3cc91b8e41238f20eb6f335e40610d5d6391052f71a5b3e40437a0665b9b593dbd6b08f473bb7988909bd29210dd094a8966924d98565df9 SHA512 cc3c593ef6c1058e555bc50fae407187a13344b36c544fdc448d769f787567107df37237ae238808b3cb2496e036fa62055c6dcca97102d86947ba6cb8929d8c
-EBUILD ffmpeg-9999.ebuild 20745 BLAKE2B 1087b00c3d7165ae043d08af5c190da0f7f2e8cdcac40c525cf5ee54dbd197b083d998d57f7e358f5eb5004b3e649c8dd62e03d02c707e548216bcb05d8ecf9a SHA512 95c00d9f47f8f7f6e3bd5d35e501460310f58b2ce74098e0333168e7ba851a824d597b7ac65bd081a5b71293d006c3f4b334b3de48719c66cb693cc799bee339
-MISC metadata.xml 8343 BLAKE2B 4fa89eaccf10b2b691d66fc20df7cc09b31b848d0c054040664f6d9b132ba422c3a9cae2b239a95f307b4f15d1a5432e751a72fe1e4239376252bee9b814c59a SHA512 9b085513512c323c524d88837a517ebeb6a9db7212e4353ae1330c1db763761aa8114a47337a2f85a18ad2adae210cb56fb0472b09dfd78fdcac0fecf08ea7b3
+EBUILD ffmpeg-9999.ebuild 16929 BLAKE2B dee76a675d7f2efc3f46f34726457764036fca43a05906d345038d6cf602cf821dad7a2305e99c559a6400a0be3f7b3b5955d0d79b651e83f72d391fe031cb46 SHA512 72637ecf4d43c5087bd1d6ddd1588ca96b3ee0d9f1baf84066189064116c224b975b57d624098be8e051b27ea6b65a0dceb614efc3a490225681593aa0f6715c
+MISC metadata.xml 10000 BLAKE2B a051697826b39351c38b74cbed0113b0a7a20715b3405040a4e0b1411f49578f471e359567c1692bd6783557cd24cbffb9c850744c445abb6354bcb038db0ad3 SHA512 d67578f7f63dfa33d480bd0883ffb98e49c9bc4a02adddbb75fdfe6729b1d8bdc90d1d1536fcf34287577997fe29663573755c014072614b96e64af97d30b691
diff --git a/media-video/ffmpeg/ffmpeg-4.4.5-r2.ebuild b/media-video/ffmpeg/ffmpeg-4.4.5-r2.ebuild
new file mode 100644
index 000000000000..e86d43b6f530
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-4.4.5-r2.ebuild
@@ -0,0 +1,484 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic multilib-minimal toolchain-funcs
+
+FFMPEG_SUBSLOT=56.58.58 # avutil.avcodec.avformat SONAME
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI=(
+ https://git.ffmpeg.org/ffmpeg.git
+ https://github.com/FFmpeg/FFmpeg.git
+ )
+else
+ inherit verify-sig
+ SRC_URI="
+ https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz
+ verify-sig? ( https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz.asc )
+ https://dev.gentoo.org/~ionen/distfiles/ffmpeg-$(ver_cut 1-2)-patchset-1.tar.xz
+ "
+ S=${WORKDIR}/ffmpeg-${PV} # avoid ${P}
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+fi
+
+DESCRIPTION="Complete solution to record/convert/stream audio and video"
+HOMEPAGE="https://ffmpeg.org/"
+
+[[ ${PN} == *-compat ]] && FFMPEG_UNSLOTTED= || FFMPEG_UNSLOTTED=1
+
+FFMPEG_IUSE_MAP=(
+ # [+]flag[:[^][!]opt1,...][@<v3|nonfree>]], ^ = native-only, ! = override
+ # remember to keep LICENSE, REQUIRED_USE, and RESTRICT in sync
+ X:libxcb,libxcb-shape,libxcb-shm,libxcb-xfixes,xlib
+ alsa
+ amrenc:libvo-amrwbenc@v3
+ amr:libopencore-amrnb,libopencore-amrwb@v3
+ appkit
+ bluray:libbluray
+ bs2b:libbs2b
+ bzip2:bzlib
+ cdio:libcdio
+ chromaprint
+ codec2:libcodec2
+ cuda:cuda-llvm
+ +dav1d:libdav1d
+ doc:^htmlpages
+ +drm:libdrm
+ fdk:libfdk-aac@nonfree
+ flite:libflite
+ +fontconfig:libfontconfig
+ frei0r
+ fribidi:libfribidi
+ gcrypt
+ gme:libgme
+ gmp:@v3
+ +gnutls # unused if USE=openssl, default for bug #905113,#917627
+ +gpl
+ gsm:libgsm
+ iec61883:libiec61883
+ ieee1394:libdc1394
+ jack:libjack
+ jpeg2k:libopenjpeg
+ kvazaar:libkvazaar
+ ladspa
+ lame:libmp3lame
+ libaom
+ libaribb24:@v3 # reminder: req use on gpl unneeded if >=1.0.4 (not in tree)
+ +libass
+ libcaca
+ libilbc
+ librtmp:librtmp
+ libsoxr
+ libtesseract
+ lv2
+ lzma
+ modplug:libmodplug
+ nvenc:cuvid,ffnvcodec,nvdec,nvenc
+ openal
+ opencl
+ opengl
+ openh264:libopenh264
+ openmpt:libopenmpt
+ openssl:openssl,!gnutls@v3ifgpl # still LGPL2.1+ if USE=-gpl
+ opus:libopus
+ +postproc # exposed as a USE for clarity with the GPL requirement
+ pulseaudio:libpulse
+ rabbitmq:^librabbitmq # no multilib
+ rav1e:^librav1e # no multilib
+ rubberband:librubberband
+ samba:libsmbclient@v3 # GPL-3+ only
+ sdl:sdl2
+ snappy:libsnappy
+ sndio
+ speex:libspeex
+ srt:libsrt
+ ssh:libssh
+ svg:librsvg
+ svt-av1:libsvtav1
+ theora:libtheora
+ +truetype:libfreetype
+ twolame:libtwolame
+ v4l:libv4l2
+ vaapi
+ vdpau
+ vidstab:libvidstab
+ vorbis:libvorbis
+ vpx:libvpx
+ vulkan
+ webp:libwebp
+ x264:libx264
+ x265:libx265
+ +xml:libxml2
+ xvid:libxvid
+ zeromq:^libzmq # no multilib
+ zimg:libzimg
+ +zlib
+ zvbi:libzvbi
+)
+
+# all-rights is used to express the GPL incompatibility (RESTRICT=bindist)
+LICENSE="
+ gpl? (
+ GPL-2+
+ amr? ( GPL-3+ ) amrenc? ( GPL-3+ ) libaribb24? ( GPL-3+ )
+ gmp? ( GPL-3+ ) openssl? ( GPL-3+ )
+ fdk? ( all-rights-reserved )
+ )
+ !gpl? (
+ LGPL-2.1+
+ amr? ( LGPL-3+ ) amrenc? ( LGPL-3+ ) libaribb24? ( LGPL-3+ )
+ gmp? ( LGPL-3+ )
+ )
+ samba? ( GPL-3+ )
+"
+[[ ${FFMPEG_UNSLOTTED} ]] && : 0 || : "$(ver_cut 1)"
+SLOT="${_}/${FFMPEG_SUBSLOT}"
+IUSE="${FFMPEG_IUSE_MAP[*]%:*}"
+REQUIRED_USE="
+ fribidi? ( truetype )
+ gmp? ( !librtmp )
+ libaribb24? ( gpl ) cdio? ( gpl ) frei0r? ( gpl ) postproc? ( gpl )
+ rubberband? ( gpl ) samba? ( gpl ) vidstab? ( gpl ) x264? ( gpl )
+ x265? ( gpl ) xvid? ( gpl )
+"
+RESTRICT="gpl? ( fdk? ( bindist ) )"
+
+# dlopen: vulkan-loader
+RDEPEND="
+ virtual/libiconv[${MULTILIB_USEDEP}]
+ X? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libXext[${MULTILIB_USEDEP}]
+ x11-libs/libXv[${MULTILIB_USEDEP}]
+ x11-libs/libxcb:=[${MULTILIB_USEDEP}]
+ )
+ alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
+ amr? ( media-libs/opencore-amr[${MULTILIB_USEDEP}] )
+ amrenc? ( media-libs/vo-amrwbenc[${MULTILIB_USEDEP}] )
+ bluray? ( media-libs/libbluray:=[${MULTILIB_USEDEP}] )
+ bs2b? ( media-libs/libbs2b[${MULTILIB_USEDEP}] )
+ bzip2? ( app-arch/bzip2[${MULTILIB_USEDEP}] )
+ cdio? ( dev-libs/libcdio-paranoia:=[${MULTILIB_USEDEP}] )
+ chromaprint? ( media-libs/chromaprint:=[${MULTILIB_USEDEP}] )
+ codec2? ( media-libs/codec2:=[${MULTILIB_USEDEP}] )
+ dav1d? ( media-libs/dav1d:=[${MULTILIB_USEDEP}] )
+ drm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
+ fdk? ( media-libs/fdk-aac:=[${MULTILIB_USEDEP}] )
+ flite? ( app-accessibility/flite[${MULTILIB_USEDEP}] )
+ fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] )
+ frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
+ fribidi? ( dev-libs/fribidi[${MULTILIB_USEDEP}] )
+ gcrypt? ( dev-libs/libgcrypt:=[${MULTILIB_USEDEP}] )
+ gme? ( media-libs/game-music-emu[${MULTILIB_USEDEP}] )
+ gmp? ( dev-libs/gmp:=[${MULTILIB_USEDEP}] )
+ gnutls? ( !openssl? (
+ net-libs/gnutls:=[${MULTILIB_USEDEP}]
+ ) )
+ gsm? ( media-sound/gsm[${MULTILIB_USEDEP}] )
+ iec61883? (
+ media-libs/libiec61883[${MULTILIB_USEDEP}]
+ sys-libs/libavc1394[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ ieee1394? (
+ media-libs/libdc1394:2=[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ jack? ( virtual/jack[${MULTILIB_USEDEP}] )
+ jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] )
+ kvazaar? ( media-libs/kvazaar:=[${MULTILIB_USEDEP}] )
+ lame? ( media-sound/lame[${MULTILIB_USEDEP}] )
+ libaom? ( media-libs/libaom:=[${MULTILIB_USEDEP}] )
+ libaribb24? ( media-libs/aribb24[${MULTILIB_USEDEP}] )
+ libass? ( media-libs/libass:=[${MULTILIB_USEDEP}] )
+ libcaca? ( media-libs/libcaca[${MULTILIB_USEDEP}] )
+ libilbc? ( media-libs/libilbc:=[${MULTILIB_USEDEP}] )
+ librtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] )
+ libsoxr? ( media-libs/soxr[${MULTILIB_USEDEP}] )
+ libtesseract? ( app-text/tesseract:=[${MULTILIB_USEDEP}] )
+ lv2? (
+ media-libs/lilv[${MULTILIB_USEDEP}]
+ media-libs/lv2[${MULTILIB_USEDEP}]
+ )
+ lzma? ( app-arch/xz-utils[${MULTILIB_USEDEP}] )
+ modplug? ( media-libs/libmodplug[${MULTILIB_USEDEP}] )
+ openal? ( media-libs/openal[${MULTILIB_USEDEP}] )
+ opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
+ opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
+ openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
+ openmpt? ( media-libs/libopenmpt[${MULTILIB_USEDEP}] )
+ openssl? ( >=dev-libs/openssl-3:=[${MULTILIB_USEDEP}] )
+ opus? ( media-libs/opus[${MULTILIB_USEDEP}] )
+ pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
+ rabbitmq? ( net-libs/rabbitmq-c:= )
+ rav1e? ( >=media-video/rav1e-0.4:=[capi] )
+ rubberband? ( media-libs/rubberband:=[${MULTILIB_USEDEP}] )
+ samba? ( net-fs/samba:=[client,${MULTILIB_USEDEP}] )
+ sdl? ( media-libs/libsdl2[sound(+),video(+),${MULTILIB_USEDEP}] )
+ snappy? ( app-arch/snappy:=[${MULTILIB_USEDEP}] )
+ sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] )
+ speex? ( media-libs/speex[${MULTILIB_USEDEP}] )
+ srt? ( net-libs/srt:=[${MULTILIB_USEDEP}] )
+ ssh? ( net-libs/libssh:=[sftp,${MULTILIB_USEDEP}] )
+ svg? (
+ dev-libs/glib:2[${MULTILIB_USEDEP}]
+ >=gnome-base/librsvg-2.52:2[${MULTILIB_USEDEP}]
+ x11-libs/cairo[${MULTILIB_USEDEP}]
+ )
+ svt-av1? ( >=media-libs/svt-av1-0.8.4:=[${MULTILIB_USEDEP}] )
+ theora? ( media-libs/libtheora[encode,${MULTILIB_USEDEP}] )
+ truetype? ( media-libs/freetype:2[${MULTILIB_USEDEP}] )
+ twolame? ( media-sound/twolame[${MULTILIB_USEDEP}] )
+ v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
+ vaapi? ( media-libs/libva:=[X?,${MULTILIB_USEDEP}] )
+ vdpau? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libvdpau[${MULTILIB_USEDEP}]
+ )
+ vidstab? ( media-libs/vidstab[${MULTILIB_USEDEP}] )
+ vorbis? ( media-libs/libvorbis[${MULTILIB_USEDEP}] )
+ vpx? ( media-libs/libvpx:=[${MULTILIB_USEDEP}] )
+ vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )
+ webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] )
+ x264? ( media-libs/x264:=[${MULTILIB_USEDEP}] )
+ x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
+ xml? ( dev-libs/libxml2[${MULTILIB_USEDEP}] )
+ xvid? ( media-libs/xvid[${MULTILIB_USEDEP}] )
+ zeromq? ( net-libs/zeromq:= )
+ zimg? ( media-libs/zimg[${MULTILIB_USEDEP}] )
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ zvbi? ( media-libs/zvbi[${MULTILIB_USEDEP}] )
+"
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ kernel_linux? ( >=sys-kernel/linux-headers-6 )
+ ladspa? ( media-libs/ladspa-sdk )
+ nvenc? ( media-libs/nv-codec-headers )
+ opencl? ( dev-util/opencl-headers )
+ vulkan? ( dev-util/vulkan-headers )
+"
+BDEPEND="
+ app-alternatives/awk
+ dev-lang/perl
+ virtual/pkgconfig
+ amd64? (
+ || (
+ dev-lang/nasm
+ dev-lang/yasm
+ )
+ )
+ cuda? ( llvm-core/clang:*[llvm_targets_NVPTX] )
+ doc? ( sys-apps/texinfo )
+"
+[[ ${PV} != 9999 ]] &&
+ BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-ffmpeg )"
+
+DOCS=( CREDITS Changelog README.md doc/APIchanges )
+[[ ${PV} != 9999 ]] && DOCS+=( RELEASE_NOTES )
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libavutil/avconfig.h
+)
+
+PATCHES=(
+ "${WORKDIR}"/patches
+)
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] || return
+
+ if use chromaprint && has_version 'media-libs/chromaprint[tools]'; then
+ ewarn "media-libs/chromaprint is installed with USE=tools which links to"
+ ewarn "ffmpeg, and USE=chromaprint is enabled on ffmpeg which links to"
+ ewarn "chromaprint (circular). This may cause issues when updating ffmpeg."
+ ewarn
+ ewarn "If get a build failure with 'ERROR: chromaprint not found' or so,"
+ ewarn "first rebuild chromaprint with USE=-tools, then rebuild ffmpeg, and"
+ ewarn "then finally rebuild chromaprint with USE=tools again (bug #862996)."
+ fi
+
+ [[ ${EXTRA_FFMPEG_CONF} ]] && # drop this eventually
+ die "EXTRA_FFMPEG_CONF is set in the environment, please use EXTRA_ECONF instead"
+}
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ else
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/ffmpeg-${PV}.tar.xz{,.asc} \
+ "${BROOT}"/usr/share/openpgp-keys/ffmpeg.asc
+ fi
+ default
+ fi
+}
+
+src_prepare() {
+ default
+
+ # respect user preferences
+ sed -i '/cflags -fdiagnostics-color/d' configure || die
+
+ # handle *FLAGS here to avoid repeating for each ABI below (bug #923491)
+ filter-lto
+ use elibc_musl && append-cppflags -D__musl__ #940733
+}
+
+multilib_src_configure() {
+ local conf=( "${S}"/configure ) # not autotools-based
+
+ local prefix=${EPREFIX}/usr
+ if [[ ! ${FFMPEG_UNSLOTTED} ]]; then
+ prefix+=/lib/ffmpeg${SLOT%/*}
+ # could get SONAME clashes, so prefer rpath over LDPATH
+ conf+=(
+ --enable-rpath
+ --disable-doc
+ )
+ fi
+
+ conf+=(
+ --prefix="${prefix}"
+ --libdir="${prefix}"/$(get_libdir)
+ --shlibdir="${prefix}"/$(get_libdir)
+ --mandir="${prefix}"/share/man # ignoring slotted MANPATH
+ --docdir="${EPREFIX}"/usr/share/doc/${PF}/html
+
+ --ar="$(tc-getAR)"
+ --cc="$(tc-getCC)"
+ --cxx="$(tc-getCXX)"
+ --nm="$(tc-getNM)"
+ --pkg-config="$(tc-getPKG_CONFIG)"
+ --ranlib="$(tc-getRANLIB)"
+ --disable-stripping
+
+ # overrides users' -g/-O, let *FLAGS handle these
+ --disable-debug
+ --disable-optimizations
+ --optflags=' '
+
+ # not worth supporting on this version, use ffmpeg-6+
+ --disable-lto
+
+ # basic defaults that should not really need a USE
+ --enable-iconv
+ --enable-pic
+ --enable-shared
+ --disable-static
+ $(multilib_native_enable manpages) # needs pod2man
+ --disable-podpages
+ --disable-txtpages
+
+ # disabled primarily due to being unpackaged
+ --disable-decklink
+ --disable-libdavs2
+ --disable-libklvanc
+ --disable-libmysofa
+ --disable-libopenvino
+ --disable-libshine
+ --disable-libtls
+ --disable-libuavs3d
+ --disable-libxavs
+ --disable-libxavs2
+ --disable-pocketsphinx
+ --disable-rkmpp
+ --disable-vapoursynth
+
+ # disabled for other or additional reasons
+ --disable-amf # may or may not be broken, use ffmpeg-6+ (bug #910271)
+ --disable-cuda-nvcc # prefer cuda-llvm for less issues
+ --disable-libcelt # obsolete (bug #664158)
+ --disable-libglslang # use ffmpeg-6+ with USE=shaderc instead
+ --disable-liblensfun # https://trac.ffmpeg.org/ticket/9112 (abandoned?)
+ --disable-libmfx # use ffmpeg-6+ with USE=qsv instead
+ --disable-libnpp # use ffmpeg-6+, ebuild support was only added there
+ --disable-libopencv # leaving for later due to circular opencv[ffmpeg]
+ --disable-librist # librist itself needs attention first (bug #822012)
+ --disable-libtensorflow # causes headaches, and is gone
+ --disable-libvmaf # use ffmpeg-6+ instead, needs old vmaf library
+ --disable-mbedtls # messy with slots, tests underlinking issues
+ --disable-mmal # unsupported
+ --disable-omx # unsupported (bug #653386)
+ --disable-omx-rpi # ^
+
+ # to avoid obscure issues like bug #915384 and simplify the ebuild,
+ # not passing the following (use EXTRA_ECONF if really must):
+ # --cpu: adds -march=<exact> after the user's more adapted
+ # =native, its logic also does not account for -mno-*
+ # --disable/enable-<cpufeature>: safer to detect at runtime
+ )
+
+ # broken on x32 (bug #427004), and not PIC safe on x86 (bug #916067)
+ [[ ${ABI} == @(x32|x86) ]] && conf+=( --disable-asm )
+
+ if tc-is-cross-compiler; then
+ conf+=(
+ --enable-cross-compile
+ --arch="$(tc-arch-kernel)"
+ --cross-prefix="${CHOST}-"
+ --host-cc="$(tc-getBUILD_CC)"
+ )
+ case ${CHOST} in
+ *mingw32*) conf+=( --target-os=mingw32 );;
+ *linux*) conf+=( --target-os=linux );;
+ esac
+ fi
+
+ # import options from FFMPEG_IUSE_MAP
+ local flag license mod v
+ local -A optmap=() licensemap=()
+ for v in "${FFMPEG_IUSE_MAP[@]}"; do
+ [[ ${v} =~ \+?([^:]+):?([^@]*)@?(.*) ]] || die "${v}"
+ flag=${BASH_REMATCH[1]}
+ license=${BASH_REMATCH[3]}
+ v=${BASH_REMATCH[2]:-${flag}}
+ for v in ${v//,/ }; do
+ mod=${v::1}
+ v=${v#[\!\^]}
+ if [[ ${mod} == '!' ]]; then
+ if use ${flag}; then
+ optmap[${v}]=--disable-${v}
+ unset licensemap[${v}]
+ fi
+ elif [[ ! -v optmap[${v}] ]]; then
+ if [[ ${mod} == '^' ]]; then
+ optmap[${v}]=$(multilib_native_use_enable ${flag} ${v})
+ else
+ optmap[${v}]=$(use_enable ${flag} ${v})
+ fi
+ use ${flag} && licensemap[${v}]=${license}
+ fi
+ done
+ done
+ for license in "${licensemap[@]}"; do
+ case ${license} in
+ v3ifgpl) use gpl || continue ;&
+ v3) optmap[v3]=--enable-version3 ;;
+ nonfree) use gpl && optmap[nonfree]=--enable-nonfree ;;
+ esac
+ done
+ conf+=(
+ "${optmap[@]}"
+ ${EXTRA_ECONF}
+ )
+
+ einfo "${conf[*]}" # no edo.eclass due to noisy long command in errors
+ "${conf[@]}" || die "configure failed, see ${BUILD_DIR}/ffbuild/config.log"
+}
+
+multilib_src_compile() {
+ emake V=1
+}
+
+multilib_src_test() {
+ local -x LD_LIBRARY_PATH=$(printf %s: "${BUILD_DIR}"/lib*)${LD_LIBRARY_PATH}
+ emake V=1 -k fate
+}
+
+multilib_src_install() {
+ emake V=1 DESTDIR="${D}" install
+}
diff --git a/media-video/ffmpeg/ffmpeg-6.1.1-r8.ebuild b/media-video/ffmpeg/ffmpeg-6.1.1-r8.ebuild
deleted file mode 100644
index 5cfea3a43329..000000000000
--- a/media-video/ffmpeg/ffmpeg-6.1.1-r8.ebuild
+++ /dev/null
@@ -1,615 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Subslot: libavutil major.libavcodec major.libavformat major
-# Since FFmpeg ships several libraries, subslot is kind of limited here.
-# Most consumers will use those three libraries, if a "less used" library
-# changes its soname, consumers will have to be rebuilt the old way
-# (preserve-libs).
-# If, for example, a package does not link to libavformat and only libavformat
-# changes its ABI then this package will be rebuilt needlessly. Hence, such a
-# package is free _not_ to := depend on FFmpeg but I would strongly encourage
-# doing so since such a case is unlikely.
-FFMPEG_SUBSLOT=58.60.60
-
-SOC_PATCH="ffmpeg-rpi-6.1-r3.patch"
-
-SCM=""
-if [ "${PV#9999}" != "${PV}" ] ; then
- SCM="git-r3"
- EGIT_MIN_CLONE_TYPE="single"
- EGIT_REPO_URI="https://git.ffmpeg.org/ffmpeg.git"
-fi
-
-inherit flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
-
-DESCRIPTION="Complete solution to record/convert/stream audio and video. Includes libavcodec"
-HOMEPAGE="https://ffmpeg.org/"
-SRC_URI="soc? ( https://dev.gentoo.org/~chewi/distfiles/${SOC_PATCH} )"
-if [ "${PV#9999}" != "${PV}" ] ; then
- :
-elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
- SRC_URI+=" mirror://gentoo/${P}.tar.xz"
-else # Release
- inherit verify-sig
-
- SRC_URI+="
- https://ffmpeg.org/releases/${P/_/-}.tar.xz
- verify-sig? (
- https://ffmpeg.org/releases/${P/_/-}.tar.xz.asc
- soc? ( https://dev.gentoo.org/~chewi/distfiles/${SOC_PATCH}.asc )
- )
- "
-
- BDEPEND="
- verify-sig? (
- sec-keys/openpgp-keys-ffmpeg
- soc? ( sec-keys/openpgp-keys-gentoo-developers )
- )
- "
-
- src_unpack() {
- if use verify-sig; then
- verify-sig_verify_detached "${DISTDIR}"/${P/_/-}.tar.xz{,.asc} /usr/share/openpgp-keys/ffmpeg.asc
- use soc && verify-sig_verify_detached "${DISTDIR}"/${SOC_PATCH}{,.asc} /usr/share/openpgp-keys/gentoo-developers.asc
- fi
- default
- }
-fi
-FFMPEG_REVISION="${PV#*_p}"
-
-SLOT="0/${FFMPEG_SUBSLOT}"
-LICENSE="
- !gpl? ( LGPL-2.1 )
- gpl? ( GPL-2 )
- amr? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- gmp? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- libaribb24? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- encode? (
- amrenc? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- )
- samba? ( GPL-3 )
-"
-if [ "${PV#9999}" = "${PV}" ] ; then
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
-fi
-
-# Options to use as use_enable in the foo[:bar] form.
-# This will feed configure with $(use_enable foo bar)
-# or $(use_enable foo foo) if no :bar is set.
-# foo is added to IUSE.
-FFMPEG_FLAG_MAP=(
- +bzip2:bzlib cpudetection:runtime-cpudetect debug gcrypt +gnutls gmp
- +gpl hardcoded-tables +iconv libxml2 lzma +network opencl
- openssl +postproc samba:libsmbclient sdl:ffplay sdl:sdl2 vaapi vdpau vulkan
- X:xlib X:libxcb X:libxcb-shm X:libxcb-xfixes +zlib
- # libavdevice options
- cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal
- opengl
- # indevs
- libv4l:libv4l2 pulseaudio:libpulse libdrm jack:libjack
- # decoders
- amr:libopencore-amrwb amr:libopencore-amrnb codec2:libcodec2 +dav1d:libdav1d fdk:libfdk-aac
- jpeg2k:libopenjpeg jpegxl:libjxl bluray:libbluray gme:libgme gsm:libgsm
- libaribb24 modplug:libmodplug opus:libopus qsv:libvpl libilbc librtmp ssh:libssh
- speex:libspeex srt:libsrt svg:librsvg nvenc:ffnvcodec
- vorbis:libvorbis vpx:libvpx zvbi:libzvbi
- # libavfilter options
- appkit
- bs2b:libbs2b chromaprint cuda:cuda-llvm flite:libflite fontconfig frei0r
- fribidi:libfribidi glslang:libglslang ladspa lcms:lcms2 libass libplacebo
- libtesseract lv2 rubberband:librubberband shaderc:libshaderc truetype:libfreetype
- truetype:libharfbuzz vidstab:libvidstab vmaf:libvmaf zeromq:libzmq zimg:libzimg
- # libswresample options
- libsoxr
- # Threads; we only support pthread for now but ffmpeg supports more
- +threads:pthreads
-)
-
-# Same as above but for encoders, i.e. they do something only with USE=encode.
-FFMPEG_ENCODER_FLAG_MAP=(
- amf amrenc:libvo-amrwbenc kvazaar:libkvazaar libaom mp3:libmp3lame
- openh264:libopenh264 rav1e:librav1e snappy:libsnappy svt-av1:libsvtav1
- theora:libtheora twolame:libtwolame webp:libwebp x264:libx264
- x265:libx265 xvid:libxvid
-)
-
-IUSE="
- alsa chromium doc +encode oss +pic sndio static-libs test v4l soc
- ${FFMPEG_FLAG_MAP[@]%:*}
- ${FFMPEG_ENCODER_FLAG_MAP[@]%:*}
-"
-
-# Strings for CPU features in the useflag[:configure_option] form
-# if :configure_option isn't set, it will use 'useflag' as configure option
-ARM_CPU_FEATURES=(
- cpu_flags_arm_thumb:armv5te
- cpu_flags_arm_v6:armv6
- cpu_flags_arm_thumb2:armv6t2
- cpu_flags_arm_neon:neon
- cpu_flags_arm_vfp:vfp
- cpu_flags_arm_vfpv3:vfpv3
- cpu_flags_arm_v8:armv8
- cpu_flags_arm_asimddp:dotprod
- cpu_flags_arm_i8mm:i8mm
-)
-ARM_CPU_REQUIRED_USE="
- arm64? ( cpu_flags_arm_v8 )
- cpu_flags_arm_v8? ( cpu_flags_arm_vfpv3 cpu_flags_arm_neon )
- cpu_flags_arm_neon? (
- cpu_flags_arm_vfp
- arm? ( cpu_flags_arm_thumb2 )
- )
- cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
- cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
- cpu_flags_arm_v6? (
- arm? ( cpu_flags_arm_thumb )
- )
-"
-MIPS_CPU_FEATURES=( mipsdspr1:mipsdsp mipsdspr2 mipsfpu )
-PPC_CPU_FEATURES=( cpu_flags_ppc_altivec:altivec cpu_flags_ppc_vsx:vsx cpu_flags_ppc_vsx2:power8 )
-PPC_CPU_REQUIRED_USE="
- cpu_flags_ppc_vsx? ( cpu_flags_ppc_altivec )
- cpu_flags_ppc_vsx2? ( cpu_flags_ppc_vsx )
-"
-X86_CPU_FEATURES_RAW=( 3dnow:amd3dnow 3dnowext:amd3dnowext aes:aesni avx:avx avx2:avx2 fma3:fma3 fma4:fma4 mmx:mmx
- mmxext:mmxext sse:sse sse2:sse2 sse3:sse3 ssse3:ssse3 sse4_1:sse4 sse4_2:sse42 xop:xop )
-X86_CPU_FEATURES=( ${X86_CPU_FEATURES_RAW[@]/#/cpu_flags_x86_} )
-X86_CPU_REQUIRED_USE="
- cpu_flags_x86_avx2? ( cpu_flags_x86_avx )
- cpu_flags_x86_fma4? ( cpu_flags_x86_avx )
- cpu_flags_x86_fma3? ( cpu_flags_x86_avx )
- cpu_flags_x86_xop? ( cpu_flags_x86_avx )
- cpu_flags_x86_avx? ( cpu_flags_x86_sse4_2 )
- cpu_flags_x86_aes? ( cpu_flags_x86_sse4_2 )
- cpu_flags_x86_sse4_2? ( cpu_flags_x86_sse4_1 )
- cpu_flags_x86_sse4_1? ( cpu_flags_x86_ssse3 )
- cpu_flags_x86_ssse3? ( cpu_flags_x86_sse3 )
- cpu_flags_x86_sse3? ( cpu_flags_x86_sse2 )
- cpu_flags_x86_sse2? ( cpu_flags_x86_sse )
- cpu_flags_x86_sse? ( cpu_flags_x86_mmxext )
- cpu_flags_x86_mmxext? ( cpu_flags_x86_mmx )
- cpu_flags_x86_3dnowext? ( cpu_flags_x86_3dnow )
- cpu_flags_x86_3dnow? ( cpu_flags_x86_mmx )
-"
-
-CPU_FEATURES_MAP=(
- ${ARM_CPU_FEATURES[@]}
- ${MIPS_CPU_FEATURES[@]}
- ${PPC_CPU_FEATURES[@]}
- ${X86_CPU_FEATURES[@]}
-)
-IUSE="${IUSE}
- ${CPU_FEATURES_MAP[@]%:*}"
-
-CPU_REQUIRED_USE="
- ${ARM_CPU_REQUIRED_USE}
- ${PPC_CPU_REQUIRED_USE}
- ${X86_CPU_REQUIRED_USE}
-"
-
-FFTOOLS=( aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt
- graph2dot ismindex pktdumper qt-faststart sidxindex trasher )
-IUSE="${IUSE} ${FFTOOLS[@]/#/+fftools_}"
-
-RDEPEND="
- alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
- amf? ( media-video/amdgpu-pro-amf )
- amr? ( >=media-libs/opencore-amr-0.1.3-r1[${MULTILIB_USEDEP}] )
- bluray? ( >=media-libs/libbluray-0.3.0-r1:=[${MULTILIB_USEDEP}] )
- bs2b? ( >=media-libs/libbs2b-3.1.0-r1[${MULTILIB_USEDEP}] )
- bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
- cdio? ( >=dev-libs/libcdio-paranoia-0.90_p1-r1[${MULTILIB_USEDEP}] )
- chromaprint? ( >=media-libs/chromaprint-1.2-r1[${MULTILIB_USEDEP}] )
- codec2? ( media-libs/codec2[${MULTILIB_USEDEP}] )
- dav1d? ( >=media-libs/dav1d-0.5.0:0=[${MULTILIB_USEDEP}] )
- encode? (
- amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
- kvazaar? ( >=media-libs/kvazaar-2.0.0[${MULTILIB_USEDEP}] )
- mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
- openh264? ( >=media-libs/openh264-1.4.0-r1:=[${MULTILIB_USEDEP}] )
- rav1e? ( >=media-video/rav1e-0.5:=[capi] )
- snappy? ( >=app-arch/snappy-1.1.2-r1:=[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- )
- twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
- webp? ( >=media-libs/libwebp-0.3.0:=[${MULTILIB_USEDEP}] )
- x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )
- x265? ( >=media-libs/x265-1.6:=[${MULTILIB_USEDEP}] )
- xvid? ( >=media-libs/xvid-1.3.2-r1[${MULTILIB_USEDEP}] )
- )
- fdk? ( >=media-libs/fdk-aac-0.1.3:=[${MULTILIB_USEDEP}] )
- flite? ( >=app-accessibility/flite-1.4-r4[${MULTILIB_USEDEP}] )
- fontconfig? ( >=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}] )
- frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
- fribidi? ( >=dev-libs/fribidi-0.19.6[${MULTILIB_USEDEP}] )
- gcrypt? ( >=dev-libs/libgcrypt-1.6:0=[${MULTILIB_USEDEP}] )
- glslang? ( dev-util/glslang:=[${MULTILIB_USEDEP}] )
- gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
- gmp? ( >=dev-libs/gmp-6:0=[${MULTILIB_USEDEP}] )
- gsm? ( >=media-sound/gsm-1.0.13-r1[${MULTILIB_USEDEP}] )
- iconv? ( >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] )
- iec61883? (
- >=media-libs/libiec61883-1.2.0-r1[${MULTILIB_USEDEP}]
- >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
- >=sys-libs/libavc1394-0.5.4-r1[${MULTILIB_USEDEP}]
- )
- ieee1394? (
- >=media-libs/libdc1394-2.2.1:2=[${MULTILIB_USEDEP}]
- >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
- )
- jack? ( virtual/jack[${MULTILIB_USEDEP}] )
- jpeg2k? ( >=media-libs/openjpeg-2.1:2=[${MULTILIB_USEDEP}] )
- jpegxl? ( >=media-libs/libjxl-0.7.0:=[$MULTILIB_USEDEP] )
- lcms? ( >=media-libs/lcms-2.13:2[$MULTILIB_USEDEP] )
- libaom? ( >=media-libs/libaom-1.0.0-r1:=[${MULTILIB_USEDEP}] )
- libaribb24? ( >=media-libs/aribb24-1.0.3-r2[${MULTILIB_USEDEP}] )
- libass? ( >=media-libs/libass-0.11.0:=[${MULTILIB_USEDEP}] )
- libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
- libdrm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
- libilbc? ( >=media-libs/libilbc-2[${MULTILIB_USEDEP}] )
- libplacebo? ( >=media-libs/libplacebo-4.192.0:=[$MULTILIB_USEDEP] )
- librtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
- libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
- libtesseract? ( >=app-text/tesseract-4.1.0-r1[${MULTILIB_USEDEP}] )
- libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
- libxml2? ( dev-libs/libxml2:=[${MULTILIB_USEDEP}] )
- lv2? ( media-libs/lv2[${MULTILIB_USEDEP}] media-libs/lilv[${MULTILIB_USEDEP}] )
- lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
- modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
- openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
- opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
- opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
- opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
- pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
- qsv? ( media-libs/libvpl[${MULTILIB_USEDEP}] )
- rubberband? ( >=media-libs/rubberband-1.8.1-r1[${MULTILIB_USEDEP}] )
- samba? ( >=net-fs/samba-3.6.23-r1[client,${MULTILIB_USEDEP}] )
- sdl? ( media-libs/libsdl2[sound,video,${MULTILIB_USEDEP}] )
- shaderc? ( media-libs/shaderc[${MULTILIB_USEDEP}] )
- sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] )
- soc? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
- speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
- srt? ( >=net-libs/srt-1.3.0:=[${MULTILIB_USEDEP}] )
- ssh? ( >=net-libs/libssh-0.6.0:=[sftp,${MULTILIB_USEDEP}] )
- svg? (
- gnome-base/librsvg:2=[${MULTILIB_USEDEP}]
- x11-libs/cairo[${MULTILIB_USEDEP}]
- )
- nvenc? ( >=media-libs/nv-codec-headers-11.1.5.3 )
- svt-av1? ( >=media-libs/svt-av1-0.9.0:=[${MULTILIB_USEDEP}] )
- truetype? (
- >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}]
- media-libs/harfbuzz:=[${MULTILIB_USEDEP}]
- )
- vaapi? ( >=media-libs/libva-1.2.1-r1:0=[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
- vidstab? ( >=media-libs/vidstab-1.1.0[${MULTILIB_USEDEP}] )
- vmaf? ( >=media-libs/libvmaf-2.0.0:=[${MULTILIB_USEDEP}] )
- vorbis? (
- >=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- )
- vpx? ( >=media-libs/libvpx-1.4.0:=[${MULTILIB_USEDEP}] )
- vulkan? ( >=media-libs/vulkan-loader-1.3.255:=[${MULTILIB_USEDEP}] )
- X? (
- >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
- >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
- >=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
- >=x11-libs/libxcb-1.4:=[${MULTILIB_USEDEP}]
- )
- zeromq? ( >=net-libs/zeromq-4.2.1:= )
- zimg? ( >=media-libs/zimg-2.7.4:=[${MULTILIB_USEDEP}] )
- zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
- zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="${RDEPEND}
- openssl? ( >=dev-libs/openssl-1.0.1h-r2:0=[${MULTILIB_USEDEP}] )
- !openssl? ( gnutls? ( >=net-libs/gnutls-2.12.23-r6:=[${MULTILIB_USEDEP}] ) )
-"
-
-DEPEND="${RDEPEND}
- amf? ( media-libs/amf-headers )
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
- vulkan? ( >=dev-util/vulkan-headers-1.3.255 )
-"
-
-# += for verify-sig above
-BDEPEND+="
- >=dev-build/make-3.81
- virtual/pkgconfig
- cpu_flags_x86_mmx? ( || ( >=dev-lang/nasm-2.13 >=dev-lang/yasm-1.3 ) )
- cuda? ( >=llvm-core/clang-7[llvm_targets_NVPTX] )
- doc? ( sys-apps/texinfo )
- test? ( net-misc/wget app-alternatives/bc )
-"
-
-# Code requiring FFmpeg to be built under gpl license
-GPL_REQUIRED_USE="
- postproc? ( gpl )
- frei0r? ( gpl )
- cdio? ( gpl )
- rubberband? ( gpl )
- vidstab? ( gpl )
- samba? ( gpl )
- encode? (
- x264? ( gpl )
- x265? ( gpl )
- xvid? ( gpl )
- )
-"
-REQUIRED_USE="
- chromium? ( opus )
- cuda? ( nvenc )
- fftools_cws2fws? ( zlib )
- glslang? ( vulkan !shaderc )
- libv4l? ( v4l )
- shaderc? ( vulkan !glslang )
- soc? ( libdrm )
- test? ( encode )
- ${GPL_REQUIRED_USE}
- ${CPU_REQUIRED_USE}"
-RESTRICT="
- !test? ( test )
- gpl? ( openssl? ( bindist ) fdk? ( bindist ) )
-"
-
-S=${WORKDIR}/${P/_/-}
-
-PATCHES=(
- "${FILESDIR}"/chromium-r2.patch
- "${FILESDIR}"/${PN}-6.1-wint-conversion.patch
- "${FILESDIR}"/${PN}-6.0-fix-lto-type-mismatch.patch
- "${FILESDIR}"/${PN}-6.1-opencl-parallel-gmake-fix.patch
- "${FILESDIR}"/${PN}-6.1-gcc-14.patch
- "${FILESDIR}"/${PN}-6.0.1-alignment.patch
- "${FILESDIR}"/${PN}-6.1.1-vulkan-rename.patch
- "${FILESDIR}"/${PN}-6.1.1-memory-leak.patch
- "${FILESDIR}"/${PN}-6.1.1-wint-inconversion-libgcrypt.patch
- "${FILESDIR}"/${PN}-6.1.1-amd-av1-vaapi.patch
- "${FILESDIR}"/${PN}-6.1.1-wint-inconversion-vulkan.patch
- "${FILESDIR}"/${PN}-6.1.1-incmptbl-pntr-types.patch
- "${FILESDIR}"/${PN}-4.4.5-binutils-2.43-arm.patch
-)
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-pkg_setup() {
- # ffmpeg[chromaprint] depends on chromaprint, and chromaprint[tools] depends on ffmpeg.
- # May cause breakage while updating, #862996, #625210, #833821.
- if has_version media-libs/chromaprint[tools] && use chromaprint; then
- ewarn "You have media-libs/chromaprint installed with 'tools' USE flag, which "
- ewarn "links to ffmpeg, and you have enabled 'chromaprint' USE flag for ffmpeg, "
- ewarn "which links to chromaprint. This may cause issues while rebuilding ffmpeg."
- ewarn ""
- ewarn "If your build fails to 'ERROR: chromaprint not found', rebuild chromaprint "
- ewarn "without the 'tools' use flag first, then rebuild ffmpeg, and then finally enable "
- ewarn "'tools' USE flag for chromaprint. See #862996."
- fi
-}
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
-
- use soc &&
- eapply "${DISTDIR}"/${SOC_PATCH}
-
- default
-
- # -fdiagnostics-color=auto gets appended after user flags which
- # will ignore user's preference.
- sed -i -e '/check_cflags -fdiagnostics-color=auto/d' configure || die
-
- ln -snf "${FILESDIR}"/chromium.c chromium.c || die
- echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
-
- # We need to detect LTO usage before multilib stuff and filter-lto is called (bug #923491)
- if tc-is-lto ; then
- # Respect -flto value, e.g -flto=thin
- local v="$(get-flag flto)"
- [[ ${v} != -flto ]] && LTO_FLAG="--enable-lto=${v}" || LTO_FLAG="--enable-lto"
- fi
- filter-lto
-}
-
-multilib_src_configure() {
- local myconf=( )
-
- # Conditional patch options
- use soc && myconf+=( --enable-v4l2-request --enable-libudev --enable-sand )
-
- local ffuse=( "${FFMPEG_FLAG_MAP[@]}" )
- use openssl && myconf+=( --enable-nonfree )
- use samba && myconf+=( --enable-version3 )
-
- # Encoders
- if use encode ; then
- ffuse+=( "${FFMPEG_ENCODER_FLAG_MAP[@]}" )
-
- # Licensing.
- if use amrenc ; then
- myconf+=( --enable-version3 )
- fi
- else
- myconf+=( --disable-encoders )
- fi
-
- # Indevs
- use v4l || myconf+=( --disable-indev=v4l2 --disable-outdev=v4l2 )
- for i in alsa oss jack sndio ; do
- use ${i} || myconf+=( --disable-indev=${i} )
- done
-
- # Outdevs
- for i in alsa oss sndio ; do
- use ${i} || myconf+=( --disable-outdev=${i} )
- done
-
- # Decoders
- use amr && myconf+=( --enable-version3 )
- use gmp && myconf+=( --enable-version3 )
- use libaribb24 && myconf+=( --enable-version3 )
- use fdk && use gpl && myconf+=( --enable-nonfree )
-
- for i in "${ffuse[@]#+}" ; do
- myconf+=( $(use_enable ${i%:*} ${i#*:}) )
- done
-
- if use openssl ; then
- myconf+=( --disable-gnutls )
- has_version dev-libs/openssl:0/3 && myconf+=( --enable-version3 )
- fi
-
- # (temporarily) disable non-multilib deps
- if ! multilib_is_native_abi; then
- for i in librav1e libzmq ; do
- myconf+=( --disable-${i} )
- done
- fi
-
- # CPU features
- for i in "${CPU_FEATURES_MAP[@]}" ; do
- use ${i%:*} || myconf+=( --disable-${i#*:} )
- done
-
- if use pic ; then
- myconf+=( --enable-pic )
- # disable asm code if PIC is required
- # as the provided asm decidedly is not PIC for x86.
- [[ ${ABI} == x86 ]] && myconf+=( --disable-asm )
- fi
- [[ ${ABI} == x32 ]] && myconf+=( --disable-asm ) #427004
-
- # Try to get cpu type based on CFLAGS.
- # Bug #172723
- # We need to do this so that features of that CPU will be better used
- # If they contain an unknown CPU it will not hurt since ffmpeg's configure
- # will just ignore it.
- for i in $(get-flag mcpu) $(get-flag march) ; do
- [[ ${i} = native ]] && i="host" # bug #273421
- myconf+=( --cpu=${i} )
- break
- done
-
- # LTO support, bug #566282, bug #754654, bug #772854
- if [[ ${ABI} != x86 && ! -z ${LTO_FLAG} ]]; then
- myconf+=( ${LTO_FLAG} )
- fi
-
- # Mandatory configuration
- myconf=(
- --disable-libaribcaption # libaribcaption is not packaged (yet?)
- --enable-avfilter
- --disable-stripping
- # This is only for hardcoded cflags; those are used in configure checks that may
- # interfere with proper detections, bug #671746 and bug #645778
- # We use optflags, so that overrides them anyway.
- --disable-optimizations
- --disable-libcelt # bug #664158
- "${myconf[@]}"
- )
-
- # cross compile support
- if tc-is-cross-compiler ; then
- myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- --host-cc="$(tc-getBUILD_CC)" )
- case ${CHOST} in
- *mingw32*)
- myconf+=( --target-os=mingw32 )
- ;;
- *linux*)
- myconf+=( --target-os=linux )
- ;;
- esac
- fi
-
- # doc
- myconf+=(
- $(multilib_native_use_enable doc)
- $(multilib_native_use_enable doc htmlpages)
- $(multilib_native_enable manpages)
- )
-
- # Use --extra-libs if needed for LIBS
- set -- "${S}/configure" \
- --prefix="${EPREFIX}/usr" \
- --libdir="${EPREFIX}/usr/$(get_libdir)" \
- --shlibdir="${EPREFIX}/usr/$(get_libdir)" \
- --docdir="${EPREFIX}/usr/share/doc/${PF}/html" \
- --mandir="${EPREFIX}/usr/share/man" \
- --enable-shared \
- --cc="$(tc-getCC)" \
- --cxx="$(tc-getCXX)" \
- --ar="$(tc-getAR)" \
- --nm="$(tc-getNM)" \
- --strip="$(tc-getSTRIP)" \
- --ranlib="$(tc-getRANLIB)" \
- --pkg-config="$(tc-getPKG_CONFIG)" \
- --optflags="${CFLAGS}" \
- $(use_enable static-libs static) \
- "${myconf[@]}" \
- ${EXTRA_FFMPEG_CONF}
- echo "${@}"
- "${@}" || die
-}
-
-multilib_src_compile() {
- emake V=1
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- emake V=1 tools/${i}$(get_exeext)
- fi
- done
-
- use chromium &&
- emake V=1 libffmpeg
- fi
-}
-
-multilib_src_test() {
- LD_LIBRARY_PATH="${BUILD_DIR}/libpostproc:${BUILD_DIR}/libswscale:${BUILD_DIR}/libswresample:${BUILD_DIR}/libavcodec:${BUILD_DIR}/libavdevice:${BUILD_DIR}/libavfilter:${BUILD_DIR}/libavformat:${BUILD_DIR}/libavutil" \
- emake V=1 fate -k
-}
-
-multilib_src_install() {
- emake V=1 DESTDIR="${D}" install install-doc
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- dobin tools/${i}$(get_exeext)
- fi
- done
-
- use chromium &&
- emake V=1 DESTDIR="${D}" install-libffmpeg
- fi
-}
-
-multilib_src_install_all() {
- dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
- [ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
-}
diff --git a/media-video/ffmpeg/ffmpeg-6.1.2-r1.ebuild b/media-video/ffmpeg/ffmpeg-6.1.2-r1.ebuild
new file mode 100644
index 000000000000..bde869a247e0
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-6.1.2-r1.ebuild
@@ -0,0 +1,562 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic multilib-minimal toolchain-funcs
+
+FFMPEG_SOC_PATCH=ffmpeg-rpi-6.1-r3.patch
+FFMPEG_SUBSLOT=58.60.60 # avutil.avcodec.avformat SONAME
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI=(
+ https://git.ffmpeg.org/ffmpeg.git
+ https://github.com/FFmpeg/FFmpeg.git
+ )
+else
+ inherit verify-sig
+ SRC_URI="
+ https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz
+ verify-sig? ( https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz.asc )
+ ${FFMPEG_SOC_PATCH:+"
+ soc? (
+ https://dev.gentoo.org/~chewi/distfiles/${FFMPEG_SOC_PATCH}
+ verify-sig? ( https://dev.gentoo.org/~chewi/distfiles/${FFMPEG_SOC_PATCH}.asc )
+ )
+ "}
+ https://dev.gentoo.org/~ionen/distfiles/ffmpeg-$(ver_cut 1-2)-patchset-1.tar.xz
+ "
+ S=${WORKDIR}/ffmpeg-${PV} # avoid ${P}
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+fi
+
+DESCRIPTION="Complete solution to record/convert/stream audio and video"
+HOMEPAGE="https://ffmpeg.org/"
+
+[[ ${PN} == *-compat ]] && FFMPEG_UNSLOTTED= || FFMPEG_UNSLOTTED=1
+
+FFMPEG_IUSE_MAP=(
+ # [+]flag[:[^][!]opt1,...][@<v3|nonfree>]], ^ = native-only, ! = override
+ # remember to keep LICENSE, REQUIRED_USE, and RESTRICT in sync
+ X:libxcb,libxcb-shape,libxcb-shm,libxcb-xfixes,xlib
+ alsa
+ amf
+ amrenc:libvo-amrwbenc@v3
+ amr:libopencore-amrnb,libopencore-amrwb@v3
+ appkit
+ bluray:libbluray
+ bs2b:libbs2b
+ bzip2:bzlib
+ cdio:libcdio
+ chromaprint
+ codec2:libcodec2
+ cuda:cuda-llvm
+ +dav1d:libdav1d
+ doc:^htmlpages
+ +drm:libdrm
+ fdk:libfdk-aac@nonfree
+ flite:libflite
+ +fontconfig:libfontconfig
+ frei0r
+ fribidi:libfribidi
+ gcrypt
+ gme:libgme
+ gmp:@v3
+ +gnutls # unused if USE=openssl, default for bug #905113,#917627
+ +gpl
+ gsm:libgsm
+ iec61883:libiec61883
+ ieee1394:libdc1394
+ jack:libjack
+ jpeg2k:libopenjpeg
+ jpegxl:libjxl
+ kvazaar:libkvazaar
+ ladspa
+ lame:libmp3lame
+ lcms:lcms2
+ libaom
+ libaribb24:@v3 # reminder: req use on gpl unneeded if >=1.0.4 (not in tree)
+ +libass
+ libcaca
+ libilbc
+ libplacebo
+ librtmp:librtmp
+ libsoxr
+ libtesseract
+ lv2
+ lzma
+ modplug:libmodplug
+ npp:^libnpp@nonfree # no multilib
+ nvenc:cuvid,ffnvcodec,nvdec,nvenc
+ openal
+ opencl
+ opengl
+ openh264:libopenh264
+ openmpt:libopenmpt
+ openssl:openssl,!gnutls@v3ifgpl # still LGPL2.1+ if USE=-gpl
+ opus:libopus
+ +postproc # exposed as a USE for clarity with the GPL requirement
+ pulseaudio:libpulse
+ qsv:libvpl
+ rabbitmq:^librabbitmq # no multilib
+ rav1e:^librav1e # no multilib
+ rubberband:librubberband
+ samba:libsmbclient@v3 # GPL-3+ only
+ sdl:sdl2
+ shaderc:libshaderc
+ snappy:libsnappy
+ sndio
+ speex:libspeex
+ srt:libsrt
+ ssh:libssh
+ svg:librsvg
+ svt-av1:libsvtav1
+ theora:libtheora
+ +truetype:libfreetype,libharfbuzz
+ twolame:libtwolame
+ v4l:libv4l2
+ vaapi
+ vdpau
+ vidstab:libvidstab
+ vmaf:libvmaf
+ vorbis:libvorbis
+ vpx:libvpx
+ vulkan
+ webp:libwebp
+ x264:libx264
+ x265:libx265
+ +xml:libxml2
+ xvid:libxvid
+ zeromq:^libzmq # no multilib
+ zimg:libzimg
+ +zlib
+ zvbi:libzvbi
+)
+
+# all-rights is used to express the GPL incompatibility (RESTRICT=bindist)
+LICENSE="
+ gpl? (
+ GPL-2+
+ amr? ( GPL-3+ ) amrenc? ( GPL-3+ ) libaribb24? ( GPL-3+ )
+ gmp? ( GPL-3+ ) openssl? ( GPL-3+ )
+ fdk? ( all-rights-reserved ) npp? ( all-rights-reserved )
+ )
+ !gpl? (
+ LGPL-2.1+
+ amr? ( LGPL-3+ ) amrenc? ( LGPL-3+ ) libaribb24? ( LGPL-3+ )
+ gmp? ( LGPL-3+ )
+ )
+ samba? ( GPL-3+ )
+"
+[[ ${FFMPEG_UNSLOTTED} ]] && : 0 || : "$(ver_cut 1)"
+SLOT="${_}/${FFMPEG_SUBSLOT}"
+IUSE="
+ ${FFMPEG_IUSE_MAP[*]%:*}
+ ${FFMPEG_UNSLOTTED:+chromium}
+ ${FFMPEG_SOC_PATCH:+soc}
+"
+REQUIRED_USE="
+ cuda? ( nvenc )
+ fribidi? ( truetype )
+ gmp? ( !librtmp )
+ libplacebo? ( || ( sdl vulkan ) )
+ npp? ( nvenc )
+ shaderc? ( vulkan )
+ libaribb24? ( gpl ) cdio? ( gpl ) frei0r? ( gpl ) postproc? ( gpl )
+ rubberband? ( gpl ) samba? ( gpl ) vidstab? ( gpl ) x264? ( gpl )
+ x265? ( gpl ) xvid? ( gpl )
+ ${FFMPEG_UNSLOTTED:+chromium? ( opus )}
+ ${FFMPEG_SOC_PATCH:+soc? ( drm )}
+"
+RESTRICT="gpl? ( fdk? ( bindist ) npp? ( bindist ) )"
+
+# dlopen: amdgpu-pro-amf, vulkan-loader
+COMMON_DEPEND="
+ virtual/libiconv[${MULTILIB_USEDEP}]
+ X? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libXext[${MULTILIB_USEDEP}]
+ x11-libs/libXv[${MULTILIB_USEDEP}]
+ x11-libs/libxcb:=[${MULTILIB_USEDEP}]
+ )
+ alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
+ amr? ( media-libs/opencore-amr[${MULTILIB_USEDEP}] )
+ amrenc? ( media-libs/vo-amrwbenc[${MULTILIB_USEDEP}] )
+ bluray? ( media-libs/libbluray:=[${MULTILIB_USEDEP}] )
+ bs2b? ( media-libs/libbs2b[${MULTILIB_USEDEP}] )
+ bzip2? ( app-arch/bzip2[${MULTILIB_USEDEP}] )
+ cdio? ( dev-libs/libcdio-paranoia:=[${MULTILIB_USEDEP}] )
+ chromaprint? ( media-libs/chromaprint:=[${MULTILIB_USEDEP}] )
+ codec2? ( media-libs/codec2:=[${MULTILIB_USEDEP}] )
+ dav1d? ( media-libs/dav1d:=[${MULTILIB_USEDEP}] )
+ drm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
+ fdk? ( media-libs/fdk-aac:=[${MULTILIB_USEDEP}] )
+ flite? ( app-accessibility/flite[${MULTILIB_USEDEP}] )
+ fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] )
+ frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
+ fribidi? ( dev-libs/fribidi[${MULTILIB_USEDEP}] )
+ gcrypt? ( dev-libs/libgcrypt:=[${MULTILIB_USEDEP}] )
+ gme? ( media-libs/game-music-emu[${MULTILIB_USEDEP}] )
+ gmp? ( dev-libs/gmp:=[${MULTILIB_USEDEP}] )
+ gnutls? ( !openssl? (
+ net-libs/gnutls:=[${MULTILIB_USEDEP}]
+ ) )
+ gsm? ( media-sound/gsm[${MULTILIB_USEDEP}] )
+ iec61883? (
+ media-libs/libiec61883[${MULTILIB_USEDEP}]
+ sys-libs/libavc1394[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ ieee1394? (
+ media-libs/libdc1394:2=[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ jack? ( virtual/jack[${MULTILIB_USEDEP}] )
+ jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] )
+ jpegxl? ( media-libs/libjxl:=[$MULTILIB_USEDEP] )
+ kvazaar? ( media-libs/kvazaar:=[${MULTILIB_USEDEP}] )
+ lame? ( media-sound/lame[${MULTILIB_USEDEP}] )
+ lcms? ( media-libs/lcms:2[$MULTILIB_USEDEP] )
+ libaom? ( media-libs/libaom:=[${MULTILIB_USEDEP}] )
+ libaribb24? ( media-libs/aribb24[${MULTILIB_USEDEP}] )
+ libass? ( media-libs/libass:=[${MULTILIB_USEDEP}] )
+ libcaca? ( media-libs/libcaca[${MULTILIB_USEDEP}] )
+ libilbc? ( media-libs/libilbc:=[${MULTILIB_USEDEP}] )
+ libplacebo? ( media-libs/libplacebo:=[$MULTILIB_USEDEP] )
+ librtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] )
+ libsoxr? ( media-libs/soxr[${MULTILIB_USEDEP}] )
+ libtesseract? ( app-text/tesseract:=[${MULTILIB_USEDEP}] )
+ lv2? (
+ media-libs/lilv[${MULTILIB_USEDEP}]
+ media-libs/lv2[${MULTILIB_USEDEP}]
+ )
+ lzma? ( app-arch/xz-utils[${MULTILIB_USEDEP}] )
+ modplug? ( media-libs/libmodplug[${MULTILIB_USEDEP}] )
+ npp? ( dev-util/nvidia-cuda-toolkit:= )
+ openal? ( media-libs/openal[${MULTILIB_USEDEP}] )
+ opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
+ opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
+ openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
+ openmpt? ( media-libs/libopenmpt[${MULTILIB_USEDEP}] )
+ openssl? ( >=dev-libs/openssl-3:=[${MULTILIB_USEDEP}] )
+ opus? ( media-libs/opus[${MULTILIB_USEDEP}] )
+ pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
+ qsv? ( media-libs/libvpl:=[${MULTILIB_USEDEP}] )
+ rabbitmq? ( net-libs/rabbitmq-c:= )
+ rav1e? ( >=media-video/rav1e-0.5:=[capi] )
+ rubberband? ( media-libs/rubberband:=[${MULTILIB_USEDEP}] )
+ samba? ( net-fs/samba:=[client,${MULTILIB_USEDEP}] )
+ sdl? ( media-libs/libsdl2[sound(+),video(+),${MULTILIB_USEDEP}] )
+ shaderc? ( media-libs/shaderc[${MULTILIB_USEDEP}] )
+ snappy? ( app-arch/snappy:=[${MULTILIB_USEDEP}] )
+ sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] )
+ speex? ( media-libs/speex[${MULTILIB_USEDEP}] )
+ srt? ( net-libs/srt:=[${MULTILIB_USEDEP}] )
+ ssh? ( net-libs/libssh:=[sftp,${MULTILIB_USEDEP}] )
+ svg? (
+ dev-libs/glib:2[${MULTILIB_USEDEP}]
+ >=gnome-base/librsvg-2.52:2[${MULTILIB_USEDEP}]
+ x11-libs/cairo[${MULTILIB_USEDEP}]
+ )
+ svt-av1? ( >=media-libs/svt-av1-0.9:=[${MULTILIB_USEDEP}] )
+ theora? ( media-libs/libtheora[encode,${MULTILIB_USEDEP}] )
+ truetype? (
+ media-libs/freetype:2[${MULTILIB_USEDEP}]
+ media-libs/harfbuzz:=[${MULTILIB_USEDEP}]
+ )
+ twolame? ( media-sound/twolame[${MULTILIB_USEDEP}] )
+ v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
+ vaapi? ( media-libs/libva:=[X?,${MULTILIB_USEDEP}] )
+ vdpau? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libvdpau[${MULTILIB_USEDEP}]
+ )
+ vidstab? ( media-libs/vidstab[${MULTILIB_USEDEP}] )
+ vmaf? ( media-libs/libvmaf:=[${MULTILIB_USEDEP}] )
+ vorbis? ( media-libs/libvorbis[${MULTILIB_USEDEP}] )
+ vpx? ( media-libs/libvpx:=[${MULTILIB_USEDEP}] )
+ vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )
+ webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] )
+ x264? ( media-libs/x264:=[${MULTILIB_USEDEP}] )
+ x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
+ xml? ( dev-libs/libxml2[${MULTILIB_USEDEP}] )
+ xvid? ( media-libs/xvid[${MULTILIB_USEDEP}] )
+ zeromq? ( net-libs/zeromq:= )
+ zimg? ( media-libs/zimg[${MULTILIB_USEDEP}] )
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ zvbi? ( media-libs/zvbi[${MULTILIB_USEDEP}] )
+ ${FFMPEG_SOC_PATCH:+"
+ soc? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
+ "}
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ amf? ( media-video/amdgpu-pro-amf )
+"
+DEPEND="
+ ${COMMON_DEPEND}
+ X? ( x11-base/xorg-proto )
+ amf? ( media-libs/amf-headers )
+ kernel_linux? ( >=sys-kernel/linux-headers-6 )
+ ladspa? ( media-libs/ladspa-sdk )
+ nvenc? ( >=media-libs/nv-codec-headers-12.1.14.0 )
+ opencl? ( dev-util/opencl-headers )
+ vulkan? ( dev-util/vulkan-headers )
+"
+BDEPEND="
+ app-alternatives/awk
+ dev-lang/perl
+ virtual/pkgconfig
+ amd64? (
+ || (
+ dev-lang/nasm
+ dev-lang/yasm
+ )
+ )
+ cuda? ( llvm-core/clang:*[llvm_targets_NVPTX] )
+ doc? ( sys-apps/texinfo )
+"
+[[ ${PV} != 9999 ]] &&
+ BDEPEND+="
+ verify-sig? (
+ sec-keys/openpgp-keys-ffmpeg
+ ${FFMPEG_SOC_PATCH:+"
+ soc? ( >=sec-keys/openpgp-keys-gentoo-developers-20240708 )
+ "}
+ )
+ "
+
+DOCS=( CREDITS Changelog README.md doc/APIchanges )
+[[ ${PV} != 9999 ]] && DOCS+=( RELEASE_NOTES )
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libavutil/avconfig.h
+)
+
+PATCHES=(
+ "${WORKDIR}"/patches
+)
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] || return
+
+ if use chromaprint && has_version 'media-libs/chromaprint[tools]'; then
+ ewarn "media-libs/chromaprint is installed with USE=tools which links to"
+ ewarn "ffmpeg, and USE=chromaprint is enabled on ffmpeg which links to"
+ ewarn "chromaprint (circular). This may cause issues when updating ffmpeg."
+ ewarn
+ ewarn "If get a build failure with 'ERROR: chromaprint not found' or so,"
+ ewarn "first rebuild chromaprint with USE=-tools, then rebuild ffmpeg, and"
+ ewarn "then finally rebuild chromaprint with USE=tools again (bug #862996)."
+ fi
+
+ [[ ${EXTRA_FFMPEG_CONF} ]] && # drop this eventually
+ die "EXTRA_FFMPEG_CONF is set in the environment, please use EXTRA_ECONF instead"
+}
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ else
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/ffmpeg-${PV}.tar.xz{,.asc} \
+ "${BROOT}"/usr/share/openpgp-keys/ffmpeg.asc
+ in_iuse soc && use soc &&
+ verify-sig_verify_detached "${DISTDIR}"/${FFMPEG_SOC_PATCH}{,.asc} \
+ "${BROOT}"/usr/share/openpgp-keys/gentoo-developers.asc
+ fi
+ default
+ fi
+}
+
+src_prepare() {
+ in_iuse chromium && PATCHES+=( "${FILESDIR}"/chromium-r3.patch )
+ in_iuse soc && use soc && PATCHES+=( "${DISTDIR}"/${FFMPEG_SOC_PATCH} )
+
+ default
+
+ # respect user preferences
+ sed -i '/cflags -fdiagnostics-color/d' configure || die
+
+ # handle *FLAGS here to avoid repeating for each ABI below (bug #923491)
+ FFMPEG_ENABLE_LTO=
+ if tc-is-lto; then
+ : "$(get-flag flto)" # get -flto=<val> (e.g. =thin)
+ FFMPEG_ENABLE_LTO=--enable-lto${_#-flto}
+ fi
+ filter-lto
+
+ use elibc_musl && append-cppflags -D__musl__ #940733
+
+ if use npp; then
+ local cuda=${ESYSROOT}/opt/cuda/targets/$(usex amd64 x86_64 sbsa)-linux
+ append-cppflags -I"${cuda}"/include
+ append-ldflags -L"${cuda}"/lib
+ fi
+}
+
+multilib_src_configure() {
+ local conf=( "${S}"/configure ) # not autotools-based
+
+ local prefix=${EPREFIX}/usr
+ if [[ ! ${FFMPEG_UNSLOTTED} ]]; then
+ prefix+=/lib/ffmpeg${SLOT%/*}
+ # could get SONAME clashes, so prefer rpath over LDPATH
+ conf+=(
+ --enable-rpath
+ --disable-doc
+ )
+ fi
+
+ conf+=(
+ --prefix="${prefix}"
+ --libdir="${prefix}"/$(get_libdir)
+ --shlibdir="${prefix}"/$(get_libdir)
+ --mandir="${prefix}"/share/man # ignoring slotted MANPATH
+ --docdir="${EPREFIX}"/usr/share/doc/${PF}/html
+
+ --ar="$(tc-getAR)"
+ --cc="$(tc-getCC)"
+ --cxx="$(tc-getCXX)"
+ --nm="$(tc-getNM)"
+ --pkg-config="$(tc-getPKG_CONFIG)"
+ --ranlib="$(tc-getRANLIB)"
+ --disable-stripping
+
+ # overrides users' -g/-O, let *FLAGS handle these
+ --disable-debug
+ --disable-optimizations
+ --optflags=' '
+
+ # pass option over *FLAGS due to special logic (bug #566282,#754654)
+ ${FFMPEG_ENABLE_LTO}
+
+ # basic defaults that should not really need a USE
+ --enable-iconv
+ --enable-pic
+ --enable-shared
+ --disable-static
+ $(multilib_native_enable manpages) # needs pod2man
+ --disable-podpages
+ --disable-txtpages
+
+ # disabled primarily due to being unpackaged
+ --disable-decklink
+ --disable-libaribcaption
+ --disable-libdavs2
+ --disable-libklvanc
+ --disable-libmysofa
+ --disable-libopenvino
+ --disable-libshine
+ --disable-libtls
+ --disable-libuavs3d
+ --disable-libxavs
+ --disable-libxavs2
+ --disable-pocketsphinx
+ --disable-rkmpp
+ --disable-vapoursynth
+
+ # disabled for other or additional reasons
+ --disable-cuda-nvcc # prefer cuda-llvm for less issues
+ --disable-libcelt # obsolete (bug #664158)
+ --disable-libglslang # prefer USE=shaderc (bug #918989,#920283,#922333)
+ --disable-liblensfun # https://trac.ffmpeg.org/ticket/9112 (abandoned?)
+ --disable-libmfx # prefer libvpl for USE=qsv
+ --disable-libopencv # leaving for later due to circular opencv[ffmpeg]
+ --disable-librist # librist itself needs attention first (bug #822012)
+ --disable-libtensorflow # causes headaches, and is gone
+ --disable-mbedtls # messy with slots, tests underlinking issues
+ --disable-mmal # prefer USE=soc
+ --disable-omx # unsupported (bug #653386)
+ --disable-omx-rpi # ^
+
+ # to avoid obscure issues like bug #915384 and simplify the ebuild,
+ # not passing the following (use EXTRA_ECONF if really must):
+ # --cpu: adds -march=<exact> after the user's more adapted
+ # =native, its logic also does not account for -mno-*
+ # --disable/enable-<cpufeature>: safer to detect at runtime
+ )
+
+ in_iuse soc && use soc &&
+ conf+=(
+ --disable-epoxy
+ --enable-libudev
+ --enable-sand
+ --enable-v4l2-request
+ )
+
+ # broken on x32 (bug #427004), and not PIC safe on x86 (bug #916067)
+ [[ ${ABI} == @(x32|x86) ]] && conf+=( --disable-asm )
+
+ if tc-is-cross-compiler; then
+ conf+=(
+ --enable-cross-compile
+ --arch="$(tc-arch-kernel)"
+ --cross-prefix="${CHOST}-"
+ --host-cc="$(tc-getBUILD_CC)"
+ )
+ case ${CHOST} in
+ *mingw32*) conf+=( --target-os=mingw32 );;
+ *linux*) conf+=( --target-os=linux );;
+ esac
+ fi
+
+ # import options from FFMPEG_IUSE_MAP
+ local flag license mod v
+ local -A optmap=() licensemap=()
+ for v in "${FFMPEG_IUSE_MAP[@]}"; do
+ [[ ${v} =~ \+?([^:]+):?([^@]*)@?(.*) ]] || die "${v}"
+ flag=${BASH_REMATCH[1]}
+ license=${BASH_REMATCH[3]}
+ v=${BASH_REMATCH[2]:-${flag}}
+ for v in ${v//,/ }; do
+ mod=${v::1}
+ v=${v#[\!\^]}
+ if [[ ${mod} == '!' ]]; then
+ if use ${flag}; then
+ optmap[${v}]=--disable-${v}
+ unset licensemap[${v}]
+ fi
+ elif [[ ! -v optmap[${v}] ]]; then
+ if [[ ${mod} == '^' ]]; then
+ optmap[${v}]=$(multilib_native_use_enable ${flag} ${v})
+ else
+ optmap[${v}]=$(use_enable ${flag} ${v})
+ fi
+ use ${flag} && licensemap[${v}]=${license}
+ fi
+ done
+ done
+ for license in "${licensemap[@]}"; do
+ case ${license} in
+ v3ifgpl) use gpl || continue ;&
+ v3) optmap[v3]=--enable-version3 ;;
+ nonfree) use gpl && optmap[nonfree]=--enable-nonfree ;;
+ esac
+ done
+ conf+=(
+ "${optmap[@]}"
+ ${EXTRA_ECONF}
+ )
+
+ einfo "${conf[*]}" # no edo.eclass due to noisy long command in errors
+ "${conf[@]}" || die "configure failed, see ${BUILD_DIR}/ffbuild/config.log"
+}
+
+multilib_src_compile() {
+ emake V=1
+ in_iuse chromium && use chromium && multilib_is_native_abi &&
+ emake V=1 libffmpeg
+}
+
+multilib_src_test() {
+ local -x LD_LIBRARY_PATH=$(printf %s: "${BUILD_DIR}"/lib*)${LD_LIBRARY_PATH}
+ emake V=1 -k fate
+}
+
+multilib_src_install() {
+ emake V=1 DESTDIR="${D}" install
+ in_iuse chromium && use chromium && multilib_is_native_abi &&
+ emake V=1 DESTDIR="${D}" install-libffmpeg
+}
diff --git a/media-video/ffmpeg/ffmpeg-7.0.2-r1.ebuild b/media-video/ffmpeg/ffmpeg-7.0.2-r1.ebuild
deleted file mode 100644
index c00ae501a01e..000000000000
--- a/media-video/ffmpeg/ffmpeg-7.0.2-r1.ebuild
+++ /dev/null
@@ -1,617 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Subslot: libavutil major.libavcodec major.libavformat major
-# Since FFmpeg ships several libraries, subslot is kind of limited here.
-# Most consumers will use those three libraries, if a "less used" library
-# changes its soname, consumers will have to be rebuilt the old way
-# (preserve-libs).
-# If, for example, a package does not link to libavformat and only libavformat
-# changes its ABI then this package will be rebuilt needlessly. Hence, such a
-# package is free _not_ to := depend on FFmpeg but I would strongly encourage
-# doing so since such a case is unlikely.
-FFMPEG_SUBSLOT=58.60.60
-
-SOC_PATCH="ffmpeg-rpi-7.0.patch"
-
-SCM=""
-if [ "${PV#9999}" != "${PV}" ] ; then
- SCM="git-r3"
- EGIT_MIN_CLONE_TYPE="single"
- EGIT_REPO_URI="https://git.ffmpeg.org/ffmpeg.git"
-fi
-
-inherit flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
-
-DESCRIPTION="Complete solution to record/convert/stream audio and video. Includes libavcodec"
-HOMEPAGE="https://ffmpeg.org/"
-SRC_URI="soc? ( https://dev.gentoo.org/~chewi/distfiles/${SOC_PATCH} )"
-if [ "${PV#9999}" != "${PV}" ] ; then
- :
-elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
- SRC_URI+=" mirror://gentoo/${P}.tar.xz"
-else # Release
- inherit verify-sig
-
- SRC_URI+="
- https://ffmpeg.org/releases/${P/_/-}.tar.xz
- verify-sig? (
- https://ffmpeg.org/releases/${P/_/-}.tar.xz.asc
- soc? ( https://dev.gentoo.org/~chewi/distfiles/${SOC_PATCH}.asc )
- )
- "
-
- BDEPEND="
- verify-sig? (
- sec-keys/openpgp-keys-ffmpeg
- soc? ( >=sec-keys/openpgp-keys-gentoo-developers-20240708 )
- )
- "
-
- src_unpack() {
- if use verify-sig; then
- verify-sig_verify_detached "${DISTDIR}"/${P/_/-}.tar.xz{,.asc} /usr/share/openpgp-keys/ffmpeg.asc
- use soc && verify-sig_verify_detached "${DISTDIR}"/${SOC_PATCH}{,.asc} /usr/share/openpgp-keys/gentoo-developers.asc
- fi
- default
- }
-fi
-FFMPEG_REVISION="${PV#*_p}"
-
-S=${WORKDIR}/${P/_/-}
-LICENSE="
- !gpl? ( LGPL-2.1 )
- gpl? ( GPL-2 )
- amr? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- gmp? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- libaribb24? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- encode? (
- amrenc? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- )
- samba? ( GPL-3 )
-"
-SLOT="0/${FFMPEG_SUBSLOT}"
-if [ "${PV#9999}" = "${PV}" ] ; then
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
-fi
-
-# Options to use as use_enable in the foo[:bar] form.
-# This will feed configure with $(use_enable foo bar)
-# or $(use_enable foo foo) if no :bar is set.
-# foo is added to IUSE.
-FFMPEG_FLAG_MAP=(
- +bzip2:bzlib cpudetection:runtime-cpudetect debug gcrypt +gnutls gmp
- +gpl hardcoded-tables +iconv libxml2 libdvdnav libdvdread lzma +network
- opencl openssl +postproc qrcode:libqrencode quirc:libquirc
- samba:libsmbclient sdl:ffplay sdl:sdl2 vaapi vdpau vulkan
- X:xlib X:libxcb X:libxcb-shm X:libxcb-xfixes +zlib
- # libavdevice options
- cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal
- opengl
- # indevs
- libv4l:libv4l2 pulseaudio:libpulse libdrm jack:libjack
- # decoders
- amr:libopencore-amrwb amr:libopencore-amrnb codec2:libcodec2 +dav1d:libdav1d fdk:libfdk-aac
- jpeg2k:libopenjpeg jpegxl:libjxl bluray:libbluray gme:libgme gsm:libgsm
- libaribb24 modplug:libmodplug opus:libopus qsv:libvpl libilbc librtmp ssh:libssh
- speex:libspeex srt:libsrt svg:librsvg nvenc:ffnvcodec
- vorbis:libvorbis vpx:libvpx zvbi:libzvbi
- # libavfilter options
- appkit
- bs2b:libbs2b chromaprint cuda:cuda-llvm flite:libflite fontconfig frei0r
- fribidi:libfribidi glslang:libglslang ladspa lcms:lcms2 libass libplacebo
- libtesseract lv2 rubberband:librubberband shaderc:libshaderc truetype:libfreetype
- truetype:libharfbuzz vidstab:libvidstab vmaf:libvmaf zeromq:libzmq zimg:libzimg
- # libswresample options
- libsoxr
- # Threads; we only support pthread for now but ffmpeg supports more
- +threads:pthreads
-)
-
-# Same as above but for encoders, i.e. they do something only with USE=encode.
-FFMPEG_ENCODER_FLAG_MAP=(
- amf amrenc:libvo-amrwbenc kvazaar:libkvazaar libaom mp3:libmp3lame
- openh264:libopenh264 rav1e:librav1e snappy:libsnappy svt-av1:libsvtav1
- theora:libtheora twolame:libtwolame webp:libwebp x264:libx264
- x265:libx265 xvid:libxvid
-)
-
-IUSE="
- alsa chromium doc +encode oss +pic sndio static-libs test v4l soc
- ${FFMPEG_FLAG_MAP[@]%:*}
- ${FFMPEG_ENCODER_FLAG_MAP[@]%:*}
-"
-
-# Strings for CPU features in the useflag[:configure_option] form
-# if :configure_option isn't set, it will use 'useflag' as configure option
-ARM_CPU_FEATURES=(
- cpu_flags_arm_thumb:armv5te
- cpu_flags_arm_v6:armv6
- cpu_flags_arm_thumb2:armv6t2
- cpu_flags_arm_neon:neon
- cpu_flags_arm_vfp:vfp
- cpu_flags_arm_vfpv3:vfpv3
- cpu_flags_arm_v8:armv8
- cpu_flags_arm_asimddp:dotprod
- cpu_flags_arm_i8mm:i8mm
-)
-ARM_CPU_REQUIRED_USE="
- arm64? ( cpu_flags_arm_v8 )
- cpu_flags_arm_v8? ( cpu_flags_arm_vfpv3 cpu_flags_arm_neon )
- cpu_flags_arm_neon? (
- cpu_flags_arm_vfp
- arm? ( cpu_flags_arm_thumb2 )
- )
- cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
- cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
- cpu_flags_arm_v6? (
- arm? ( cpu_flags_arm_thumb )
- )
-"
-MIPS_CPU_FEATURES=( mipsdspr1:mipsdsp mipsdspr2 mipsfpu )
-PPC_CPU_FEATURES=( cpu_flags_ppc_altivec:altivec cpu_flags_ppc_vsx:vsx cpu_flags_ppc_vsx2:power8 )
-PPC_CPU_REQUIRED_USE="
- cpu_flags_ppc_vsx? ( cpu_flags_ppc_altivec )
- cpu_flags_ppc_vsx2? ( cpu_flags_ppc_vsx )
-"
-X86_CPU_FEATURES_RAW=( 3dnow:amd3dnow 3dnowext:amd3dnowext aes:aesni avx:avx avx2:avx2 fma3:fma3 fma4:fma4 mmx:mmx
- mmxext:mmxext sse:sse sse2:sse2 sse3:sse3 ssse3:ssse3 sse4_1:sse4 sse4_2:sse42 xop:xop )
-X86_CPU_FEATURES=( ${X86_CPU_FEATURES_RAW[@]/#/cpu_flags_x86_} )
-X86_CPU_REQUIRED_USE="
- cpu_flags_x86_avx2? ( cpu_flags_x86_avx )
- cpu_flags_x86_fma4? ( cpu_flags_x86_avx )
- cpu_flags_x86_fma3? ( cpu_flags_x86_avx )
- cpu_flags_x86_xop? ( cpu_flags_x86_avx )
- cpu_flags_x86_avx? ( cpu_flags_x86_sse4_2 )
- cpu_flags_x86_aes? ( cpu_flags_x86_sse4_2 )
- cpu_flags_x86_sse4_2? ( cpu_flags_x86_sse4_1 )
- cpu_flags_x86_sse4_1? ( cpu_flags_x86_ssse3 )
- cpu_flags_x86_ssse3? ( cpu_flags_x86_sse3 )
- cpu_flags_x86_sse3? ( cpu_flags_x86_sse2 )
- cpu_flags_x86_sse2? ( cpu_flags_x86_sse )
- cpu_flags_x86_sse? ( cpu_flags_x86_mmxext )
- cpu_flags_x86_mmxext? ( cpu_flags_x86_mmx )
- cpu_flags_x86_3dnowext? ( cpu_flags_x86_3dnow )
- cpu_flags_x86_3dnow? ( cpu_flags_x86_mmx )
-"
-
-CPU_FEATURES_MAP=(
- ${ARM_CPU_FEATURES[@]}
- ${MIPS_CPU_FEATURES[@]}
- ${PPC_CPU_FEATURES[@]}
- ${X86_CPU_FEATURES[@]}
-)
-IUSE="${IUSE}
- ${CPU_FEATURES_MAP[@]%:*}"
-
-CPU_REQUIRED_USE="
- ${ARM_CPU_REQUIRED_USE}
- ${PPC_CPU_REQUIRED_USE}
- ${X86_CPU_REQUIRED_USE}
-"
-
-FFTOOLS=( aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt
- graph2dot ismindex pktdumper qt-faststart sidxindex trasher )
-IUSE="${IUSE} ${FFTOOLS[@]/#/+fftools_}"
-
-RDEPEND="
- alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
- amf? ( media-video/amdgpu-pro-amf )
- amr? ( >=media-libs/opencore-amr-0.1.3-r1[${MULTILIB_USEDEP}] )
- bluray? ( >=media-libs/libbluray-0.3.0-r1:=[${MULTILIB_USEDEP}] )
- bs2b? ( >=media-libs/libbs2b-3.1.0-r1[${MULTILIB_USEDEP}] )
- bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
- cdio? ( >=dev-libs/libcdio-paranoia-0.90_p1-r1[${MULTILIB_USEDEP}] )
- chromaprint? ( >=media-libs/chromaprint-1.2-r1[${MULTILIB_USEDEP}] )
- codec2? ( media-libs/codec2[${MULTILIB_USEDEP}] )
- dav1d? ( >=media-libs/dav1d-0.5.0:0=[${MULTILIB_USEDEP}] )
- encode? (
- amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
- kvazaar? ( >=media-libs/kvazaar-2.0.0[${MULTILIB_USEDEP}] )
- mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
- openh264? ( >=media-libs/openh264-1.4.0-r1:=[${MULTILIB_USEDEP}] )
- rav1e? ( >=media-video/rav1e-0.5:=[capi] )
- snappy? ( >=app-arch/snappy-1.1.2-r1:=[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- )
- twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
- webp? ( >=media-libs/libwebp-0.3.0:=[${MULTILIB_USEDEP}] )
- x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )
- x265? ( >=media-libs/x265-1.6:=[${MULTILIB_USEDEP}] )
- xvid? ( >=media-libs/xvid-1.3.2-r1[${MULTILIB_USEDEP}] )
- )
- fdk? ( >=media-libs/fdk-aac-0.1.3:=[${MULTILIB_USEDEP}] )
- flite? ( >=app-accessibility/flite-1.4-r4[${MULTILIB_USEDEP}] )
- fontconfig? ( >=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}] )
- frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
- fribidi? ( >=dev-libs/fribidi-0.19.6[${MULTILIB_USEDEP}] )
- gcrypt? ( >=dev-libs/libgcrypt-1.6:0=[${MULTILIB_USEDEP}] )
- glslang? ( dev-util/glslang:=[${MULTILIB_USEDEP}] )
- gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
- gmp? ( >=dev-libs/gmp-6:0=[${MULTILIB_USEDEP}] )
- gsm? ( >=media-sound/gsm-1.0.13-r1[${MULTILIB_USEDEP}] )
- iconv? ( >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] )
- iec61883? (
- >=media-libs/libiec61883-1.2.0-r1[${MULTILIB_USEDEP}]
- >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
- >=sys-libs/libavc1394-0.5.4-r1[${MULTILIB_USEDEP}]
- )
- ieee1394? (
- >=media-libs/libdc1394-2.2.1:2=[${MULTILIB_USEDEP}]
- >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
- )
- jack? ( virtual/jack[${MULTILIB_USEDEP}] )
- jpeg2k? ( >=media-libs/openjpeg-2.1:2=[${MULTILIB_USEDEP}] )
- jpegxl? ( >=media-libs/libjxl-0.7.0:=[$MULTILIB_USEDEP] )
- lcms? ( >=media-libs/lcms-2.13:2[$MULTILIB_USEDEP] )
- libaom? ( >=media-libs/libaom-1.0.0-r1:=[${MULTILIB_USEDEP}] )
- libaribb24? ( >=media-libs/aribb24-1.0.3-r2[${MULTILIB_USEDEP}] )
- libass? ( >=media-libs/libass-0.11.0:=[${MULTILIB_USEDEP}] )
- libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
- libdrm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
- libdvdnav? ( media-libs/libdvdnav[${MULTILIB_USEDEP}] )
- libdvdread? ( media-libs/libdvdread:=[${MULTILIB_USEDEP}] )
- libilbc? ( >=media-libs/libilbc-2[${MULTILIB_USEDEP}] )
- libplacebo? ( >=media-libs/libplacebo-4.192.0:=[$MULTILIB_USEDEP] )
- librtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
- libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
- libtesseract? ( >=app-text/tesseract-4.1.0-r1[${MULTILIB_USEDEP}] )
- libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
- libxml2? ( dev-libs/libxml2:=[${MULTILIB_USEDEP}] )
- lv2? ( media-libs/lv2[${MULTILIB_USEDEP}] media-libs/lilv[${MULTILIB_USEDEP}] )
- lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
- modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
- openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
- opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
- opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
- opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
- pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
- qsv? ( media-libs/libvpl[${MULTILIB_USEDEP}] )
- qrcode? ( media-gfx/qrencode:=[${MULTILIB_USEDEP}] )
- quirc? ( media-libs/quirc:=[${MULTILIB_USEDEP}] )
- rubberband? ( >=media-libs/rubberband-1.8.1-r1[${MULTILIB_USEDEP}] )
- samba? ( >=net-fs/samba-3.6.23-r1[client,${MULTILIB_USEDEP}] )
- sdl? ( media-libs/libsdl2[sound,video,${MULTILIB_USEDEP}] )
- shaderc? ( media-libs/shaderc[${MULTILIB_USEDEP}] )
- sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] )
- soc? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
- speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
- srt? ( >=net-libs/srt-1.3.0:=[${MULTILIB_USEDEP}] )
- ssh? ( >=net-libs/libssh-0.6.0:=[sftp,${MULTILIB_USEDEP}] )
- svg? (
- gnome-base/librsvg:2=[${MULTILIB_USEDEP}]
- x11-libs/cairo[${MULTILIB_USEDEP}]
- )
- nvenc? ( >=media-libs/nv-codec-headers-11.1.5.3 )
- svt-av1? ( >=media-libs/svt-av1-0.9.0:=[${MULTILIB_USEDEP}] )
- truetype? (
- >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}]
- media-libs/harfbuzz:=[${MULTILIB_USEDEP}]
- )
- vaapi? ( >=media-libs/libva-1.2.1-r1:0=[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
- vidstab? ( >=media-libs/vidstab-1.1.0[${MULTILIB_USEDEP}] )
- vmaf? ( >=media-libs/libvmaf-2.0.0:=[${MULTILIB_USEDEP}] )
- vorbis? (
- >=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- )
- vpx? ( >=media-libs/libvpx-1.4.0:=[${MULTILIB_USEDEP}] )
- vulkan? ( >=media-libs/vulkan-loader-1.3.277:=[${MULTILIB_USEDEP}] )
- X? (
- >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
- >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
- >=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
- >=x11-libs/libxcb-1.4:=[${MULTILIB_USEDEP}]
- )
- zeromq? ( >=net-libs/zeromq-4.2.1:= )
- zimg? ( >=media-libs/zimg-2.7.4:=[${MULTILIB_USEDEP}] )
- zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
- zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
-"
-
-RDEPEND="${RDEPEND}
- openssl? ( >=dev-libs/openssl-1.0.1h-r2:0=[${MULTILIB_USEDEP}] )
- !openssl? ( gnutls? ( >=net-libs/gnutls-2.12.23-r6:=[${MULTILIB_USEDEP}] ) )
-"
-
-DEPEND="${RDEPEND}
- amf? ( media-libs/amf-headers )
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
- vulkan? ( >=dev-util/vulkan-headers-1.3.277 )
-"
-
-# += for verify-sig above
-BDEPEND+="
- >=dev-build/make-3.81
- virtual/pkgconfig
- cpu_flags_x86_mmx? ( || ( >=dev-lang/nasm-2.13 >=dev-lang/yasm-1.3 ) )
- cuda? ( >=llvm-core/clang-7[llvm_targets_NVPTX] )
- doc? ( sys-apps/texinfo )
- test? ( net-misc/wget app-alternatives/bc )
-"
-
-# Code requiring FFmpeg to be built under gpl license
-GPL_REQUIRED_USE="
- postproc? ( gpl )
- frei0r? ( gpl )
- cdio? ( gpl )
- rubberband? ( gpl )
- vidstab? ( gpl )
- samba? ( gpl )
- encode? (
- x264? ( gpl )
- x265? ( gpl )
- xvid? ( gpl )
- )
-"
-REQUIRED_USE="
- chromium? ( opus )
- cuda? ( nvenc )
- fftools_cws2fws? ( zlib )
- glslang? ( vulkan !shaderc )
- libv4l? ( v4l )
- shaderc? ( vulkan !glslang )
- soc? ( libdrm )
- test? ( encode )
- vulkan? ( threads )
- ${GPL_REQUIRED_USE}
- ${CPU_REQUIRED_USE}"
-RESTRICT="
- !test? ( test )
- gpl? ( openssl? ( bindist ) fdk? ( bindist ) )
-"
-
-PATCHES=(
- "${FILESDIR}"/chromium-r2.patch
- "${FILESDIR}"/${PN}-6.1-opencl-parallel-gmake-fix.patch
- "${FILESDIR}"/${PN}-4.4.5-binutils-2.43-arm.patch
-)
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-pkg_setup() {
- # ffmpeg[chromaprint] depends on chromaprint, and chromaprint[tools] depends on ffmpeg.
- # May cause breakage while updating, #862996, #625210, #833821.
- if has_version media-libs/chromaprint[tools] && use chromaprint; then
- ewarn "You have media-libs/chromaprint installed with 'tools' USE flag, which "
- ewarn "links to ffmpeg, and you have enabled 'chromaprint' USE flag for ffmpeg, "
- ewarn "which links to chromaprint. This may cause issues while rebuilding ffmpeg."
- ewarn ""
- ewarn "If your build fails to 'ERROR: chromaprint not found', rebuild chromaprint "
- ewarn "without the 'tools' use flag first, then rebuild ffmpeg, and then finally enable "
- ewarn "'tools' USE flag for chromaprint. See #862996."
- fi
-}
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
-
- use soc &&
- eapply "${DISTDIR}"/${SOC_PATCH}
-
- default
-
- # -fdiagnostics-color=auto gets appended after user flags which
- # will ignore user's preference.
- sed -i -e '/check_cflags -fdiagnostics-color=auto/d' configure || die
-
- ln -snf "${FILESDIR}"/chromium.c chromium.c || die
- echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
-
- # We need to detect LTO usage before multilib stuff and filter-lto is called (bug #923491)
- if tc-is-lto ; then
- # Respect -flto value, e.g -flto=thin
- local v="$(get-flag flto)"
- [[ ${v} != -flto ]] && LTO_FLAG="--enable-lto=${v}" || LTO_FLAG="--enable-lto"
- fi
- filter-lto
-}
-
-multilib_src_configure() {
- local myconf=( )
-
- # Conditional patch options
- use soc && myconf+=( --enable-v4l2-request --enable-libudev --enable-sand )
-
- local ffuse=( "${FFMPEG_FLAG_MAP[@]}" )
- use openssl && myconf+=( --enable-nonfree )
- use samba && myconf+=( --enable-version3 )
-
- # Encoders
- if use encode ; then
- ffuse+=( "${FFMPEG_ENCODER_FLAG_MAP[@]}" )
-
- # Licensing.
- if use amrenc ; then
- myconf+=( --enable-version3 )
- fi
- else
- myconf+=( --disable-encoders )
- fi
-
- # Indevs
- use v4l || myconf+=( --disable-indev=v4l2 --disable-outdev=v4l2 )
- for i in alsa oss jack sndio ; do
- use ${i} || myconf+=( --disable-indev=${i} )
- done
-
- # Outdevs
- for i in alsa oss sndio ; do
- use ${i} || myconf+=( --disable-outdev=${i} )
- done
-
- # Decoders
- use amr && myconf+=( --enable-version3 )
- use gmp && myconf+=( --enable-version3 )
- use libaribb24 && myconf+=( --enable-version3 )
- use fdk && use gpl && myconf+=( --enable-nonfree )
-
- for i in "${ffuse[@]#+}" ; do
- myconf+=( $(use_enable ${i%:*} ${i#*:}) )
- done
-
- if use openssl ; then
- myconf+=( --disable-gnutls )
- has_version dev-libs/openssl:0/3 && myconf+=( --enable-version3 )
- fi
-
- # (temporarily) disable non-multilib deps
- if ! multilib_is_native_abi; then
- for i in librav1e libzmq ; do
- myconf+=( --disable-${i} )
- done
- fi
-
- # CPU features
- for i in "${CPU_FEATURES_MAP[@]}" ; do
- use ${i%:*} || myconf+=( --disable-${i#*:} )
- done
-
- if use pic ; then
- myconf+=( --enable-pic )
- # disable asm code if PIC is required
- # as the provided asm decidedly is not PIC for x86.
- [[ ${ABI} == x86 ]] && myconf+=( --disable-asm )
- fi
- [[ ${ABI} == x32 ]] && myconf+=( --disable-asm ) #427004
-
- # Try to get cpu type based on CFLAGS.
- # Bug #172723
- # We need to do this so that features of that CPU will be better used
- # If they contain an unknown CPU it will not hurt since ffmpeg's configure
- # will just ignore it.
- for i in $(get-flag mcpu) $(get-flag march) ; do
- [[ ${i} = native ]] && i="host" # bug #273421
- myconf+=( --cpu=${i} )
- break
- done
-
- # LTO support, bug #566282, bug #754654, bug #772854
- if [[ ${ABI} != x86 && ! -z ${LTO_FLAG} ]]; then
- myconf+=( ${LTO_FLAG} )
- fi
-
- # Mandatory configuration
- myconf=(
- --disable-libaribcaption # libaribcaption is not packaged (yet?)
- --disable-libxeve
- --disable-libxevd
- --disable-d3d12va
- --enable-avfilter
- --disable-stripping
- # This is only for hardcoded cflags; those are used in configure checks that may
- # interfere with proper detections, bug #671746 and bug #645778
- # We use optflags, so that overrides them anyway.
- --disable-optimizations
- --disable-libcelt # bug #664158
- "${myconf[@]}"
- )
-
- # cross compile support
- if tc-is-cross-compiler ; then
- myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- --host-cc="$(tc-getBUILD_CC)" )
- case ${CHOST} in
- *mingw32*)
- myconf+=( --target-os=mingw32 )
- ;;
- *linux*)
- myconf+=( --target-os=linux )
- ;;
- esac
- fi
-
- # doc
- myconf+=(
- $(multilib_native_use_enable doc)
- $(multilib_native_use_enable doc htmlpages)
- $(multilib_native_enable manpages)
- )
-
- if use elibc_musl ; then
- append-cflags -D__musl__
- fi
-
- # Use --extra-libs if needed for LIBS
- set -- "${S}/configure" \
- --prefix="${EPREFIX}/usr" \
- --libdir="${EPREFIX}/usr/$(get_libdir)" \
- --shlibdir="${EPREFIX}/usr/$(get_libdir)" \
- --docdir="${EPREFIX}/usr/share/doc/${PF}/html" \
- --mandir="${EPREFIX}/usr/share/man" \
- --enable-shared \
- --cc="$(tc-getCC)" \
- --cxx="$(tc-getCXX)" \
- --ar="$(tc-getAR)" \
- --nm="$(tc-getNM)" \
- --strip="$(tc-getSTRIP)" \
- --ranlib="$(tc-getRANLIB)" \
- --pkg-config="$(tc-getPKG_CONFIG)" \
- --optflags="${CFLAGS}" \
- $(use_enable static-libs static) \
- "${myconf[@]}" \
- ${EXTRA_FFMPEG_CONF}
- echo "${@}"
- "${@}" || die
-}
-
-multilib_src_compile() {
- emake V=1
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- emake V=1 tools/${i}$(get_exeext)
- fi
- done
-
- use chromium &&
- emake V=1 libffmpeg
- fi
-}
-
-multilib_src_test() {
- LD_LIBRARY_PATH="${BUILD_DIR}/libpostproc:${BUILD_DIR}/libswscale:${BUILD_DIR}/libswresample:${BUILD_DIR}/libavcodec:${BUILD_DIR}/libavdevice:${BUILD_DIR}/libavfilter:${BUILD_DIR}/libavformat:${BUILD_DIR}/libavutil" \
- emake V=1 fate -k
-}
-
-multilib_src_install() {
- emake V=1 DESTDIR="${D}" install install-doc
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- dobin tools/${i}$(get_exeext)
- fi
- done
-
- use chromium &&
- emake V=1 DESTDIR="${D}" install-libffmpeg
- fi
-}
-
-multilib_src_install_all() {
- dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
- [ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
-}
diff --git a/media-video/ffmpeg/ffmpeg-7.1.1.ebuild b/media-video/ffmpeg/ffmpeg-7.1.1.ebuild
new file mode 100644
index 000000000000..a7eaa68c0f14
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-7.1.1.ebuild
@@ -0,0 +1,576 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic multilib-minimal toolchain-funcs
+
+FFMPEG_SOC_PATCH=ffmpeg-rpi-7.1.1.patch
+FFMPEG_SUBSLOT=59.61.61 # avutil.avcodec.avformat SONAME
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI=(
+ https://git.ffmpeg.org/ffmpeg.git
+ https://github.com/FFmpeg/FFmpeg.git
+ )
+else
+ inherit verify-sig
+ SRC_URI="
+ https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz
+ verify-sig? ( https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz.asc )
+ ${FFMPEG_SOC_PATCH:+"
+ soc? (
+ https://dev.gentoo.org/~chewi/distfiles/${FFMPEG_SOC_PATCH}
+ verify-sig? ( https://dev.gentoo.org/~chewi/distfiles/${FFMPEG_SOC_PATCH}.asc )
+ )
+ "}
+ "
+ S=${WORKDIR}/ffmpeg-${PV} # avoid ${P}
+ KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+fi
+
+DESCRIPTION="Complete solution to record/convert/stream audio and video"
+HOMEPAGE="https://ffmpeg.org/"
+
+[[ ${PN} == *-compat ]] && FFMPEG_UNSLOTTED= || FFMPEG_UNSLOTTED=1
+
+FFMPEG_IUSE_MAP=(
+ # [+]flag[:[^][!]opt1,...][@<v3|nonfree>]], ^ = native-only, ! = override
+ # remember to keep LICENSE, REQUIRED_USE, and RESTRICT in sync
+ X:libxcb,libxcb-shape,libxcb-shm,libxcb-xfixes,xlib
+ alsa
+ amf
+ amrenc:libvo-amrwbenc@v3
+ amr:libopencore-amrnb,libopencore-amrwb@v3
+ appkit
+ bluray:libbluray
+ bs2b:libbs2b
+ bzip2:bzlib
+ cdio:libcdio
+ chromaprint
+ codec2:libcodec2
+ cuda:cuda-llvm
+ +dav1d:libdav1d
+ doc:^htmlpages
+ +drm:libdrm
+ dvd:libdvdnav,libdvdread
+ fdk:libfdk-aac@nonfree
+ flite:libflite
+ +fontconfig:libfontconfig
+ frei0r
+ fribidi:libfribidi
+ gcrypt
+ gme:libgme
+ gmp:@v3
+ +gnutls # unused if USE=openssl, default for bug #905113,#917627
+ +gpl
+ gsm:libgsm
+ iec61883:libiec61883
+ ieee1394:libdc1394
+ jack:libjack
+ jpeg2k:libopenjpeg
+ jpegxl:libjxl
+ kvazaar:libkvazaar
+ ladspa
+ lame:libmp3lame
+ lcms:lcms2
+ libaom
+ libaribb24:@v3 # reminder: req use on gpl unneeded if >=1.0.4 (not in tree)
+ +libass
+ libcaca
+ libilbc
+ liblc3
+ libplacebo
+ librtmp:librtmp
+ libsoxr
+ libtesseract
+ lv2
+ lzma
+ modplug:libmodplug
+ npp:^libnpp@nonfree # no multilib
+ nvenc:cuvid,ffnvcodec,nvdec,nvenc
+ openal
+ opencl
+ opengl
+ openh264:libopenh264
+ openmpt:libopenmpt
+ openssl:openssl,!gnutls@v3ifgpl # still LGPL2.1+ if USE=-gpl
+ opus:libopus
+ +postproc # exposed as a USE for clarity with the GPL requirement
+ pulseaudio:libpulse
+ qrcode:libqrencode
+ qsv:libvpl
+ quirc:libquirc
+ rabbitmq:^librabbitmq # no multilib
+ rav1e:^librav1e # no multilib
+ rubberband:librubberband
+ samba:libsmbclient@v3 # GPL-3+ only
+ sdl:sdl2
+ shaderc:libshaderc
+ snappy:libsnappy
+ sndio
+ speex:libspeex
+ srt:libsrt
+ ssh:libssh
+ svg:librsvg
+ svt-av1:libsvtav1
+ theora:libtheora
+ +truetype:libfreetype,libharfbuzz
+ twolame:libtwolame
+ v4l:libv4l2
+ vaapi
+ vdpau
+ vidstab:libvidstab
+ vmaf:libvmaf
+ vorbis:libvorbis
+ vpx:libvpx
+ vulkan
+ webp:libwebp
+ x264:libx264
+ x265:libx265
+ +xml:libxml2
+ xvid:libxvid
+ zeromq:^libzmq # no multilib
+ zimg:libzimg
+ +zlib
+ zvbi:libzvbi
+)
+
+# all-rights is used to express the GPL incompatibility (RESTRICT=bindist)
+LICENSE="
+ gpl? (
+ GPL-2+
+ amr? ( GPL-3+ ) amrenc? ( GPL-3+ ) libaribb24? ( GPL-3+ )
+ gmp? ( GPL-3+ ) openssl? ( GPL-3+ )
+ fdk? ( all-rights-reserved ) npp? ( all-rights-reserved )
+ )
+ !gpl? (
+ LGPL-2.1+
+ amr? ( LGPL-3+ ) amrenc? ( LGPL-3+ ) libaribb24? ( LGPL-3+ )
+ gmp? ( LGPL-3+ )
+ )
+ samba? ( GPL-3+ )
+"
+[[ ${FFMPEG_UNSLOTTED} ]] && : 0 || : "$(ver_cut 1)"
+SLOT="${_}/${FFMPEG_SUBSLOT}"
+IUSE="
+ ${FFMPEG_IUSE_MAP[*]%:*}
+ ${FFMPEG_UNSLOTTED:+chromium}
+ ${FFMPEG_SOC_PATCH:+soc}
+"
+REQUIRED_USE="
+ cuda? ( nvenc )
+ fribidi? ( truetype )
+ gmp? ( !librtmp )
+ libplacebo? ( || ( sdl vulkan ) )
+ npp? ( nvenc )
+ shaderc? ( vulkan )
+ libaribb24? ( gpl ) cdio? ( gpl ) dvd? ( gpl ) frei0r? ( gpl )
+ postproc? ( gpl ) rubberband? ( gpl ) samba? ( gpl )
+ vidstab? ( gpl ) x264? ( gpl ) x265? ( gpl ) xvid? ( gpl )
+ ${FFMPEG_UNSLOTTED:+chromium? ( opus )}
+ ${FFMPEG_SOC_PATCH:+soc? ( drm )}
+"
+RESTRICT="gpl? ( fdk? ( bindist ) npp? ( bindist ) )"
+
+# dlopen: amdgpu-pro-amf, vulkan-loader
+COMMON_DEPEND="
+ virtual/libiconv[${MULTILIB_USEDEP}]
+ X? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libXext[${MULTILIB_USEDEP}]
+ x11-libs/libXv[${MULTILIB_USEDEP}]
+ x11-libs/libxcb:=[${MULTILIB_USEDEP}]
+ )
+ alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
+ amr? ( media-libs/opencore-amr[${MULTILIB_USEDEP}] )
+ amrenc? ( media-libs/vo-amrwbenc[${MULTILIB_USEDEP}] )
+ bluray? ( media-libs/libbluray:=[${MULTILIB_USEDEP}] )
+ bs2b? ( media-libs/libbs2b[${MULTILIB_USEDEP}] )
+ bzip2? ( app-arch/bzip2[${MULTILIB_USEDEP}] )
+ cdio? ( dev-libs/libcdio-paranoia:=[${MULTILIB_USEDEP}] )
+ chromaprint? ( media-libs/chromaprint:=[${MULTILIB_USEDEP}] )
+ codec2? ( media-libs/codec2:=[${MULTILIB_USEDEP}] )
+ dav1d? ( media-libs/dav1d:=[${MULTILIB_USEDEP}] )
+ dvd? (
+ media-libs/libdvdnav[${MULTILIB_USEDEP}]
+ media-libs/libdvdread:=[${MULTILIB_USEDEP}]
+ )
+ drm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
+ fdk? ( media-libs/fdk-aac:=[${MULTILIB_USEDEP}] )
+ flite? ( app-accessibility/flite[${MULTILIB_USEDEP}] )
+ fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] )
+ frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
+ fribidi? ( dev-libs/fribidi[${MULTILIB_USEDEP}] )
+ gcrypt? ( dev-libs/libgcrypt:=[${MULTILIB_USEDEP}] )
+ gme? ( media-libs/game-music-emu[${MULTILIB_USEDEP}] )
+ gmp? ( dev-libs/gmp:=[${MULTILIB_USEDEP}] )
+ gnutls? ( !openssl? (
+ net-libs/gnutls:=[${MULTILIB_USEDEP}]
+ ) )
+ gsm? ( media-sound/gsm[${MULTILIB_USEDEP}] )
+ iec61883? (
+ media-libs/libiec61883[${MULTILIB_USEDEP}]
+ sys-libs/libavc1394[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ ieee1394? (
+ media-libs/libdc1394:2=[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ jack? ( virtual/jack[${MULTILIB_USEDEP}] )
+ jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] )
+ jpegxl? ( media-libs/libjxl:=[$MULTILIB_USEDEP] )
+ kvazaar? ( media-libs/kvazaar:=[${MULTILIB_USEDEP}] )
+ lame? ( media-sound/lame[${MULTILIB_USEDEP}] )
+ lcms? ( media-libs/lcms:2[$MULTILIB_USEDEP] )
+ libaom? ( media-libs/libaom:=[${MULTILIB_USEDEP}] )
+ libaribb24? ( media-libs/aribb24[${MULTILIB_USEDEP}] )
+ libass? ( media-libs/libass:=[${MULTILIB_USEDEP}] )
+ libcaca? ( media-libs/libcaca[${MULTILIB_USEDEP}] )
+ libilbc? ( media-libs/libilbc:=[${MULTILIB_USEDEP}] )
+ liblc3? ( >=media-sound/liblc3-1.1[${MULTILIB_USEDEP}] )
+ libplacebo? ( media-libs/libplacebo:=[$MULTILIB_USEDEP] )
+ librtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] )
+ libsoxr? ( media-libs/soxr[${MULTILIB_USEDEP}] )
+ libtesseract? ( app-text/tesseract:=[${MULTILIB_USEDEP}] )
+ lv2? (
+ media-libs/lilv[${MULTILIB_USEDEP}]
+ media-libs/lv2[${MULTILIB_USEDEP}]
+ )
+ lzma? ( app-arch/xz-utils[${MULTILIB_USEDEP}] )
+ modplug? ( media-libs/libmodplug[${MULTILIB_USEDEP}] )
+ npp? ( dev-util/nvidia-cuda-toolkit:= )
+ openal? ( media-libs/openal[${MULTILIB_USEDEP}] )
+ opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
+ opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
+ openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
+ openmpt? ( media-libs/libopenmpt[${MULTILIB_USEDEP}] )
+ openssl? ( >=dev-libs/openssl-3:=[${MULTILIB_USEDEP}] )
+ opus? ( media-libs/opus[${MULTILIB_USEDEP}] )
+ pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
+ qrcode? ( media-gfx/qrencode:=[${MULTILIB_USEDEP}] )
+ qsv? ( media-libs/libvpl:=[${MULTILIB_USEDEP}] )
+ quirc? ( media-libs/quirc:=[${MULTILIB_USEDEP}] )
+ rabbitmq? ( net-libs/rabbitmq-c:= )
+ rav1e? ( >=media-video/rav1e-0.5:=[capi] )
+ rubberband? ( media-libs/rubberband:=[${MULTILIB_USEDEP}] )
+ samba? ( net-fs/samba:=[client,${MULTILIB_USEDEP}] )
+ sdl? ( media-libs/libsdl2[sound(+),video(+),${MULTILIB_USEDEP}] )
+ shaderc? ( media-libs/shaderc[${MULTILIB_USEDEP}] )
+ snappy? ( app-arch/snappy:=[${MULTILIB_USEDEP}] )
+ sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] )
+ speex? ( media-libs/speex[${MULTILIB_USEDEP}] )
+ srt? ( net-libs/srt:=[${MULTILIB_USEDEP}] )
+ ssh? ( net-libs/libssh:=[sftp,${MULTILIB_USEDEP}] )
+ svg? (
+ dev-libs/glib:2[${MULTILIB_USEDEP}]
+ >=gnome-base/librsvg-2.52:2[${MULTILIB_USEDEP}]
+ x11-libs/cairo[${MULTILIB_USEDEP}]
+ )
+ svt-av1? ( >=media-libs/svt-av1-0.9:=[${MULTILIB_USEDEP}] )
+ theora? ( media-libs/libtheora[encode,${MULTILIB_USEDEP}] )
+ truetype? (
+ media-libs/freetype:2[${MULTILIB_USEDEP}]
+ media-libs/harfbuzz:=[${MULTILIB_USEDEP}]
+ )
+ twolame? ( media-sound/twolame[${MULTILIB_USEDEP}] )
+ v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
+ vaapi? ( media-libs/libva:=[X?,${MULTILIB_USEDEP}] )
+ vdpau? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libvdpau[${MULTILIB_USEDEP}]
+ )
+ vidstab? ( media-libs/vidstab[${MULTILIB_USEDEP}] )
+ vmaf? ( media-libs/libvmaf:=[${MULTILIB_USEDEP}] )
+ vorbis? ( media-libs/libvorbis[${MULTILIB_USEDEP}] )
+ vpx? ( media-libs/libvpx:=[${MULTILIB_USEDEP}] )
+ vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )
+ webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] )
+ x264? ( media-libs/x264:=[${MULTILIB_USEDEP}] )
+ x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
+ xml? ( dev-libs/libxml2[${MULTILIB_USEDEP}] )
+ xvid? ( media-libs/xvid[${MULTILIB_USEDEP}] )
+ zeromq? ( net-libs/zeromq:= )
+ zimg? ( media-libs/zimg[${MULTILIB_USEDEP}] )
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ zvbi? ( media-libs/zvbi[${MULTILIB_USEDEP}] )
+ ${FFMPEG_SOC_PATCH:+"
+ soc? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
+ "}
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ amf? ( media-video/amdgpu-pro-amf )
+"
+DEPEND="
+ ${COMMON_DEPEND}
+ X? ( x11-base/xorg-proto )
+ amf? ( media-libs/amf-headers )
+ kernel_linux? ( >=sys-kernel/linux-headers-6 )
+ ladspa? ( media-libs/ladspa-sdk )
+ nvenc? ( >=media-libs/nv-codec-headers-12.1.14.0 )
+ opencl? ( dev-util/opencl-headers )
+ vulkan? ( dev-util/vulkan-headers )
+"
+BDEPEND="
+ app-alternatives/awk
+ dev-lang/perl
+ virtual/pkgconfig
+ amd64? (
+ || (
+ dev-lang/nasm
+ dev-lang/yasm
+ )
+ )
+ cuda? ( llvm-core/clang:*[llvm_targets_NVPTX] )
+ doc? ( sys-apps/texinfo )
+"
+[[ ${PV} != 9999 ]] &&
+ BDEPEND+="
+ verify-sig? (
+ sec-keys/openpgp-keys-ffmpeg
+ ${FFMPEG_SOC_PATCH:+"
+ soc? ( >=sec-keys/openpgp-keys-gentoo-developers-20240708 )
+ "}
+ )
+ "
+
+DOCS=( CREDITS Changelog README.md doc/APIchanges )
+[[ ${PV} != 9999 ]] && DOCS+=( RELEASE_NOTES )
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libavutil/avconfig.h
+)
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-6.1-opencl-parallel-gmake-fix.patch
+ "${FILESDIR}"/${PN}-7.1.1-svt-av1-3.patch
+)
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] || return
+
+ if use chromaprint && has_version 'media-libs/chromaprint[tools]'; then
+ ewarn "media-libs/chromaprint is installed with USE=tools which links to"
+ ewarn "ffmpeg, and USE=chromaprint is enabled on ffmpeg which links to"
+ ewarn "chromaprint (circular). This may cause issues when updating ffmpeg."
+ ewarn
+ ewarn "If get a build failure with 'ERROR: chromaprint not found' or so,"
+ ewarn "first rebuild chromaprint with USE=-tools, then rebuild ffmpeg, and"
+ ewarn "then finally rebuild chromaprint with USE=tools again (bug #862996)."
+ fi
+
+ [[ ${EXTRA_FFMPEG_CONF} ]] && # drop this eventually
+ die "EXTRA_FFMPEG_CONF is set in the environment, please use EXTRA_ECONF instead"
+}
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ else
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/ffmpeg-${PV}.tar.xz{,.asc} \
+ "${BROOT}"/usr/share/openpgp-keys/ffmpeg.asc
+ in_iuse soc && use soc &&
+ verify-sig_verify_detached "${DISTDIR}"/${FFMPEG_SOC_PATCH}{,.asc} \
+ "${BROOT}"/usr/share/openpgp-keys/gentoo-developers.asc
+ fi
+ default
+ fi
+}
+
+src_prepare() {
+ in_iuse chromium && PATCHES+=( "${FILESDIR}"/chromium-r3.patch )
+ in_iuse soc && use soc && PATCHES+=( "${DISTDIR}"/${FFMPEG_SOC_PATCH} )
+
+ default
+
+ # respect user preferences
+ sed -i '/cflags -fdiagnostics-color/d' configure || die
+
+ # handle *FLAGS here to avoid repeating for each ABI below (bug #923491)
+ FFMPEG_ENABLE_LTO=
+ if tc-is-lto; then
+ : "$(get-flag flto)" # get -flto=<val> (e.g. =thin)
+ FFMPEG_ENABLE_LTO=--enable-lto${_#-flto}
+ fi
+ filter-lto
+
+ if use npp; then
+ local cuda=${ESYSROOT}/opt/cuda/targets/$(usex amd64 x86_64 sbsa)-linux
+ append-cppflags -I"${cuda}"/include
+ append-ldflags -L"${cuda}"/lib
+ fi
+}
+
+multilib_src_configure() {
+ local conf=( "${S}"/configure ) # not autotools-based
+
+ local prefix=${EPREFIX}/usr
+ if [[ ! ${FFMPEG_UNSLOTTED} ]]; then
+ prefix+=/lib/ffmpeg${SLOT%/*}
+ # could get SONAME clashes, so prefer rpath over LDPATH
+ conf+=(
+ --enable-rpath
+ --disable-doc
+ )
+ fi
+
+ conf+=(
+ --prefix="${prefix}"
+ --libdir="${prefix}"/$(get_libdir)
+ --shlibdir="${prefix}"/$(get_libdir)
+ --mandir="${prefix}"/share/man # ignoring slotted MANPATH
+ --docdir="${EPREFIX}"/usr/share/doc/${PF}/html
+
+ --ar="$(tc-getAR)"
+ --cc="$(tc-getCC)"
+ --cxx="$(tc-getCXX)"
+ --nm="$(tc-getNM)"
+ --pkg-config="$(tc-getPKG_CONFIG)"
+ --ranlib="$(tc-getRANLIB)"
+ --disable-stripping
+
+ # overrides users' -g/-O, let *FLAGS handle these
+ --disable-debug
+ --disable-optimizations
+ --optflags=' '
+
+ # pass option over *FLAGS due to special logic (bug #566282,#754654)
+ ${FFMPEG_ENABLE_LTO}
+
+ # basic defaults that should not really need a USE
+ --enable-iconv
+ --enable-pic
+ --enable-shared
+ --disable-static
+ $(multilib_native_enable manpages) # needs pod2man
+ --disable-podpages
+ --disable-txtpages
+
+ # disabled primarily due to being unpackaged
+ --disable-decklink
+ --disable-libaribcaption
+ --disable-libdavs2
+ --disable-libklvanc
+ --disable-liblcevc-dec
+ --disable-libmysofa
+ --disable-libopenvino
+ --disable-libshine
+ --disable-libtls
+ --disable-libuavs3d
+ --disable-libvvenc
+ --disable-libxavs
+ --disable-libxavs2
+ --disable-libxevd
+ --disable-libxeve
+ --disable-pocketsphinx
+ --disable-rkmpp
+ --disable-vapoursynth
+
+ # disabled for other or additional reasons
+ --disable-cuda-nvcc # prefer cuda-llvm for less issues
+ --disable-libcelt # obsolete (bug #664158)
+ --disable-libglslang # prefer USE=shaderc (bug #918989,#920283,#922333)
+ --disable-liblensfun # https://trac.ffmpeg.org/ticket/9112 (abandoned?)
+ --disable-libmfx # prefer libvpl for USE=qsv
+ --disable-libopencv # leaving for later due to circular opencv[ffmpeg]
+ --disable-librist # librist itself needs attention first (bug #822012)
+ --disable-libtensorflow # causes headaches, and is gone
+ --disable-libtorch # has not been looked at yet (bug #936127)
+ --disable-mbedtls # messy with slots, tests underlinking issues
+ --disable-mmal # prefer USE=soc
+ --disable-omx # unsupported (bug #653386)
+ --disable-omx-rpi # ^
+
+ # to avoid obscure issues like bug #915384 and simplify the ebuild,
+ # not passing the following (use EXTRA_ECONF if really must):
+ # --cpu: adds -march=<exact> after the user's more adapted
+ # =native, its logic also does not account for -mno-*
+ # --disable/enable-<cpufeature>: safer to detect at runtime
+ )
+
+ in_iuse soc && use soc &&
+ conf+=(
+ --disable-epoxy
+ --enable-libudev
+ --enable-sand
+ --enable-v4l2-request
+ )
+
+ # broken on x32 (bug #427004), and not PIC safe on x86 (bug #916067)
+ [[ ${ABI} == @(x32|x86) ]] && conf+=( --disable-asm )
+
+ if tc-is-cross-compiler; then
+ conf+=(
+ --enable-cross-compile
+ --arch="$(tc-arch-kernel)"
+ --cross-prefix="${CHOST}-"
+ --host-cc="$(tc-getBUILD_CC)"
+ )
+ case ${CHOST} in
+ *mingw32*) conf+=( --target-os=mingw32 );;
+ *linux*) conf+=( --target-os=linux );;
+ esac
+ fi
+
+ # import options from FFMPEG_IUSE_MAP
+ local flag license mod v
+ local -A optmap=() licensemap=()
+ for v in "${FFMPEG_IUSE_MAP[@]}"; do
+ [[ ${v} =~ \+?([^:]+):?([^@]*)@?(.*) ]] || die "${v}"
+ flag=${BASH_REMATCH[1]}
+ license=${BASH_REMATCH[3]}
+ v=${BASH_REMATCH[2]:-${flag}}
+ for v in ${v//,/ }; do
+ mod=${v::1}
+ v=${v#[\!\^]}
+ if [[ ${mod} == '!' ]]; then
+ if use ${flag}; then
+ optmap[${v}]=--disable-${v}
+ unset licensemap[${v}]
+ fi
+ elif [[ ! -v optmap[${v}] ]]; then
+ if [[ ${mod} == '^' ]]; then
+ optmap[${v}]=$(multilib_native_use_enable ${flag} ${v})
+ else
+ optmap[${v}]=$(use_enable ${flag} ${v})
+ fi
+ use ${flag} && licensemap[${v}]=${license}
+ fi
+ done
+ done
+ for license in "${licensemap[@]}"; do
+ case ${license} in
+ v3ifgpl) use gpl || continue ;&
+ v3) optmap[v3]=--enable-version3 ;;
+ nonfree) use gpl && optmap[nonfree]=--enable-nonfree ;;
+ esac
+ done
+ conf+=(
+ "${optmap[@]}"
+ ${EXTRA_ECONF}
+ )
+
+ einfo "${conf[*]}" # no edo.eclass due to noisy long command in errors
+ "${conf[@]}" || die "configure failed, see ${BUILD_DIR}/ffbuild/config.log"
+}
+
+multilib_src_compile() {
+ emake V=1
+ in_iuse chromium && use chromium && multilib_is_native_abi &&
+ emake V=1 libffmpeg
+}
+
+multilib_src_test() {
+ local -x LD_LIBRARY_PATH=$(printf %s: "${BUILD_DIR}"/lib*)${LD_LIBRARY_PATH}
+ emake V=1 -k fate
+}
+
+multilib_src_install() {
+ emake V=1 DESTDIR="${D}" install
+ in_iuse chromium && use chromium && multilib_is_native_abi &&
+ emake V=1 DESTDIR="${D}" install-libffmpeg
+}
diff --git a/media-video/ffmpeg/ffmpeg-9999.ebuild b/media-video/ffmpeg/ffmpeg-9999.ebuild
index 23c710e1d5ac..81d185eef1da 100644
--- a/media-video/ffmpeg/ffmpeg-9999.ebuild
+++ b/media-video/ffmpeg/ffmpeg-9999.ebuild
@@ -1,630 +1,570 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-# Subslot: libavutil major.libavcodec major.libavformat major
-# Since FFmpeg ships several libraries, subslot is kind of limited here.
-# Most consumers will use those three libraries, if a "less used" library
-# changes its soname, consumers will have to be rebuilt the old way
-# (preserve-libs).
-# If, for example, a package does not link to libavformat and only libavformat
-# changes its ABI then this package will be rebuilt needlessly. Hence, such a
-# package is free _not_ to := depend on FFmpeg but I would strongly encourage
-# doing so since such a case is unlikely.
-FFMPEG_SUBSLOT=59.61.61
-
-SOC_PATCH="ffmpeg-rpi-7.1.patch"
-
-SCM=""
-if [ "${PV#9999}" != "${PV}" ] ; then
- SCM="git-r3"
- EGIT_MIN_CLONE_TYPE="single"
- EGIT_REPO_URI="https://git.ffmpeg.org/ffmpeg.git"
-fi
+inherit flag-o-matic multilib-minimal toolchain-funcs
-inherit flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
+FFMPEG_SOC_PATCH=
+FFMPEG_SUBSLOT=59.61.61 # avutil.avcodec.avformat SONAME
-DESCRIPTION="Complete solution to record/convert/stream audio and video. Includes libavcodec"
-HOMEPAGE="https://ffmpeg.org/"
-SRC_URI="soc? ( https://dev.gentoo.org/~chewi/distfiles/${SOC_PATCH} )"
-if [ "${PV#9999}" != "${PV}" ] ; then
- :
-elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
- SRC_URI+=" mirror://gentoo/${P}.tar.xz"
-else # Release
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI=(
+ https://git.ffmpeg.org/ffmpeg.git
+ https://github.com/FFmpeg/FFmpeg.git
+ )
+else
inherit verify-sig
-
- SRC_URI+="
- https://ffmpeg.org/releases/${P/_/-}.tar.xz
- verify-sig? (
- https://ffmpeg.org/releases/${P/_/-}.tar.xz.asc
- soc? ( https://dev.gentoo.org/~chewi/distfiles/${SOC_PATCH}.asc )
- )
+ SRC_URI="
+ https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz
+ verify-sig? ( https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz.asc )
+ ${FFMPEG_SOC_PATCH:+"
+ soc? (
+ https://dev.gentoo.org/~chewi/distfiles/${FFMPEG_SOC_PATCH}
+ verify-sig? ( https://dev.gentoo.org/~chewi/distfiles/${FFMPEG_SOC_PATCH}.asc )
+ )
+ "}
"
-
- BDEPEND="
- verify-sig? (
- sec-keys/openpgp-keys-ffmpeg
- soc? ( >=sec-keys/openpgp-keys-gentoo-developers-20240708 )
- )
- "
-
- src_unpack() {
- if use verify-sig; then
- verify-sig_verify_detached "${DISTDIR}"/${P/_/-}.tar.xz{,.asc} /usr/share/openpgp-keys/ffmpeg.asc
- use soc && verify-sig_verify_detached "${DISTDIR}"/${SOC_PATCH}{,.asc} /usr/share/openpgp-keys/gentoo-developers.asc
- fi
- default
- }
-fi
-FFMPEG_REVISION="${PV#*_p}"
-
-S=${WORKDIR}/${P/_/-}
-LICENSE="
- !gpl? ( LGPL-2.1 )
- gpl? ( GPL-2 )
- amr? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- gmp? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- libaribb24? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- encode? (
- amrenc? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- )
- samba? ( GPL-3 )
-"
-SLOT="0/${FFMPEG_SUBSLOT}"
-if [ "${PV#9999}" = "${PV}" ] ; then
+ S=${WORKDIR}/ffmpeg-${PV} # avoid ${P}
KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
fi
-# Options to use as use_enable in the foo[:bar] form.
-# This will feed configure with $(use_enable foo bar)
-# or $(use_enable foo foo) if no :bar is set.
-# foo is added to IUSE.
-FFMPEG_FLAG_MAP=(
- +bzip2:bzlib cpudetection:runtime-cpudetect debug gcrypt +gnutls gmp
- +gpl hardcoded-tables +iconv libxml2 libdvdnav libdvdread lzma +network
- opencl openssl +postproc qrcode:libqrencode quirc:libquirc
- samba:libsmbclient sdl:ffplay sdl:sdl2 vaapi vdpau vulkan
- X:xlib X:libxcb X:libxcb-shape X:libxcb-shm X:libxcb-xfixes +zlib
- # libavdevice options
- cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal
- opengl
- # indevs
- libv4l:libv4l2 pulseaudio:libpulse libdrm jack:libjack
- # decoders
- amr:libopencore-amrwb amr:libopencore-amrnb codec2:libcodec2 +dav1d:libdav1d fdk:libfdk-aac
- jpeg2k:libopenjpeg jpegxl:libjxl bluray:libbluray gme:libgme gsm:libgsm
- libaribb24 liblc3 modplug:libmodplug opus:libopus qsv:libvpl libilbc librtmp ssh:libssh
- speex:libspeex srt:libsrt svg:librsvg nvenc:ffnvcodec
- vorbis:libvorbis vpx:libvpx zvbi:libzvbi
- # libavfilter options
- appkit
- bs2b:libbs2b chromaprint cuda:cuda-llvm flite:libflite fontconfig frei0r
- fribidi:libfribidi glslang:libglslang ladspa lcms:lcms2 libass libplacebo
- libtesseract lv2 rubberband:librubberband shaderc:libshaderc truetype:libfreetype
- truetype:libharfbuzz vidstab:libvidstab vmaf:libvmaf zeromq:libzmq zimg:libzimg
- # libswresample options
- libsoxr
- # Threads; we only support pthread for now but ffmpeg supports more
- +threads:pthreads
-)
+DESCRIPTION="Complete solution to record/convert/stream audio and video"
+HOMEPAGE="https://ffmpeg.org/"
-# Same as above but for encoders, i.e. they do something only with USE=encode.
-FFMPEG_ENCODER_FLAG_MAP=(
- amf amrenc:libvo-amrwbenc kvazaar:libkvazaar libaom mp3:libmp3lame
- openh264:libopenh264 rav1e:librav1e snappy:libsnappy svt-av1:libsvtav1
- theora:libtheora twolame:libtwolame webp:libwebp x264:libx264
- x265:libx265 xvid:libxvid
+[[ ${PN} == *-compat ]] && FFMPEG_UNSLOTTED= || FFMPEG_UNSLOTTED=1
+
+FFMPEG_IUSE_MAP=(
+ # [+]flag[:[^][!]opt1,...][@<v3|nonfree>]], ^ = native-only, ! = override
+ # remember to keep LICENSE, REQUIRED_USE, and RESTRICT in sync
+ X:libxcb,libxcb-shape,libxcb-shm,libxcb-xfixes,xlib
+ alsa
+ amf
+ amrenc:libvo-amrwbenc@v3
+ amr:libopencore-amrnb,libopencore-amrwb@v3
+ appkit
+ bluray:libbluray
+ bs2b:libbs2b
+ bzip2:bzlib
+ cdio:libcdio
+ chromaprint
+ codec2:libcodec2
+ cuda:cuda-llvm
+ +dav1d:libdav1d
+ doc:^htmlpages
+ +drm:libdrm
+ dvd:libdvdnav,libdvdread
+ fdk:libfdk-aac@nonfree
+ flite:libflite
+ +fontconfig:libfontconfig
+ frei0r
+ fribidi:libfribidi
+ gcrypt
+ gme:libgme
+ gmp:@v3
+ +gnutls # unused if USE=openssl, default for bug #905113,#917627
+ +gpl
+ gsm:libgsm
+ iec61883:libiec61883
+ ieee1394:libdc1394
+ jack:libjack
+ jpeg2k:libopenjpeg
+ jpegxl:libjxl
+ kvazaar:libkvazaar
+ ladspa
+ lame:libmp3lame
+ lcms:lcms2
+ libaom
+ libaribb24:@v3 # reminder: req use on gpl unneeded if >=1.0.4 (not in tree)
+ +libass
+ libcaca
+ libilbc
+ liblc3
+ libplacebo
+ librtmp:librtmp
+ libsoxr
+ libtesseract
+ lv2
+ lzma
+ modplug:libmodplug
+ npp:^libnpp@nonfree # no multilib
+ nvenc:cuvid,ffnvcodec,nvdec,nvenc
+ openal
+ opencl
+ opengl
+ openh264:libopenh264
+ openmpt:libopenmpt
+ openssl:openssl,!gnutls@v3ifgpl # still LGPL2.1+ if USE=-gpl
+ opus:libopus
+ +postproc # exposed as a USE for clarity with the GPL requirement
+ pulseaudio:libpulse
+ qrcode:libqrencode
+ qsv:libvpl
+ quirc:libquirc
+ rabbitmq:^librabbitmq # no multilib
+ rav1e:^librav1e # no multilib
+ rubberband:librubberband
+ samba:libsmbclient@v3 # GPL-3+ only
+ sdl:sdl2
+ shaderc:libshaderc
+ snappy:libsnappy
+ sndio
+ speex:libspeex
+ srt:libsrt
+ ssh:libssh
+ svg:librsvg
+ svt-av1:libsvtav1
+ theora:libtheora
+ +truetype:libfreetype,libharfbuzz
+ twolame:libtwolame
+ v4l:libv4l2
+ vaapi
+ vdpau
+ vidstab:libvidstab
+ vmaf:libvmaf
+ vorbis:libvorbis
+ vpx:libvpx
+ vulkan:vulkan,vulkan-static # still uses shared, only means no dlopen()
+ webp:libwebp
+ x264:libx264
+ x265:libx265
+ +xml:libxml2
+ xvid:libxvid
+ zeromq:^libzmq # no multilib
+ zimg:libzimg
+ +zlib
+ zvbi:libzvbi
)
-IUSE="
- alsa chromium doc +encode oss +pic sndio static-libs test v4l soc
- ${FFMPEG_FLAG_MAP[@]%:*}
- ${FFMPEG_ENCODER_FLAG_MAP[@]%:*}
-"
-
-# Strings for CPU features in the useflag[:configure_option] form
-# if :configure_option isn't set, it will use 'useflag' as configure option
-ARM_CPU_FEATURES=(
- cpu_flags_arm_thumb:armv5te
- cpu_flags_arm_v6:armv6
- cpu_flags_arm_thumb2:armv6t2
- cpu_flags_arm_neon:neon
- cpu_flags_arm_vfp:vfp
- cpu_flags_arm_vfpv3:vfpv3
- cpu_flags_arm_v8:armv8
- cpu_flags_arm_asimddp:dotprod
- cpu_flags_arm_i8mm:i8mm
- cpu_flags_arm_sve:sve
- cpu_flags_arm_sve2:sve2
-)
-ARM_CPU_REQUIRED_USE="
- arm64? ( cpu_flags_arm_v8 )
- cpu_flags_arm_v8? ( cpu_flags_arm_vfpv3 cpu_flags_arm_neon )
- cpu_flags_arm_neon? (
- cpu_flags_arm_vfp
- arm? ( cpu_flags_arm_thumb2 )
+# all-rights is used to express the GPL incompatibility (RESTRICT=bindist)
+LICENSE="
+ gpl? (
+ GPL-2+
+ amr? ( GPL-3+ ) amrenc? ( GPL-3+ ) libaribb24? ( GPL-3+ )
+ gmp? ( GPL-3+ ) openssl? ( GPL-3+ )
+ fdk? ( all-rights-reserved ) npp? ( all-rights-reserved )
)
- cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
- cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
- cpu_flags_arm_v6? (
- arm? ( cpu_flags_arm_thumb )
+ !gpl? (
+ LGPL-2.1+
+ amr? ( LGPL-3+ ) amrenc? ( LGPL-3+ ) libaribb24? ( LGPL-3+ )
+ gmp? ( LGPL-3+ )
)
- cpu_flags_arm_sve2? ( cpu_flags_arm_sve )
- cpu_flags_arm_sve? ( cpu_flags_arm_v8 )
-"
-MIPS_CPU_FEATURES=( mipsdspr1:mipsdsp mipsdspr2 mipsfpu )
-PPC_CPU_FEATURES=( cpu_flags_ppc_altivec:altivec cpu_flags_ppc_vsx:vsx cpu_flags_ppc_vsx2:power8 )
-PPC_CPU_REQUIRED_USE="
- cpu_flags_ppc_vsx? ( cpu_flags_ppc_altivec )
- cpu_flags_ppc_vsx2? ( cpu_flags_ppc_vsx )
+ samba? ( GPL-3+ )
"
-X86_CPU_FEATURES_RAW=( 3dnow:amd3dnow 3dnowext:amd3dnowext aes:aesni avx:avx avx2:avx2 fma3:fma3 fma4:fma4 mmx:mmx
- mmxext:mmxext sse:sse sse2:sse2 sse3:sse3 ssse3:ssse3 sse4_1:sse4 sse4_2:sse42 xop:xop )
-X86_CPU_FEATURES=( ${X86_CPU_FEATURES_RAW[@]/#/cpu_flags_x86_} )
-X86_CPU_REQUIRED_USE="
- cpu_flags_x86_avx2? ( cpu_flags_x86_avx )
- cpu_flags_x86_fma4? ( cpu_flags_x86_avx )
- cpu_flags_x86_fma3? ( cpu_flags_x86_avx )
- cpu_flags_x86_xop? ( cpu_flags_x86_avx )
- cpu_flags_x86_avx? ( cpu_flags_x86_sse4_2 )
- cpu_flags_x86_aes? ( cpu_flags_x86_sse4_2 )
- cpu_flags_x86_sse4_2? ( cpu_flags_x86_sse4_1 )
- cpu_flags_x86_sse4_1? ( cpu_flags_x86_ssse3 )
- cpu_flags_x86_ssse3? ( cpu_flags_x86_sse3 )
- cpu_flags_x86_sse3? ( cpu_flags_x86_sse2 )
- cpu_flags_x86_sse2? ( cpu_flags_x86_sse )
- cpu_flags_x86_sse? ( cpu_flags_x86_mmxext )
- cpu_flags_x86_mmxext? ( cpu_flags_x86_mmx )
- cpu_flags_x86_3dnowext? ( cpu_flags_x86_3dnow )
- cpu_flags_x86_3dnow? ( cpu_flags_x86_mmx )
+[[ ${FFMPEG_UNSLOTTED} ]] && : 0 || : "$(ver_cut 1)"
+SLOT="${_}/${FFMPEG_SUBSLOT}"
+IUSE="
+ ${FFMPEG_IUSE_MAP[*]%:*}
+ ${FFMPEG_UNSLOTTED:+chromium}
+ ${FFMPEG_SOC_PATCH:+soc}
"
-
-CPU_FEATURES_MAP=(
- ${ARM_CPU_FEATURES[@]}
- ${MIPS_CPU_FEATURES[@]}
- ${PPC_CPU_FEATURES[@]}
- ${X86_CPU_FEATURES[@]}
-)
-IUSE="${IUSE}
- ${CPU_FEATURES_MAP[@]%:*}"
-
-CPU_REQUIRED_USE="
- ${ARM_CPU_REQUIRED_USE}
- ${PPC_CPU_REQUIRED_USE}
- ${X86_CPU_REQUIRED_USE}
+REQUIRED_USE="
+ cuda? ( nvenc )
+ fribidi? ( truetype )
+ gmp? ( !librtmp )
+ libplacebo? ( || ( sdl vulkan ) )
+ npp? ( nvenc )
+ shaderc? ( vulkan )
+ libaribb24? ( gpl ) cdio? ( gpl ) dvd? ( gpl ) frei0r? ( gpl )
+ postproc? ( gpl ) rubberband? ( gpl ) samba? ( gpl )
+ vidstab? ( gpl ) x264? ( gpl ) x265? ( gpl ) xvid? ( gpl )
+ ${FFMPEG_UNSLOTTED:+chromium? ( opus )}
+ ${FFMPEG_SOC_PATCH:+soc? ( drm )}
"
+RESTRICT="gpl? ( fdk? ( bindist ) npp? ( bindist ) )"
-FFTOOLS=( aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt
- graph2dot ismindex pktdumper qt-faststart sidxindex trasher )
-IUSE="${IUSE} ${FFTOOLS[@]/#/+fftools_}"
-
-RDEPEND="
- alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
- amf? ( media-video/amdgpu-pro-amf )
- amr? ( >=media-libs/opencore-amr-0.1.3-r1[${MULTILIB_USEDEP}] )
- bluray? ( >=media-libs/libbluray-0.3.0-r1:=[${MULTILIB_USEDEP}] )
- bs2b? ( >=media-libs/libbs2b-3.1.0-r1[${MULTILIB_USEDEP}] )
- bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
- cdio? ( >=dev-libs/libcdio-paranoia-0.90_p1-r1[${MULTILIB_USEDEP}] )
- chromaprint? ( >=media-libs/chromaprint-1.2-r1[${MULTILIB_USEDEP}] )
- codec2? ( media-libs/codec2[${MULTILIB_USEDEP}] )
- dav1d? ( >=media-libs/dav1d-0.5.0:0=[${MULTILIB_USEDEP}] )
- encode? (
- amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
- kvazaar? ( >=media-libs/kvazaar-2.0.0[${MULTILIB_USEDEP}] )
- mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
- openh264? ( >=media-libs/openh264-1.4.0-r1:=[${MULTILIB_USEDEP}] )
- rav1e? ( >=media-video/rav1e-0.5:=[capi] )
- snappy? ( >=app-arch/snappy-1.1.2-r1:=[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- )
- twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
- webp? ( >=media-libs/libwebp-0.3.0:=[${MULTILIB_USEDEP}] )
- x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )
- x265? ( >=media-libs/x265-1.6:=[${MULTILIB_USEDEP}] )
- xvid? ( >=media-libs/xvid-1.3.2-r1[${MULTILIB_USEDEP}] )
+# dlopen: amdgpu-pro-amf
+COMMON_DEPEND="
+ virtual/libiconv[${MULTILIB_USEDEP}]
+ X? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libXext[${MULTILIB_USEDEP}]
+ x11-libs/libXv[${MULTILIB_USEDEP}]
+ x11-libs/libxcb:=[${MULTILIB_USEDEP}]
)
- fdk? ( >=media-libs/fdk-aac-0.1.3:=[${MULTILIB_USEDEP}] )
- flite? ( >=app-accessibility/flite-1.4-r4[${MULTILIB_USEDEP}] )
- fontconfig? ( >=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}] )
+ alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
+ amr? ( media-libs/opencore-amr[${MULTILIB_USEDEP}] )
+ amrenc? ( media-libs/vo-amrwbenc[${MULTILIB_USEDEP}] )
+ bluray? ( media-libs/libbluray:=[${MULTILIB_USEDEP}] )
+ bs2b? ( media-libs/libbs2b[${MULTILIB_USEDEP}] )
+ bzip2? ( app-arch/bzip2[${MULTILIB_USEDEP}] )
+ cdio? ( dev-libs/libcdio-paranoia:=[${MULTILIB_USEDEP}] )
+ chromaprint? ( media-libs/chromaprint:=[${MULTILIB_USEDEP}] )
+ codec2? ( media-libs/codec2:=[${MULTILIB_USEDEP}] )
+ dav1d? ( media-libs/dav1d:=[${MULTILIB_USEDEP}] )
+ dvd? (
+ media-libs/libdvdnav[${MULTILIB_USEDEP}]
+ media-libs/libdvdread:=[${MULTILIB_USEDEP}]
+ )
+ drm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
+ fdk? ( media-libs/fdk-aac:=[${MULTILIB_USEDEP}] )
+ flite? ( app-accessibility/flite[${MULTILIB_USEDEP}] )
+ fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] )
frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
- fribidi? ( >=dev-libs/fribidi-0.19.6[${MULTILIB_USEDEP}] )
- gcrypt? ( >=dev-libs/libgcrypt-1.6:0=[${MULTILIB_USEDEP}] )
- glslang? ( dev-util/glslang:=[${MULTILIB_USEDEP}] )
- gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
- gmp? ( >=dev-libs/gmp-6:0=[${MULTILIB_USEDEP}] )
- gsm? ( >=media-sound/gsm-1.0.13-r1[${MULTILIB_USEDEP}] )
- iconv? ( >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] )
+ fribidi? ( dev-libs/fribidi[${MULTILIB_USEDEP}] )
+ gcrypt? ( dev-libs/libgcrypt:=[${MULTILIB_USEDEP}] )
+ gme? ( media-libs/game-music-emu[${MULTILIB_USEDEP}] )
+ gmp? ( dev-libs/gmp:=[${MULTILIB_USEDEP}] )
+ gnutls? ( !openssl? (
+ net-libs/gnutls:=[${MULTILIB_USEDEP}]
+ ) )
+ gsm? ( media-sound/gsm[${MULTILIB_USEDEP}] )
iec61883? (
- >=media-libs/libiec61883-1.2.0-r1[${MULTILIB_USEDEP}]
- >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
- >=sys-libs/libavc1394-0.5.4-r1[${MULTILIB_USEDEP}]
+ media-libs/libiec61883[${MULTILIB_USEDEP}]
+ sys-libs/libavc1394[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
)
ieee1394? (
- >=media-libs/libdc1394-2.2.1:2=[${MULTILIB_USEDEP}]
- >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
+ media-libs/libdc1394:2=[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
)
jack? ( virtual/jack[${MULTILIB_USEDEP}] )
- jpeg2k? ( >=media-libs/openjpeg-2.1:2=[${MULTILIB_USEDEP}] )
- jpegxl? ( >=media-libs/libjxl-0.7.0:=[$MULTILIB_USEDEP] )
- lcms? ( >=media-libs/lcms-2.13:2[$MULTILIB_USEDEP] )
- libaom? ( >=media-libs/libaom-2.0.0:=[${MULTILIB_USEDEP}] )
- libaribb24? ( >=media-libs/aribb24-1.0.3-r2[${MULTILIB_USEDEP}] )
- libass? ( >=media-libs/libass-0.11.0:=[${MULTILIB_USEDEP}] )
- libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
- libdrm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
- libdvdnav? ( media-libs/libdvdnav[${MULTILIB_USEDEP}] )
- libdvdread? ( media-libs/libdvdread:=[${MULTILIB_USEDEP}] )
- libilbc? ( >=media-libs/libilbc-2[${MULTILIB_USEDEP}] )
- liblc3? ( >=media-sound/liblc3-1.1.0[${MULTILIB_USEDEP}] )
- libplacebo? ( >=media-libs/libplacebo-4.192.0:=[$MULTILIB_USEDEP] )
- librtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
- libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
- libtesseract? ( >=app-text/tesseract-4.1.0-r1[${MULTILIB_USEDEP}] )
- libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
- libxml2? ( dev-libs/libxml2:=[${MULTILIB_USEDEP}] )
- lv2? ( media-libs/lv2[${MULTILIB_USEDEP}] media-libs/lilv[${MULTILIB_USEDEP}] )
- lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
- modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
- openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
+ jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] )
+ jpegxl? ( media-libs/libjxl:=[$MULTILIB_USEDEP] )
+ kvazaar? ( media-libs/kvazaar:=[${MULTILIB_USEDEP}] )
+ lame? ( media-sound/lame[${MULTILIB_USEDEP}] )
+ lcms? ( media-libs/lcms:2[$MULTILIB_USEDEP] )
+ libaom? ( media-libs/libaom:=[${MULTILIB_USEDEP}] )
+ libaribb24? ( media-libs/aribb24[${MULTILIB_USEDEP}] )
+ libass? ( media-libs/libass:=[${MULTILIB_USEDEP}] )
+ libcaca? ( media-libs/libcaca[${MULTILIB_USEDEP}] )
+ libilbc? ( media-libs/libilbc:=[${MULTILIB_USEDEP}] )
+ liblc3? ( >=media-sound/liblc3-1.1[${MULTILIB_USEDEP}] )
+ libplacebo? ( media-libs/libplacebo:=[$MULTILIB_USEDEP] )
+ librtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] )
+ libsoxr? ( media-libs/soxr[${MULTILIB_USEDEP}] )
+ libtesseract? ( app-text/tesseract:=[${MULTILIB_USEDEP}] )
+ lv2? (
+ media-libs/lilv[${MULTILIB_USEDEP}]
+ media-libs/lv2[${MULTILIB_USEDEP}]
+ )
+ lzma? ( app-arch/xz-utils[${MULTILIB_USEDEP}] )
+ modplug? ( media-libs/libmodplug[${MULTILIB_USEDEP}] )
+ npp? ( dev-util/nvidia-cuda-toolkit:= )
+ openal? ( media-libs/openal[${MULTILIB_USEDEP}] )
opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
- opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
+ openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
+ openmpt? ( media-libs/libopenmpt[${MULTILIB_USEDEP}] )
+ openssl? ( >=dev-libs/openssl-3:=[${MULTILIB_USEDEP}] )
+ opus? ( media-libs/opus[${MULTILIB_USEDEP}] )
pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
- qsv? ( media-libs/libvpl[${MULTILIB_USEDEP}] )
qrcode? ( media-gfx/qrencode:=[${MULTILIB_USEDEP}] )
+ qsv? ( media-libs/libvpl:=[${MULTILIB_USEDEP}] )
quirc? ( media-libs/quirc:=[${MULTILIB_USEDEP}] )
- rubberband? ( >=media-libs/rubberband-1.8.1-r1[${MULTILIB_USEDEP}] )
- samba? ( >=net-fs/samba-3.6.23-r1[client,${MULTILIB_USEDEP}] )
- sdl? ( media-libs/libsdl2[sound,video,${MULTILIB_USEDEP}] )
+ rabbitmq? ( net-libs/rabbitmq-c:= )
+ rav1e? ( >=media-video/rav1e-0.5:=[capi] )
+ rubberband? ( media-libs/rubberband:=[${MULTILIB_USEDEP}] )
+ samba? ( net-fs/samba:=[client,${MULTILIB_USEDEP}] )
+ sdl? ( media-libs/libsdl2[sound(+),video(+),${MULTILIB_USEDEP}] )
shaderc? ( media-libs/shaderc[${MULTILIB_USEDEP}] )
+ snappy? ( app-arch/snappy:=[${MULTILIB_USEDEP}] )
sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] )
- soc? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
- speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
- srt? ( >=net-libs/srt-1.3.0:=[${MULTILIB_USEDEP}] )
- ssh? ( >=net-libs/libssh-0.6.0:=[sftp,${MULTILIB_USEDEP}] )
+ speex? ( media-libs/speex[${MULTILIB_USEDEP}] )
+ srt? ( net-libs/srt:=[${MULTILIB_USEDEP}] )
+ ssh? ( net-libs/libssh:=[sftp,${MULTILIB_USEDEP}] )
svg? (
- gnome-base/librsvg:2=[${MULTILIB_USEDEP}]
+ dev-libs/glib:2[${MULTILIB_USEDEP}]
+ >=gnome-base/librsvg-2.52:2[${MULTILIB_USEDEP}]
x11-libs/cairo[${MULTILIB_USEDEP}]
)
- nvenc? ( >=media-libs/nv-codec-headers-11.1.5.3 )
- svt-av1? ( >=media-libs/svt-av1-0.9.0:=[${MULTILIB_USEDEP}] )
+ svt-av1? ( >=media-libs/svt-av1-0.9:=[${MULTILIB_USEDEP}] )
+ theora? ( media-libs/libtheora[encode,${MULTILIB_USEDEP}] )
truetype? (
- >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}]
+ media-libs/freetype:2[${MULTILIB_USEDEP}]
media-libs/harfbuzz:=[${MULTILIB_USEDEP}]
)
- vaapi? ( >=media-libs/libva-1.2.1-r1:0=[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
- vidstab? ( >=media-libs/vidstab-1.1.0[${MULTILIB_USEDEP}] )
- vmaf? ( >=media-libs/libvmaf-2.0.0:=[${MULTILIB_USEDEP}] )
- vorbis? (
- >=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- )
- vpx? ( >=media-libs/libvpx-1.4.0:=[${MULTILIB_USEDEP}] )
- vulkan? ( >=media-libs/vulkan-loader-1.3.277:=[${MULTILIB_USEDEP}] )
- X? (
- >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
- >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
- >=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
- >=x11-libs/libxcb-1.4:=[${MULTILIB_USEDEP}]
+ twolame? ( media-sound/twolame[${MULTILIB_USEDEP}] )
+ v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
+ vaapi? ( media-libs/libva:=[X?,${MULTILIB_USEDEP}] )
+ vdpau? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libvdpau[${MULTILIB_USEDEP}]
)
- zeromq? ( >=net-libs/zeromq-4.2.1:= )
- zimg? ( >=media-libs/zimg-2.7.4:=[${MULTILIB_USEDEP}] )
- zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
- zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
+ vidstab? ( media-libs/vidstab[${MULTILIB_USEDEP}] )
+ vmaf? ( media-libs/libvmaf:=[${MULTILIB_USEDEP}] )
+ vorbis? ( media-libs/libvorbis[${MULTILIB_USEDEP}] )
+ vpx? ( media-libs/libvpx:=[${MULTILIB_USEDEP}] )
+ vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )
+ webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] )
+ x264? ( media-libs/x264:=[${MULTILIB_USEDEP}] )
+ x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
+ xml? ( dev-libs/libxml2[${MULTILIB_USEDEP}] )
+ xvid? ( media-libs/xvid[${MULTILIB_USEDEP}] )
+ zeromq? ( net-libs/zeromq:= )
+ zimg? ( media-libs/zimg[${MULTILIB_USEDEP}] )
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ zvbi? ( media-libs/zvbi[${MULTILIB_USEDEP}] )
+ ${FFMPEG_SOC_PATCH:+"
+ soc? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
+ "}
"
-
-RDEPEND="${RDEPEND}
- openssl? ( >=dev-libs/openssl-1.0.1h-r2:0=[${MULTILIB_USEDEP}] )
- !openssl? ( gnutls? ( >=net-libs/gnutls-2.12.23-r6:=[${MULTILIB_USEDEP}] ) )
+RDEPEND="
+ ${COMMON_DEPEND}
+ amf? ( media-video/amdgpu-pro-amf )
"
-
-DEPEND="${RDEPEND}
+DEPEND="
+ ${COMMON_DEPEND}
+ X? ( x11-base/xorg-proto )
amf? ( >=media-libs/amf-headers-1.4.35 )
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
- vulkan? ( >=dev-util/vulkan-headers-1.3.277 )
+ kernel_linux? ( >=sys-kernel/linux-headers-6 )
+ ladspa? ( media-libs/ladspa-sdk )
+ nvenc? ( >=media-libs/nv-codec-headers-12.1.14.0 )
+ opencl? ( dev-util/opencl-headers )
+ vulkan? ( dev-util/vulkan-headers )
"
-
-# += for verify-sig above
-BDEPEND+="
- >=dev-build/make-3.81
+BDEPEND="
+ app-alternatives/awk
+ dev-lang/perl
virtual/pkgconfig
- cpu_flags_x86_mmx? ( >=dev-lang/nasm-2.13 )
- cuda? ( >=llvm-core/clang-7[llvm_targets_NVPTX] )
+ amd64? ( dev-lang/nasm )
+ cuda? ( llvm-core/clang:*[llvm_targets_NVPTX] )
doc? ( sys-apps/texinfo )
- test? ( net-misc/wget app-alternatives/bc )
-"
-
-# Code requiring FFmpeg to be built under gpl license
-GPL_REQUIRED_USE="
- postproc? ( gpl )
- frei0r? ( gpl )
- cdio? ( gpl )
- rubberband? ( gpl )
- vidstab? ( gpl )
- samba? ( gpl )
- encode? (
- x264? ( gpl )
- x265? ( gpl )
- xvid? ( gpl )
- )
-"
-REQUIRED_USE="
- chromium? ( opus )
- cuda? ( nvenc )
- fftools_cws2fws? ( zlib )
- glslang? ( vulkan !shaderc )
- libv4l? ( v4l )
- shaderc? ( vulkan !glslang )
- soc? ( libdrm )
- test? ( encode )
- vulkan? ( threads )
- ${GPL_REQUIRED_USE}
- ${CPU_REQUIRED_USE}"
-RESTRICT="
- !test? ( test )
- gpl? ( openssl? ( bindist ) fdk? ( bindist ) )
"
+[[ ${PV} != 9999 ]] &&
+ BDEPEND+="
+ verify-sig? (
+ sec-keys/openpgp-keys-ffmpeg
+ ${FFMPEG_SOC_PATCH:+"
+ soc? ( >=sec-keys/openpgp-keys-gentoo-developers-20240708 )
+ "}
+ )
+ "
-PATCHES=(
- "${FILESDIR}"/chromium-r2.patch
- "${FILESDIR}"/${PN}-6.1-opencl-parallel-gmake-fix.patch
-)
+DOCS=( CREDITS Changelog README.md doc/APIchanges )
+[[ ${PV} != 9999 ]] && DOCS+=( RELEASE_NOTES )
MULTILIB_WRAPPED_HEADERS=(
/usr/include/libavutil/avconfig.h
)
+PATCHES=(
+ "${FILESDIR}"/${PN}-6.1-opencl-parallel-gmake-fix.patch
+)
+
pkg_setup() {
- # ffmpeg[chromaprint] depends on chromaprint, and chromaprint[tools] depends on ffmpeg.
- # May cause breakage while updating, #862996, #625210, #833821.
- if has_version media-libs/chromaprint[tools] && use chromaprint; then
- ewarn "You have media-libs/chromaprint installed with 'tools' USE flag, which "
- ewarn "links to ffmpeg, and you have enabled 'chromaprint' USE flag for ffmpeg, "
- ewarn "which links to chromaprint. This may cause issues while rebuilding ffmpeg."
- ewarn ""
- ewarn "If your build fails to 'ERROR: chromaprint not found', rebuild chromaprint "
- ewarn "without the 'tools' use flag first, then rebuild ffmpeg, and then finally enable "
- ewarn "'tools' USE flag for chromaprint. See #862996."
+ [[ ${MERGE_TYPE} != binary ]] || return
+
+ if use chromaprint && has_version 'media-libs/chromaprint[tools]'; then
+ ewarn "media-libs/chromaprint is installed with USE=tools which links to"
+ ewarn "ffmpeg, and USE=chromaprint is enabled on ffmpeg which links to"
+ ewarn "chromaprint (circular). This may cause issues when updating ffmpeg."
+ ewarn
+ ewarn "If get a build failure with 'ERROR: chromaprint not found' or so,"
+ ewarn "first rebuild chromaprint with USE=-tools, then rebuild ffmpeg, and"
+ ewarn "then finally rebuild chromaprint with USE=tools again (bug #862996)."
fi
+
+ [[ ${EXTRA_FFMPEG_CONF} ]] && # drop this eventually
+ die "EXTRA_FFMPEG_CONF is set in the environment, please use EXTRA_ECONF instead"
}
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
+src_unpack() {
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ else
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/ffmpeg-${PV}.tar.xz{,.asc} \
+ "${BROOT}"/usr/share/openpgp-keys/ffmpeg.asc
+ in_iuse soc && use soc &&
+ verify-sig_verify_detached "${DISTDIR}"/${FFMPEG_SOC_PATCH}{,.asc} \
+ "${BROOT}"/usr/share/openpgp-keys/gentoo-developers.asc
+ fi
+ default
fi
+}
- use soc &&
- eapply "${DISTDIR}"/${SOC_PATCH}
+src_prepare() {
+ in_iuse chromium && PATCHES+=( "${FILESDIR}"/chromium-r3.patch )
+ in_iuse soc && use soc && PATCHES+=( "${DISTDIR}"/${FFMPEG_SOC_PATCH} )
default
- # -fdiagnostics-color=auto gets appended after user flags which
- # will ignore user's preference.
- sed -i -e '/check_cflags -fdiagnostics-color=auto/d' configure || die
+ # respect user preferences
+ sed -i '/cflags -fdiagnostics-color/d' configure || die
- ln -snf "${FILESDIR}"/chromium.c chromium.c || die
- echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
-
- # We need to detect LTO usage before multilib stuff and filter-lto is called (bug #923491)
- if tc-is-lto ; then
- # Respect -flto value, e.g -flto=thin
- local v="$(get-flag flto)"
- [[ ${v} != -flto ]] && LTO_FLAG="--enable-lto=${v}" || LTO_FLAG="--enable-lto"
+ # handle *FLAGS here to avoid repeating for each ABI below (bug #923491)
+ FFMPEG_ENABLE_LTO=
+ if tc-is-lto; then
+ : "$(get-flag flto)" # get -flto=<val> (e.g. =thin)
+ FFMPEG_ENABLE_LTO=--enable-lto${_#-flto}
fi
filter-lto
+
+ if use npp; then
+ local cuda=${ESYSROOT}/opt/cuda/targets/$(usex amd64 x86_64 sbsa)-linux
+ append-cppflags -I"${cuda}"/include
+ append-ldflags -L"${cuda}"/lib
+ fi
}
multilib_src_configure() {
- local myconf=( )
-
- # Conditional patch options
- use soc && myconf+=( --enable-v4l2-request --enable-libudev --enable-sand )
-
- local ffuse=( "${FFMPEG_FLAG_MAP[@]}" )
- use openssl && myconf+=( --enable-nonfree )
- use samba && myconf+=( --enable-version3 )
-
- # Encoders
- if use encode ; then
- ffuse+=( "${FFMPEG_ENCODER_FLAG_MAP[@]}" )
-
- # Licensing.
- if use amrenc ; then
- myconf+=( --enable-version3 )
- fi
- else
- myconf+=( --disable-encoders )
+ local conf=( "${S}"/configure ) # not autotools-based
+
+ local prefix=${EPREFIX}/usr
+ if [[ ! ${FFMPEG_UNSLOTTED} ]]; then
+ prefix+=/lib/ffmpeg${SLOT%/*}
+ # could get SONAME clashes, so prefer rpath over LDPATH
+ conf+=(
+ --enable-rpath
+ --disable-doc
+ )
fi
- # Indevs
- use v4l || myconf+=( --disable-indev=v4l2 --disable-outdev=v4l2 )
- for i in alsa oss jack sndio ; do
- use ${i} || myconf+=( --disable-indev=${i} )
- done
+ conf+=(
+ --prefix="${prefix}"
+ --libdir="${prefix}"/$(get_libdir)
+ --shlibdir="${prefix}"/$(get_libdir)
+ --mandir="${prefix}"/share/man # ignoring slotted MANPATH
+ --docdir="${EPREFIX}"/usr/share/doc/${PF}/html
+
+ --ar="$(tc-getAR)"
+ --cc="$(tc-getCC)"
+ --cxx="$(tc-getCXX)"
+ --nm="$(tc-getNM)"
+ --pkg-config="$(tc-getPKG_CONFIG)"
+ --ranlib="$(tc-getRANLIB)"
+ --disable-stripping
- # Outdevs
- for i in alsa oss sndio ; do
- use ${i} || myconf+=( --disable-outdev=${i} )
- done
+ # overrides users' -g/-O, let *FLAGS handle these
+ --disable-debug
+ --disable-optimizations
+ --optflags=' '
+
+ # pass option over *FLAGS due to special logic (bug #566282,#754654)
+ ${FFMPEG_ENABLE_LTO}
+
+ # basic defaults that should not really need a USE
+ --enable-iconv
+ --enable-pic
+ --enable-shared
+ --disable-static
+ $(multilib_native_enable manpages) # needs pod2man
+ --disable-podpages
+ --disable-txtpages
+
+ # disabled primarily due to being unpackaged
+ --disable-decklink
+ --disable-libaribcaption
+ --disable-libdavs2
+ --disable-libklvanc
+ --disable-liblcevc-dec
+ --disable-libmysofa
+ --disable-libopenvino
+ --disable-libshine
+ --disable-libtls
+ --disable-libuavs3d
+ --disable-libvvenc
+ --disable-libxavs
+ --disable-libxavs2
+ --disable-libxevd
+ --disable-libxeve
+ --disable-pocketsphinx
+ --disable-rkmpp
+ --disable-vapoursynth
+
+ # disabled for other or additional reasons
+ --disable-cuda-nvcc # prefer cuda-llvm for less issues
+ --disable-libcelt # obsolete (bug #664158)
+ --disable-libglslang # prefer USE=shaderc (bug #918989,#920283,#922333)
+ --disable-liblensfun # https://trac.ffmpeg.org/ticket/9112 (abandoned?)
+ --disable-libmfx # prefer libvpl for USE=qsv
+ --disable-libopencv # leaving for later due to circular opencv[ffmpeg]
+ --disable-librist # librist itself needs attention first (bug #822012)
+ --disable-libtensorflow # causes headaches, and is gone
+ --disable-libtorch # has not been looked at yet (bug #936127)
+ --disable-mbedtls # messy with slots, tests underlinking issues
+ --disable-mmal # prefer USE=soc
+ --disable-omx # unsupported (bug #653386)
+ --disable-omx-rpi # ^
+
+ # to avoid obscure issues like bug #915384 and simplify the ebuild,
+ # not passing the following (use EXTRA_ECONF if really must):
+ # --cpu: adds -march=<exact> after the user's more adapted
+ # =native, its logic also does not account for -mno-*
+ # --disable/enable-<cpufeature>: safer to detect at runtime
+ )
- # Decoders
- use amr && myconf+=( --enable-version3 )
- use gmp && myconf+=( --enable-version3 )
- use libaribb24 && myconf+=( --enable-version3 )
- use fdk && use gpl && myconf+=( --enable-nonfree )
+ in_iuse soc && use soc &&
+ conf+=(
+ --disable-epoxy
+ --enable-libudev
+ --enable-sand
+ --enable-v4l2-request
+ )
- for i in "${ffuse[@]#+}" ; do
- myconf+=( $(use_enable ${i%:*} ${i#*:}) )
- done
+ # broken on x32 (bug #427004), and not PIC safe on x86 (bug #916067)
+ [[ ${ABI} == @(x32|x86) ]] && conf+=( --disable-asm )
- if use openssl ; then
- myconf+=( --disable-gnutls )
- has_version dev-libs/openssl:0/3 && myconf+=( --enable-version3 )
+ if tc-is-cross-compiler; then
+ conf+=(
+ --enable-cross-compile
+ --arch="$(tc-arch-kernel)"
+ --cross-prefix="${CHOST}-"
+ --host-cc="$(tc-getBUILD_CC)"
+ )
+ case ${CHOST} in
+ *mingw32*) conf+=( --target-os=mingw32 );;
+ *linux*) conf+=( --target-os=linux );;
+ esac
fi
- # (temporarily) disable non-multilib deps
- if ! multilib_is_native_abi; then
- for i in librav1e libzmq ; do
- myconf+=( --disable-${i} )
+ # import options from FFMPEG_IUSE_MAP
+ local flag license mod v
+ local -A optmap=() licensemap=()
+ for v in "${FFMPEG_IUSE_MAP[@]}"; do
+ [[ ${v} =~ \+?([^:]+):?([^@]*)@?(.*) ]] || die "${v}"
+ flag=${BASH_REMATCH[1]}
+ license=${BASH_REMATCH[3]}
+ v=${BASH_REMATCH[2]:-${flag}}
+ for v in ${v//,/ }; do
+ mod=${v::1}
+ v=${v#[\!\^]}
+ if [[ ${mod} == '!' ]]; then
+ if use ${flag}; then
+ optmap[${v}]=--disable-${v}
+ unset licensemap[${v}]
+ fi
+ elif [[ ! -v optmap[${v}] ]]; then
+ if [[ ${mod} == '^' ]]; then
+ optmap[${v}]=$(multilib_native_use_enable ${flag} ${v})
+ else
+ optmap[${v}]=$(use_enable ${flag} ${v})
+ fi
+ use ${flag} && licensemap[${v}]=${license}
+ fi
done
- fi
-
- # CPU features
- for i in "${CPU_FEATURES_MAP[@]}" ; do
- use ${i%:*} || myconf+=( --disable-${i#*:} )
done
-
- if use pic ; then
- myconf+=( --enable-pic )
- # disable asm code if PIC is required
- # as the provided asm decidedly is not PIC for x86.
- [[ ${ABI} == x86 ]] && myconf+=( --disable-asm )
- fi
- [[ ${ABI} == x32 ]] && myconf+=( --disable-asm ) #427004
-
- # Try to get cpu type based on CFLAGS.
- # Bug #172723
- # We need to do this so that features of that CPU will be better used
- # If they contain an unknown CPU it will not hurt since ffmpeg's configure
- # will just ignore it.
- for i in $(get-flag mcpu) $(get-flag march) ; do
- [[ ${i} = native ]] && i="host" # bug #273421
- myconf+=( --cpu=${i} )
- break
- done
-
- # LTO support, bug #566282, bug #754654, bug #772854
- if [[ ${ABI} != x86 && ! -z ${LTO_FLAG} ]]; then
- myconf+=( ${LTO_FLAG} )
- fi
-
- # Mandatory configuration
- myconf=(
- --disable-libaribcaption # not yet packaged
- --disable-libxeve
- --disable-libxevd
- --disable-d3d12va
- --disable-liblcevc_dec # not yet packaged
- --enable-avfilter
- --disable-stripping
- # This is only for hardcoded cflags; those are used in configure checks that may
- # interfere with proper detections, bug #671746 and bug #645778
- # We use optflags, so that overrides them anyway.
- --disable-optimizations
- --disable-libcelt # bug #664158
- "${myconf[@]}"
- )
-
- # cross compile support
- if tc-is-cross-compiler ; then
- myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- --host-cc="$(tc-getBUILD_CC)" )
- case ${CHOST} in
- *mingw32*)
- myconf+=( --target-os=mingw32 )
- ;;
- *linux*)
- myconf+=( --target-os=linux )
- ;;
+ for license in "${licensemap[@]}"; do
+ case ${license} in
+ v3ifgpl) use gpl || continue ;&
+ v3) optmap[v3]=--enable-version3 ;;
+ nonfree) use gpl && optmap[nonfree]=--enable-nonfree ;;
esac
- fi
-
- # doc
- myconf+=(
- $(multilib_native_use_enable doc)
- $(multilib_native_use_enable doc htmlpages)
- $(multilib_native_enable manpages)
- )
-
- # skip broken test https://trac.ffmpeg.org/ticket/11225
- if use test; then
- myconf+=(
- --ignore-tests=ffmpeg-spec-disposition
+ done
+ conf+=(
+ "${optmap[@]}"
+ ${EXTRA_ECONF}
)
- fi
-
- if use elibc_musl ; then
- append-cflags -DHAVE_POSIX_IOCTL
- fi
- # Use --extra-libs if needed for LIBS
- set -- "${S}/configure" \
- --prefix="${EPREFIX}/usr" \
- --libdir="${EPREFIX}/usr/$(get_libdir)" \
- --shlibdir="${EPREFIX}/usr/$(get_libdir)" \
- --docdir="${EPREFIX}/usr/share/doc/${PF}/html" \
- --mandir="${EPREFIX}/usr/share/man" \
- --enable-shared \
- --cc="$(tc-getCC)" \
- --cxx="$(tc-getCXX)" \
- --ar="$(tc-getAR)" \
- --nm="$(tc-getNM)" \
- --strip="$(tc-getSTRIP)" \
- --ranlib="$(tc-getRANLIB)" \
- --pkg-config="$(tc-getPKG_CONFIG)" \
- --optflags="${CFLAGS}" \
- $(use_enable static-libs static) \
- $(use_enable static-libs vulkan-static) \
- "${myconf[@]}" \
- ${EXTRA_FFMPEG_CONF}
- echo "${@}"
- "${@}" || die
+ einfo "${conf[*]}" # no edo.eclass due to noisy long command in errors
+ "${conf[@]}" || die "configure failed, see ${BUILD_DIR}/ffbuild/config.log"
}
multilib_src_compile() {
emake V=1
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- emake V=1 tools/${i}$(get_exeext)
- fi
- done
-
- use chromium &&
- emake V=1 libffmpeg
- fi
+ in_iuse chromium && use chromium && multilib_is_native_abi &&
+ emake V=1 libffmpeg
}
multilib_src_test() {
- LD_LIBRARY_PATH="${BUILD_DIR}/libpostproc:${BUILD_DIR}/libswscale:${BUILD_DIR}/libswresample:${BUILD_DIR}/libavcodec:${BUILD_DIR}/libavdevice:${BUILD_DIR}/libavfilter:${BUILD_DIR}/libavformat:${BUILD_DIR}/libavutil" \
- emake V=1 fate -k
+ local -x LD_LIBRARY_PATH=$(printf %s: "${BUILD_DIR}"/lib*)${LD_LIBRARY_PATH}
+ emake V=1 -k fate
}
multilib_src_install() {
- emake V=1 DESTDIR="${D}" install install-doc
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- dobin tools/${i}$(get_exeext)
- fi
- done
-
- use chromium &&
- emake V=1 DESTDIR="${D}" install-libffmpeg
- fi
-}
-
-multilib_src_install_all() {
- dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
- [ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
+ emake V=1 DESTDIR="${D}" install
+ in_iuse chromium && use chromium && multilib_is_native_abi &&
+ emake V=1 DESTDIR="${D}" install-libffmpeg
}
diff --git a/media-video/ffmpeg/files/chromium-r3.patch b/media-video/ffmpeg/files/chromium-r3.patch
new file mode 100644
index 000000000000..6d6e6c6e4828
--- /dev/null
+++ b/media-video/ffmpeg/files/chromium-r3.patch
@@ -0,0 +1,53 @@
+Allow libffmpeg to be built for Chromium-based browsers
+https://patchwork.ffmpeg.org/patch/4500/
+
+NOTE: This patch has -U1 unified context to be less likely
+to need rebasing across ffmpeg versions.
+
+--- a/Makefile
++++ b/Makefile
+@@ -43,2 +43,3 @@
+ include $(SRC_PATH)/ffbuild/common.mak
++include $(SRC_PATH)/ffbuild/libffmpeg.mak
+
+--- a/chromium.c
++++ b/chromium.c
+@@ -0,0 +1,8 @@
++#include "libavformat/avformat.h"
++#include "libavformat/internal.h"
++
++int64_t av_stream_get_first_dts(const AVStream *st);
++int64_t av_stream_get_first_dts(const AVStream *st)
++{
++ return cffstream(st)->first_dts;
++}
+--- a/ffbuild/libffmpeg.mak
++++ b/ffbuild/libffmpeg.mak
+@@ -0,0 +1,27 @@
++LIBFFMPEG = $(SLIBPREF)ffmpeg$(SLIBSUF)
++LIBFFMPEG_LINK = $(LD) -shared -Wl,-soname,$(LIBFFMPEG) -Wl,-Bsymbolic -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--gc-sections $(LDFLAGS) $(LDLIBFLAGS) -o $(LIBFFMPEG)
++
++ifeq ($(CONFIG_SHARED),yes)
++LIBFFMPEG_DEPS = libavcodec/$(SLIBPREF)avcodec$(SLIBSUF) libavformat/$(SLIBPREF)avformat$(SLIBSUF) libavutil/$(SLIBPREF)avutil$(SLIBSUF)
++else
++LIBFFMPEG_DEPS = libavcodec/$(LIBPREF)avcodec$(LIBSUF) libavformat/$(LIBPREF)avformat$(LIBSUF) libavutil/$(LIBPREF)avutil$(LIBSUF) libswresample/$(LIBPREF)swresample$(LIBSUF)
++endif
++
++$(LIBFFMPEG): $(LIBFFMPEG_DEPS) chromium.o
++ifeq ($(CONFIG_SHARED),yes)
++ $(LIBFFMPEG_LINK) -Wl,--no-as-needed chromium.o -lavcodec -lavformat -lavutil
++else
++ $(LIBFFMPEG_LINK) -Wl,--whole-archive $^ -Wl,--no-whole-archive $(EXTRALIBS-avcodec) $(EXTRALIBS-avformat) $(EXTRALIBS-avutil) $(EXTRALIBS-swresample)
++endif
++
++libffmpeg: $(LIBFFMPEG)
++
++install-libffmpeg: $(LIBFFMPEG)
++ $(Q)mkdir -p "$(SHLIBDIR)/chromium"
++ $(INSTALL) -m 755 $< "$(SHLIBDIR)/chromium/$<"
++ $(STRIP) "$(SHLIBDIR)/chromium/$<"
++
++uninstall-libffmpeg:
++ $(RM) "$(SHLIBDIR)/chromium/$(LIBFFMPEG)"
++
++.PHONY: libffmpeg install-libffmpeg uninstall-libffmpeg
diff --git a/media-video/ffmpeg/files/ffmpeg-6.1.1-memory-leak.patch b/media-video/ffmpeg/files/ffmpeg-6.1.1-memory-leak.patch
deleted file mode 100644
index d02522b3a3a4..000000000000
--- a/media-video/ffmpeg/files/ffmpeg-6.1.1-memory-leak.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-https://bugs.gentoo.org/931059
-https://ffmpeg.org//pipermail/ffmpeg-devel/2024-May/326569.html
-https://git.videolan.org/?p=ffmpeg.git;a=commit;h=670c823406612697b394d4933e03d3e1a176474f
-https://git.videolan.org/?p=ffmpeg.git;a=commit;h=1606aab99bd84f0040fb0fa6ccccb092941f01ec
-
-From 670c823406612697b394d4933e03d3e1a176474f Mon Sep 17 00:00:00 2001
-From: Paul B Mahol <onemda@gmail.com>
-Date: Fri, 27 Oct 2023 14:26:50 +0200
-Subject: [PATCH] avfilter/buffersrc: switch to activate
-
-Fixes OOM when caller keeps adding frames into filtergraph
-that reached EOF by other means, for example EOF is signalled
-by other filter in filtergraph or by buffersink.
-
-(cherry picked from commit 84e400ae37b1e2849a3ead399ef86c808356cdd6)
---- a/libavfilter/buffersrc.c
-+++ b/libavfilter/buffersrc.c
-@@ -36,6 +36,7 @@
- #include "audio.h"
- #include "avfilter.h"
- #include "buffersrc.h"
-+#include "filters.h"
- #include "formats.h"
- #include "internal.h"
- #include "video.h"
-@@ -194,7 +195,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
- if (!frame)
- return av_buffersrc_close(ctx, s->last_pts, flags);
- if (s->eof)
-- return AVERROR(EINVAL);
-+ return AVERROR_EOF;
-
- s->last_pts = frame->pts + frame->duration;
-
-@@ -484,21 +485,28 @@ static int config_props(AVFilterLink *link)
- return 0;
- }
-
--static int request_frame(AVFilterLink *link)
-+static int activate(AVFilterContext *ctx)
- {
-- BufferSourceContext *c = link->src->priv;
-+ AVFilterLink *outlink = ctx->outputs[0];
-+ BufferSourceContext *c = ctx->priv;
-
-- if (c->eof)
-- return AVERROR_EOF;
-+ if (!c->eof && ff_outlink_get_status(outlink)) {
-+ c->eof = 1;
-+ return 0;
-+ }
-+
-+ if (c->eof) {
-+ ff_outlink_set_status(outlink, AVERROR_EOF, c->last_pts);
-+ return 0;
-+ }
- c->nb_failed_requests++;
-- return AVERROR(EAGAIN);
-+ return FFERROR_NOT_READY;
- }
-
- static const AVFilterPad avfilter_vsrc_buffer_outputs[] = {
- {
- .name = "default",
- .type = AVMEDIA_TYPE_VIDEO,
-- .request_frame = request_frame,
- .config_props = config_props,
- },
- };
-@@ -507,7 +515,7 @@ const AVFilter ff_vsrc_buffer = {
- .name = "buffer",
- .description = NULL_IF_CONFIG_SMALL("Buffer video frames, and make them accessible to the filterchain."),
- .priv_size = sizeof(BufferSourceContext),
--
-+ .activate = activate,
- .init = init_video,
- .uninit = uninit,
-
-@@ -521,7 +529,6 @@ static const AVFilterPad avfilter_asrc_abuffer_outputs[] = {
- {
- .name = "default",
- .type = AVMEDIA_TYPE_AUDIO,
-- .request_frame = request_frame,
- .config_props = config_props,
- },
- };
-@@ -530,7 +537,7 @@ const AVFilter ff_asrc_abuffer = {
- .name = "abuffer",
- .description = NULL_IF_CONFIG_SMALL("Buffer audio frames, and make them accessible to the filterchain."),
- .priv_size = sizeof(BufferSourceContext),
--
-+ .activate = activate,
- .init = init_audio,
- .uninit = uninit,
-
---
-2.30.2
-
-From 1606aab99bd84f0040fb0fa6ccccb092941f01ec Mon Sep 17 00:00:00 2001
-From: Paul B Mahol <onemda@gmail.com>
-Date: Fri, 1 Dec 2023 16:59:07 +0100
-Subject: [PATCH] avfilter/avfilter: fix OOM case for default activate
-
-Fixes OOM when caller keeps adding frames into filtergraph
-that reached EOF by other means, for example EOF is signalled
-by other filter in filtergraph or by buffersink.
-
-(cherry picked from commit d9e41ead82263e96ebd14d4d88d6e7f858dd944c)
---- a/libavfilter/avfilter.c
-+++ b/libavfilter/avfilter.c
-@@ -1167,6 +1167,16 @@ static int ff_filter_activate_default(AVFilterContext *filter)
- {
- unsigned i;
-
-+ for (i = 0; i < filter->nb_outputs; i++) {
-+ int ret = filter->outputs[i]->status_in;
-+
-+ if (ret) {
-+ for (int j = 0; j < filter->nb_inputs; j++)
-+ ff_inlink_set_status(filter->inputs[j], ret);
-+ return 0;
-+ }
-+ }
-+
- for (i = 0; i < filter->nb_inputs; i++) {
- if (samples_ready(filter->inputs[i], filter->inputs[i]->min_samples)) {
- return ff_filter_frame_to_filter(filter->inputs[i]);
---
-2.30.2
diff --git a/media-video/ffmpeg/files/ffmpeg-6.1.1-vulkan-rename.patch b/media-video/ffmpeg/files/ffmpeg-6.1.1-vulkan-rename.patch
deleted file mode 100644
index b564e3874485..000000000000
--- a/media-video/ffmpeg/files/ffmpeg-6.1.1-vulkan-rename.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-https://bugs.gentoo.org/928593
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/fef22c87ada4517441701e6e61e062c9f4399c8e
-
-From fef22c87ada4517441701e6e61e062c9f4399c8e Mon Sep 17 00:00:00 2001
-From: =?utf8?q?Jan=20Ekstr=C3=B6m?= <jeebjp@gmail.com>
-Date: Wed, 14 Feb 2024 22:40:54 +0200
-Subject: [PATCH] {avcodec,tests}: rename the bundled Mesa AV1 vulkan video
- headers
-
-This together with adjusting the inclusion define allows for the
-build to not fail with latest Vulkan-Headers that contain the
-stabilized Vulkan AV1 decoding definitions.
-
-Compilation fails currently as the AV1 header is getting included
-via hwcontext_vulkan.h -> <vulkan/vulkan.h> -> vulkan_core.h, which
-finally includes vk_video/vulkan_video_codec_av1std.h and the decode
-header, leading to the bundled header to never defining anything
-due to the inclusion define being the same.
-
-This fix is imperfect, as it leads to additional re-definition
-warnings for things such as
-VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION. , but it is
-not clear how to otherwise have the bundled version trump the
-actually standardized one for a short-term compilation fix.
-
-(cherry picked from commit e06ce6d2b45edac4a2df04f304e18d4727417d24)
----
- libavcodec/Makefile | 4 ++--
- libavcodec/vulkan_video.h | 4 ++--
- ...v1std_decode.h => vulkan_video_codec_av1std_decode_mesa.h} | 4 ++--
- ..._video_codec_av1std.h => vulkan_video_codec_av1std_mesa.h} | 4 ++--
- tests/ref/fate/source | 4 ++--
- 5 files changed, 10 insertions(+), 10 deletions(-)
- rename libavcodec/{vulkan_video_codec_av1std_decode.h => vulkan_video_codec_av1std_decode_mesa.h} (89%)
- rename libavcodec/{vulkan_video_codec_av1std.h => vulkan_video_codec_av1std_mesa.h} (99%)
-
-diff --git a/libavcodec/Makefile b/libavcodec/Makefile
-index ec57e53e30..eb25707ef5 100644
---- a/libavcodec/Makefile
-+++ b/libavcodec/Makefile
-@@ -1284,7 +1284,7 @@ SKIPHEADERS += %_tablegen.h \
- aacenc_quantization.h \
- aacenc_quantization_misc.h \
- bitstream_template.h \
-- vulkan_video_codec_av1std.h \
-+ vulkan_video_codec_av1std_mesa.h \
- $(ARCH)/vpx_arith.h \
-
- SKIPHEADERS-$(CONFIG_AMF) += amfenc.h
-@@ -1306,7 +1306,7 @@ SKIPHEADERS-$(CONFIG_XVMC) += xvmc.h
- SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_decode.h vaapi_hevc.h vaapi_encode.h
- SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h vdpau_internal.h
- SKIPHEADERS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox.h vt_internal.h
--SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h vulkan_video_codec_av1std_decode.h
-+SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h vulkan_video_codec_av1std_decode_mesa.h
- SKIPHEADERS-$(CONFIG_V4L2_M2M) += v4l2_buffers.h v4l2_context.h v4l2_m2m.h
- SKIPHEADERS-$(CONFIG_ZLIB) += zlib_wrapper.h
-
-diff --git a/libavcodec/vulkan_video.h b/libavcodec/vulkan_video.h
-index b28e3fe0bd..51f44dd543 100644
---- a/libavcodec/vulkan_video.h
-+++ b/libavcodec/vulkan_video.h
-@@ -23,8 +23,8 @@
- #include "vulkan.h"
-
- #include <vk_video/vulkan_video_codecs_common.h>
--#include "vulkan_video_codec_av1std.h"
--#include "vulkan_video_codec_av1std_decode.h"
-+#include "vulkan_video_codec_av1std_mesa.h"
-+#include "vulkan_video_codec_av1std_decode_mesa.h"
-
- #define CODEC_VER_MAJ(ver) (ver >> 22)
- #define CODEC_VER_MIN(ver) ((ver >> 12) & ((1 << 10) - 1))
-diff --git a/libavcodec/vulkan_video_codec_av1std_decode.h b/libavcodec/vulkan_video_codec_av1std_decode_mesa.h
-similarity index 89%
-rename from libavcodec/vulkan_video_codec_av1std_decode.h
-rename to libavcodec/vulkan_video_codec_av1std_decode_mesa.h
-index a697c00593..e2f37b4e6e 100644
---- a/libavcodec/vulkan_video_codec_av1std_decode.h
-+++ b/libavcodec/vulkan_video_codec_av1std_decode_mesa.h
-@@ -14,8 +14,8 @@
- * limitations under the License.
- */
-
--#ifndef VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_
--#define VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ 1
-+#ifndef VULKAN_VIDEO_CODEC_AV1STD_DECODE_MESA_H_
-+#define VULKAN_VIDEO_CODEC_AV1STD_DECODE_MESA_H_ 1
-
- /*
- ** This header is NOT YET generated from the Khronos Vulkan XML API Registry.
-diff --git a/libavcodec/vulkan_video_codec_av1std.h b/libavcodec/vulkan_video_codec_av1std_mesa.h
-similarity index 99%
-rename from libavcodec/vulkan_video_codec_av1std.h
-rename to libavcodec/vulkan_video_codec_av1std_mesa.h
-index c46236c457..c91589eee2 100644
---- a/libavcodec/vulkan_video_codec_av1std.h
-+++ b/libavcodec/vulkan_video_codec_av1std_mesa.h
-@@ -14,8 +14,8 @@
- * limitations under the License.
- */
-
--#ifndef VULKAN_VIDEO_CODEC_AV1STD_H_
--#define VULKAN_VIDEO_CODEC_AV1STD_H_ 1
-+#ifndef VULKAN_VIDEO_CODEC_AV1STD_MESA_H_
-+#define VULKAN_VIDEO_CODEC_AV1STD_MESA_H_ 1
-
- /*
- ** This header is NOT YET generated from the Khronos Vulkan XML API Registry.
-diff --git a/tests/ref/fate/source b/tests/ref/fate/source
-index c575789dd5..8bb58b61f1 100644
---- a/tests/ref/fate/source
-+++ b/tests/ref/fate/source
-@@ -23,8 +23,8 @@ compat/djgpp/math.h
- compat/float/float.h
- compat/float/limits.h
- libavcodec/bitstream_template.h
--libavcodec/vulkan_video_codec_av1std.h
--libavcodec/vulkan_video_codec_av1std_decode.h
-+libavcodec/vulkan_video_codec_av1std_decode_mesa.h
-+libavcodec/vulkan_video_codec_av1std_mesa.h
- tools/decode_simple.h
- Use of av_clip() where av_clip_uintp2() could be used:
- Use of av_clip() where av_clip_intp2() could be used:
---
-2.25.1
-
diff --git a/media-video/ffmpeg/files/ffmpeg-7.1.1-svt-av1-3.patch b/media-video/ffmpeg/files/ffmpeg-7.1.1-svt-av1-3.patch
new file mode 100644
index 000000000000..b45f20cebea7
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-7.1.1-svt-av1-3.patch
@@ -0,0 +1,13 @@
+https://github.com/FFmpeg/FFmpeg/commit/d1ed5c06e
+--- a/libavcodec/libsvtav1.c
++++ b/libavcodec/libsvtav1.c
+@@ -436,5 +436,9 @@
+ 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");
diff --git a/media-video/ffmpeg/metadata.xml b/media-video/ffmpeg/metadata.xml
index 09dba7627ec5..8472d76c4831 100644
--- a/media-video/ffmpeg/metadata.xml
+++ b/media-video/ffmpeg/metadata.xml
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer type="project">
- <email>media-video@gentoo.org</email>
+ <maintainer type="person">
+ <email>ionen@gentoo.org</email>
+ <name>Ionen Wolkens</name>
</maintainer>
<maintainer type="person">
<email>chewi@gentoo.org</email>
@@ -10,27 +11,43 @@
<description>chromium and soc USE flags</description>
</maintainer>
<use>
- <flag name="amf">Enables support for AMD's Advanced Media Framework (AMF)</flag>
- <flag name="amr">Enables Adaptive Multi-Rate Audio support</flag>
- <flag name="amrenc">Enables Adaptive Multi-Rate Audio encoding support with <pkg>media-libs/vo-amrwbenc</pkg>.</flag>
- <flag name="appkit">Enables Apple AppKit framework</flag>
- <flag name="bluray">Enable playback of Blu-ray filesystems</flag>
- <flag name="bs2b">Enables <pkg>media-libs/libbs2b</pkg> based Bauer stereo-to-binaural filter.</flag>
- <flag name="cdio">Enables audio CD grabbing with <pkg>dev-libs/libcdio</pkg>.</flag>
- <flag name="chromaprint">Enables audio fingerprinting support with <pkg>media-libs/chromaprint</pkg>.</flag>
+ <flag name="amf">Enable AMD's Advanced Media Framework support via <pkg>media-video/amdgpu-pro-amf</pkg></flag>
+ <flag name="amr">Enable Adaptive Multi-Rate Audio support via <pkg>media-libs/opencore-amr</pkg></flag>
+ <flag name="amrenc">Enable Adaptive Multi-Rate Audio encoding support via <pkg>media-libs/vo-amrwbenc</pkg></flag>
+ <flag name="appkit">Enable Apple AppKit framework</flag>
+ <flag name="bluray">Enable Blu-ray filesystems reading support via <pkg>media-libs/libbluray</pkg></flag>
+ <flag name="bs2b">Enable Bauer Stereo-to-Binaural filter support via <pkg>media-libs/libbs2b</pkg></flag>
+ <flag name="cdio">Enable audio CDs reading via <pkg>dev-libs/libcdio-paranoia</pkg></flag>
+ <flag name="chromaprint">Enable audio fingerprinting support via <pkg>media-libs/chromaprint</pkg></flag>
<flag name="chromium">Builds libffmpeg.so to enable media playback in Chromium-based browsers like Opera and Vivaldi.</flag>
- <flag name="codec2">Enables codec2 low bit rate speech codec support via <pkg>media-libs/codec2</pkg>.</flag>
+ <flag name="codec2">Enable codec2 low bit rate speech codec support via <pkg>media-libs/codec2</pkg></flag>
<flag name="cpudetection">Enables runtime CPU detection (useful for bindist, compatibility on other CPUs)</flag>
- <flag name="cuda">Enables CUDA-based acceleration. Mostly used for specific filters.</flag>
- <flag name="dav1d">Enables AV1 decoding via <pkg>media-libs/dav1d</pkg>.</flag>
- <flag name="fdk">Use external fdk-aac library for AAC encoding</flag>
- <flag name="flite">Adds a text-to-speech filter based on <pkg>app-accessibility/flite</pkg>.</flag>
- <flag name="frei0r">Enable frei0r wrapping in libavfilter</flag>
- <flag name="fribidi">Enables fribidi support in the drawtext filter.</flag>
- <flag name="gcrypt">Enables gcrypt support: Needed for rtmp(t)e support if openssl, librtmp or gmp is not used.</flag>
- <flag name="gme">Enables support for <pkg>media-libs/game-music-emu</pkg> for playing various video game music formats.</flag>
+ <flag name="cuda">Enable support for various GPU-accelerated filters using NVIDIA PTX compiled with <pkg>llvm-core/clang</pkg></flag>
+ <flag name="dav1d">Enable AV1 decoding support via <pkg>media-libs/dav1d</pkg></flag>
+ <flag name="drm">
+ Enable use of <pkg>x11-libs/libdrm</pkg> for various hardware
+ accelerated functions and Kernel Mode Setting screen capture
+ </flag>
+ <flag name="fdk">
+ Enable AAC (Advanced Audio Coding) encoding support via
+ <pkg>media-libs/fdk-aac</pkg> in addition to FFmpeg's own
+ implementation (warning: if USE=gpl is enabled, this produces
+ a non-redistributable build)
+ </flag>
+ <flag name="flite">Enable text-to-speech filter support via <pkg>app-accessibility/flite</pkg></flag>
+ <flag name="frei0r">Enable use of filters through <pkg>media-plugins/frei0r-plugins</pkg></flag>
+ <flag name="fribidi">Enable Bidi support for the drawtext filter via <pkg>dev-libs/fribidi</pkg></flag>
+ <flag name="gcrypt">
+ Enable using <pkg>dev-libs/libgcrypt</pkg> for rtmp(t)e support (not
+ needed if using any of USE=gmp,librtmp,openssl), and for obtaining
+ random bytes (not needed if USE=openssl)</flag>
+ <flag name="gme">Enables various game music formats support via <pkg>media-libs/game-music-emu</pkg></flag>
+ <flag name="gnutls">
+ Enable using <pkg>net-libs/gnutls</pkg> for TLS/HTTPS support
+ and other minor functions (has no effect if USE=openssl is set)
+ </flag>
<flag name="glslang">Use <pkg>dev-util/glslang</pkg> to compile GLSL</flag>
- <flag name="gpl">Build GPL code. Should be enabled unless you require LGPL binaries.</flag>
+ <flag name="gpl">Enable use of GPL licensed code, should be kept enabled unless LGPL binaries are needed</flag>
<flag name="hardcoded-tables">
Use pre-calculated tables rather than calculating them on the fly.
@@ -41,61 +58,91 @@
Improvements are being made to the runtime initialization, and so over time, this option will have an impact on fewer and fewer codecs.
</flag>
- <flag name="iec61883"> Support for FireWire DV/HDV input device using <pkg>media-libs/libiec61883</pkg>.</flag>
- <flag name="kvazaar">Enables <pkg>media-libs/kvazaar</pkg> based HEVC encoder.</flag>
- <flag name="lcms">Enable ICC profile support via <pkg>media-libs/lcms</pkg>.</flag>
- <flag name="libaom">Enables <pkg>media-libs/libaom</pkg> based AV1 codec support.</flag>
- <flag name="libaribb24">Enables ARIB text and caption decoding via <pkg>media-libs/aribb24</pkg>.</flag>
+ <flag name="iec61883">Enable FireWire DV/HDV input device support via <pkg>media-libs/libiec61883</pkg></flag>
+ <flag name="kvazaar">Enable H.265/HEVC encoding support via <pkg>media-libs/kvazaar</pkg></flag>
+ <flag name="lcms">Enable ICC profile support via <pkg>media-libs/lcms</pkg></flag>
+ <flag name="libaom">
+ Enable AV1 de/encoding via <pkg>media-libs/libaom</pkg> (warning: this
+ is the reference implementation and is slower than the alternatives)
+ </flag>
+ <flag name="libaribb24">Enable ARIB text and caption decoding via <pkg>media-libs/aribb24</pkg></flag>
<flag name="libdrm">Enables <pkg>x11-libs/libdrm</pkg> support for better screen grabbing and hardware accelerated codecs.</flag>
<flag name="libdvdnav">Uses <pkg>media-libs/libdvdnav</pkg> to enable DVD demuxing</flag>
<flag name="libdvdread">Uses <pkg>media-libs/libdvdread</pkg> to enable DVD demuxing</flag>
- <flag name="libilbc">Enables iLBC de/encoding via <pkg>media-libs/libilbc</pkg>.</flag>
- <flag name="liblc3">Enables LC3 de/encoding via <pkg>media-sound/liblc3</pkg>.</flag>
- <flag name="libplacebo">Adds flexible GPU-accelerated processing filter based on <pkg>media-libs/libplacebo</pkg>.</flag>
- <flag name="librtmp">Enables Real Time Messaging Protocol using librtmp (<pkg>media-video/rtmpdump</pkg>) in addition to FFmpeg's native implementation.</flag>
- <flag name="libsoxr">Enables audio resampling through <pkg>media-libs/soxr</pkg>.</flag>
- <flag name="libtesseract">Enables the OCR filter via <pkg>app-text/tesseract</pkg>.</flag>
+ <flag name="libilbc">Enable internet Low Bitrate Codec de/encoding support via <pkg>media-libs/libilbc</pkg></flag>
+ <flag name="liblc3">Enable Low Complexity Communication Codec de/encoding support via <pkg>media-sound/liblc3</pkg></flag>
+ <flag name="libplacebo">Enable use of GPU-accelerated filters from <pkg>media-libs/libplacebo</pkg></flag>
+ <flag name="librtmp">
+ Enable Real Time Messaging Protocol support via <pkg>media-video/rtmpdump</pkg>
+ in addition to FFmpeg's own implementation
+ </flag>
+ <flag name="libsoxr">Enable use of the audio resampler from <pkg>media-libs/soxr</pkg></flag>
+ <flag name="libtesseract">Enable Optical Character Recognition (OCR) filter support via <pkg>app-text/tesseract</pkg></flag>
<flag name="libv4l">Uses <pkg>media-libs/libv4l</pkg> for video4linux instead of direct calls. Adds support for more devices via the userspace library.</flag>
<flag name="libxml2">Uses <pkg>dev-libs/libxml2</pkg> to enable dash demuxing support.</flag>
- <flag name="lv2">Enables lv2 audio filter wrapper.</flag>
+ <flag name="lv2">Enable use of filters through <pkg>media-libs/lv2</pkg></flag>
<flag name="mipsdspr1">Enables MIPS DSP ASE R1 optimizations.</flag>
<flag name="mipsdspr2">Enables MIPS DSP ASE R2 optimizations.</flag>
<flag name="mipsfpu">Enables floating point MIPS optimizations.</flag>
- <flag name="qsv">Enable Intel Quick Sync Video via <pkg>media-libs/intel-mediasdk</pkg> (ffmpeg versions older than, and including, 5.1) or <pkg>media-libs/libvpl</pkg> (ffmpeg version newer than 5.1).</flag>
<flag name="mmal">Enables Multi-Media Abstraction Layer (MMAL) decoding support: Available e.g. on the Raspberry Pi.</flag>
<flag name="network">Enables network streaming support</flag>
- <flag name="openh264">Enables H.264 encoding suppoprt via <pkg>media-libs/openh264</pkg>.</flag>
- <flag name="openssl">Enables <pkg>dev-libs/openssl</pkg> support. Adds support for encrypted network protocols (TLS/HTTPS).</flag>
- <flag name="pic">Force shared libraries to be built as PIC (this is slower)</flag>
- <flag name="postproc">Build and install libpostproc.</flag>
- <flag name="qrcode">Enables QR encode generation via <pkg>media-gfx/qrencode</pkg></flag>
- <flag name="quirc">Enables QR decoding via <pkg>media-libs/quirc</pkg></flag>
- <flag name="rav1e">Enables AV1 encoding support via <pkg>media-video/rav1e</pkg>.</flag>
- <flag name="rubberband">Adds time-stretching and pitch-shifting audio filter based on <pkg>media-libs/rubberband</pkg>.</flag>
- <flag name="shaderc">Use <pkg>media-libs/shaderc</pkg> to compile GLSL</flag>
- <flag name="snappy">Enable <pkg>app-arch/snappy</pkg> support. Required for e.g. Vidvox Hap encoder.</flag>
- <flag name="sndio">Enable support for the <pkg>media-sound/sndio</pkg> backend</flag>
- <flag name="soc">Apply additional patches for efficient playback on some SoCs (e.g. ARM, RISC-V).</flag>
- <flag name="srt">Enable support for Secure Reliable Transport (SRT) via <pkg>net-libs/srt</pkg></flag>
- <flag name="ssh">Enable SSH/sftp support via <pkg>net-libs/libssh</pkg>.</flag>
- <flag name="svt-av1">Enables AV1 encoding support via <pkg>media-libs/svt-av1</pkg>.</flag>
- <flag name="truetype">Enables drawtext filter via <pkg>media-libs/freetype</pkg> and <pkg>media-libs/harfbuzz</pkg>.</flag>
- <flag name="twolame">Enables MP2 encoding via <pkg>media-sound/twolame</pkg> as an alternative to the internal encoder.</flag>
- <flag name="vidstab">Enables video stabilization filter using vid.stab library (<pkg>media-libs/vidstab</pkg>).</flag>
- <flag name="vmaf">Enables Netflix's perceptual video quality assessment filter using the library (<pkg>media-libs/libvmaf</pkg>).</flag>
- <flag name="vpx">Enables VP8 and VP9 codec support using libvpx: Decoding does not require this to be enabled but libvpx can also be used for decoding; encoding requires this useflag to be enabled though.</flag>
- <flag name="x265">Enables HEVC encoding with <pkg>media-libs/x265</pkg>.</flag>
- <flag name="zeromq">Enables <pkg>net-libs/zeromq</pkg> support with the zmq/azmq filters.</flag>
- <flag name="zimg">Enables <pkg>media-libs/zimg</pkg> based scale filter.</flag>
- <flag name="zvbi">Enables <pkg>media-libs/zvbi</pkg> based teletext decoder.</flag>
+ <flag name="npp">
+ Enable Nvidia Performance Primitives-based filters via
+ <pkg>dev-util/nvidia-cuda-toolkit</pkg> (warning: if USE=gpl
+ is enabled, this produces non-redistributable build)
+ </flag>
+ <flag name="openh264">Enable H.264 encoding support via <pkg>media-libs/openh264</pkg></flag>
+ <flag name="openmpt">Enable MPTM tracked music files decoding support via <pkg>media-libs/libopenmpt</pkg></flag>
+ <flag name="openssl">
+ Enable using <pkg>dev-libs/openssl</pkg> for TLS/HTTPS support
+ and other minor functions (USE=gnutls has no effect if set)
+ </flag>
+ <flag name="pic">Force shared libraries to be built as PIC (this is safer)</flag>
+ <flag name="postproc">
+ Enable libpostproc video post processing library support
+ (should not disable this unless need to disable USE=gpl)
+ </flag>
+ <flag name="qrcode">Enable QR encode generation support via <pkg>media-gfx/qrencode</pkg></flag>
+ <flag name="qsv">Enable Intel Quick Sync Video support via <pkg>media-libs/libvpl</pkg></flag>
+ <flag name="quirc">Enable QR decoding support via <pkg>media-libs/quirc</pkg></flag>
+ <flag name="rabbitmq">Enable AMQP stream support via <pkg>net-libs/rabbitmq-c</pkg></flag>
+ <flag name="rav1e">Enable AV1 encoding support via <pkg>media-video/rav1e</pkg></flag>
+ <flag name="rubberband">Enable time-stretching and pitch-shifting audio filter support via <pkg>media-libs/rubberband</pkg></flag>
+ <flag name="sdl">Enable use of the Simple Direct Layer library (required for the ffplay command)</flag>
+ <flag name="shaderc">Enable support for various GPU-accelerated filters using Vulkan compiled with <pkg>media-libs/shaderc</pkg></flag>
+ <flag name="snappy">
+ Enable Snappy compression support via <pkg>app-arch/snappy</pkg>
+ (required for Vidvox Hap encoder support)
+ </flag>
+ <flag name="sndio">Enable audio output support via <pkg>media-sound/sndio</pkg></flag>
+ <flag name="soc">Apply additional patches for efficient playback on some SoCs (e.g. ARM, RISC-V)</flag>
+ <flag name="srt">Enable Secure Reliable Transport (SRT) support via <pkg>net-libs/srt</pkg></flag>
+ <flag name="ssh">Enable SSH/SFTP support via <pkg>net-libs/libssh</pkg></flag>
+ <flag name="svt-av1">Enable AV1 encoding support via <pkg>media-libs/svt-av1</pkg></flag>
+ <flag name="truetype">
+ Enable drawtext filter support via <pkg>media-libs/freetype</pkg>
+ and <pkg>media-libs/harfbuzz</pkg>
+ </flag>
+ <flag name="twolame">
+ Enable MP2 encoding support via <pkg>media-sound/twolame</pkg>
+ in addition to FFmpeg's own implementation
+ </flag>
+ <flag name="vidstab">Enable video stabilization filter support via <pkg>media-libs/vidstab</pkg></flag>
+ <flag name="vmaf">Enable Netflix's perceptual video quality assessment filter support via <pkg>media-libs/libvmaf</pkg></flag>
+ <flag name="vpx">
+ Enable VP8 and VP9 de/encoding support via <pkg>media-libs/libvpx</pkg>
+ in addition to FFmpeg's own implementation (for decoding only)
+ </flag>
+ <flag name="x265">Enable H.265/HEVC encoding support via <pkg>media-libs/x265</pkg></flag>
+ <flag name="xml">Enable Dynamic Adaptive Streaming over HTTP (DASH) stream support using <pkg>dev-libs/libxml2</pkg></flag>
+ <flag name="zeromq">Enable ZMQ command receiver filter and streaming support via <pkg>net-libs/zeromq</pkg></flag>
+ <flag name="zimg">Enable zscale filter support using <pkg>media-libs/zimg</pkg></flag>
+ <flag name="zvbi">Enable teletext decoding support via <pkg>media-libs/zvbi</pkg></flag>
</use>
- <slots>
- <slot name="0">For building against. This is the only slot that provides
- headers and command line tools. Binary compatibility slots come and go
- as required, so always pin dependencies to this slot when appropriate.</slot>
- </slots>
<upstream>
- <remote-id type="github">FFmpeg/FFmpeg</remote-id>
+ <bugs-to>https://trac.ffmpeg.org/</bugs-to>
+ <doc>https://ffmpeg.org/documentation.html</doc>
<remote-id type="cpe">cpe:/a:ffmpeg:ffmpeg</remote-id>
+ <remote-id type="github">FFmpeg/FFmpeg</remote-id>
</upstream>
</pkgmetadata>
diff --git a/media-video/mpv/Manifest b/media-video/mpv/Manifest
index 17fb7faa7314..a5fc87ee7da4 100644
--- a/media-video/mpv/Manifest
+++ b/media-video/mpv/Manifest
@@ -1,4 +1,4 @@
DIST mpv-0.39.0.tar.gz 3494313 BLAKE2B 9f96ba225eb0587d50f8c439359b18f752b98024ab6b40f987be4d57b0ce4b595243f49177ffc48840b351ce19fddc84788b5784b508eb685e58fdfb8e1e0520 SHA512 9cf1d7487b1e9e36d2b731bf951c4d3b9deba95109af408ccfc71b88e85f6de2558e7b4950781667bb4d40e0352742e3ed278559ff34d07905dd459969cbf503
-EBUILD mpv-0.39.0.ebuild 6970 BLAKE2B ff2960f69501c211db93fa4ec3401462fcd3322f29ec92f032f3cc7663fc3d52f19db9b62ffb988d30e67e1af9417a7229fb4e4f1aa38bd93a993bf875f7f026 SHA512 4c5c3316f77fede310d5944d4c2c6fc7728f7f8cc37707f1c744f209685c374a1c7553199ca6e4b49c2b7221b59cd15ec28030ce5f0380de3564241aadac8cc2
-EBUILD mpv-9999.ebuild 6955 BLAKE2B 19c5fda927cc4bf826931b8c7c4513f2eaa8eca71f40b9239bafc6dc4cab8bb84e59139114c16ba0ac339537c84848103a15feeae3ec14ea5beef88e1cc8f6c8 SHA512 4563d8a655eeda81f1066d2f0e9ed82810fe8afd9f1cb2caa4dccc631262c561a932698a89e7d8d00e013e1c6fd89717d565160f590914e8b24830b27f0d292e
+EBUILD mpv-0.39.0-r1.ebuild 6976 BLAKE2B a737e90eafb89b422debcd31479f53d1e71a52b92a86720ee705dbe1a975f8156f38d4403e38b48c2d3c8eba1f884686e7b8d1464e131b31e340d7b7f15af562 SHA512 33500f0c827c1b7e9c73f6f0db1fba18e86924bea06fafb0b0728007405d55e8ded9c10259380b2bd0a5d93d61c115d757ec551ac4ca73720f3ec3240b43faa3
+EBUILD mpv-9999.ebuild 6961 BLAKE2B 60bd91fea5a5b97d75f0345007783a573f0a5c1084d1c35835922f0be135abdcece35cf409d0ed5c23c58dc6b6d50c3610dee0e7711de1bcd5cbb0b88902e165 SHA512 5aee11c9135586933304f56b531d97f0cee7a4fa3500452c58e1ea386f1d8a7cd20b0db360ac3c333d168555d30bd023e124aa6a26e16fd28bc826153e2d7bdc
MISC metadata.xml 2053 BLAKE2B dc35c3bcdb29eb08725a4f908575ecc2afed2d772988ff12ad052c39e9b195a68611e8037b82ee5ceefc33c40d8df666e03aa59d836eeb7c6472bd988f49b4ee SHA512 4e7cd2da4df81f9ecafddfe93788cabbc4f0de0ff9b976af2ab3fb0f63b2d7daee6d8c5607685240f41be37a158b9fa0acd030d8c62da835891d19af3870668c
diff --git a/media-video/mpv/mpv-0.39.0.ebuild b/media-video/mpv/mpv-0.39.0-r1.ebuild
index 1c7e2ca81b1b..673389c15ad0 100644
--- a/media-video/mpv/mpv-0.39.0.ebuild
+++ b/media-video/mpv/mpv-0.39.0-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -47,7 +47,7 @@ RESTRICT="!test? ( test )"
COMMON_DEPEND="
media-libs/libass:=[fontconfig]
>=media-libs/libplacebo-6.338.2:=[opengl?,vulkan?]
- >=media-video/ffmpeg-6.1:=[encode,soc(-)?,threads,vaapi?,vdpau?]
+ >=media-video/ffmpeg-6.1:=[encode(+),soc(-)?,threads(+),vaapi?,vdpau?]
X? (
x11-libs/libX11
x11-libs/libXScrnSaver
diff --git a/media-video/mpv/mpv-9999.ebuild b/media-video/mpv/mpv-9999.ebuild
index a6c237e3f966..9c6d7c630baa 100644
--- a/media-video/mpv/mpv-9999.ebuild
+++ b/media-video/mpv/mpv-9999.ebuild
@@ -47,7 +47,7 @@ RESTRICT="!test? ( test )"
COMMON_DEPEND="
media-libs/libass:=[fontconfig]
>=media-libs/libplacebo-7.349.0:=[opengl?,vulkan?]
- >=media-video/ffmpeg-6.1:=[encode,soc(-)?,threads,vaapi?,vdpau?]
+ >=media-video/ffmpeg-6.1:=[encode(+),soc(-)?,threads(+),vaapi?,vdpau?]
X? (
x11-libs/libX11
x11-libs/libXScrnSaver
diff --git a/media-video/noad/Manifest b/media-video/noad/Manifest
index 6f082bb3e1ad..41d2d7eb17db 100644
--- a/media-video/noad/Manifest
+++ b/media-video/noad/Manifest
@@ -6,5 +6,6 @@ AUX record-50-noad.sh 1443 BLAKE2B 98cba3a0024bc8c4426d2cd5d1e0d5b9d2e2ead2c50f9
DIST noad-0.8.7.tar.gz 144339 BLAKE2B e7492f63e7326cdced041332e05051a6bda2e92798f4b694ff626e65306d6ebe606f871eabc37df1613677c2f739b3caed033b443cbe7edce913b83a0365e3e5 SHA512 fa1d0226144175de586f938a594fe0a3c0b8a924a258f1406cf52078d5e6d84f46ae685ee3c9f3ce28e62f9eee719d6a938504e39a6b3b9c96043f4bd4aaf69d
DIST noad-0.8.8.tar.gz 144269 BLAKE2B 0474c165af16afb93459dd753017e25afe5e9c42439af9e1f2e23e4aeb5d4cd3610a66dec80d63d1c5f71d2ef9f6817ad831a5e368e8aeda53e078d0137f67ae SHA512 1795072e0b416c9904e8769da2bfe08120ea2c55427bd6e7479c6d79bb5a1b25abe82c0ed2cf8b3d5f7a354e2f60b1251e9d1ed102d19b3c45c1cd34a5e8e6d0
EBUILD noad-0.8.7-r1.ebuild 1769 BLAKE2B 4692935ad4db4606f8adbe1ac88015c537bad1a05ec7533d107c3f9a110fd66b3c56e43b3e13ee6149af78f94f93397a768c9b9f8c2908a55eaa4b7edebda4d1 SHA512 db63a47fabea9730f418eef7a13fae3b55c5c23bece292e529ec9128c2dd269ac7b153f1f264fbfae29dff6de2e0d70e26ded5fed8563062e48cc1327f802d08
+EBUILD noad-0.8.8-r1.ebuild 1785 BLAKE2B 52f69e2e2c9b1277023c6babba72b0be091024695366458d4395a7fe94d15bf1c6903a3ab81ab8838b17b55ff63bb974c67cb70da040b7bbac56fdf547fc9bfb SHA512 4dc8c94c065c0e7a3c6f518e0d3ef3310999cacea24ddca6b37a75c56db1bdfa655163cbb13c049b48eecb1f4ffab14ceb0a0712e86e7f0bf90fcf017f15d92f
EBUILD noad-0.8.8.ebuild 1758 BLAKE2B 83ac4ae2eb2acfcc084be0b625571e32d0ea7d0ba61169ce6c54434962d52295ae0d2ee97b3d17de9f7ca4e1ce462d08c7a77d15af61a6d1fd34dc751e91a5ae SHA512 e23fbfb9d7ddc9276c4464151d49285fad2511cdb5e6ace73a2b3fcd409a88bb8c2cefa828d5393d37c6c5b634e95e02d20df77e6d490153366dc404c31784b3
MISC metadata.xml 864 BLAKE2B 2978ee81c7da71ad061ad74b4e54b58f9432039cadb5958b39a10377c46aa8d501a50b5add07ece74c015a026b0452cd30d9f7725df5f490092ee711257320b0 SHA512 b02e2e8f4554019cbef42cc43a3af3ee3119dbeef0c05d8bd929215b131aeb7e0dffd2fb5d7d110bfc9af3e96c0ab73d2e94949e5ba4e8bc9f96298cb889d8e3
diff --git a/media-video/noad/noad-0.8.8-r1.ebuild b/media-video/noad/noad-0.8.8-r1.ebuild
new file mode 100644
index 000000000000..f7b87f2b5585
--- /dev/null
+++ b/media-video/noad/noad-0.8.8-r1.ebuild
@@ -0,0 +1,72 @@
+# Copyright 2021-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools ffmpeg-compat
+
+DESCRIPTION="Mark commercial breaks in VDR recordings"
+HOMEPAGE="https://github.com/madmartin/noad"
+SRC_URI="https://github.com/madmartin/noad/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="+ffmpeg imagemagick libmpeg2"
+REQUIRED_USE="|| ( ffmpeg libmpeg2 )"
+
+DEPEND="
+ libmpeg2? ( media-libs/libmpeg2 )
+ ffmpeg? ( media-video/ffmpeg-compat:4 )
+ imagemagick? ( media-gfx/imagemagick:= )"
+RDEPEND="${DEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ # bug #834408, https://github.com/madmartin/noad/issues/2
+ ffmpeg_compat_setup 4
+
+ econf \
+ $(usev imagemagick --with-magick) \
+ $(usev !ffmpeg --without-ffmpeg) \
+ $(usev !libmpeg2 --without-libmpeg2) \
+ --with-tools
+}
+
+src_install() {
+ dobin noad showindex checkMarks
+ use imagemagick && dobin markpics
+
+ dodoc README* INSTALL
+ # example scripts are installed as dokumentation
+ dodoc allnewnoad allnoad allnoadnice allnoaduncut checkAllMarks clearlogos noadcall.sh noadifnew stat2html statupd
+
+ newconfd "${FILESDIR}"/confd_vdraddon.noad vdraddon.noad
+
+ insinto /usr/share/vdr/record
+ doins "${FILESDIR}"/record-50-noad.sh
+
+ insinto /usr/share/vdr/shutdown
+ doins "${FILESDIR}"/pre-shutdown-15-noad.sh
+
+ insinto /etc/vdr/reccmds
+ doins "${FILESDIR}"/reccmds.noad.conf
+
+ exeinto /usr/share/vdr/bin
+ doexe "${FILESDIR}"/noad-reccmd
+}
+
+pkg_postinst() {
+ elog
+ elog "To integrate noad in VDR you should do this:"
+ elog
+ elog "start and set Parameter in /etc/conf.d/vdraddon.noad"
+ elog
+ elog "Note: You can use here all parameters for noad,"
+ elog "please look in the documentation of noad."
+}
diff --git a/media-video/peek/Manifest b/media-video/peek/Manifest
index 22b6051ee603..85d0573c864e 100644
--- a/media-video/peek/Manifest
+++ b/media-video/peek/Manifest
@@ -1,4 +1,4 @@
AUX peek-1.5.1-meson.patch 2447 BLAKE2B 414f23e6ee45c0d259fe591c0bb9cf8a630990d829093275d9e6695525cb7fcd6e064c62bca0f70cfc258b626e0672e59128d4925ef783200b0b939408926db7 SHA512 4685282db9f5730368fb41f93d49dd12785070a44a8df08693e584f13cd78eb571bf48ebf067a026e4bc88b6390123b270433883e59eb88531abbddfd763ce3b
DIST peek-1.5.1.tar.gz 2659772 BLAKE2B f33686bb023c5589cc61693854337b8ffda35da26ae8b0ea32ebb38d0738fc438424bae67d7eb600889ceb7377e8cc53eb9eaeef9f6bcf9d1a0d285265b4580b SHA512 dc25f24b1f5954ff26f399f86bf0a2a9b90c4d63c9cd33fcd44f16e447d23070c04e760c57bdc8a946e699c3038b8ee7afc44ce6daa7030e2f9e6f071be6eae4
-EBUILD peek-1.5.1-r1.ebuild 1011 BLAKE2B ece3b247b150fe79d9812d14fad4f1babefc1ddf511b618b26394c0bd256ad2e6fbb574ed112e6b2350a2d9cbe7fb32767849ff84844725162dad50429878a2b SHA512 9e5f4ab76636d8460b6bcd2ad02d433218787fbca4251aef5abdc09fc539b415c27bdcc5223d2c61a1ac16d3c14c9dbf86e4a224d155b9187ae88a1a57f5c7d2
+EBUILD peek-1.5.1-r2.ebuild 1007 BLAKE2B 30fe56897743787a9e3da2dc13e528d6853dff9e083d36b3a4f1891fb28b44ee98b596eedb54b8dd932df1e630e622231d5c3d77f0d0b405469b0f7529aaad0b SHA512 9b06a1b857bf6e53125af29d63b81dafc82d7010db14c1e1ad5e6f7c338887f18ebec4d685d24579963c17726ce6906824a0e0c731a2d660df11416c9786e0a6
MISC metadata.xml 443 BLAKE2B b6fc092ec03226b755d5b4b9a6cccbd960c5cd80f8abff4021191a1ed75c06ad639e59c81df76ecd68947490f674aab0aab2c717aede0f450eecbb9805ecd0ab SHA512 5383ff30287fb405051e537e2cd9e1a3ebc6ef61fa71ee6fc88aa00cf05c09a6f77a9a3093d4f03373d6eb995562d0e07dce0b3e66fc2bc86ddd8d1a0090832f
diff --git a/media-video/peek/peek-1.5.1-r1.ebuild b/media-video/peek/peek-1.5.1-r2.ebuild
index 86e8afe1b247..0e17b2dd323a 100644
--- a/media-video/peek/peek-1.5.1-r1.ebuild
+++ b/media-video/peek/peek-1.5.1-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -17,7 +17,7 @@ RESTRICT="!test? ( test )"
RDEPEND="
>=dev-libs/glib-2.38:2
- media-video/ffmpeg[X,encode,x264,vpx,xcb(+)]
+ media-video/ffmpeg[X,encode(+),x264,vpx]
virtual/imagemagick-tools
>=x11-libs/gtk+-3.20:3
keybinder? ( dev-libs/keybinder:3 )"
diff --git a/media-video/simplescreenrecorder/Manifest b/media-video/simplescreenrecorder/Manifest
index 48fdd0a485a1..292e38c00724 100644
--- a/media-video/simplescreenrecorder/Manifest
+++ b/media-video/simplescreenrecorder/Manifest
@@ -1,5 +1,5 @@
AUX simplescreenrecorder-0.4.4-ffmpeg5.patch 2540 BLAKE2B 5551255312733fca5641ffbed46e332181d02147dafaa9f6831df967b38cb0d6f05fa2d0d910f78fce1cecb40e1db24e1913b8ec71a7e05a3a7ef0ee761e0427 SHA512 823bfdb35b49bd63a7a2f294695f3adb986d1d018d892db68ada0f08cb9d917ddac86cc258ed7520c44ca53b1194164f58e7e4d4ffdd58a5cfeda4590dff5ec0
DIST simplescreenrecorder-0.4.4.tar.gz 1961269 BLAKE2B 05c7635840f8461ab324f740f0cc554eb544ed91b00cdf39c80f861e6a8631f59afbdcc9fe958830b0f1e31eedb90f11d29c114ce4bbb612f1756264502f069f SHA512 a90549a2709490482d70559073e505e669417a93abf16124b98c021e6d2bf08b91b53eb68e006df4f80fcee9fe4da2624bf8de979618953adb3f37eb1d471525
-EBUILD simplescreenrecorder-0.4.4-r3.ebuild 2842 BLAKE2B 2c176abddd8f22b7d7e62c418617cfa02db498275809f10fc13d1a7618b9aa87ad3c86f72977fa3a803fa0925012c36700b00466125c86a1803c337e4874bd02 SHA512 c2b63fef2f92aefbd16cad5796c62c84e2cf0e0fb5e1d805816ef7d4f98f8789b2216312f369b5476c2201276b9745f5e92c3b3f23010fd912bae92aa8b3589d
-EBUILD simplescreenrecorder-9999.ebuild 2742 BLAKE2B f2f08c21d1cde05aaca0efa41f95f9efef1d54c8058e868256ca0b061ddd46eff4a894b3fa021abd5b4b351ee75faf7d3f64ef85c1f4aaffe403351ba1a8e8c0 SHA512 096f676a58f730b4b97721acdcd67f4c36735381207e1dc9f69144a52be731bc8e408b86f08a2d029e4f5f89b2b684705bf6c58885c3a394839a38eb631523e8
+EBUILD simplescreenrecorder-0.4.4-r4.ebuild 2909 BLAKE2B 76a1feba40bfef37227b2ad94685aa9146f1b7d899f51d8645d2edad8d7b18d5779a6587562790a56c61fd7c7686c17d1704ed3e6570203df8e61edd0a7acd8f SHA512 42dce812b4a625497920b9be199dd08916b0765d2113240ee9ee098e3017c5319967a9ae60ba122afff193c2500473ac115604fa3df3dad00d30ccf5cdd9f053
+EBUILD simplescreenrecorder-9999.ebuild 2809 BLAKE2B b6118f470cf7deb889d62fcf0d7d1662c4854a225fad024a5efb18c73c015158a1d25259fdc2301086b12b49f2f82cb346bbac026df40fa90d51617e18a99286 SHA512 730d5843214e93405ae0a21f029c4e06d4b71721f8ce08cd0af394ab96f49c27847e9ed64a8af5a09c6c5b0fa6078a993d69da5e81f1c78d2c13549df3ff58d4
MISC metadata.xml 333 BLAKE2B 1c60fe7013eaaef8fbae76b4764b7dff62410a446cc8e620a463a7f5e44792efbd2c7f6bedd38477f0fe080c8c7ab983eed30ef5bfb6aeaf1c5a2eea68ef8a5f SHA512 022e3e9394740eff0e0cccc12a374236d882cbe5dd8cc8b53e390859556cd87acb722e6ebeb5a8d68822e81446ead0fab2b7ebe2792e77567c6ddd73df9d1020
diff --git a/media-video/simplescreenrecorder/simplescreenrecorder-0.4.4-r3.ebuild b/media-video/simplescreenrecorder/simplescreenrecorder-0.4.4-r4.ebuild
index 735efe53c501..3bf81a602ec9 100644
--- a/media-video/simplescreenrecorder/simplescreenrecorder-0.4.4-r3.ebuild
+++ b/media-video/simplescreenrecorder/simplescreenrecorder-0.4.4-r4.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -30,7 +30,7 @@ RDEPEND="
dev-qt/qtwidgets:5
dev-qt/qtx11extras:5
media-libs/alsa-lib:0=
- media-video/ffmpeg:=[vorbis?,vpx?,x264?,mp3?,theora?]
+ media-video/ffmpeg:=[vorbis?,vpx?,x264?,theora?]
x11-libs/libX11[${MULTILIB_USEDEP}]
x11-libs/libXext
x11-libs/libXfixes[${MULTILIB_USEDEP}]
@@ -38,6 +38,7 @@ RDEPEND="
x11-libs/libXinerama
virtual/glu[${MULTILIB_USEDEP}]
jack? ( virtual/jack )
+ mp3? ( || ( media-video/ffmpeg[lame(-)] media-video/ffmpeg[mp3(-)] ) )
opengl? ( media-libs/libglvnd[${MULTILIB_USEDEP},X] )
pulseaudio? ( media-libs/libpulse )
v4l? ( media-libs/libv4l )
diff --git a/media-video/simplescreenrecorder/simplescreenrecorder-9999.ebuild b/media-video/simplescreenrecorder/simplescreenrecorder-9999.ebuild
index 2bc6b064fec8..51a6ce1f49a9 100644
--- a/media-video/simplescreenrecorder/simplescreenrecorder-9999.ebuild
+++ b/media-video/simplescreenrecorder/simplescreenrecorder-9999.ebuild
@@ -27,7 +27,7 @@ REQUIRED_USE="abi_x86_32? ( opengl )"
RDEPEND="
dev-qt/qtbase:6[gui,widgets]
media-libs/alsa-lib:0=
- media-video/ffmpeg:=[vorbis?,vpx?,x264?,mp3?,theora?]
+ media-video/ffmpeg:=[vorbis?,vpx?,x264?,theora?]
x11-libs/libX11[${MULTILIB_USEDEP}]
x11-libs/libXext
x11-libs/libXfixes[${MULTILIB_USEDEP}]
@@ -36,6 +36,7 @@ RDEPEND="
virtual/glu[${MULTILIB_USEDEP}]
jack? ( virtual/jack )
opengl? ( media-libs/libglvnd[${MULTILIB_USEDEP},X] )
+ mp3? ( || ( media-video/ffmpeg[lame(-)] media-video/ffmpeg[mp3(-)] ) )
pulseaudio? ( media-libs/libpulse )
v4l? ( media-libs/libv4l )
"
diff --git a/media-video/ttcut/Manifest b/media-video/ttcut/Manifest
index 41cb8ec25f7d..2186496ad150 100644
--- a/media-video/ttcut/Manifest
+++ b/media-video/ttcut/Manifest
@@ -1,4 +1,4 @@
AUX ttcut.desktop 304 BLAKE2B 9f0f6c6de3beae152b280a280953ddc156373cd3bfeacb35f265648b8e1d0c92b001bb4456ac3e1208edf6730a2a75e90cd9d879aaee73eff0c9aa198ffa8430 SHA512 82f004f65755ea24ba6b379f18e15c5fe8736da0afe4854cc5ed3e8ceeb55b0b8b6c4f3def3e4a09c25b179a3415d0a47dfcd5d8b92cb34fb7270c6a24c714ad
DIST ttcut-0.19.6_p2.tar.gz 290868 BLAKE2B 9dfc140d720aca17966dff5be3581f35903fd7122a5385d1e576ce4d64aa96953dee231ffbadb14e83762b7a46973aa3f65202394c4c2ef35f87824c31014aa8 SHA512 61338658d35c4392dd3f3a85792dd6d502577a73c955257eee745a3be46f8761d92912e5d8150445346c799bcf5c0ffc30bc15682fc50e3c1798d5c0985c9baa
-EBUILD ttcut-0.19.6_p2.ebuild 851 BLAKE2B faaac28c74781e06dd102474743f18ac106d4bd665d8d9b42bb120203b548046c261a7fb3605dd1618a5b40dee9e14426452926c36f0f27e3f12b93f7a047e0f SHA512 ac0349144dedf81d4ce112f080d7304821129c43ea0894954febc7561c39d7961575ed443e9b4e930bf42235bd9cacec2cefa726e290bf26dfbc88ca9d7b7ccd
+EBUILD ttcut-0.19.6_p2-r1.ebuild 846 BLAKE2B 9d3550918b8fb366778845442cfa22a751e80998f315dd0119644130acc92f5a2c9a0dfb012aea04cfa87626b36c2996953119c35b4c226d78655f1486dfb2f5 SHA512 33fce0993aa98fab620fb5ccaf6270f5eeeecd01ecf5c5541cbb3f115d6b7c0e5a615b5fa3a851ed003d410a3180e62541bda0ffca956fd37b357e7500c47a26
MISC metadata.xml 986 BLAKE2B 89e318ee82e0592cc56b77849a89d0d54f9c8844c412aae9938f21576a8cbffc03819c1d7149861b8f13913ecc191c79b608787a3ed520b829b7ce35a2ae90cc SHA512 50601b3fcd369bae5bab4a9e49dd1d99d281eb148ef9edec8355ce542317fc8d0efd3b6228fb117b38da733edd2adb51d4fc4c70a23d905b1ec47a2b743651ff
diff --git a/media-video/ttcut/ttcut-0.19.6_p2.ebuild b/media-video/ttcut/ttcut-0.19.6_p2-r1.ebuild
index 0e90d7f9bd09..314d4107b8e5 100644
--- a/media-video/ttcut/ttcut-0.19.6_p2.ebuild
+++ b/media-video/ttcut/ttcut-0.19.6_p2-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -28,7 +28,7 @@ RDEPEND="
${DEPEND}
media-video/mjpegtools
media-video/mplayer
- >=media-video/ffmpeg-1.0.8[encode]
+ media-video/ffmpeg[encode(+)]
"
src_prepare() {
diff --git a/media-video/vidcutter/Manifest b/media-video/vidcutter/Manifest
index 9026d2d39517..e55e94d0a92d 100644
--- a/media-video/vidcutter/Manifest
+++ b/media-video/vidcutter/Manifest
@@ -1,4 +1,4 @@
DIST vidcutter-6.0.5.1_p20230201.tar.gz 9858362 BLAKE2B da10506810f93f5635a364d35f293a2c587455ee5c29cf28c0636b7441e330e6ab70385c22d9da914a22c71fed9f6d13688bcac9106d4430e5820fdd2b377d28 SHA512 1b355db77f4e78ade6c0553441d9b60739209fde74db6d9f0be3613e31f99806c94f33bf40912a43106dfc77bde09a54768d5786e06116af3dae2f9851823041
-EBUILD vidcutter-6.0.5.1_p20230201.ebuild 1133 BLAKE2B baa00b6cc687d0bee60e333369ca6cff270d2f7bf462a0c18b633f0ae84a280ecacf20375944090f6d149e35d1ae3675104fa37e715f11e95ee08805e0cf8807 SHA512 b4b429ed1338f81cfe39644bc8788a522a7aad38ae7361d95f2456d1d7c27b8b1d8eeb1c049cdfa8a3e16db3a9f4ee68fa429b9e5c25d0654d1a1b77141636a6
-EBUILD vidcutter-9999.ebuild 1040 BLAKE2B 4c06e4feeb11af8292b69cceac1f3161d032c1ac03913d1fcb19a1a147e44ec86068017bc929b9997476f2314f2ad26c82403ca63c63dc66db788535f946053a SHA512 23ddd52d3c17ec5f8256293acfe70a749141590bd9556cc7a468174806934a7b6885f395f753b1eb4fb04c3951af2a150a65148d1ea4e022a43a5f25138f16d8
+EBUILD vidcutter-6.0.5.1_p20230201-r1.ebuild 1136 BLAKE2B f7bcbba7f9d0f66581ad206fc2fba10e0a72ffbb5417f22b1154c1547bf89abff947650de1a9df16c535b66173117b4c569be5d9ff7637b0fe950be461236182 SHA512 3be58612634e000ec524b473566cc1febb887e2d26efc3d0fed81c0b0831b69d905059e78956f28482d11ccdc5325936b9c7f8398a69c108d96d8043eff827dc
+EBUILD vidcutter-9999.ebuild 1043 BLAKE2B 42fac8a65aae1309e594cc57515f4029d1c96c1ef5eb5eeeaaefbc0d04fe8eb9cd76ad2bfe5879f47abb08f02aaf3de7596e091f64e5e5c096354574f8eaf3f2 SHA512 35c329772e4b7862d279e0fa6fee60f884b0b4ec4696c895194f47b1bfd6ea6e65232d969d077a5d453bdc0890318cdb20c8c491244d139fd5056e5ee3805236
MISC metadata.xml 342 BLAKE2B f01b41aebb261bcbcdc771f4eed7db58848718b414f2b5b37392c88aa3632731bde42a41da889bf4db9010d659fcac2466dce7dea53a03bf60bb65c256285073 SHA512 c6031aa3c9eabea4c4f3aed9b3dfb1d76dd0e17f2647e842808fb8fc63f2006115cea23066ecc45e30fa7d9a582b7bcce7e89c2913ccf3f07cc15887ee8c69ae
diff --git a/media-video/vidcutter/vidcutter-6.0.5.1_p20230201.ebuild b/media-video/vidcutter/vidcutter-6.0.5.1_p20230201-r1.ebuild
index ff216aac4416..270e602e93e5 100644
--- a/media-video/vidcutter/vidcutter-6.0.5.1_p20230201.ebuild
+++ b/media-video/vidcutter/vidcutter-6.0.5.1_p20230201-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -30,7 +30,7 @@ DEPEND="
RDEPEND="${DEPEND}
>=dev-python/pyqt5-5.7[dbus,multimedia,widgets,${PYTHON_USEDEP}]
dev-python/pyopengl[${PYTHON_USEDEP}]
- media-video/ffmpeg[X,encode]
+ media-video/ffmpeg[X,encode(+)]
media-video/mediainfo"
BDEPEND="
${PYTHON_DEPS}
diff --git a/media-video/vidcutter/vidcutter-9999.ebuild b/media-video/vidcutter/vidcutter-9999.ebuild
index a0315410bdd6..1336186ef154 100644
--- a/media-video/vidcutter/vidcutter-9999.ebuild
+++ b/media-video/vidcutter/vidcutter-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -29,7 +29,7 @@ DEPEND="
RDEPEND="${DEPEND}
>=dev-python/pyqt5-5.7[dbus,multimedia,widgets,${PYTHON_USEDEP}]
dev-python/pyopengl[${PYTHON_USEDEP}]
- media-video/ffmpeg[X,encode]
+ media-video/ffmpeg[X,encode(+)]
media-video/mediainfo"
BDEPEND="
${PYTHON_DEPS}