media-video/ffmpeg: drop 6.1.1-r8, 7.0.2-r1

Do not "think" will need 7.0.x (hard to tell what version is truly LTS
or needed for package support with ffmpeg), can always re-introduce it
as ffmpeg-compat:7 if we ever need it after ffmpeg-8.

Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
This commit is contained in:
Ionen Wolkens
2025-03-09 22:33:58 -04:00
parent f2919aaeb1
commit 772524cf2b
5 changed files with 0 additions and 1494 deletions

View File

@@ -2,19 +2,13 @@ DIST ffmpeg-4.4-patchset-1.tar.xz 9916 BLAKE2B 9b41de6b048601f2af41864c3262b3348
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.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.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.patch 759127 BLAKE2B 90588440a30ba6cd1cb32e92cccc1ae11a85d518f654a9e8148564b843553af911f33ee0fa938d56fe175c27dab95bdeaa4aa2296ced493e8e7aaab7a5d02e47 SHA512 675a4c8197a59b11e014dd2344b6d7262ea0fbb97c34b1f038d94904759cad8888fd396611e0137b0e196996ab2123db72ddfe17d7fcf8f0c34ca4a22889c172
DIST ffmpeg-rpi-7.1.patch.asc 833 BLAKE2B a0874b58be460f512f924c07db93ecb198d1399c6c99d7921d5fa3db220b05b2ca7e7d34d5c68eae66fb4d03e03eaf0b5c7e019e2a293364b50395c575a36a94 SHA512 7f62d98c7c64329c353881fd441f5af8745f76c31a39485c44ea50ce9dead74c05465f310974fc2ceb23e9ac2c8b5b97a9be8957c574e478d883c65cb3041840

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -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

View File

@@ -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