From 1a7ba844ad2c84ac4ba0d37f510285e778c7ffc4 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Thu, 27 Jul 2023 16:34:32 +0100 Subject: gentoo auto-resync : 27:07:2023 - 16:34:32 --- media-video/ffmpeg/Manifest | 8 +- media-video/ffmpeg/ffmpeg-4.4.4-r2.ebuild | 603 ----------------------------- media-video/ffmpeg/ffmpeg-4.4.4-r3.ebuild | 603 +++++++++++++++++++++++++++++ media-video/ffmpeg/ffmpeg-5.1.3-r2.ebuild | 603 ----------------------------- media-video/ffmpeg/ffmpeg-5.1.3-r3.ebuild | 603 +++++++++++++++++++++++++++++ media-video/ffmpeg/ffmpeg-6.0-r4.ebuild | 604 ------------------------------ media-video/ffmpeg/ffmpeg-6.0-r5.ebuild | 604 ++++++++++++++++++++++++++++++ media-video/ffmpeg/ffmpeg-9999.ebuild | 2 +- 8 files changed, 1815 insertions(+), 1815 deletions(-) delete mode 100644 media-video/ffmpeg/ffmpeg-4.4.4-r2.ebuild create mode 100644 media-video/ffmpeg/ffmpeg-4.4.4-r3.ebuild delete mode 100644 media-video/ffmpeg/ffmpeg-5.1.3-r2.ebuild create mode 100644 media-video/ffmpeg/ffmpeg-5.1.3-r3.ebuild delete mode 100644 media-video/ffmpeg/ffmpeg-6.0-r4.ebuild create mode 100644 media-video/ffmpeg/ffmpeg-6.0-r5.ebuild (limited to 'media-video/ffmpeg') diff --git a/media-video/ffmpeg/Manifest b/media-video/ffmpeg/Manifest index 5e452857232d..0565419d7166 100644 --- a/media-video/ffmpeg/Manifest +++ b/media-video/ffmpeg/Manifest @@ -22,9 +22,9 @@ DIST ffmpeg-5.1.3.tar.xz.asc 520 BLAKE2B 09d7ff694a2fc61a00443b90f905bb771c3fb72 DIST ffmpeg-6.0.tar.xz 10234012 BLAKE2B c70884911f3a3e40fe87473f241a2a56b303f5abe7f1d7fa797d05e29e00971f98cbf37832c1c3dc5fa949a5beddef05a6ec55ae6668091976ea870ad93c0e8d SHA512 4d0e8f635d5a1633710f30cb3e0a854b6ca3bf85e33a289d1ec7aca2ad55dc4910010bc9cf3f13eee9f6decb9d50a0df6d7aa5a342f308c3868d2730f3a6b980 DIST ffmpeg-6.0.tar.xz.asc 520 BLAKE2B be294d375108b57bca3c687620ce2517c54c99012d82dc7aa1a83d5fe6d5453bd3c8620fdfb743df780cf588983a06a66a458c4e3e454dbe535cbba9da30c48c SHA512 a64cd0f8578fcea4537f5a38634c930d66c8ba4abd3e8e9dcffaeb95c3ad2e754d7bc4fbb5272409d4d32abf8180ef83f7204c6a570b52a37e635efd96cb94ed EBUILD ffmpeg-4.2.9.ebuild 17833 BLAKE2B 9c54f0f4be49eb443b49e1a203a638aae07e0a5cba537fdb4ff6765c931670f478c301ef935aa0b72dc8e4a241f17da891eafc6b539495de9725f6bded71da28 SHA512 f5785206f871d89c469aab33bad04c6f35651a70644c08f502fab4d6d1cf131ec6b9a9a26b340f2b33be947bc82bc183dfe4115c4775110f69ca2144f6c91013 -EBUILD ffmpeg-4.4.4-r2.ebuild 19722 BLAKE2B 28ced02686a1d6a140da6c60d6ebf0e446436b2ac0629420759d817ec80b006e9e9a052e374770ad944678da5ddc7ac86ffe73e57c65323f4ad75207dacb1555 SHA512 307341e26c1bb44b47538d748f038b7ab78afc4a7c544ec26a6e143a93a15b808e054e9da3c3d747777db6800f3d4eb3661be1d272d8e0718aa7df8be2cc985d -EBUILD ffmpeg-5.1.3-r2.ebuild 19786 BLAKE2B febbb7478c689999d4c58787adb685bb29fadfd7e768844bb2131d8293de52687c0d7f9bc4598e911d8a55b09e20148bc017d33973ffa60f4e3218f4bdf6b3f6 SHA512 826128e75cac2cf3fa251c636012a8d5ece1ef0f3abe542d2db2df9caac390842425b4c63a5a98e2df3f949556795f191a0b1425a5b5ac66353ac86dba8e1991 +EBUILD ffmpeg-4.4.4-r3.ebuild 19749 BLAKE2B 293e91b9a330fb5fdb38b6a99d2660023d2d4699611aa21b99d3e559f91ef77b2b38ecc0e2797436803cfe00b052558dcca1dfa6d6e4edb5e6c51b095deff943 SHA512 d1452632b6d7f2f339deebcb48f6a8ce9db3fcd5affbb0f14cf3d22ea62c47232fc4506296948438b84120a98755827b4fc08e27fcfa720ed8dfbb14425fd7a7 +EBUILD ffmpeg-5.1.3-r3.ebuild 19813 BLAKE2B 15d9f8f76edccf46328c4f579726a6e81abe9fce7fe47ecff5012e3909dcf6bbbcf1d7520ac17c3eaccdf091561b23a2873aa96a3b578d11a76e106dad2d6e23 SHA512 7c7f996979cf86421a89a45f91d63f9589ca7dc97230e3da308d7d268d8ee16fea310e0072ef19858777d8f35bb3d43dee7c40f4f864b4bd3e0471536c5631ff EBUILD ffmpeg-6.0-r2.ebuild 19736 BLAKE2B 68dfc156c7a92bc62a26d01c841512ae1972314c41b3a416fe985c6a964f9ed3c374639dcb4d0794b10d9f8ff2ae44e6a4466e989424337b295e8f87bcd17a44 SHA512 0e8bb3b78f400a8cb3c03a0c77841f73dab184af4f99faffd5d1b6bcef706638cbdbeb283c8f3d855e1fcfe23799f5588004881b51389a3ecc6734cdf08df55e -EBUILD ffmpeg-6.0-r4.ebuild 19855 BLAKE2B 1a09aa5423e6086a34f6a89b38ee69e2ea82b47a75603b0e270d35799159775e1b57cde73724b80be91a844c774fd00281b0c67b6181d8d428a8abad4ffb80c9 SHA512 bc643f7563b12c1bb63d179c686fbadf8ef86083d1891bd689b61153348c4b5b1eaed2d0ca4bf868b1f622cecd740028284752d7c63ba4e87882fb02e760a0a1 -EBUILD ffmpeg-9999.ebuild 19621 BLAKE2B f2626bdc5c5c3d08a1b84271499bac4ae28ec93438fdfb6df21bfe2847120d408d80337ef92b98e0995f8b4cab4a2db57f4cc1962df2470b5b8b5e25291b9aa1 SHA512 0cebfd2d88262810ba4d497e79dd130de6093bd8eec429f7007580e08ee123b44f03672e78e63e0d2ba1f34ccd54f5580d6caf384752134182190e2bc4e5a953 +EBUILD ffmpeg-6.0-r5.ebuild 19882 BLAKE2B a0f503c247d59e932af34b9fd1cdad4c2d8e453840bf2ea5cdd7dd07518ef0dfa658319f5bd08c7ec5e9edc056107236fab8a44b4d1bcae540eb48009aae1710 SHA512 ee4e46169253e2a32530a729c3b3637d195e93b401e7b6713c151b5303e5c7afd8cf47491316344ed58329e683fb159f305a9c515a7edfe500e5daed5b3cce81 +EBUILD ffmpeg-9999.ebuild 19648 BLAKE2B 5b34a11325b27d912e52fa5ec28f2593a1ab77e5ab67c9b6359c011a6ab5ae7f074f61f61d3288e669e770e7a2fcc4e8f304bc4fa8ed2476d0873acd52c35d73 SHA512 22360495d30ea0b8b92c0b41cea61bd298558d5b2edd94f242fda5b5c4ea72d395dc0a7357a7d93137b46210f396547cb8b61cd6ae5bd19cc457bbb3f4d1e089 MISC metadata.xml 7426 BLAKE2B 68fd0b4c5ff7cd08635421bab3b3257f06ad139212d44055f60e7f9e69c36d4e24e8d29ebf1662235269caefd388576d05c798ee67cf4b2871fab54362c405ba SHA512 c4bc329ce8903649a4eaeae01b7c0083a192e09701194c5867b651cc0650260bb12df740b68ffa85e49aadea133458a279070d320aa28195a9f71a99de4eaca8 diff --git a/media-video/ffmpeg/ffmpeg-4.4.4-r2.ebuild b/media-video/ffmpeg/ffmpeg-4.4.4-r2.ebuild deleted file mode 100644 index 4a3c4e8f1038..000000000000 --- a/media-video/ffmpeg/ffmpeg-4.4.4-r2.ebuild +++ /dev/null @@ -1,603 +0,0 @@ -# Copyright 1999-2023 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=56.58.58 - -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="${BROOT}"/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 ~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 bluray:libbluray gme:libgme gsm:libgsm - libaribb24 mmal modplug:libmodplug opus:libopus qsv:libmfx 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 libass 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}] ) - 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.10.2:=[${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}] ) - 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? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] ) - opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] ) - pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] ) - qsv? ( media-libs/intel-mediasdk[${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-9.1.23.1 ) - svt-av1? ( >=media-libs/svt-av1-0.8.4[${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[${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.1.97:=[${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 ) - ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] ) - v4l? ( sys-kernel/linux-headers ) -" - -# += for verify-sig above -BDEPEND+=" - >=sys-devel/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 sys-devel/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.0-backport-ranlib-build-fix.patch - "${FILESDIR}"/${PN}-4.4.3-clang-14-ff_seek_frame_binary-crash.patch - "${FILESDIR}"/${PN}-4.4.3-get_cabac_inline_x86-32-bit.patch - "${FILESDIR}"/${PN}-4.4.4-wint-conversion-vulkan.patch - "${FILESDIR}"/${P}-fix-build-svt-av1-1.5.0.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 - - eapply "${FILESDIR}/vmaf-models-default-path.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 - - 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 ) - 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 ]] && is-flagq "-flto*" && myconf+=( "--enable-lto" ) - filter-lto - - # Mandatory configuration - myconf=( - --enable-avfilter - --enable-avresample - --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:${BUILD_DIR}/libavresample" \ - emake V=1 fate -} - -multilib_src_install() { - emake V=1 DESTDIR="${D}" install install-doc - - if multilib_is_native_abi; then - for i in "${FFTOOLS[@]}" ; do - if use fftools_${i} ; then - dobin tools/${i}$(get_exeext) - fi - done - - 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 && doenvd "${FILESDIR}"/amf-env-vulkan-override -} diff --git a/media-video/ffmpeg/ffmpeg-4.4.4-r3.ebuild b/media-video/ffmpeg/ffmpeg-4.4.4-r3.ebuild new file mode 100644 index 000000000000..717a0742f97b --- /dev/null +++ b/media-video/ffmpeg/ffmpeg-4.4.4-r3.ebuild @@ -0,0 +1,603 @@ +# Copyright 1999-2023 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=56.58.58 + +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="${BROOT}"/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 ~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 bluray:libbluray gme:libgme gsm:libgsm + libaribb24 mmal modplug:libmodplug opus:libopus qsv:libmfx 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 libass 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}] ) + 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.10.2:=[${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}] ) + 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? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] ) + opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] ) + pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] ) + qsv? ( media-libs/intel-mediasdk[${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-9.1.23.1 ) + svt-av1? ( >=media-libs/svt-av1-0.8.4[${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[${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.1.97:=[${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 ) + ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] ) + v4l? ( sys-kernel/linux-headers ) +" + +# += for verify-sig above +BDEPEND+=" + >=sys-devel/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 sys-devel/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.0-backport-ranlib-build-fix.patch + "${FILESDIR}"/${PN}-4.4.3-clang-14-ff_seek_frame_binary-crash.patch + "${FILESDIR}"/${PN}-4.4.3-get_cabac_inline_x86-32-bit.patch + "${FILESDIR}"/${PN}-4.4.4-wint-conversion-vulkan.patch + "${FILESDIR}"/${P}-fix-build-svt-av1-1.5.0.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 + + eapply "${FILESDIR}/vmaf-models-default-path.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 + + 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 ) + 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 ]] && is-flagq "-flto*" && myconf+=( "--enable-lto" ) + filter-lto + + # Mandatory configuration + myconf=( + --enable-avfilter + --enable-avresample + --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:${BUILD_DIR}/libavresample" \ + emake V=1 fate +} + +multilib_src_install() { + emake V=1 DESTDIR="${D}" install install-doc + + if multilib_is_native_abi; then + for i in "${FFTOOLS[@]}" ; do + if use fftools_${i} ; then + dobin tools/${i}$(get_exeext) + fi + done + + 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 && newenvd "${FILESDIR}"/amf-env-vulkan-override 99amf-env-vulkan-override +} diff --git a/media-video/ffmpeg/ffmpeg-5.1.3-r2.ebuild b/media-video/ffmpeg/ffmpeg-5.1.3-r2.ebuild deleted file mode 100644 index f55c39bea2fb..000000000000 --- a/media-video/ffmpeg/ffmpeg-5.1.3-r2.ebuild +++ /dev/null @@ -1,603 +0,0 @@ -# Copyright 1999-2023 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=57.59.59 - -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="${BROOT}"/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:libmfx 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? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] ) - opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] ) - pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] ) - qsv? ( media-libs/intel-mediasdk[${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-9.1.23.1 ) - 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 ) - ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] ) - v4l? ( sys-kernel/linux-headers ) -" - -# += for verify-sig above -BDEPEND+=" - >=sys-devel/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 sys-devel/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}"/${P}-fix-build-svt-av1-1.5.0.patch - "${FILESDIR}"/${P}-svt-av1.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 ]] && is-flagq "-flto*" && 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 -} - -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 && doenvd "${FILESDIR}"/amf-env-vulkan-override -} diff --git a/media-video/ffmpeg/ffmpeg-5.1.3-r3.ebuild b/media-video/ffmpeg/ffmpeg-5.1.3-r3.ebuild new file mode 100644 index 000000000000..8c290006f1db --- /dev/null +++ b/media-video/ffmpeg/ffmpeg-5.1.3-r3.ebuild @@ -0,0 +1,603 @@ +# Copyright 1999-2023 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=57.59.59 + +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="${BROOT}"/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:libmfx 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? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] ) + opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] ) + pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] ) + qsv? ( media-libs/intel-mediasdk[${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-9.1.23.1 ) + 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 ) + ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] ) + v4l? ( sys-kernel/linux-headers ) +" + +# += for verify-sig above +BDEPEND+=" + >=sys-devel/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 sys-devel/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}"/${P}-fix-build-svt-av1-1.5.0.patch + "${FILESDIR}"/${P}-svt-av1.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 ]] && is-flagq "-flto*" && 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 +} + +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 && newenvd "${FILESDIR}"/amf-env-vulkan-override 99amf-env-vulkan-override +} diff --git a/media-video/ffmpeg/ffmpeg-6.0-r4.ebuild b/media-video/ffmpeg/ffmpeg-6.0-r4.ebuild deleted file mode 100644 index e4b90e3a7bf4..000000000000 --- a/media-video/ffmpeg/ffmpeg-6.0-r4.ebuild +++ /dev/null @@ -1,604 +0,0 @@ -# Copyright 1999-2023 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="${BROOT}"/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? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] ) - opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] ) - pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${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-9.1.23.1 ) - 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+=" - >=sys-devel/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 sys-devel/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}"/${P}-DECLARE_ALIGNED.patch - "${FILESDIR}"/${PN}-5.1.2-get_cabac_inline_x86-32-bit.patch - "${FILESDIR}"/${P}-wint-conversion-vulkan.patch - "${FILESDIR}"/${P}-libplacebo-remove-deprecated-field.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 ]] && is-flagq "-flto*" && 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 -} - -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 && doenvd "${FILESDIR}"/amf-env-vulkan-override -} diff --git a/media-video/ffmpeg/ffmpeg-6.0-r5.ebuild b/media-video/ffmpeg/ffmpeg-6.0-r5.ebuild new file mode 100644 index 000000000000..646efd85ae1a --- /dev/null +++ b/media-video/ffmpeg/ffmpeg-6.0-r5.ebuild @@ -0,0 +1,604 @@ +# Copyright 1999-2023 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="${BROOT}"/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? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] ) + opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] ) + pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${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-9.1.23.1 ) + 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+=" + >=sys-devel/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 sys-devel/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}"/${P}-DECLARE_ALIGNED.patch + "${FILESDIR}"/${PN}-5.1.2-get_cabac_inline_x86-32-bit.patch + "${FILESDIR}"/${P}-wint-conversion-vulkan.patch + "${FILESDIR}"/${P}-libplacebo-remove-deprecated-field.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 ]] && is-flagq "-flto*" && 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 +} + +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 && newenvd "${FILESDIR}"/amf-env-vulkan-override 99amf-env-vulkan-override +} diff --git a/media-video/ffmpeg/ffmpeg-9999.ebuild b/media-video/ffmpeg/ffmpeg-9999.ebuild index 29d9e2cfbfa6..2abee6b94854 100644 --- a/media-video/ffmpeg/ffmpeg-9999.ebuild +++ b/media-video/ffmpeg/ffmpeg-9999.ebuild @@ -596,5 +596,5 @@ multilib_src_install_all() { dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges [ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES" - use amf && doenvd "${FILESDIR}"/amf-env-vulkan-override + use amf && newenvd "${FILESDIR}"/amf-env-vulkan-override 99amf-env-vulkan-override } -- cgit v1.2.3