media-video/ffmpeg-compat: add 7.1.1

In preparation for the ffmpeg-8 release in case anything ends up
needing it (hopefully not, long term hoping to be able to drop
some compat slots).

Not very tested but it is an exact copy of ffmpeg-7.1.1's ebuild
(incl. stable keywords, intended) and it should work the same.

Bug: https://bugs.gentoo.org/961436
Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
This commit is contained in:
Ionen Wolkens 2025-08-13 04:06:13 -04:00
parent e984419152
commit 49b3d4020e
No known key found for this signature in database
GPG Key ID: B24406B0B0AC4334
5 changed files with 594 additions and 0 deletions

View File

@ -7,4 +7,8 @@ DIST ffmpeg-4.4.6.tar.xz.asc 520 BLAKE2B 6b16c806af2df78452c17cc81d254ba96056a2a
DIST ffmpeg-6.1-patchset-2.tar.xz 11632 BLAKE2B b4a414825daa74315ab1a5d50dffa13f3ac08565fd8f954a6f031ec0b01a32762af89a14624c0ab9414a6be411de8fa345b75240a2b31e8adc69dbab230b8e34 SHA512 d1be8acae3a2b03993e530737819bc6c85fcf970eddedf93ae99f2a7206876e7b2525842c177d07db8c878fd22490a1c00861580ad158dccd21ed6518d039a48
DIST ffmpeg-6.1.2.tar.xz 10466152 BLAKE2B ff1f2b2bb60ccc4c37b6ffda2a0e6a0be80c451dc99f6d4a99bd95a1bdc44c494d62377c53383ccfb5b818573a1971948d7db34119099dbc56d7258724831d3c SHA512 3a009184d971fc3168e1322d1d724aae787ed0e9c152d8d1813ea0b9099bda3b35c41fcabbd7b140560e7a8fa9fa1ffd7f0938432d5d498c43829fc6cc3d9e08
DIST ffmpeg-6.1.2.tar.xz.asc 520 BLAKE2B f26a2d6f5423f93090f2a448172e49f3858aeb5a00f326207d374bbb70fa8942c7ee1a7c55338b2db664b647c983cd5ab4fd8d71efe5c37af4c90385ca17d0ab SHA512 a26dba1f4870b964080b45f8468f5ce3591eb6aa69be426bf4afbe5a60c3cbd0fe5056dc86ca7bb817c04ae30d39160cb7773772a9a2123ae7f095b18a6d7050
DIST ffmpeg-7.1-patchset-1.tar.xz 2332 BLAKE2B 0fefee824923266618b656c49c43d3a661e6a6885c0b72f5e6fe6516165aab873e519bce5f011aeef7f9fed32418c8d9c8096ae9d3f10ffd3b364948eae8979a SHA512 7afd732dd1df8e8d232dcfb66d873234710d30e123ceee3d7d1980058c71352ab5aa7676835392206565afdb9d4258708d458dc156226dde07cc01d09b4c9a8b
DIST ffmpeg-7.1.1.tar.xz 11019500 BLAKE2B 85d1850bfa39ec28d358b5454daa7c1cf8580af73a6f83e7c070ea94db40ad485adbaeb89e886e0b3908e0f1765bd9f2b40ddd838e33e0a76e5b286917535310 SHA512 42486e485c8fc6f3ec61598a1a7cb40360535762b3fcf28c10d7c6840bc55afe3334434912746e69eef862d3cedf45a02953bde73d38547d2d9a7a38a65e123a
DIST ffmpeg-7.1.1.tar.xz.asc 520 BLAKE2B 3bb276ab356ba50a805a76e3e3cd2113141c28daf69d1f43aceded79769fffd686729f9db99df1046c88d5c1a6f12d224e34ddf409aa9989acfa87ebbbcd0155 SHA512 480846fd939d00f2ea90c0256081519a6996c7a990d0f66444a7ae1bce2e5ad6380f5d751efc9bde18da9c4d34738ade57dd66288b989dfd074c484562e20e75
DIST ffmpeg-rpi-6.1-r3.patch 800738 BLAKE2B b7e449ee5eec8b50a3b3bba233c5269f3b6845dbd18a619b844c841a97345ce24c7a5d7f4da05b08e3cb49668426b9044f3d3553d9c2ef3a50aec7199bfa3c09 SHA512 aeaf12afabf5f2192fb0b6ef47397d8477b109e49cee8c02a890d1656a27b1985c62c719ef72966d8c97b0709918233b65ea2e0ef988771507e4be137fcd9158
DIST ffmpeg-rpi-7.1.1.patch 847869 BLAKE2B efc3fef1810034b40eee1f637499171529fc6027c4fc0ef66da587c704a7742b454903aa060b21305e1d9a714eb31d96cd93f93d7cadb5815a0de22ac040b9e1 SHA512 a3f9013aec9b17e0fc1689d946e57e251a88eac3f9e7856d46fe9614fea29211feaf106d32a31f97c0e8c83c1685ca454c31f9bcb5dafb669a0933d683e581c8

View File

@ -0,0 +1,585 @@
# Copyright 2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit flag-o-matic multilib-minimal toolchain-funcs
FFMPEG_SOC_PATCH=ffmpeg-rpi-7.1.1.patch
FFMPEG_SUBSLOT=59.61.61 # avutil.avcodec.avformat SONAME
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI=(
https://git.ffmpeg.org/ffmpeg.git
https://github.com/FFmpeg/FFmpeg.git
)
else
inherit verify-sig
SRC_URI="
https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz
verify-sig? ( https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz.asc )
${FFMPEG_SOC_PATCH:+"
soc? ( https://dev.gentoo.org/~chewi/distfiles/${FFMPEG_SOC_PATCH} )
"}
https://dev.gentoo.org/~ionen/distfiles/ffmpeg-$(ver_cut 1-2)-patchset-1.tar.xz
"
S=${WORKDIR}/ffmpeg-${PV} # avoid ${P} for ffmpeg-compat
KEYWORDS="amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
fi
DESCRIPTION="Complete solution to record/convert/stream audio and video"
HOMEPAGE="
https://ffmpeg.org/
https://code.ffmpeg.org/FFmpeg/FFmpeg/
"
[[ ${PN} == *-compat ]] && FFMPEG_UNSLOTTED= || FFMPEG_UNSLOTTED=1
FFMPEG_IUSE_MAP=(
# [+]flag[:[^][!]opt1,...][@<v3|nonfree>]], ^ = native-only, ! = override
# remember to keep LICENSE, REQUIRED_USE, and RESTRICT in sync
X:libxcb,libxcb-shape,libxcb-shm,libxcb-xfixes,xlib
alsa
amf
amrenc:libvo-amrwbenc@v3
amr:libopencore-amrnb,libopencore-amrwb@v3
appkit
bluray:libbluray
bs2b:libbs2b
bzip2:bzlib
cdio:libcdio
chromaprint
codec2:libcodec2
cuda:cuda-llvm
+dav1d:libdav1d
${FFMPEG_UNSLOTTED:+doc:^htmlpages}
+drm:libdrm
dvd:libdvdnav,libdvdread
fdk:libfdk-aac@nonfree
flite:libflite
+fontconfig:libfontconfig
frei0r
fribidi:libfribidi
gcrypt
gme:libgme
gmp:@v3
+gnutls # unused if USE=openssl, default for bug #905113,#917627
+gpl
gsm:libgsm
iec61883:libiec61883
ieee1394:libdc1394
jack:libjack
jpeg2k:libopenjpeg
jpegxl:libjxl
kvazaar:libkvazaar
ladspa
lame:libmp3lame
lcms:lcms2
libaom
libaribb24:@v3 # reminder: req use on gpl unneeded if >=1.0.4 (not in tree)
+libass
libcaca
libilbc
liblc3
libplacebo
librtmp:librtmp
libsoxr
libtesseract
lv2
lzma
modplug:libmodplug
npp:^libnpp@nonfree # no multilib
nvenc:cuvid,ffnvcodec,nvdec,nvenc
openal
opencl
opengl
openh264:libopenh264
openmpt:libopenmpt
openssl:openssl,!gnutls@v3ifgpl # still LGPL2.1+ if USE=-gpl
opus:libopus
+postproc # exposed as a USE for clarity with the GPL requirement
pulseaudio:libpulse
qrcode:libqrencode
qsv:libvpl
quirc:libquirc
rabbitmq:^librabbitmq # no multilib
rav1e:^librav1e # no multilib
rubberband:librubberband
samba:libsmbclient@v3 # GPL-3+ only
sdl:sdl2
shaderc:libshaderc
snappy:libsnappy
sndio
speex:libspeex
srt:libsrt
ssh:libssh
svg:librsvg
svt-av1:libsvtav1
theora:libtheora
+truetype:libfreetype,libharfbuzz
twolame:libtwolame
v4l:libv4l2
vaapi
vdpau
vidstab:libvidstab
vmaf:libvmaf
vorbis:libvorbis
vpx:libvpx
vulkan
webp:libwebp
x264:libx264
x265:libx265
+xml:libxml2
xvid:libxvid
zeromq:^libzmq # no multilib
zimg:libzimg
+zlib
zvbi:libzvbi
)
# all-rights is used to express the GPL incompatibility (RESTRICT=bindist)
LICENSE="
gpl? (
GPL-2+
amr? ( GPL-3+ ) amrenc? ( GPL-3+ ) libaribb24? ( GPL-3+ )
gmp? ( GPL-3+ ) openssl? ( GPL-3+ )
fdk? ( all-rights-reserved ) npp? ( all-rights-reserved )
)
!gpl? (
LGPL-2.1+
amr? ( LGPL-3+ ) amrenc? ( LGPL-3+ ) libaribb24? ( LGPL-3+ )
gmp? ( LGPL-3+ )
)
samba? ( GPL-3+ )
"
[[ ${FFMPEG_UNSLOTTED} ]] && : 0 || : "$(ver_cut 1)"
SLOT="${_}/${FFMPEG_SUBSLOT}"
IUSE="
${FFMPEG_IUSE_MAP[*]%:*}
${FFMPEG_UNSLOTTED:+chromium}
${FFMPEG_SOC_PATCH:+soc}
"
REQUIRED_USE="
cuda? ( nvenc )
fribidi? ( truetype )
gmp? ( !librtmp )
libplacebo? ( vulkan )
npp? ( nvenc )
shaderc? ( vulkan )
libaribb24? ( gpl ) cdio? ( gpl ) dvd? ( gpl ) frei0r? ( gpl )
postproc? ( gpl ) rubberband? ( gpl ) samba? ( gpl )
vidstab? ( gpl ) x264? ( gpl ) x265? ( gpl ) xvid? ( gpl )
${FFMPEG_UNSLOTTED:+chromium? ( opus )}
${FFMPEG_SOC_PATCH:+soc? ( drm )}
"
RESTRICT="gpl? ( fdk? ( bindist ) npp? ( bindist ) )"
# dlopen: amdgpu-pro-amf, vulkan-loader
COMMON_DEPEND="
virtual/libiconv[${MULTILIB_USEDEP}]
X? (
x11-libs/libX11[${MULTILIB_USEDEP}]
x11-libs/libXext[${MULTILIB_USEDEP}]
x11-libs/libXv[${MULTILIB_USEDEP}]
x11-libs/libxcb:=[${MULTILIB_USEDEP}]
)
alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
amr? ( media-libs/opencore-amr[${MULTILIB_USEDEP}] )
amrenc? ( media-libs/vo-amrwbenc[${MULTILIB_USEDEP}] )
bluray? ( media-libs/libbluray:=[${MULTILIB_USEDEP}] )
bs2b? ( media-libs/libbs2b[${MULTILIB_USEDEP}] )
bzip2? ( app-arch/bzip2[${MULTILIB_USEDEP}] )
cdio? ( dev-libs/libcdio-paranoia:=[${MULTILIB_USEDEP}] )
chromaprint? ( media-libs/chromaprint:=[${MULTILIB_USEDEP}] )
codec2? ( media-libs/codec2:=[${MULTILIB_USEDEP}] )
dav1d? ( media-libs/dav1d:=[${MULTILIB_USEDEP}] )
dvd? (
media-libs/libdvdnav[${MULTILIB_USEDEP}]
media-libs/libdvdread:=[${MULTILIB_USEDEP}]
)
drm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
fdk? ( media-libs/fdk-aac:=[${MULTILIB_USEDEP}] )
flite? ( app-accessibility/flite[${MULTILIB_USEDEP}] )
fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] )
frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
fribidi? ( dev-libs/fribidi[${MULTILIB_USEDEP}] )
gcrypt? ( dev-libs/libgcrypt:=[${MULTILIB_USEDEP}] )
gme? ( media-libs/game-music-emu[${MULTILIB_USEDEP}] )
gmp? ( dev-libs/gmp:=[${MULTILIB_USEDEP}] )
gnutls? ( !openssl? (
net-libs/gnutls:=[${MULTILIB_USEDEP}]
) )
gsm? ( media-sound/gsm[${MULTILIB_USEDEP}] )
iec61883? (
media-libs/libiec61883[${MULTILIB_USEDEP}]
sys-libs/libavc1394[${MULTILIB_USEDEP}]
sys-libs/libraw1394[${MULTILIB_USEDEP}]
)
ieee1394? (
media-libs/libdc1394:2=[${MULTILIB_USEDEP}]
sys-libs/libraw1394[${MULTILIB_USEDEP}]
)
jack? ( virtual/jack[${MULTILIB_USEDEP}] )
jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] )
jpegxl? ( media-libs/libjxl:=[${MULTILIB_USEDEP}] )
kvazaar? ( media-libs/kvazaar:=[${MULTILIB_USEDEP}] )
lame? ( media-sound/lame[${MULTILIB_USEDEP}] )
lcms? ( media-libs/lcms:2[${MULTILIB_USEDEP}] )
libaom? ( media-libs/libaom:=[${MULTILIB_USEDEP}] )
libaribb24? ( media-libs/aribb24[${MULTILIB_USEDEP}] )
libass? ( media-libs/libass:=[${MULTILIB_USEDEP}] )
libcaca? ( media-libs/libcaca[${MULTILIB_USEDEP}] )
libilbc? ( media-libs/libilbc:=[${MULTILIB_USEDEP}] )
liblc3? ( >=media-sound/liblc3-1.1[${MULTILIB_USEDEP}] )
libplacebo? ( media-libs/libplacebo:=[vulkan,${MULTILIB_USEDEP}] )
librtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] )
libsoxr? ( media-libs/soxr[${MULTILIB_USEDEP}] )
libtesseract? ( app-text/tesseract:=[${MULTILIB_USEDEP}] )
lv2? (
media-libs/lilv[${MULTILIB_USEDEP}]
media-libs/lv2[${MULTILIB_USEDEP}]
)
lzma? ( app-arch/xz-utils[${MULTILIB_USEDEP}] )
modplug? ( media-libs/libmodplug[${MULTILIB_USEDEP}] )
npp? ( dev-util/nvidia-cuda-toolkit:= )
openal? ( media-libs/openal[${MULTILIB_USEDEP}] )
opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
openmpt? ( media-libs/libopenmpt[${MULTILIB_USEDEP}] )
openssl? ( >=dev-libs/openssl-3:=[${MULTILIB_USEDEP}] )
opus? ( media-libs/opus[${MULTILIB_USEDEP}] )
pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
qrcode? ( media-gfx/qrencode:=[${MULTILIB_USEDEP}] )
qsv? ( media-libs/libvpl:=[${MULTILIB_USEDEP}] )
quirc? ( media-libs/quirc:=[${MULTILIB_USEDEP}] )
rabbitmq? ( net-libs/rabbitmq-c:= )
rav1e? ( >=media-video/rav1e-0.5:=[capi] )
rubberband? ( media-libs/rubberband:=[${MULTILIB_USEDEP}] )
samba? ( net-fs/samba:=[client,${MULTILIB_USEDEP}] )
sdl? (
media-libs/libsdl2[sound(+),video(+),${MULTILIB_USEDEP}]
libplacebo? ( media-libs/libsdl2[vulkan] )
)
shaderc? ( media-libs/shaderc[${MULTILIB_USEDEP}] )
snappy? ( app-arch/snappy:=[${MULTILIB_USEDEP}] )
sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] )
speex? ( media-libs/speex[${MULTILIB_USEDEP}] )
srt? ( net-libs/srt:=[${MULTILIB_USEDEP}] )
ssh? ( net-libs/libssh:=[sftp,${MULTILIB_USEDEP}] )
svg? (
dev-libs/glib:2[${MULTILIB_USEDEP}]
>=gnome-base/librsvg-2.52:2[${MULTILIB_USEDEP}]
x11-libs/cairo[${MULTILIB_USEDEP}]
)
svt-av1? ( >=media-libs/svt-av1-0.9:=[${MULTILIB_USEDEP}] )
theora? ( media-libs/libtheora:=[encode,${MULTILIB_USEDEP}] )
truetype? (
media-libs/freetype:2[${MULTILIB_USEDEP}]
media-libs/harfbuzz:=[${MULTILIB_USEDEP}]
)
twolame? ( media-sound/twolame[${MULTILIB_USEDEP}] )
v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
vaapi? ( media-libs/libva:=[X?,${MULTILIB_USEDEP}] )
vdpau? (
x11-libs/libX11[${MULTILIB_USEDEP}]
x11-libs/libvdpau[${MULTILIB_USEDEP}]
)
vidstab? ( media-libs/vidstab[${MULTILIB_USEDEP}] )
vmaf? ( media-libs/libvmaf:=[${MULTILIB_USEDEP}] )
vorbis? ( media-libs/libvorbis[${MULTILIB_USEDEP}] )
vpx? ( media-libs/libvpx:=[${MULTILIB_USEDEP}] )
vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )
webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] )
x264? ( media-libs/x264:=[${MULTILIB_USEDEP}] )
x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
xml? ( dev-libs/libxml2:=[${MULTILIB_USEDEP}] )
xvid? ( media-libs/xvid[${MULTILIB_USEDEP}] )
zeromq? ( net-libs/zeromq:= )
zimg? ( media-libs/zimg[${MULTILIB_USEDEP}] )
zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
zvbi? ( media-libs/zvbi[${MULTILIB_USEDEP}] )
${FFMPEG_SOC_PATCH:+"
soc? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
"}
"
RDEPEND="
${COMMON_DEPEND}
amf? ( media-video/amdgpu-pro-amf )
"
DEPEND="
${COMMON_DEPEND}
X? ( x11-base/xorg-proto )
amf? ( media-libs/amf-headers )
kernel_linux? ( >=sys-kernel/linux-headers-6 )
ladspa? ( media-libs/ladspa-sdk )
nvenc? ( >=media-libs/nv-codec-headers-12.1.14.0 )
opencl? ( dev-util/opencl-headers )
vulkan? ( dev-util/vulkan-headers )
"
BDEPEND="
app-alternatives/awk
virtual/pkgconfig
amd64? (
|| (
dev-lang/nasm
dev-lang/yasm
)
)
cuda? ( llvm-core/clang:*[llvm_targets_NVPTX] )
${FFMPEG_UNSLOTTED:+"
dev-lang/perl
doc? ( sys-apps/texinfo )
"}
"
[[ ${PV} != 9999 ]] &&
BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-ffmpeg )"
DOCS=( CREDITS Changelog README.md doc/APIchanges )
[[ ${PV} != 9999 ]] && DOCS+=( RELEASE_NOTES )
MULTILIB_WRAPPED_HEADERS=(
/usr/include/libavutil/avconfig.h
)
PATCHES=(
"${WORKDIR}"/patches
)
pkg_pretend() {
# TODO: drop this after a few months
if has_version "${CATEGORY}/${PN}[mp3]" && use !lame; then #952971
ewarn "${PN}'s 'mp3' USE was renamed to 'lame', please enable it"
ewarn "if wish to keep the ability to encode using media-sound/lame."
ewarn "This is *not* needed if only want mp3 playback."
fi
}
pkg_setup() {
[[ ${MERGE_TYPE} != binary ]] || return
if use chromaprint && has_version 'media-libs/chromaprint[tools]'; then
ewarn "media-libs/chromaprint is installed with USE=tools which links to"
ewarn "ffmpeg, and USE=chromaprint is enabled on ffmpeg which links to"
ewarn "chromaprint (circular). This may cause issues when updating ffmpeg."
ewarn
ewarn "If get a build failure with 'ERROR: chromaprint not found' or so,"
ewarn "first rebuild chromaprint with USE=-tools, then rebuild ffmpeg, and"
ewarn "then finally rebuild chromaprint with USE=tools again (bug #862996)."
fi
[[ ${EXTRA_FFMPEG_CONF} ]] && # drop this eventually
die "EXTRA_FFMPEG_CONF is set in the environment, please use EXTRA_ECONF instead"
}
src_unpack() {
if [[ ${PV} == 9999 ]]; then
git-r3_src_unpack
else
use verify-sig &&
verify-sig_verify_detached "${DISTDIR}"/ffmpeg-${PV}.tar.xz{,.asc} \
"${BROOT}"/usr/share/openpgp-keys/ffmpeg.asc
default
fi
}
src_prepare() {
in_iuse chromium && PATCHES+=( "${FILESDIR}"/chromium-r3.patch )
in_iuse soc && use soc && PATCHES+=( "${DISTDIR}"/${FFMPEG_SOC_PATCH} )
default
# respect user preferences
sed -i '/cflags -fdiagnostics-color/d' configure || die
# handle here to avoid repeating for each ABI below (bug #923491)
FFMPEG_ENABLE_LTO=
if tc-is-lto; then
: "$(get-flag -flto)" # get -flto=<val> (e.g. =thin)
FFMPEG_ENABLE_LTO=--enable-lto${_#-flto}
fi
filter-lto
}
multilib_src_configure() {
if use npp && multilib_is_native_abi; then
local -x CPPFLAGS=${CPPFLAGS} LDFLAGS=${LDFLAGS}
append-cppflags $($(tc-getPKG_CONFIG) --cflags nppc || die)
append-ldflags $($(tc-getPKG_CONFIG) --libs-only-L nppc || die)
fi
local conf=( "${S}"/configure ) # not autotools-based
local prefix=${EPREFIX}/usr
if [[ ! ${FFMPEG_UNSLOTTED} ]]; then
prefix+=/lib/ffmpeg${SLOT%/*}
# could get SONAME clashes, so prefer rpath over LDPATH
conf+=(
--enable-rpath
--disable-doc
)
fi
conf+=(
--prefix="${prefix}"
--libdir="${prefix}"/$(get_libdir)
--shlibdir="${prefix}"/$(get_libdir)
--mandir="${prefix}"/share/man
--docdir="${EPREFIX}"/usr/share/doc/${PF}/html
--ar="$(tc-getAR)"
--cc="$(tc-getCC)"
--cxx="$(tc-getCXX)"
--nm="$(tc-getNM)"
--pkg-config="$(tc-getPKG_CONFIG)"
--ranlib="$(tc-getRANLIB)"
--disable-stripping
# overrides users' -g/-O, let *FLAGS handle these
--disable-debug
--disable-optimizations
--optflags=' '
# pass option over *FLAGS due to special logic (bug #566282,#754654)
${FFMPEG_ENABLE_LTO}
# basic defaults that should not really need a USE
--enable-iconv
--enable-pic
--enable-shared
--disable-static
$(multilib_native_enable manpages) # needs pod2man
--disable-podpages
--disable-txtpages
# disabled primarily due to being unpackaged
--disable-decklink
--disable-libaribcaption
--disable-libdavs2
--disable-libklvanc
--disable-liblcevc-dec
--disable-libmysofa
--disable-libopenvino
--disable-libshine
--disable-libtls
--disable-libuavs3d
--disable-libvvenc
--disable-libxavs
--disable-libxavs2
--disable-libxevd
--disable-libxeve
--disable-pocketsphinx
--disable-rkmpp
--disable-vapoursynth
# disabled for other or additional reasons
--disable-cuda-nvcc # prefer cuda-llvm for less issues
--disable-libcelt # obsolete (bug #664158)
--disable-libglslang # prefer USE=shaderc (bug #918989,#920283,#922333)
--disable-liblensfun # https://trac.ffmpeg.org/ticket/9112 (abandoned?)
--disable-libmfx # prefer libvpl for USE=qsv
--disable-libopencv # leaving for later due to circular opencv[ffmpeg]
--disable-librist # librist itself needs attention first (bug #822012)
--disable-libtensorflow # causes headaches, and is gone
--disable-libtorch # support may need special attention (bug #936127)
--disable-mbedtls # messy with slots, tests underlinking issues
--disable-mmal # prefer USE=soc
--disable-omx # unsupported (bug #653386)
--disable-omx-rpi # ^
# to avoid obscure issues like bug #915384 and simplify the ebuild,
# not passing the following (use EXTRA_ECONF if really must):
# --cpu: adds -march=<exact> after the user's more adapted
# =native, its logic also does not account for -mno-*
# --disable/enable-<cpufeature>: safer to detect at runtime
)
in_iuse soc && use soc &&
conf+=(
--disable-epoxy
--enable-libudev
--enable-sand
--enable-v4l2-request
)
# broken on x32 (bug #427004), and not PIC safe on x86 (bug #916067)
[[ ${ABI} == @(x32|x86) ]] && conf+=( --disable-asm )
# disable due to asm-related failures on ppc (bug #951464, ppc64be)
# https://trac.ffmpeg.org/ticket/9604 (ppc64el)
# https://trac.ffmpeg.org/ticket/10955 (ppc64el)
# (review re-enabling if resolved, or if debian allows it again)
use ppc || use ppc64 && conf+=( --disable-asm )
if tc-is-cross-compiler; then
conf+=(
--enable-cross-compile
--arch="$(tc-arch-kernel)"
--cross-prefix="${CHOST}-"
--host-cc="$(tc-getBUILD_CC)"
)
case ${CHOST} in
*mingw32*) conf+=( --target-os=mingw32 );;
*linux*) conf+=( --target-os=linux );;
esac
fi
# import options from FFMPEG_IUSE_MAP
local flag license mod v
local -A optmap=() licensemap=()
for v in "${FFMPEG_IUSE_MAP[@]}"; do
[[ ${v} =~ \+?([^:]+):?([^@]*)@?(.*) ]] || die "${v}"
flag=${BASH_REMATCH[1]}
license=${BASH_REMATCH[3]}
v=${BASH_REMATCH[2]:-${flag}}
for v in ${v//,/ }; do
mod=${v::1}
v=${v#[\!\^]}
if [[ ${mod} == '!' ]]; then
if use ${flag}; then
optmap[${v}]=--disable-${v}
unset licensemap[${v}]
fi
elif [[ ! -v optmap[${v}] ]]; then
if [[ ${mod} == '^' ]]; then
optmap[${v}]=$(multilib_native_use_enable ${flag} ${v})
else
optmap[${v}]=$(use_enable ${flag} ${v})
fi
use ${flag} && licensemap[${v}]=${license}
fi
done
done
for license in "${licensemap[@]}"; do
case ${license} in
v3ifgpl) use gpl || continue ;&
v3) optmap[v3]=--enable-version3 ;;
nonfree) use gpl && optmap[nonfree]=--enable-nonfree ;;
esac
done
conf+=(
"${optmap[@]}"
${EXTRA_ECONF}
)
einfo "${conf[*]}"
"${conf[@]}" || die "configure failed, see ${BUILD_DIR}/ffbuild/config.log"
}
multilib_src_compile() {
emake V=1
in_iuse chromium && use chromium && multilib_is_native_abi &&
emake V=1 libffmpeg
}
multilib_src_test() {
local -x LD_LIBRARY_PATH=$(printf %s: "${BUILD_DIR}"/lib*)${LD_LIBRARY_PATH}
emake V=1 -k fate
}
multilib_src_install() {
emake V=1 DESTDIR="${D}" install
in_iuse chromium && use chromium && multilib_is_native_abi &&
emake V=1 DESTDIR="${D}" install-libffmpeg
}

View File

@ -54,6 +54,7 @@
</flag>
<flag name="libaribb24">Enable ARIB text and caption decoding via <pkg>media-libs/aribb24</pkg></flag>
<flag name="libilbc">Enable internet Low Bitrate Codec de/encoding support via <pkg>media-libs/libilbc</pkg></flag>
<flag name="liblc3">Enable Low Complexity Communication Codec de/encoding support via <pkg>media-sound/liblc3</pkg></flag>
<flag name="libplacebo">Enable use of GPU-accelerated filters from <pkg>media-libs/libplacebo</pkg></flag>
<flag name="librtmp">
Enable Real Time Messaging Protocol support via <pkg>media-video/rtmpdump</pkg>
@ -77,7 +78,9 @@
Enable libpostproc video post processing library support
(should not disable this unless need to disable USE=gpl)
</flag>
<flag name="qrcode">Enable QR encode generation support via <pkg>media-gfx/qrencode</pkg></flag>
<flag name="qsv">Enable Intel Quick Sync Video support via <pkg>media-libs/libvpl</pkg></flag>
<flag name="quirc">Enable QR decoding support via <pkg>media-libs/quirc</pkg></flag>
<flag name="rabbitmq">Enable AMQP stream support via <pkg>net-libs/rabbitmq-c</pkg></flag>
<flag name="rav1e">Enable AV1 encoding support via <pkg>media-video/rav1e</pkg></flag>
<flag name="rubberband">Enable time-stretching and pitch-shifting audio filter support via <pkg>media-libs/rubberband</pkg></flag>

View File

@ -79,6 +79,7 @@ sys-apps/systemd bpf
# Leonardo Hernández Hernández <leohdz172@proton.me> (2024-07-07)
# media-libs/quirc and media-sound/liblc3 are not keyworded here
media-video/ffmpeg quirc liblc3
media-video/ffmpeg-compat quirc liblc3
# Sam James <sam@gentoo.org> (2024-07-03)
# kde-frameworks/kservice not keyworded here

View File

@ -4,6 +4,7 @@
# Ionen Wolkens <ionen@gentoo.org> (2025-05-25)
# media-sound/liblc3 is not stable here yet
media-video/ffmpeg liblc3
media-video/ffmpeg-compat liblc3
# Ionen Wolkens <ionen@gentoo.org> (2025-03-12)
# app-arch/snappy is not stable here yet