From 080a6ad2c3759083c02506e1348b689f2194d4eb Mon Sep 17 00:00:00 2001
From: V3n3RiX <venerix@koprulu.sector>
Date: Thu, 29 Feb 2024 11:41:17 +0000
Subject: gentoo auto-resync : 29:02:2024 - 11:41:17

---
 media-video/Manifest.gz                            | Bin 24550 -> 24550 bytes
 media-video/ffmpeg/Manifest                        |   3 +
 media-video/ffmpeg/ffmpeg-6.0.1-r3.ebuild          | 607 ++++++++++++++++++++
 media-video/ffmpeg/ffmpeg-6.1.1-r4.ebuild          | 614 +++++++++++++++++++++
 .../ffmpeg/files/ffmpeg-6.0.1-alignment.patch      | 114 ++++
 5 files changed, 1338 insertions(+)
 create mode 100644 media-video/ffmpeg/ffmpeg-6.0.1-r3.ebuild
 create mode 100644 media-video/ffmpeg/ffmpeg-6.1.1-r4.ebuild
 create mode 100644 media-video/ffmpeg/files/ffmpeg-6.0.1-alignment.patch

(limited to 'media-video')

diff --git a/media-video/Manifest.gz b/media-video/Manifest.gz
index b48a28cabb7c..831d19ac41f9 100644
Binary files a/media-video/Manifest.gz and b/media-video/Manifest.gz differ
diff --git a/media-video/ffmpeg/Manifest b/media-video/ffmpeg/Manifest
index f07c486b71ad..4201e5139c5d 100644
--- a/media-video/ffmpeg/Manifest
+++ b/media-video/ffmpeg/Manifest
@@ -15,6 +15,7 @@ AUX ffmpeg-6.0-binutils-2.41.patch 2217 BLAKE2B 2c8e96610fe1d198613405941b8f6ce3
 AUX ffmpeg-6.0-fix-lto-type-mismatch.patch 1782 BLAKE2B 4cafd0244136c645e8da072b21c906fba97579f667e57f678b450410759fddc834e5a2428b7d0f078130cfc7ab267cad82a46d369951efddcfc5853dd2118837 SHA512 170114d57af0a0b5fc5da71ae76f4725b8cf1a604b5eca10e60761ef22fb0cdb35a166d1dd5ebc4ef990c383e1d1331f8ef2ceccb8dc7bf4adcc7e9ebb2ba899
 AUX ffmpeg-6.0-libplacebo-remove-deprecated-field.patch 4733 BLAKE2B eba46b33bdbb387b90f89491aa638cb941e7fb72d522945394e540fdfadaf83efc6837a13eefedc285b6bce3ef4443ef32f2c04754209c4a47c4d2216574d597 SHA512 0673dab6043466eecf79048f1da8879d89a014b207910bfd6ec6ebf151fe77edf35460035583f803133969d90ab202ce31aaddf322501ac4e34e1270a66f09fe
 AUX ffmpeg-6.0-wint-conversion-vulkan.patch 1647 BLAKE2B 3d0f0de065a615f199cd3a3074f5038bf6652f41afa8f8754ade5f0112327f069d4cf8eddf3bc25139122d258caceb102dad7c2825b99f35c273e993caae817d SHA512 1fa7506eb393e44ba98ebaea1e98831912279d365ef8909f247913b912973f7782cb0ad869da4244b6a09b91f5cbb5a5207cbc5a4de8ec61fc313714ea663a80
+AUX ffmpeg-6.0.1-alignment.patch 5048 BLAKE2B 9a9345b84b68442c97258a71b49ed773e40d985ea8f2525a8749a7562d787634ff0b0e5e1d257e94f7cf68fab81790ca2f0b64cfcb27453e1e6912de30c560e9 SHA512 575b71b2d69b0c7b4e0498b9375dad55945adc7178c72ed5fd12addeae3ffb0081ab59d743a2a6da1a3b67d84642c7dd3d04e2fdb9ae2d992968ba52aa1aee41
 AUX ffmpeg-6.1-gcc-14.patch 523 BLAKE2B b82fc06a7eee0c7ab68ef78f3ac205f45a68a7799dc241f0a574afa48e4dbd477c0d67f7c5a7ff46971adc821ef1507f4957156200167a2c59f8c7f7867ac048 SHA512 092cd9bad652ab82c3b160a37c0c92b561577d56b33776e30b79b7abf487fffeb1ef1273b950c4d4eff62d3cd7fec2a6dc2c294285b0b32eda364e47834a4ff9
 AUX ffmpeg-6.1-opencl-parallel-gmake-fix.patch 519 BLAKE2B 837eb5bd4041edbe221a22b9104843fc3090db4fdc409ae23302376f981d4125d5437dd6f7062898f678214fb7b3d1f0ab3aa1905bbb1169231891aab7ce2461 SHA512 788da4be706d07578329ef4e12e49c32bc6aa938a0b9327c60dfe49d7c399ce1657fd343a15c4f44b20dcd3fb62a8918643120941655311cd9d473321fd06812
 AUX ffmpeg-6.1-wint-conversion.patch 3514 BLAKE2B fcb65b882af964a8f45f71ea3f885fc016e3f89c3d6f0bd6d661d489715c0f746e763a86c6ade1515e212b01559d90ea9c2a97c965e0c0f9087b8396cdd58414 SHA512 7e09fc1a811a21aee9eef0370e57a37817652229a6b0e58cd2e8723e8336124396fe40f6a7c6c5f860046410596027d27d900371ff86609b86ef94dd0633977f
@@ -33,7 +34,9 @@ DIST ffmpeg-rpi-6.1-r3.patch.asc 833 BLAKE2B 31fd5823c06d5884f7b0980de9072c35bbf
 EBUILD ffmpeg-4.4.4-r8.ebuild 20269 BLAKE2B 2d42f92ce34afbd49b4764e59bd3ac4e05e2e052d88000c6b0f0cdeae09b7170998cd52b951145fede6db9a18d480d0eb6e0f87a498bc34f1b61e4aa656d00b4 SHA512 d6a81f4ce5be09ea5ec7e8480c9fd5f4ad9417020f0607de8356fa87f47fe4237d734270ea3224402720451ef123b3354ccc472e011963e2cb1528028b74c229
 EBUILD ffmpeg-6.0-r11.ebuild 20020 BLAKE2B a40a46d38cf91778bac13235c227dcb6c9b2d37a7760deb5ffcd2aea4fd0f12cec0a9a6cf9000882b6595b68f619dacc721365f8491bff7c0dda2739d53af97d SHA512 abeb9fba7ee4d2b704a9420c850b9cc8e87a74ceb08b9b6229c2a33aa806d576bb93396646235c41e18bfb4f36ad3d1260244386f1c7a981c5e1a95f1d80da93
 EBUILD ffmpeg-6.0.1-r2.ebuild 19931 BLAKE2B e266fa8c6477720df77d257542d536df15242132ed2d9b15412026d145f4bb5814873182ba870c71461cb75ac1bc14ed6a5cc2e83b591df2f7ec004cac5ec120 SHA512 052c5fe5c7333f6d35eb01a1455042fb613495ad8bc1b95a1981b3e25b03c58617b3a944e25c35543b42a2cbf8cddc20f61dbe950b431ca12300d66ccbfd2f63
+EBUILD ffmpeg-6.0.1-r3.ebuild 19981 BLAKE2B 81d20a6ac4ec5cfe30f91204b490acf7ae535efbd7317078b902de66006abc21e91bfbff2e5be9ee6720e39412176c7bde044f58274973bfce0848ee0896e131 SHA512 e6435be1426c407a85588bfca2587e417bee2b3bf8947b722320a7c9ed96429202c3eeb8bc66ce9ff3f29da2012f5c05004b89013a5c1f12efba78e74427d46f
 EBUILD ffmpeg-6.1.1-r2.ebuild 19557 BLAKE2B 37f2d46bce4dbbd0fdc1be54c718075da95fadfc6caa28fd4391960af022a2cac54374708a7e8f57455e66fdacaf69b580faaa2a532729c694c5e01faff3da4b SHA512 f04da11f41143394565733af05667e504a5d012c7b4ad669e8be46896f33f71caa3f8fc3b9fd7751667b92b40e412cb15c700423efbb1db5f7c3308fca07e288
 EBUILD ffmpeg-6.1.1-r3.ebuild 20222 BLAKE2B c6f97623ca85962d72a50f16e219fcbb200c5bae9e510f650d97d7b4dd02c5e4be85de2442a02ab98b4289f412ac1791c84482c89d49aef8407aae46be537845 SHA512 792af976d057ec799aff4bdbf5766f891f45f26401eabeef62435be52915cdebb026038c964a43de02be6ec3b49b968ceebe11e52c0345b3772efb0d2fcf2d4b
+EBUILD ffmpeg-6.1.1-r4.ebuild 20265 BLAKE2B a21ee7e9c36f111b5828c25c908431f7fe321c73c21d451da54f1614b773f4438464d046cf282e20b3d90b37a8bce9070dba9595985d3212639fa45a81c41a56 SHA512 85812f4fda4ad8f2453238feba046f55a843e25e29f38d555199422a485d0a09032c4f11466f357eac0f87a6252f5fa1fd26534400050cc0d47f3bf94cf06662
 EBUILD ffmpeg-9999.ebuild 20036 BLAKE2B a43010a5fbe76d398e3971d476c27057c8a61c47af980a74391e23eaf63d743b10d1a8033fad7d461b880ffdea164d898d85900963a42b2ef572b62a07769efb SHA512 a17dc4198cc358490f129c865eb57fc1611c922c6ed08272373cf5da774b2084f2046079333df1a6f0b480f19f5f1cda9e51f221ea40474fe2208bc753dcc3ef
 MISC metadata.xml 7897 BLAKE2B 911f673353c480db243c202046f876840849cb27155fb109ee365e009d20af086fe188d91c7d33d509a7362330cea853a808c8e0a463aca8de3c304a3ed52ed0 SHA512 bdf26ee26d65a5ce58bc958eaad682cf4b5101100566cd4a4adf0b671418a2a7958a54baa2abff480f17bfcfe2d33aae20ba7d37f0d7b116f210d40796483da1
diff --git a/media-video/ffmpeg/ffmpeg-6.0.1-r3.ebuild b/media-video/ffmpeg/ffmpeg-6.0.1-r3.ebuild
new file mode 100644
index 000000000000..ffff53a0404e
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-6.0.1-r3.ebuild
@@ -0,0 +1,607 @@
+# Copyright 1999-2024 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
+
+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/"
+if [ "${PV#9999}" != "${PV}" ] ; then
+	SRC_URI=""
+elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
+	SRC_URI="mirror://gentoo/${P}.tar.xz"
+else # Release
+	VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/ffmpeg.asc
+	inherit verify-sig
+	SRC_URI="https://ffmpeg.org/releases/${P/_/-}.tar.xz"
+	SRC_URI+=" verify-sig? ( https://ffmpeg.org/releases/${P/_/-}.tar.xz.asc )"
+
+	BDEPEND=" verify-sig? ( sec-keys/openpgp-keys-ffmpeg )"
+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 ~ia64 ~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 mmal 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 frei0r vmaf:libvmaf
+		fribidi:libfribidi fontconfig ladspa lcms:lcms2 libass libplacebo libtesseract lv2
+		truetype:libfreetype vidstab:libvidstab
+		rubberband:librubberband 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
+	${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
+)
+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.4.0:0=[${MULTILIB_USEDEP}] )
+	encode? (
+		amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
+		kvazaar? ( >=media-libs/kvazaar-1.2.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.4:=[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}] )
+	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: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}] )
+	mmal? ( media-libs/raspberrypi-userland )
+	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/oneVPL[${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}] )
+	sndio? ( media-sound/sndio:=[${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.5.5:=[sftp,${MULTILIB_USEDEP}] )
+	svg? (
+		gnome-base/librsvg:2=[${MULTILIB_USEDEP}]
+		x11-libs/cairo[${MULTILIB_USEDEP}]
+	)
+	nvenc? ( media-libs/nv-codec-headers )
+	svt-av1? ( >=media-libs/svt-av1-0.9.0[${MULTILIB_USEDEP}] )
+	truetype? ( >=media-libs/freetype-2.5.0.1:2[${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.2.189:=[${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.1.6 )
+	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-1.4.28 )
+	ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
+	v4l? ( sys-kernel/linux-headers )
+"
+
+# += 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? ( >=sys-devel/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="
+	cuda? ( nvenc )
+	libv4l? ( v4l )
+	fftools_cws2fws? ( zlib )
+	test? ( encode )
+	${GPL_REQUIRED_USE}
+	${CPU_REQUIRED_USE}"
+RESTRICT="
+	!test? ( test )
+	gpl? ( openssl? ( bindist ) fdk? ( bindist ) )
+"
+
+S=${WORKDIR}/${P/_/-}
+
+PATCHES=(
+	"${FILESDIR}"/chromium-r1.patch
+	"${FILESDIR}"/${PN}-5.1.2-get_cabac_inline_x86-32-bit.patch
+	"${FILESDIR}"/${PN}-6.0-libplacebo-remove-deprecated-field.patch
+	"${FILESDIR}"/${PN}-6.0-fix-lto-type-mismatch.patch
+	"${FILESDIR}"/${PN}-4.4.4-opencl-parallel-gmake-fix.patch
+	"${FILESDIR}"/${PN}-6.0.1-alignment.patch
+)
+
+MULTILIB_WRAPPED_HEADERS=(
+	/usr/include/libavutil/avconfig.h
+)
+
+build_separate_libffmpeg() {
+	use opencl
+}
+
+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
+
+	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
+
+	echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
+}
+
+multilib_src_configure() {
+	local myconf=( )
+
+	# bug 842201
+	use ia64 && tc-is-gcc && append-flags \
+		-fno-tree-ccp \
+		-fno-tree-dominator-opts \
+		-fno-tree-fre \
+		-fno-code-hoisting \
+		-fno-tree-pre \
+		-fno-tree-vrp
+
+	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
+	[[ ${ABI} != x86 ]] && tc-is-lto && myconf+=( "--enable-lto" )
+	filter-lto
+
+	# Mandatory configuration
+	myconf=(
+		--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
+
+	if multilib_is_native_abi && use chromium && build_separate_libffmpeg; then
+		einfo "Configuring for Chromium"
+		mkdir -p ../chromium || die
+		pushd ../chromium >/dev/null || die
+		set -- "${@}" \
+			--disable-shared \
+			--enable-static \
+			--enable-pic \
+			--disable-opencl
+		echo "${@}"
+		"${@}" || die
+		popd >/dev/null || die
+	fi
+}
+
+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
+
+		if use chromium; then
+			if build_separate_libffmpeg; then
+				einfo "Compiling for Chromium"
+				pushd ../chromium >/dev/null || die
+				emake V=1 libffmpeg
+				popd >/dev/null || die
+			else
+				emake V=1 libffmpeg
+			fi
+		fi
+	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
+
+		if use chromium; then
+			if build_separate_libffmpeg; then
+				einfo "Installing for Chromium"
+				pushd ../chromium >/dev/null || die
+				emake V=1 DESTDIR="${D}" install-libffmpeg
+				popd >/dev/null || die
+			else
+				emake V=1 DESTDIR="${D}" install-libffmpeg
+
+				# When not built separately, libffmpeg has no code of
+				# its own so this QA check raises a false positive.
+				QA_FLAGS_IGNORED+=" usr/$(get_libdir)/chromium/.*"
+			fi
+		fi
+	fi
+}
+
+multilib_src_install_all() {
+	dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
+	[ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
+
+	use amf && elog "To use AMF, prefix the ffmpeg call with the 'vk_pro' wrapper script, e.g. `vk_pro ffmpeg -vcodec h264_amf [...]`"
+}
diff --git a/media-video/ffmpeg/ffmpeg-6.1.1-r4.ebuild b/media-video/ffmpeg/ffmpeg-6.1.1-r4.ebuild
new file mode 100644
index 000000000000..b4c881278474
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-6.1.1-r4.ebuild
@@ -0,0 +1,614 @@
+# Copyright 1999-2024 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 ~ia64 ~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/oneVPL[${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? ( >=sys-devel/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
+)
+
+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
+}
+
+multilib_src_configure() {
+	local myconf=( )
+
+	# Conditional patch options
+	use soc && myconf+=( --enable-v4l2-request --enable-libudev --enable-sand )
+
+	# bug 842201
+	use ia64 && tc-is-gcc && append-flags \
+		-fno-tree-ccp \
+		-fno-tree-dominator-opts \
+		-fno-tree-fre \
+		-fno-code-hoisting \
+		-fno-tree-pre \
+		-fno-tree-vrp
+
+	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 ]] && tc-is-lto; then
+		# Respect -flto value, e.g -flto=thin
+		local v="$(get-flag flto)"
+		[[ -n ${v} ]] && myconf+=( "--enable-lto=${v}" ) || myconf+=( "--enable-lto" )
+	fi
+	filter-lto
+
+	# 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"
+
+	use amf && elog "To use AMF, prefix the ffmpeg call with the 'vk_pro' wrapper script, e.g. `vk_pro ffmpeg -vcodec h264_amf [...]`"
+}
diff --git a/media-video/ffmpeg/files/ffmpeg-6.0.1-alignment.patch b/media-video/ffmpeg/files/ffmpeg-6.0.1-alignment.patch
new file mode 100644
index 000000000000..256feab8aea2
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-6.0.1-alignment.patch
@@ -0,0 +1,114 @@
+https://trac.ffmpeg.org/ticket/10549
+https://bugs.gentoo.org/915384
+https://git.videolan.org/?p=ffmpeg.git;a=patch;h=7945d30e91b96d2f4f5b612048169087d214d41e
+
+From 7945d30e91b96d2f4f5b612048169087d214d41e Mon Sep 17 00:00:00 2001
+From: Timo Rothenpieler <timo@rothenpieler.org>
+Date: Sun, 3 Dec 2023 21:01:50 +0100
+Subject: [PATCH] avutil/mem: limit alignment to maximum simd align
+
+FFmpeg has instances of DECLARE_ALIGNED(32, ...) in a lot of structs,
+which then end up heap-allocated.
+By declaring any variable in a struct, or tree of structs, to be 32 byte
+aligned, it allows the compiler to safely assume the entire struct
+itself is also 32 byte aligned.
+
+This might make the compiler emit code which straight up crashes or
+misbehaves in other ways, and at least in one instances is now
+documented to actually do (see ticket 10549 on trac).
+The issue there is that an unrelated variable in SingleChannelElement is
+declared to have an alignment of 32 bytes. So if the compiler does a copy
+in decode_cpe() with avx instructions, but ffmpeg is built with
+--disable-avx, this results in a crash, since the memory is only 16 byte
+aligned.
+
+Mind you, even if the compiler does not emit avx instructions, the code
+is still invalid and could misbehave. It just happens not to. Declaring
+any variable in a struct with a 32 byte alignment promises 32 byte
+alignment of the whole struct to the compiler.
+
+This patch limits the maximum alignment to the maximum possible simd
+alignment according to configure.
+While not perfect, it at the very least gets rid of a lot of UB, by
+matching up the maximum DECLARE_ALIGNED value with the alignment of heap
+allocations done by lavu.
+---
+ libavutil/mem.c          |  2 +-
+ libavutil/mem_internal.h | 33 ++++++++++++++++++++++++++++-----
+ 2 files changed, 29 insertions(+), 6 deletions(-)
+
+diff --git a/libavutil/mem.c b/libavutil/mem.c
+index 36b8940a0c..62163b4cb3 100644
+--- a/libavutil/mem.c
++++ b/libavutil/mem.c
+@@ -62,7 +62,7 @@ void  free(void *ptr);
+ 
+ #endif /* MALLOC_PREFIX */
+ 
+-#define ALIGN (HAVE_AVX512 ? 64 : (HAVE_AVX ? 32 : 16))
++#define ALIGN (HAVE_SIMD_ALIGN_64 ? 64 : (HAVE_SIMD_ALIGN_32 ? 32 : 16))
+ 
+ /* NOTE: if you want to override these functions with your own
+  * implementations (not recommended) you have to link libav* as
+diff --git a/libavutil/mem_internal.h b/libavutil/mem_internal.h
+index 2448c606f1..b1d89a0605 100644
+--- a/libavutil/mem_internal.h
++++ b/libavutil/mem_internal.h
+@@ -76,27 +76,50 @@
+  */
+ 
+ #if defined(__INTEL_COMPILER) && __INTEL_COMPILER < 1110 || defined(__SUNPRO_C)
+-    #define DECLARE_ALIGNED(n,t,v)      t __attribute__ ((aligned (n))) v
++    #define DECLARE_ALIGNED_T(n,t,v)    t __attribute__ ((aligned (n))) v
+     #define DECLARE_ASM_ALIGNED(n,t,v)  t __attribute__ ((aligned (n))) v
+     #define DECLARE_ASM_CONST(n,t,v)    const t __attribute__ ((aligned (n))) v
+ #elif defined(__DJGPP__)
+-    #define DECLARE_ALIGNED(n,t,v)      t __attribute__ ((aligned (FFMIN(n, 16)))) v
++    #define DECLARE_ALIGNED_T(n,t,v)    t __attribute__ ((aligned (FFMIN(n, 16)))) v
+     #define DECLARE_ASM_ALIGNED(n,t,v)  t av_used __attribute__ ((aligned (FFMIN(n, 16)))) v
+     #define DECLARE_ASM_CONST(n,t,v)    static const t av_used __attribute__ ((aligned (FFMIN(n, 16)))) v
+ #elif defined(__GNUC__) || defined(__clang__)
+-    #define DECLARE_ALIGNED(n,t,v)      t __attribute__ ((aligned (n))) v
++    #define DECLARE_ALIGNED_T(n,t,v)    t __attribute__ ((aligned (n))) v
+     #define DECLARE_ASM_ALIGNED(n,t,v)  t av_used __attribute__ ((aligned (n))) v
+     #define DECLARE_ASM_CONST(n,t,v)    static const t av_used __attribute__ ((aligned (n))) v
+ #elif defined(_MSC_VER)
+-    #define DECLARE_ALIGNED(n,t,v)      __declspec(align(n)) t v
++    #define DECLARE_ALIGNED_T(n,t,v)    __declspec(align(n)) t v
+     #define DECLARE_ASM_ALIGNED(n,t,v)  __declspec(align(n)) t v
+     #define DECLARE_ASM_CONST(n,t,v)    __declspec(align(n)) static const t v
+ #else
+-    #define DECLARE_ALIGNED(n,t,v)      t v
++    #define DECLARE_ALIGNED_T(n,t,v)    t v
+     #define DECLARE_ASM_ALIGNED(n,t,v)  t v
+     #define DECLARE_ASM_CONST(n,t,v)    static const t v
+ #endif
+ 
++#if HAVE_SIMD_ALIGN_64
++    #define ALIGN_64 64
++    #define ALIGN_32 32
++#elif HAVE_SIMD_ALIGN_32
++    #define ALIGN_64 32
++    #define ALIGN_32 32
++#else
++    #define ALIGN_64 16
++    #define ALIGN_32 16
++#endif
++
++#define DECLARE_ALIGNED(n,t,v) DECLARE_ALIGNED_V(n,t,v)
++
++// Macro needs to be double-wrapped in order to expand
++// possible other macros being passed for n.
++#define DECLARE_ALIGNED_V(n,t,v) DECLARE_ALIGNED_##n(t,v)
++
++#define DECLARE_ALIGNED_4(t,v)  DECLARE_ALIGNED_T(       4, t, v)
++#define DECLARE_ALIGNED_8(t,v)  DECLARE_ALIGNED_T(       8, t, v)
++#define DECLARE_ALIGNED_16(t,v) DECLARE_ALIGNED_T(      16, t, v)
++#define DECLARE_ALIGNED_32(t,v) DECLARE_ALIGNED_T(ALIGN_32, t, v)
++#define DECLARE_ALIGNED_64(t,v) DECLARE_ALIGNED_T(ALIGN_64, t, v)
++
+ // Some broken preprocessors need a second expansion
+ // to be forced to tokenize __VA_ARGS__
+ #define E1(x) x
+-- 
+2.30.2
-- 
cgit v1.2.3