* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2016-02-01 8:41 Alexis Ballier
0 siblings, 0 replies; 22+ messages in thread
From: Alexis Ballier @ 2016-02-01 8:41 UTC (permalink / raw
To: gentoo-commits
commit: 6579f4d4137f8e8c07634013bd8a7172c961c383
Author: Alexis Ballier <aballier <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 1 08:41:10 2016 +0000
Commit: Alexis Ballier <aballier <AT> gentoo <DOT> org>
CommitDate: Mon Feb 1 08:41:10 2016 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6579f4d4
media-video/ffmpeg: remove old
Package-Manager: portage-2.2.27
Signed-off-by: Alexis Ballier <aballier <AT> gentoo.org>
media-video/ffmpeg/Manifest | 5 -
media-video/ffmpeg/ffmpeg-2.7.2.ebuild | 450 -------------------------------
media-video/ffmpeg/ffmpeg-2.8.1.ebuild | 455 -------------------------------
media-video/ffmpeg/ffmpeg-2.8.2.ebuild | 456 -------------------------------
media-video/ffmpeg/ffmpeg-2.8.3.ebuild | 456 -------------------------------
media-video/ffmpeg/ffmpeg-2.8.4.ebuild | 458 --------------------------------
media-video/ffmpeg/files/libvpx15.patch | 36 ---
7 files changed, 2316 deletions(-)
diff --git a/media-video/ffmpeg/Manifest b/media-video/ffmpeg/Manifest
index af74a2e..d9f6b10 100644
--- a/media-video/ffmpeg/Manifest
+++ b/media-video/ffmpeg/Manifest
@@ -1,9 +1,4 @@
DIST ffmpeg-2.6.3.tar.bz2 7803314 SHA256 59eb98c1b5896ac29abc0385f7c875d1b4942d695818818d418ee71eea1e0cfb SHA512 0998fa0cc2711b556fc28ce498e986f8f0b3ba7a30394c6b6cd494a542917eafb3d4d758f75e33fb39db4a631eca40515aa36c8b278fa3ffc9be006995d31029 WHIRLPOOL bfd074cf0b7a315d42c3559f4edeb46fc693918c9958e8e8b19d08f2e8c2765cf26f0ca9007d34a5dd07b69775cf06ab517c2a56926c46ade8bb7a782f492512
DIST ffmpeg-2.6.4.tar.bz2 7811925 SHA256 184f49e6b359426c398ad6c67d89abd362558373a43d3d92f86e554571655a5d SHA512 76c8bb3b23f2d2bac73b1561ef31bb3d1da49b2e182d84a13bf0bf49ea84cd0d64566c9dfafc4ac9d660aa4cecc0f08272b9ee284d1d09776e4599b87920c308 WHIRLPOOL 2d68715fb284979d703905919289c897c5cb002c3d466aca6c9759ca9f93443b749a24747cf218d005d728680ad137990880ec99210b6fb49038587966dd79f4
-DIST ffmpeg-2.7.2.tar.bz2 8157217 SHA256 7ceb7550ad628c526fa6c9ff23fdfb687a62f54d90c4a730998d8c2b417b9ef2 SHA512 cce58c63ae14dcbd3bdc4758af8427e18ac589f8bd4f2701e54b5e0e61669d5aab212e5829feb67a0fd33bc52b2d64adff93729c0696c44a0f6064a0752433dd WHIRLPOOL dd286393427b89be266ad2b122138dab578843d16bdf9b989b9546734f489c8c5c3d1ab0443ff5039b440a8430802ffe24f0fc38553688ec80984a1cce2ba2a3
-DIST ffmpeg-2.8.1.tar.bz2 8564488 SHA256 e2ed5ab28dee1af94336739173eb0019afc21a54e38a96f4e3208e94a07866e2 SHA512 5c493f1eb84dd916f12a709a77ca0317a03ce88caaa1ee5e06b4e03c60ef4520ba58c8972841de25dcadb0da42e88592e6a87c3aca18dba62e246256c33fcf91 WHIRLPOOL f0f26375960dff80055fe257b63f11a1cc598bef9450d0da4a619bfc61ba6df185ea0dcf9c566810c7917159bb193d30a1009051c5b32ea1d746b289c782b8aa
-DIST ffmpeg-2.8.2.tar.bz2 8573586 SHA256 830ec647f7ad774fc0caf17ba47774bf5dee7a89cbd65894f364a87ba3ad21b2 SHA512 15c1c09d7d4bb8cc7babff4c782e4bf6621ed86d6b02bffb5468bdcd294a1144bf56a8a758d2801200bb89c26ce8f5a086d818affb473364424f94f701cbf749 WHIRLPOOL 83ae9a00cba7bc906672f55d796b044d3f4baad9a56804f6482e7c27b9f526d1364dfddaa22ef32b921e5dcd0158222897935544a34c1d1e7c3b9d681067d2e0
-DIST ffmpeg-2.8.3.tar.bz2 8576798 SHA256 1bcf993a71839bb4a37eaa0c51daf315932b6dad6089f672294545cc51a5caf6 SHA512 aadfab7db84b85cbfe44a5c7b47e447a1711c3d78fa195f30d3f6644e95842c8d484172e4c98f75cbae5d3783f4dd2972a892123d9a9ff90be32db20b0dc8aa6 WHIRLPOOL c004fe02f300772b439ae070538d4ef4c5c514dd8a080de8e1a560597e79607b709319072f6120c35722481bc11f30077cc74a64800e390a7c5fabe82ded1718
-DIST ffmpeg-2.8.4.tar.bz2 8579383 SHA256 83cc8136a7845546062a43cda9ae3cf0a02f43ef5e434d2f997f055231a75f8e SHA512 37f88c05fd0b8d1c4de83f5330f756cddd157ba78487d78436899d46a49a4e420eb086d263dd77c6c31a61c91f7839f40b07ed87817d686498b90caf9d870aa5 WHIRLPOOL 7e1a85a0eb00f33aad4d18b6a8d4d76c78aa0654c4ce10a864996239950fadd4a4995c481cd0e95a6f669c566cacd3da9ada4c66bb0fba011d4d942c8679eb99
DIST ffmpeg-2.8.5.tar.bz2 8580755 SHA256 3b6d9951533323ee64a21d0aa7667a780b3470bfe4e0fb7c1b33307ce290615a SHA512 2a46bef5ac99d114be7d3ece561ae71d09b87eaecba5da3c02ff1fe7e5cf4913e1b6feecca405540d1d70f9126591c209055edd7df1ad1d8bbf02f107701929e WHIRLPOOL 59ef96e7536a098ccf42526f64173df750558d489afb641c49168e2fc45672b160519d8a9e9e3093e1fd02a1af8ca1936de7f29c316685ac25946636890c760e
DIST ffmpeg-2.8.6.tar.bz2 8582420 SHA256 40611e329bc354592c6f8f1deb033c31b91f80e91f5707ca4f9afceca78d8e62 SHA512 68fb41884b95953025b9c56496b17e13062196800ff9834dac43a12e9a0048d4a763f50a2256418c91cc850b63713e1debbf9170737f29621f48946adef152dc WHIRLPOOL 20a4b12b5a03f187b753cca43c65bd75b49cc21c9ffabad31b8ac0ab47fc8e017931ad5076b701c303bb594b20acb403d3ec2dabdf647fd262c070c8dabf1eea
diff --git a/media-video/ffmpeg/ffmpeg-2.7.2.ebuild b/media-video/ffmpeg/ffmpeg-2.7.2.ebuild
deleted file mode 100644
index 83094e5..0000000
--- a/media-video/ffmpeg/ffmpeg-2.7.2.ebuild
+++ /dev/null
@@ -1,450 +0,0 @@
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI="5"
-
-# 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=54.56.56
-
-SCM=""
-if [ "${PV#9999}" != "${PV}" ] ; then
- SCM="git-2"
- EGIT_REPO_URI="git://source.ffmpeg.org/ffmpeg.git"
-fi
-
-inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
-
-DESCRIPTION="Complete solution to record, convert and stream audio and video. Includes libavcodec"
-HOMEPAGE="http://ffmpeg.org/"
-if [ "${PV#9999}" != "${PV}" ] ; then
- SRC_URI=""
-elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
- SRC_URI="mirror://gentoo/${P}.tar.bz2"
-else # Release
- SRC_URI="http://ffmpeg.org/releases/${P/_/-}.tar.bz2"
-fi
-FFMPEG_REVISION="${PV#*_p}"
-
-SLOT="0/${FFMPEG_SUBSLOT}"
-LICENSE="
- !gpl? ( LGPL-2.1 )
- gpl? ( GPL-2 )
- amr? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- encode? (
- aac? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- amrenc? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- )
- samba? ( GPL-3 )
-"
-if [ "${PV#9999}" = "${PV}" ] ; then
- KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux"
-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 doc gnutls +gpl
- +hardcoded-tables +iconv lzma +network openssl +postproc
- samba:libsmbclient sdl:ffplay vaapi vdpau X:xlib xcb:libxcb
- xcb:libxcb-shm xcb:libxcb-xfixes +zlib
- # libavdevice options
- cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal
- opengl
- # indevs
- libv4l:libv4l2 pulseaudio:libpulse
- # decoders
- amr:libopencore-amrwb amr:libopencore-amrnb fdk:libfdk-aac
- jpeg2k:libopenjpeg bluray:libbluray celt:libcelt gme:libgme gsm:libgsm
- modplug:libmodplug opus:libopus quvi:libquvi librtmp ssh:libssh
- schroedinger:libschroedinger speex:libspeex vorbis:libvorbis vpx:libvpx
- zvbi:libzvbi
- # libavfilter options
- bs2b:libbs2b flite:libflite frei0r fribidi:libfribidi fontconfig ladspa
- libass truetype:libfreetype
- # 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=(
- aac:libvo-aacenc amrenc:libvo-amrwbenc mp3:libmp3lame
- aacplus:libaacplus faac:libfaac theora:libtheora twolame:libtwolame
- wavpack:libwavpack webp:libwebp x264:libx264 x265:libx265 xvid:libxvid
-)
-
-IUSE="
- alsa +encode examples jack oss pic 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=( armv5te armv6 armv6t2 neon armvfp:vfp )
-MIPS_CPU_FEATURES=( mipsdspr1 mipsdspr2 mipsfpu )
-PPC_CPU_FEATURES=( altivec )
-X86_CPU_FEATURES_RAW=( 3dnow:amd3dnow 3dnowext:amd3dnowext 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_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 )
-"
-
-IUSE="${IUSE}
- ${ARM_CPU_FEATURES[@]%:*}
- ${MIPS_CPU_FEATURES[@]%:*}
- ${PPC_CPU_FEATURES[@]%:*}
- ${X86_CPU_FEATURES[@]%:*}
-"
-
-CPU_REQUIRED_USE="
- ${X86_CPU_REQUIRED_USE}
-"
-
-# "$(tc-arch):XXX" form where XXX_CPU_FEATURES are the cpu features that apply to
-# $(tc-arch).
-CPU_FEATURES_MAP="
- arm:ARM
- arm64:ARM
- mips:MIPS
- ppc:PPC
- ppc64:PPC
- x86:X86
- amd64:X86
-"
-
-FFTOOLS=( aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt graph2dot ismindex pktdumper qt-faststart trasher )
-IUSE="${IUSE} ${FFTOOLS[@]/#/+fftools_}"
-
-RDEPEND="
- alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
- 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}] )
- celt? ( >=media-libs/celt-0.11.1-r1[${MULTILIB_USEDEP}] )
- encode? (
- aac? ( >=media-libs/vo-aacenc-0.1.3[${MULTILIB_USEDEP}] )
- aacplus? ( >=media-libs/libaacplus-2.0.2-r1[${MULTILIB_USEDEP}] )
- amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
- faac? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
- mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- )
- twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
- wavpack? ( >=media-sound/wavpack-4.60.1-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 )
- fribidi? ( >=dev-libs/fribidi-0.19.6[${MULTILIB_USEDEP}] )
- gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
- gnutls? ( >=net-libs/gnutls-2.12.23-r6[${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[${MULTILIB_USEDEP}]
- >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
- )
- jack? ( >=media-sound/jack-audio-connection-kit-0.121.3-r1[${MULTILIB_USEDEP}] )
- jpeg2k? ( >=media-libs/openjpeg-1.5.0:0[${MULTILIB_USEDEP}] )
- libass? ( >=media-libs/libass-0.10.2[${MULTILIB_USEDEP}] )
- libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
- libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
- libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
- lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
- modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
- openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
- opengl? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] )
- openssl? ( >=dev-libs/openssl-1.0.1h-r2[${MULTILIB_USEDEP}] )
- opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
- pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
- quvi? ( media-libs/libquvi:0.4[${MULTILIB_USEDEP}] )
- librtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
- samba? ( >=net-fs/samba-3.6.23-r1[${MULTILIB_USEDEP}] )
- schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
- sdl? ( >=media-libs/libsdl-1.2.15-r4[sound,video,${MULTILIB_USEDEP}] )
- speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
- ssh? ( >=net-libs/libssh-0.5.5[${MULTILIB_USEDEP}] )
- truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
- vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${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.2.0_pre20130625[${MULTILIB_USEDEP}] )
- X? (
- >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
- >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
- !xcb? ( >=x11-libs/libXfixes-5.0.1[${MULTILIB_USEDEP}] )
- >=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
- )
- xcb? ( >=x11-libs/libxcb-1.4[${MULTILIB_USEDEP}] )
- zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
- zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
- !media-video/qt-faststart
- postproc? ( !media-libs/libpostproc )
-"
-
-DEPEND="${RDEPEND}
- >=sys-devel/make-3.81
- doc? ( app-text/texi2html )
- fontconfig? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- gnutls? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- ieee1394? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- libv4l? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- cpu_flags_x86_mmx? ( >=dev-lang/yasm-1.2 )
- librtmp? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- schroedinger? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- test? ( net-misc/wget sys-devel/bc )
- truetype? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
-"
-
-RDEPEND="${RDEPEND}
- abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r3
- !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
-
-# Code requiring FFmpeg to be built under gpl license
-GPL_REQUIRED_USE="
- postproc? ( gpl )
- frei0r? ( gpl )
- cdio? ( gpl )
- samba? ( gpl )
- zvbi? ( gpl )
- encode? (
- x264? ( gpl )
- x265? ( gpl )
- xvid? ( gpl )
- X? ( !xcb? ( gpl ) )
- )
-"
-REQUIRED_USE="
- libv4l? ( v4l )
- fftools_cws2fws? ( zlib )
- test? ( encode )
- ${GPL_REQUIRED_USE}
- ${CPU_REQUIRED_USE}"
-RESTRICT="
- encode? ( faac? ( bindist ) aacplus? ( bindist ) )
- gpl? ( openssl? ( bindist ) fdk? ( bindist ) )
-"
-
-S=${WORKDIR}/${P/_/-}
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
- epatch_user
-}
-
-multilib_src_configure() {
- local myconf=( ${EXTRA_FFMPEG_CONF} )
-
- local ffuse=( "${FFMPEG_FLAG_MAP[@]}" )
- use openssl && use gpl && myconf+=( --enable-nonfree )
- use samba && myconf+=( --enable-version3 )
-
- # Encoders
- if use encode ; then
- ffuse+=( "${FFMPEG_ENCODER_FLAG_MAP[@]}" )
-
- # Licensing.
- if use aac || use amrenc ; then
- myconf+=( --enable-version3 )
- fi
- if use aacplus || use faac ; then
- myconf+=( --enable-nonfree )
- fi
- else
- myconf+=( --disable-encoders )
- fi
-
- # Indevs
- use v4l || myconf+=( --disable-indev=v4l2 --disable-outdev=v4l2 )
- for i in alsa oss jack ; do
- use ${i} || myconf+=( --disable-indev=${i} )
- done
- use xcb || ffuse+=( X:x11grab )
-
- # Outdevs
- for i in alsa oss sdl ; do
- use ${i} || myconf+=( --disable-outdev=${i} )
- done
-
- # Decoders
- use amr && myconf+=( --enable-version3 )
- use fdk && use gpl && myconf+=( --enable-nonfree )
-
- for i in "${ffuse[@]#+}" ; do
- myconf+=( $(use_enable ${i%:*} ${i#*:}) )
- done
-
- # (temporarily) disable non-multilib deps
- if ! multilib_is_native_abi; then
- for i in frei0r ; do
- myconf+=( --disable-${i} )
- done
- fi
-
- # CPU features
- for i in ${CPU_FEATURES_MAP} ; do
- if [ "$(tc-arch)" = "${i%:*}" ] ; then
- local var="${i#*:}_CPU_FEATURES[@]"
- for j in ${!var} ; do
- use ${j%:*} || myconf+=( --disable-${j#*:} )
- done
- fi
- 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) $(get-flag mtune) ; do
- [[ ${i} = native ]] && i="host" # bug #273421
- myconf+=( --cpu=${i} )
- break
- done
-
- # Mandatory configuration
- myconf=(
- --enable-avfilter
- --enable-avresample
- --disable-stripping
- "${myconf[@]}"
- )
-
- # cross compile support
- if tc-is-cross-compiler ; then
- myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- )
- case ${CHOST} in
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- mingw32*)
- myconf+=( --target-os=mingw32 )
- ;;
- *linux*)
- myconf+=( --target-os=linux )
- ;;
- esac
- fi
-
- set -- "${S}/configure" \
- --prefix="${EPREFIX}/usr" \
- --libdir="${EPREFIX}/usr/$(get_libdir)" \
- --shlibdir="${EPREFIX}/usr/$(get_libdir)" \
- --mandir="${EPREFIX}/usr/share/man" \
- --enable-shared \
- --cc="$(tc-getCC)" \
- --cxx="$(tc-getCXX)" \
- --ar="$(tc-getAR)" \
- --optflags=" " \
- $(use_enable static-libs static) \
- "${myconf[@]}"
- echo "${@}"
- "${@}" || die
-}
-
-multilib_src_compile() {
- emake V=1
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- emake V=1 tools/${i}
- fi
- done
- fi
-}
-
-multilib_src_install() {
- emake V=1 DESTDIR="${D}" install install-man
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- dobin tools/${i}
- fi
- done
- fi
-}
-
-multilib_src_install_all() {
- dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
- [ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
- use doc && dohtml -r doc/*
- if use examples ; then
- dodoc -r doc/examples
- docompress -x /usr/share/doc/${PF}/examples
- 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
-}
diff --git a/media-video/ffmpeg/ffmpeg-2.8.1.ebuild b/media-video/ffmpeg/ffmpeg-2.8.1.ebuild
deleted file mode 100644
index 6f3904f..0000000
--- a/media-video/ffmpeg/ffmpeg-2.8.1.ebuild
+++ /dev/null
@@ -1,455 +0,0 @@
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI="5"
-
-# 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=54.56.56
-
-SCM=""
-if [ "${PV#9999}" != "${PV}" ] ; then
- SCM="git-2"
- EGIT_REPO_URI="git://source.ffmpeg.org/ffmpeg.git"
-fi
-
-inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
-
-DESCRIPTION="Complete solution to record, convert and stream audio and video. Includes libavcodec"
-HOMEPAGE="http://ffmpeg.org/"
-if [ "${PV#9999}" != "${PV}" ] ; then
- SRC_URI=""
-elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
- SRC_URI="mirror://gentoo/${P}.tar.bz2"
-else # Release
- SRC_URI="http://ffmpeg.org/releases/${P/_/-}.tar.bz2"
-fi
-FFMPEG_REVISION="${PV#*_p}"
-
-SLOT="0/${FFMPEG_SUBSLOT}"
-LICENSE="
- !gpl? ( LGPL-2.1 )
- gpl? ( GPL-2 )
- amr? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- encode? (
- aac? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- amrenc? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- )
- samba? ( GPL-3 )
-"
-if [ "${PV#9999}" = "${PV}" ] ; then
- KEYWORDS="~alpha ~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux"
-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 doc gnutls +gpl
- +hardcoded-tables +iconv lzma +network openssl +postproc
- samba:libsmbclient sdl:ffplay vaapi vdpau X:xlib xcb:libxcb
- xcb:libxcb-shm xcb:libxcb-xfixes +zlib
- # libavdevice options
- cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal
- opengl
- # indevs
- libv4l:libv4l2 pulseaudio:libpulse
- # decoders
- amr:libopencore-amrwb amr:libopencore-amrnb fdk:libfdk-aac
- jpeg2k:libopenjpeg bluray:libbluray celt:libcelt gme:libgme gsm:libgsm
- modplug:libmodplug opus:libopus quvi:libquvi librtmp ssh:libssh
- schroedinger:libschroedinger speex:libspeex vorbis:libvorbis vpx:libvpx
- zvbi:libzvbi
- # libavfilter options
- bs2b:libbs2b flite:libflite frei0r fribidi:libfribidi fontconfig ladspa
- libass truetype:libfreetype
- # 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=(
- aac:libvo-aacenc amrenc:libvo-amrwbenc mp3:libmp3lame
- aacplus:libaacplus faac:libfaac snappy:libsnappy theora:libtheora
- twolame:libtwolame wavpack:libwavpack webp:libwebp x264:libx264 x265:libx265
- xvid:libxvid
-)
-
-IUSE="
- alsa +encode examples jack libressl oss pic 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=( armv5te armv6 armv6t2 neon armvfp:vfp )
-MIPS_CPU_FEATURES=( mipsdspr1 mipsdspr2 mipsfpu )
-PPC_CPU_FEATURES=( altivec )
-X86_CPU_FEATURES_RAW=( 3dnow:amd3dnow 3dnowext:amd3dnowext 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_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 )
-"
-
-IUSE="${IUSE}
- ${ARM_CPU_FEATURES[@]%:*}
- ${MIPS_CPU_FEATURES[@]%:*}
- ${PPC_CPU_FEATURES[@]%:*}
- ${X86_CPU_FEATURES[@]%:*}
-"
-
-CPU_REQUIRED_USE="
- ${X86_CPU_REQUIRED_USE}
-"
-
-# "$(tc-arch):XXX" form where XXX_CPU_FEATURES are the cpu features that apply to
-# $(tc-arch).
-CPU_FEATURES_MAP="
- arm:ARM
- arm64:ARM
- mips:MIPS
- ppc:PPC
- ppc64:PPC
- x86:X86
- amd64:X86
-"
-
-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}] )
- 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}] )
- celt? ( >=media-libs/celt-0.11.1-r1[${MULTILIB_USEDEP}] )
- encode? (
- aac? ( >=media-libs/vo-aacenc-0.1.3[${MULTILIB_USEDEP}] )
- aacplus? ( >=media-libs/libaacplus-2.0.2-r1[${MULTILIB_USEDEP}] )
- amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
- faac? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
- mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
- snappy? ( >=app-arch/snappy-1.1.2-r1[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- )
- twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
- wavpack? ( >=media-sound/wavpack-4.60.1-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 )
- fribidi? ( >=dev-libs/fribidi-0.19.6[${MULTILIB_USEDEP}] )
- gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
- gnutls? ( >=net-libs/gnutls-2.12.23-r6[${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[${MULTILIB_USEDEP}]
- >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
- )
- jack? ( >=media-sound/jack-audio-connection-kit-0.121.3-r1[${MULTILIB_USEDEP}] )
- jpeg2k? ( >=media-libs/openjpeg-1.5.0:0[${MULTILIB_USEDEP}] )
- libass? ( >=media-libs/libass-0.10.2[${MULTILIB_USEDEP}] )
- libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
- libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
- libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
- lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
- modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
- openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
- opengl? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] )
- openssl? (
- !libressl? ( >=dev-libs/openssl-1.0.1h-r2:0[${MULTILIB_USEDEP}] )
- libressl? ( dev-libs/libressl[${MULTILIB_USEDEP}] )
- )
- opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
- pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
- quvi? ( media-libs/libquvi:0.4[${MULTILIB_USEDEP}] )
- librtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
- samba? ( >=net-fs/samba-3.6.23-r1[${MULTILIB_USEDEP}] )
- schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
- sdl? ( >=media-libs/libsdl-1.2.15-r4[sound,video,${MULTILIB_USEDEP}] )
- speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
- ssh? ( >=net-libs/libssh-0.5.5[${MULTILIB_USEDEP}] )
- truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
- vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${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.2.0_pre20130625[${MULTILIB_USEDEP}] )
- X? (
- >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
- >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
- !xcb? ( >=x11-libs/libXfixes-5.0.1[${MULTILIB_USEDEP}] )
- >=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
- )
- xcb? ( >=x11-libs/libxcb-1.4[${MULTILIB_USEDEP}] )
- zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
- zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
- !media-video/qt-faststart
- postproc? ( !media-libs/libpostproc )
-"
-
-DEPEND="${RDEPEND}
- >=sys-devel/make-3.81
- doc? ( app-text/texi2html )
- fontconfig? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- gnutls? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- ieee1394? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- libv4l? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- cpu_flags_x86_mmx? ( >=dev-lang/yasm-1.2 )
- librtmp? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- schroedinger? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- test? ( net-misc/wget sys-devel/bc )
- truetype? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
-"
-
-RDEPEND="${RDEPEND}
- abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r3
- !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
-
-# Code requiring FFmpeg to be built under gpl license
-GPL_REQUIRED_USE="
- postproc? ( gpl )
- frei0r? ( gpl )
- cdio? ( gpl )
- samba? ( gpl )
- zvbi? ( gpl )
- encode? (
- x264? ( gpl )
- x265? ( gpl )
- xvid? ( gpl )
- X? ( !xcb? ( gpl ) )
- )
-"
-REQUIRED_USE="
- libv4l? ( v4l )
- fftools_cws2fws? ( zlib )
- test? ( encode )
- ${GPL_REQUIRED_USE}
- ${CPU_REQUIRED_USE}"
-RESTRICT="
- encode? ( faac? ( bindist ) aacplus? ( bindist ) )
- gpl? ( openssl? ( bindist ) fdk? ( bindist ) )
-"
-
-S=${WORKDIR}/${P/_/-}
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
- epatch_user
-}
-
-multilib_src_configure() {
- local myconf=( ${EXTRA_FFMPEG_CONF} )
-
- local ffuse=( "${FFMPEG_FLAG_MAP[@]}" )
- use openssl && use gpl && myconf+=( --enable-nonfree )
- use samba && myconf+=( --enable-version3 )
-
- # Encoders
- if use encode ; then
- ffuse+=( "${FFMPEG_ENCODER_FLAG_MAP[@]}" )
-
- # Licensing.
- if use aac || use amrenc ; then
- myconf+=( --enable-version3 )
- fi
- if use aacplus || use faac ; then
- myconf+=( --enable-nonfree )
- fi
- else
- myconf+=( --disable-encoders )
- fi
-
- # Indevs
- use v4l || myconf+=( --disable-indev=v4l2 --disable-outdev=v4l2 )
- for i in alsa oss jack ; do
- use ${i} || myconf+=( --disable-indev=${i} )
- done
- use xcb || ffuse+=( X:x11grab )
-
- # Outdevs
- for i in alsa oss sdl ; do
- use ${i} || myconf+=( --disable-outdev=${i} )
- done
-
- # Decoders
- use amr && myconf+=( --enable-version3 )
- use fdk && use gpl && myconf+=( --enable-nonfree )
-
- for i in "${ffuse[@]#+}" ; do
- myconf+=( $(use_enable ${i%:*} ${i#*:}) )
- done
-
- # (temporarily) disable non-multilib deps
- if ! multilib_is_native_abi; then
- for i in frei0r ; do
- myconf+=( --disable-${i} )
- done
- fi
-
- # CPU features
- for i in ${CPU_FEATURES_MAP} ; do
- if [ "$(tc-arch)" = "${i%:*}" ] ; then
- local var="${i#*:}_CPU_FEATURES[@]"
- for j in ${!var} ; do
- use ${j%:*} || myconf+=( --disable-${j#*:} )
- done
- fi
- 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) $(get-flag mtune) ; do
- [[ ${i} = native ]] && i="host" # bug #273421
- myconf+=( --cpu=${i} )
- break
- done
-
- # Mandatory configuration
- myconf=(
- --enable-avfilter
- --enable-avresample
- --disable-stripping
- "${myconf[@]}"
- )
-
- # cross compile support
- if tc-is-cross-compiler ; then
- myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- )
- case ${CHOST} in
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- mingw32*)
- myconf+=( --target-os=mingw32 )
- ;;
- *linux*)
- myconf+=( --target-os=linux )
- ;;
- esac
- fi
-
- set -- "${S}/configure" \
- --prefix="${EPREFIX}/usr" \
- --libdir="${EPREFIX}/usr/$(get_libdir)" \
- --shlibdir="${EPREFIX}/usr/$(get_libdir)" \
- --mandir="${EPREFIX}/usr/share/man" \
- --enable-shared \
- --cc="$(tc-getCC)" \
- --cxx="$(tc-getCXX)" \
- --ar="$(tc-getAR)" \
- --optflags=" " \
- $(use_enable static-libs static) \
- "${myconf[@]}"
- echo "${@}"
- "${@}" || die
-}
-
-multilib_src_compile() {
- emake V=1
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- emake V=1 tools/${i}
- fi
- done
- fi
-}
-
-multilib_src_install() {
- emake V=1 DESTDIR="${D}" install install-man
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- dobin tools/${i}
- fi
- done
- fi
-}
-
-multilib_src_install_all() {
- dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
- [ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
- use doc && dohtml -r doc/*
- if use examples ; then
- dodoc -r doc/examples
- docompress -x /usr/share/doc/${PF}/examples
- 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
-}
diff --git a/media-video/ffmpeg/ffmpeg-2.8.2.ebuild b/media-video/ffmpeg/ffmpeg-2.8.2.ebuild
deleted file mode 100644
index 2603f85..0000000
--- a/media-video/ffmpeg/ffmpeg-2.8.2.ebuild
+++ /dev/null
@@ -1,456 +0,0 @@
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI="5"
-
-# 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=54.56.56
-
-SCM=""
-if [ "${PV#9999}" != "${PV}" ] ; then
- SCM="git-2"
- EGIT_REPO_URI="git://source.ffmpeg.org/ffmpeg.git"
-fi
-
-inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
-
-DESCRIPTION="Complete solution to record, convert and stream audio and video. Includes libavcodec"
-HOMEPAGE="http://ffmpeg.org/"
-if [ "${PV#9999}" != "${PV}" ] ; then
- SRC_URI=""
-elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
- SRC_URI="mirror://gentoo/${P}.tar.bz2"
-else # Release
- SRC_URI="http://ffmpeg.org/releases/${P/_/-}.tar.bz2"
-fi
-FFMPEG_REVISION="${PV#*_p}"
-
-SLOT="0/${FFMPEG_SUBSLOT}"
-LICENSE="
- !gpl? ( LGPL-2.1 )
- gpl? ( GPL-2 )
- amr? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- encode? (
- aac? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- amrenc? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- )
- samba? ( GPL-3 )
-"
-if [ "${PV#9999}" = "${PV}" ] ; then
- KEYWORDS="~alpha ~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux"
-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 doc gnutls +gpl
- +hardcoded-tables +iconv lzma +network openssl +postproc
- samba:libsmbclient sdl:ffplay sdl vaapi vdpau X:xlib xcb:libxcb
- xcb:libxcb-shm xcb:libxcb-xfixes +zlib
- # libavdevice options
- cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal
- opengl
- # indevs
- libv4l:libv4l2 pulseaudio:libpulse
- # decoders
- amr:libopencore-amrwb amr:libopencore-amrnb fdk:libfdk-aac
- jpeg2k:libopenjpeg bluray:libbluray celt:libcelt gme:libgme gsm:libgsm
- modplug:libmodplug opus:libopus quvi:libquvi librtmp ssh:libssh
- schroedinger:libschroedinger speex:libspeex vorbis:libvorbis vpx:libvpx
- zvbi:libzvbi
- # libavfilter options
- bs2b:libbs2b flite:libflite frei0r fribidi:libfribidi fontconfig ladspa
- libass truetype:libfreetype
- # 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=(
- aac:libvo-aacenc amrenc:libvo-amrwbenc mp3:libmp3lame
- aacplus:libaacplus faac:libfaac snappy:libsnappy theora:libtheora
- twolame:libtwolame wavpack:libwavpack webp:libwebp x264:libx264 x265:libx265
- xvid:libxvid
-)
-
-IUSE="
- alsa +encode examples jack libressl oss pic 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=( armv5te armv6 armv6t2 neon armvfp:vfp )
-MIPS_CPU_FEATURES=( mipsdspr1 mipsdspr2 mipsfpu )
-PPC_CPU_FEATURES=( altivec )
-X86_CPU_FEATURES_RAW=( 3dnow:amd3dnow 3dnowext:amd3dnowext 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_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 )
-"
-
-IUSE="${IUSE}
- ${ARM_CPU_FEATURES[@]%:*}
- ${MIPS_CPU_FEATURES[@]%:*}
- ${PPC_CPU_FEATURES[@]%:*}
- ${X86_CPU_FEATURES[@]%:*}
-"
-
-CPU_REQUIRED_USE="
- ${X86_CPU_REQUIRED_USE}
-"
-
-# "$(tc-arch):XXX" form where XXX_CPU_FEATURES are the cpu features that apply to
-# $(tc-arch).
-CPU_FEATURES_MAP="
- arm:ARM
- arm64:ARM
- mips:MIPS
- ppc:PPC
- ppc64:PPC
- x86:X86
- amd64:X86
-"
-
-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}] )
- 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}] )
- celt? ( >=media-libs/celt-0.11.1-r1[${MULTILIB_USEDEP}] )
- encode? (
- aac? ( >=media-libs/vo-aacenc-0.1.3[${MULTILIB_USEDEP}] )
- aacplus? ( >=media-libs/libaacplus-2.0.2-r1[${MULTILIB_USEDEP}] )
- amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
- faac? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
- mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
- snappy? ( >=app-arch/snappy-1.1.2-r1[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- )
- twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
- wavpack? ( >=media-sound/wavpack-4.60.1-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 )
- fribidi? ( >=dev-libs/fribidi-0.19.6[${MULTILIB_USEDEP}] )
- gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
- gnutls? ( >=net-libs/gnutls-2.12.23-r6[${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[${MULTILIB_USEDEP}]
- >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
- )
- jack? ( >=media-sound/jack-audio-connection-kit-0.121.3-r1[${MULTILIB_USEDEP}] )
- jpeg2k? ( >=media-libs/openjpeg-1.5.0:0[${MULTILIB_USEDEP}] )
- libass? ( >=media-libs/libass-0.10.2[${MULTILIB_USEDEP}] )
- libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
- libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
- libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
- lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
- modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
- openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
- opengl? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] )
- openssl? (
- !libressl? ( >=dev-libs/openssl-1.0.1h-r2:0[${MULTILIB_USEDEP}] )
- libressl? ( dev-libs/libressl[${MULTILIB_USEDEP}] )
- )
- opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
- pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
- quvi? ( media-libs/libquvi:0.4[${MULTILIB_USEDEP}] )
- librtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
- samba? ( >=net-fs/samba-3.6.23-r1[${MULTILIB_USEDEP}] )
- schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
- sdl? ( >=media-libs/libsdl-1.2.15-r4[sound,video,${MULTILIB_USEDEP}] )
- speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
- ssh? ( >=net-libs/libssh-0.5.5[${MULTILIB_USEDEP}] )
- truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
- vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${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}] )
- X? (
- >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
- >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
- !xcb? ( >=x11-libs/libXfixes-5.0.1[${MULTILIB_USEDEP}] )
- >=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
- )
- xcb? ( >=x11-libs/libxcb-1.4[${MULTILIB_USEDEP}] )
- zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
- zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
- !media-video/qt-faststart
- postproc? ( !media-libs/libpostproc )
-"
-
-DEPEND="${RDEPEND}
- >=sys-devel/make-3.81
- doc? ( app-text/texi2html )
- fontconfig? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- gnutls? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- ieee1394? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- libv4l? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- cpu_flags_x86_mmx? ( >=dev-lang/yasm-1.2 )
- librtmp? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- schroedinger? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- test? ( net-misc/wget sys-devel/bc )
- truetype? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
-"
-
-RDEPEND="${RDEPEND}
- abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r3
- !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
-
-# Code requiring FFmpeg to be built under gpl license
-GPL_REQUIRED_USE="
- postproc? ( gpl )
- frei0r? ( gpl )
- cdio? ( gpl )
- samba? ( gpl )
- zvbi? ( gpl )
- encode? (
- x264? ( gpl )
- x265? ( gpl )
- xvid? ( gpl )
- X? ( !xcb? ( gpl ) )
- )
-"
-REQUIRED_USE="
- libv4l? ( v4l )
- fftools_cws2fws? ( zlib )
- test? ( encode )
- ${GPL_REQUIRED_USE}
- ${CPU_REQUIRED_USE}"
-RESTRICT="
- encode? ( faac? ( bindist ) aacplus? ( bindist ) )
- gpl? ( openssl? ( bindist ) fdk? ( bindist ) )
-"
-
-S=${WORKDIR}/${P/_/-}
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
- epatch "${FILESDIR}/libvpx15.patch"
- epatch_user
-}
-
-multilib_src_configure() {
- local myconf=( ${EXTRA_FFMPEG_CONF} )
-
- local ffuse=( "${FFMPEG_FLAG_MAP[@]}" )
- use openssl && use gpl && myconf+=( --enable-nonfree )
- use samba && myconf+=( --enable-version3 )
-
- # Encoders
- if use encode ; then
- ffuse+=( "${FFMPEG_ENCODER_FLAG_MAP[@]}" )
-
- # Licensing.
- if use aac || use amrenc ; then
- myconf+=( --enable-version3 )
- fi
- if use aacplus || use faac ; then
- myconf+=( --enable-nonfree )
- fi
- else
- myconf+=( --disable-encoders )
- fi
-
- # Indevs
- use v4l || myconf+=( --disable-indev=v4l2 --disable-outdev=v4l2 )
- for i in alsa oss jack ; do
- use ${i} || myconf+=( --disable-indev=${i} )
- done
- use xcb || ffuse+=( X:x11grab )
-
- # Outdevs
- for i in alsa oss sdl ; do
- use ${i} || myconf+=( --disable-outdev=${i} )
- done
-
- # Decoders
- use amr && myconf+=( --enable-version3 )
- use fdk && use gpl && myconf+=( --enable-nonfree )
-
- for i in "${ffuse[@]#+}" ; do
- myconf+=( $(use_enable ${i%:*} ${i#*:}) )
- done
-
- # (temporarily) disable non-multilib deps
- if ! multilib_is_native_abi; then
- for i in frei0r ; do
- myconf+=( --disable-${i} )
- done
- fi
-
- # CPU features
- for i in ${CPU_FEATURES_MAP} ; do
- if [ "$(tc-arch)" = "${i%:*}" ] ; then
- local var="${i#*:}_CPU_FEATURES[@]"
- for j in ${!var} ; do
- use ${j%:*} || myconf+=( --disable-${j#*:} )
- done
- fi
- 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) $(get-flag mtune) ; do
- [[ ${i} = native ]] && i="host" # bug #273421
- myconf+=( --cpu=${i} )
- break
- done
-
- # Mandatory configuration
- myconf=(
- --enable-avfilter
- --enable-avresample
- --disable-stripping
- "${myconf[@]}"
- )
-
- # cross compile support
- if tc-is-cross-compiler ; then
- myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- )
- case ${CHOST} in
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- mingw32*)
- myconf+=( --target-os=mingw32 )
- ;;
- *linux*)
- myconf+=( --target-os=linux )
- ;;
- esac
- fi
-
- set -- "${S}/configure" \
- --prefix="${EPREFIX}/usr" \
- --libdir="${EPREFIX}/usr/$(get_libdir)" \
- --shlibdir="${EPREFIX}/usr/$(get_libdir)" \
- --mandir="${EPREFIX}/usr/share/man" \
- --enable-shared \
- --cc="$(tc-getCC)" \
- --cxx="$(tc-getCXX)" \
- --ar="$(tc-getAR)" \
- --optflags=" " \
- $(use_enable static-libs static) \
- "${myconf[@]}"
- echo "${@}"
- "${@}" || die
-}
-
-multilib_src_compile() {
- emake V=1
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- emake V=1 tools/${i}
- fi
- done
- fi
-}
-
-multilib_src_install() {
- emake V=1 DESTDIR="${D}" install install-man
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- dobin tools/${i}
- fi
- done
- fi
-}
-
-multilib_src_install_all() {
- dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
- [ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
- use doc && dohtml -r doc/*
- if use examples ; then
- dodoc -r doc/examples
- docompress -x /usr/share/doc/${PF}/examples
- 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
-}
diff --git a/media-video/ffmpeg/ffmpeg-2.8.3.ebuild b/media-video/ffmpeg/ffmpeg-2.8.3.ebuild
deleted file mode 100644
index 2603f85..0000000
--- a/media-video/ffmpeg/ffmpeg-2.8.3.ebuild
+++ /dev/null
@@ -1,456 +0,0 @@
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI="5"
-
-# 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=54.56.56
-
-SCM=""
-if [ "${PV#9999}" != "${PV}" ] ; then
- SCM="git-2"
- EGIT_REPO_URI="git://source.ffmpeg.org/ffmpeg.git"
-fi
-
-inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
-
-DESCRIPTION="Complete solution to record, convert and stream audio and video. Includes libavcodec"
-HOMEPAGE="http://ffmpeg.org/"
-if [ "${PV#9999}" != "${PV}" ] ; then
- SRC_URI=""
-elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
- SRC_URI="mirror://gentoo/${P}.tar.bz2"
-else # Release
- SRC_URI="http://ffmpeg.org/releases/${P/_/-}.tar.bz2"
-fi
-FFMPEG_REVISION="${PV#*_p}"
-
-SLOT="0/${FFMPEG_SUBSLOT}"
-LICENSE="
- !gpl? ( LGPL-2.1 )
- gpl? ( GPL-2 )
- amr? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- encode? (
- aac? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- amrenc? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- )
- samba? ( GPL-3 )
-"
-if [ "${PV#9999}" = "${PV}" ] ; then
- KEYWORDS="~alpha ~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux"
-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 doc gnutls +gpl
- +hardcoded-tables +iconv lzma +network openssl +postproc
- samba:libsmbclient sdl:ffplay sdl vaapi vdpau X:xlib xcb:libxcb
- xcb:libxcb-shm xcb:libxcb-xfixes +zlib
- # libavdevice options
- cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal
- opengl
- # indevs
- libv4l:libv4l2 pulseaudio:libpulse
- # decoders
- amr:libopencore-amrwb amr:libopencore-amrnb fdk:libfdk-aac
- jpeg2k:libopenjpeg bluray:libbluray celt:libcelt gme:libgme gsm:libgsm
- modplug:libmodplug opus:libopus quvi:libquvi librtmp ssh:libssh
- schroedinger:libschroedinger speex:libspeex vorbis:libvorbis vpx:libvpx
- zvbi:libzvbi
- # libavfilter options
- bs2b:libbs2b flite:libflite frei0r fribidi:libfribidi fontconfig ladspa
- libass truetype:libfreetype
- # 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=(
- aac:libvo-aacenc amrenc:libvo-amrwbenc mp3:libmp3lame
- aacplus:libaacplus faac:libfaac snappy:libsnappy theora:libtheora
- twolame:libtwolame wavpack:libwavpack webp:libwebp x264:libx264 x265:libx265
- xvid:libxvid
-)
-
-IUSE="
- alsa +encode examples jack libressl oss pic 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=( armv5te armv6 armv6t2 neon armvfp:vfp )
-MIPS_CPU_FEATURES=( mipsdspr1 mipsdspr2 mipsfpu )
-PPC_CPU_FEATURES=( altivec )
-X86_CPU_FEATURES_RAW=( 3dnow:amd3dnow 3dnowext:amd3dnowext 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_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 )
-"
-
-IUSE="${IUSE}
- ${ARM_CPU_FEATURES[@]%:*}
- ${MIPS_CPU_FEATURES[@]%:*}
- ${PPC_CPU_FEATURES[@]%:*}
- ${X86_CPU_FEATURES[@]%:*}
-"
-
-CPU_REQUIRED_USE="
- ${X86_CPU_REQUIRED_USE}
-"
-
-# "$(tc-arch):XXX" form where XXX_CPU_FEATURES are the cpu features that apply to
-# $(tc-arch).
-CPU_FEATURES_MAP="
- arm:ARM
- arm64:ARM
- mips:MIPS
- ppc:PPC
- ppc64:PPC
- x86:X86
- amd64:X86
-"
-
-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}] )
- 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}] )
- celt? ( >=media-libs/celt-0.11.1-r1[${MULTILIB_USEDEP}] )
- encode? (
- aac? ( >=media-libs/vo-aacenc-0.1.3[${MULTILIB_USEDEP}] )
- aacplus? ( >=media-libs/libaacplus-2.0.2-r1[${MULTILIB_USEDEP}] )
- amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
- faac? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
- mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
- snappy? ( >=app-arch/snappy-1.1.2-r1[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- )
- twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
- wavpack? ( >=media-sound/wavpack-4.60.1-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 )
- fribidi? ( >=dev-libs/fribidi-0.19.6[${MULTILIB_USEDEP}] )
- gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
- gnutls? ( >=net-libs/gnutls-2.12.23-r6[${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[${MULTILIB_USEDEP}]
- >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
- )
- jack? ( >=media-sound/jack-audio-connection-kit-0.121.3-r1[${MULTILIB_USEDEP}] )
- jpeg2k? ( >=media-libs/openjpeg-1.5.0:0[${MULTILIB_USEDEP}] )
- libass? ( >=media-libs/libass-0.10.2[${MULTILIB_USEDEP}] )
- libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
- libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
- libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
- lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
- modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
- openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
- opengl? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] )
- openssl? (
- !libressl? ( >=dev-libs/openssl-1.0.1h-r2:0[${MULTILIB_USEDEP}] )
- libressl? ( dev-libs/libressl[${MULTILIB_USEDEP}] )
- )
- opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
- pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
- quvi? ( media-libs/libquvi:0.4[${MULTILIB_USEDEP}] )
- librtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
- samba? ( >=net-fs/samba-3.6.23-r1[${MULTILIB_USEDEP}] )
- schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
- sdl? ( >=media-libs/libsdl-1.2.15-r4[sound,video,${MULTILIB_USEDEP}] )
- speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
- ssh? ( >=net-libs/libssh-0.5.5[${MULTILIB_USEDEP}] )
- truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
- vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${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}] )
- X? (
- >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
- >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
- !xcb? ( >=x11-libs/libXfixes-5.0.1[${MULTILIB_USEDEP}] )
- >=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
- )
- xcb? ( >=x11-libs/libxcb-1.4[${MULTILIB_USEDEP}] )
- zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
- zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
- !media-video/qt-faststart
- postproc? ( !media-libs/libpostproc )
-"
-
-DEPEND="${RDEPEND}
- >=sys-devel/make-3.81
- doc? ( app-text/texi2html )
- fontconfig? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- gnutls? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- ieee1394? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- libv4l? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- cpu_flags_x86_mmx? ( >=dev-lang/yasm-1.2 )
- librtmp? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- schroedinger? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- test? ( net-misc/wget sys-devel/bc )
- truetype? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
-"
-
-RDEPEND="${RDEPEND}
- abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r3
- !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
-
-# Code requiring FFmpeg to be built under gpl license
-GPL_REQUIRED_USE="
- postproc? ( gpl )
- frei0r? ( gpl )
- cdio? ( gpl )
- samba? ( gpl )
- zvbi? ( gpl )
- encode? (
- x264? ( gpl )
- x265? ( gpl )
- xvid? ( gpl )
- X? ( !xcb? ( gpl ) )
- )
-"
-REQUIRED_USE="
- libv4l? ( v4l )
- fftools_cws2fws? ( zlib )
- test? ( encode )
- ${GPL_REQUIRED_USE}
- ${CPU_REQUIRED_USE}"
-RESTRICT="
- encode? ( faac? ( bindist ) aacplus? ( bindist ) )
- gpl? ( openssl? ( bindist ) fdk? ( bindist ) )
-"
-
-S=${WORKDIR}/${P/_/-}
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
- epatch "${FILESDIR}/libvpx15.patch"
- epatch_user
-}
-
-multilib_src_configure() {
- local myconf=( ${EXTRA_FFMPEG_CONF} )
-
- local ffuse=( "${FFMPEG_FLAG_MAP[@]}" )
- use openssl && use gpl && myconf+=( --enable-nonfree )
- use samba && myconf+=( --enable-version3 )
-
- # Encoders
- if use encode ; then
- ffuse+=( "${FFMPEG_ENCODER_FLAG_MAP[@]}" )
-
- # Licensing.
- if use aac || use amrenc ; then
- myconf+=( --enable-version3 )
- fi
- if use aacplus || use faac ; then
- myconf+=( --enable-nonfree )
- fi
- else
- myconf+=( --disable-encoders )
- fi
-
- # Indevs
- use v4l || myconf+=( --disable-indev=v4l2 --disable-outdev=v4l2 )
- for i in alsa oss jack ; do
- use ${i} || myconf+=( --disable-indev=${i} )
- done
- use xcb || ffuse+=( X:x11grab )
-
- # Outdevs
- for i in alsa oss sdl ; do
- use ${i} || myconf+=( --disable-outdev=${i} )
- done
-
- # Decoders
- use amr && myconf+=( --enable-version3 )
- use fdk && use gpl && myconf+=( --enable-nonfree )
-
- for i in "${ffuse[@]#+}" ; do
- myconf+=( $(use_enable ${i%:*} ${i#*:}) )
- done
-
- # (temporarily) disable non-multilib deps
- if ! multilib_is_native_abi; then
- for i in frei0r ; do
- myconf+=( --disable-${i} )
- done
- fi
-
- # CPU features
- for i in ${CPU_FEATURES_MAP} ; do
- if [ "$(tc-arch)" = "${i%:*}" ] ; then
- local var="${i#*:}_CPU_FEATURES[@]"
- for j in ${!var} ; do
- use ${j%:*} || myconf+=( --disable-${j#*:} )
- done
- fi
- 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) $(get-flag mtune) ; do
- [[ ${i} = native ]] && i="host" # bug #273421
- myconf+=( --cpu=${i} )
- break
- done
-
- # Mandatory configuration
- myconf=(
- --enable-avfilter
- --enable-avresample
- --disable-stripping
- "${myconf[@]}"
- )
-
- # cross compile support
- if tc-is-cross-compiler ; then
- myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- )
- case ${CHOST} in
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- mingw32*)
- myconf+=( --target-os=mingw32 )
- ;;
- *linux*)
- myconf+=( --target-os=linux )
- ;;
- esac
- fi
-
- set -- "${S}/configure" \
- --prefix="${EPREFIX}/usr" \
- --libdir="${EPREFIX}/usr/$(get_libdir)" \
- --shlibdir="${EPREFIX}/usr/$(get_libdir)" \
- --mandir="${EPREFIX}/usr/share/man" \
- --enable-shared \
- --cc="$(tc-getCC)" \
- --cxx="$(tc-getCXX)" \
- --ar="$(tc-getAR)" \
- --optflags=" " \
- $(use_enable static-libs static) \
- "${myconf[@]}"
- echo "${@}"
- "${@}" || die
-}
-
-multilib_src_compile() {
- emake V=1
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- emake V=1 tools/${i}
- fi
- done
- fi
-}
-
-multilib_src_install() {
- emake V=1 DESTDIR="${D}" install install-man
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- dobin tools/${i}
- fi
- done
- fi
-}
-
-multilib_src_install_all() {
- dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
- [ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
- use doc && dohtml -r doc/*
- if use examples ; then
- dodoc -r doc/examples
- docompress -x /usr/share/doc/${PF}/examples
- 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
-}
diff --git a/media-video/ffmpeg/ffmpeg-2.8.4.ebuild b/media-video/ffmpeg/ffmpeg-2.8.4.ebuild
deleted file mode 100644
index 83454bb..0000000
--- a/media-video/ffmpeg/ffmpeg-2.8.4.ebuild
+++ /dev/null
@@ -1,458 +0,0 @@
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI="5"
-
-# 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=54.56.56
-
-SCM=""
-if [ "${PV#9999}" != "${PV}" ] ; then
- SCM="git-2"
- EGIT_REPO_URI="git://source.ffmpeg.org/ffmpeg.git"
-fi
-
-inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
-
-DESCRIPTION="Complete solution to record, convert and stream audio and video. Includes libavcodec"
-HOMEPAGE="http://ffmpeg.org/"
-if [ "${PV#9999}" != "${PV}" ] ; then
- SRC_URI=""
-elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
- SRC_URI="mirror://gentoo/${P}.tar.bz2"
-else # Release
- SRC_URI="http://ffmpeg.org/releases/${P/_/-}.tar.bz2"
-fi
-FFMPEG_REVISION="${PV#*_p}"
-
-SLOT="0/${FFMPEG_SUBSLOT}"
-LICENSE="
- !gpl? ( LGPL-2.1 )
- gpl? ( GPL-2 )
- amr? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- encode? (
- aac? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- amrenc? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- )
- samba? ( GPL-3 )
-"
-if [ "${PV#9999}" = "${PV}" ] ; then
- KEYWORDS="~alpha ~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux"
-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 doc gnutls +gpl
- +hardcoded-tables +iconv lzma +network openssl +postproc
- samba:libsmbclient sdl:ffplay sdl vaapi vdpau X:xlib xcb:libxcb
- xcb:libxcb-shm xcb:libxcb-xfixes +zlib
- # libavdevice options
- cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal
- opengl
- # indevs
- libv4l:libv4l2 pulseaudio:libpulse
- # decoders
- amr:libopencore-amrwb amr:libopencore-amrnb fdk:libfdk-aac
- jpeg2k:libopenjpeg bluray:libbluray celt:libcelt gme:libgme gsm:libgsm
- modplug:libmodplug opus:libopus quvi:libquvi librtmp ssh:libssh
- schroedinger:libschroedinger speex:libspeex vorbis:libvorbis vpx:libvpx
- zvbi:libzvbi
- # libavfilter options
- bs2b:libbs2b flite:libflite frei0r fribidi:libfribidi fontconfig ladspa
- libass truetype:libfreetype
- # 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=(
- aac:libvo-aacenc amrenc:libvo-amrwbenc mp3:libmp3lame
- aacplus:libaacplus faac:libfaac snappy:libsnappy theora:libtheora
- twolame:libtwolame wavpack:libwavpack webp:libwebp x264:libx264 x265:libx265
- xvid:libxvid
-)
-
-IUSE="
- alsa +encode examples jack libressl oss pic 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=( armv5te armv6 armv6t2 neon armvfp:vfp )
-MIPS_CPU_FEATURES=( mipsdspr1 mipsdspr2 mipsfpu )
-PPC_CPU_FEATURES=( altivec )
-X86_CPU_FEATURES_RAW=( 3dnow:amd3dnow 3dnowext:amd3dnowext 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_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 )
-"
-
-IUSE="${IUSE}
- ${ARM_CPU_FEATURES[@]%:*}
- ${MIPS_CPU_FEATURES[@]%:*}
- ${PPC_CPU_FEATURES[@]%:*}
- ${X86_CPU_FEATURES[@]%:*}
-"
-
-CPU_REQUIRED_USE="
- ${X86_CPU_REQUIRED_USE}
-"
-
-# "$(tc-arch):XXX" form where XXX_CPU_FEATURES are the cpu features that apply to
-# $(tc-arch).
-CPU_FEATURES_MAP="
- arm:ARM
- arm64:ARM
- mips:MIPS
- ppc:PPC
- ppc64:PPC
- x86:X86
- amd64:X86
-"
-
-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}] )
- 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}] )
- celt? ( >=media-libs/celt-0.11.1-r1[${MULTILIB_USEDEP}] )
- encode? (
- aac? ( >=media-libs/vo-aacenc-0.1.3[${MULTILIB_USEDEP}] )
- aacplus? ( >=media-libs/libaacplus-2.0.2-r1[${MULTILIB_USEDEP}] )
- amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
- faac? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
- mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
- snappy? ( >=app-arch/snappy-1.1.2-r1[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- )
- twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
- wavpack? ( >=media-sound/wavpack-4.60.1-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 )
- fribidi? ( >=dev-libs/fribidi-0.19.6[${MULTILIB_USEDEP}] )
- gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
- gnutls? ( >=net-libs/gnutls-2.12.23-r6[${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[${MULTILIB_USEDEP}]
- >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
- )
- jack? ( >=media-sound/jack-audio-connection-kit-0.121.3-r1[${MULTILIB_USEDEP}] )
- jpeg2k? ( >=media-libs/openjpeg-1.5.0:0[${MULTILIB_USEDEP}] )
- libass? ( >=media-libs/libass-0.10.2[${MULTILIB_USEDEP}] )
- libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
- libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
- libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
- lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
- modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
- openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
- opengl? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] )
- openssl? (
- !libressl? ( >=dev-libs/openssl-1.0.1h-r2:0[${MULTILIB_USEDEP}] )
- libressl? ( dev-libs/libressl[${MULTILIB_USEDEP}] )
- )
- opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
- pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
- quvi? ( media-libs/libquvi:0.4[${MULTILIB_USEDEP}] )
- librtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
- samba? ( >=net-fs/samba-3.6.23-r1[${MULTILIB_USEDEP}] )
- schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
- sdl? ( >=media-libs/libsdl-1.2.15-r4[sound,video,${MULTILIB_USEDEP}] )
- speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
- ssh? ( >=net-libs/libssh-0.5.5[${MULTILIB_USEDEP}] )
- truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
- vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${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}] )
- X? (
- >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
- >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
- !xcb? ( >=x11-libs/libXfixes-5.0.1[${MULTILIB_USEDEP}] )
- >=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
- )
- xcb? ( >=x11-libs/libxcb-1.4[${MULTILIB_USEDEP}] )
- zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
- zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
- !media-video/qt-faststart
- postproc? ( !media-libs/libpostproc )
-"
-
-DEPEND="${RDEPEND}
- >=sys-devel/make-3.81
- doc? ( app-text/texi2html )
- fontconfig? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- gnutls? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- ieee1394? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- libv4l? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- cpu_flags_x86_mmx? ( >=dev-lang/yasm-1.2 )
- librtmp? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- schroedinger? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- test? ( net-misc/wget sys-devel/bc )
- truetype? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
-"
-
-RDEPEND="${RDEPEND}
- abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r3
- !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
-
-# Code requiring FFmpeg to be built under gpl license
-GPL_REQUIRED_USE="
- postproc? ( gpl )
- frei0r? ( gpl )
- cdio? ( gpl )
- samba? ( gpl )
- zvbi? ( gpl )
- encode? (
- x264? ( gpl )
- x265? ( gpl )
- xvid? ( gpl )
- X? ( !xcb? ( gpl ) )
- )
-"
-REQUIRED_USE="
- libv4l? ( v4l )
- fftools_cws2fws? ( zlib )
- test? ( encode )
- ${GPL_REQUIRED_USE}
- ${CPU_REQUIRED_USE}"
-RESTRICT="
- encode? ( faac? ( bindist ) aacplus? ( bindist ) )
- gpl? ( openssl? ( bindist ) fdk? ( bindist ) )
-"
-
-S=${WORKDIR}/${P/_/-}
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
- epatch_user
-}
-
-multilib_src_configure() {
- local myconf=( ${EXTRA_FFMPEG_CONF} )
-
- local ffuse=( "${FFMPEG_FLAG_MAP[@]}" )
- use openssl && use gpl && myconf+=( --enable-nonfree )
- use samba && myconf+=( --enable-version3 )
-
- # Encoders
- if use encode ; then
- ffuse+=( "${FFMPEG_ENCODER_FLAG_MAP[@]}" )
-
- # Licensing.
- if use aac || use amrenc ; then
- myconf+=( --enable-version3 )
- fi
- if use aacplus || use faac ; then
- myconf+=( --enable-nonfree )
- fi
- else
- myconf+=( --disable-encoders )
- fi
-
- # Indevs
- use v4l || myconf+=( --disable-indev=v4l2 --disable-outdev=v4l2 )
- for i in alsa oss jack ; do
- use ${i} || myconf+=( --disable-indev=${i} )
- done
- use xcb || ffuse+=( X:x11grab )
-
- # Outdevs
- for i in alsa oss sdl ; do
- use ${i} || myconf+=( --disable-outdev=${i} )
- done
-
- # Decoders
- use amr && myconf+=( --enable-version3 )
- use fdk && use gpl && myconf+=( --enable-nonfree )
-
- for i in "${ffuse[@]#+}" ; do
- myconf+=( $(use_enable ${i%:*} ${i#*:}) )
- done
-
- # (temporarily) disable non-multilib deps
- if ! multilib_is_native_abi; then
- for i in frei0r ; do
- myconf+=( --disable-${i} )
- done
- fi
-
- # CPU features
- for i in ${CPU_FEATURES_MAP} ; do
- if [ "$(tc-arch)" = "${i%:*}" ] ; then
- local var="${i#*:}_CPU_FEATURES[@]"
- for j in ${!var} ; do
- use ${j%:*} || myconf+=( --disable-${j#*:} )
- done
- fi
- 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) $(get-flag mtune) ; do
- [[ ${i} = native ]] && i="host" # bug #273421
- myconf+=( --cpu=${i} )
- break
- done
-
- # LTO support, bug #566282
- is-flagq "-flto*" && myconf+=( "--enable-lto" )
-
- # Mandatory configuration
- myconf=(
- --enable-avfilter
- --enable-avresample
- --disable-stripping
- "${myconf[@]}"
- )
-
- # cross compile support
- if tc-is-cross-compiler ; then
- myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- )
- case ${CHOST} in
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- mingw32*)
- myconf+=( --target-os=mingw32 )
- ;;
- *linux*)
- myconf+=( --target-os=linux )
- ;;
- esac
- fi
-
- set -- "${S}/configure" \
- --prefix="${EPREFIX}/usr" \
- --libdir="${EPREFIX}/usr/$(get_libdir)" \
- --shlibdir="${EPREFIX}/usr/$(get_libdir)" \
- --mandir="${EPREFIX}/usr/share/man" \
- --enable-shared \
- --cc="$(tc-getCC)" \
- --cxx="$(tc-getCXX)" \
- --ar="$(tc-getAR)" \
- --optflags="${CFLAGS}" \
- $(use_enable static-libs static) \
- "${myconf[@]}"
- echo "${@}"
- "${@}" || die
-}
-
-multilib_src_compile() {
- emake V=1
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- emake V=1 tools/${i}
- fi
- done
- fi
-}
-
-multilib_src_install() {
- emake V=1 DESTDIR="${D}" install install-man
-
- if multilib_is_native_abi; then
- for i in "${FFTOOLS[@]}" ; do
- if use fftools_${i} ; then
- dobin tools/${i}
- fi
- done
- fi
-}
-
-multilib_src_install_all() {
- dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
- [ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
- use doc && dohtml -r doc/*
- if use examples ; then
- dodoc -r doc/examples
- docompress -x /usr/share/doc/${PF}/examples
- 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
-}
diff --git a/media-video/ffmpeg/files/libvpx15.patch b/media-video/ffmpeg/files/libvpx15.patch
deleted file mode 100644
index ae3770c..0000000
--- a/media-video/ffmpeg/files/libvpx15.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-commit 6540fe04a3f9a11ba7084a49b3ee5fa2fc5b32ab
-Author: James Zern <jzern@google.com>
-Date: Mon Oct 19 22:44:11 2015 -0700
-
- libvpxenc: remove some unused ctrl id mappings
-
- VP8E_UPD_ENTROPY, VP8E_UPD_REFERENCE, VP8E_USE_REFERENCE were removed
- from libvpx and the remaining values were never used here
-
- Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
- Signed-off-by: James Zern <jzern@google.com>
-
-diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
-index 5f39783..992122c 100644
---- a/libavcodec/libvpxenc.c
-+++ b/libavcodec/libvpxenc.c
-@@ -104,19 +104,11 @@ typedef struct VP8EncoderContext {
-
- /** String mappings for enum vp8e_enc_control_id */
- static const char *const ctlidstr[] = {
-- [VP8E_UPD_ENTROPY] = "VP8E_UPD_ENTROPY",
-- [VP8E_UPD_REFERENCE] = "VP8E_UPD_REFERENCE",
-- [VP8E_USE_REFERENCE] = "VP8E_USE_REFERENCE",
-- [VP8E_SET_ROI_MAP] = "VP8E_SET_ROI_MAP",
-- [VP8E_SET_ACTIVEMAP] = "VP8E_SET_ACTIVEMAP",
-- [VP8E_SET_SCALEMODE] = "VP8E_SET_SCALEMODE",
- [VP8E_SET_CPUUSED] = "VP8E_SET_CPUUSED",
- [VP8E_SET_ENABLEAUTOALTREF] = "VP8E_SET_ENABLEAUTOALTREF",
- [VP8E_SET_NOISE_SENSITIVITY] = "VP8E_SET_NOISE_SENSITIVITY",
-- [VP8E_SET_SHARPNESS] = "VP8E_SET_SHARPNESS",
- [VP8E_SET_STATIC_THRESHOLD] = "VP8E_SET_STATIC_THRESHOLD",
- [VP8E_SET_TOKEN_PARTITIONS] = "VP8E_SET_TOKEN_PARTITIONS",
-- [VP8E_GET_LAST_QUANTIZER] = "VP8E_GET_LAST_QUANTIZER",
- [VP8E_SET_ARNR_MAXFRAMES] = "VP8E_SET_ARNR_MAXFRAMES",
- [VP8E_SET_ARNR_STRENGTH] = "VP8E_SET_ARNR_STRENGTH",
- [VP8E_SET_ARNR_TYPE] = "VP8E_SET_ARNR_TYPE",
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2016-10-24 10:35 Alexis Ballier
0 siblings, 0 replies; 22+ messages in thread
From: Alexis Ballier @ 2016-10-24 10:35 UTC (permalink / raw
To: gentoo-commits
commit: dac021a62b73db62122c2883b09cb942e3d35bad
Author: Alexis Ballier <aballier <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 24 10:24:44 2016 +0000
Commit: Alexis Ballier <aballier <AT> gentoo <DOT> org>
CommitDate: Mon Oct 24 10:35:37 2016 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dac021a6
media-video/ffmpeg: bump to 3.1.5
Package-Manager: portage-2.3.2
media-video/ffmpeg/Manifest | 2 +-
.../{ffmpeg-3.1.4.ebuild => ffmpeg-3.1.5.ebuild} | 1 -
media-video/ffmpeg/files/openjpeg2.patch | 39 ----------------------
3 files changed, 1 insertion(+), 41 deletions(-)
diff --git a/media-video/ffmpeg/Manifest b/media-video/ffmpeg/Manifest
index 1d23526..db75107 100644
--- a/media-video/ffmpeg/Manifest
+++ b/media-video/ffmpeg/Manifest
@@ -1,4 +1,4 @@
DIST ffmpeg-2.8.6.tar.bz2 8582420 SHA256 40611e329bc354592c6f8f1deb033c31b91f80e91f5707ca4f9afceca78d8e62 SHA512 68fb41884b95953025b9c56496b17e13062196800ff9834dac43a12e9a0048d4a763f50a2256418c91cc850b63713e1debbf9170737f29621f48946adef152dc WHIRLPOOL 20a4b12b5a03f187b753cca43c65bd75b49cc21c9ffabad31b8ac0ab47fc8e017931ad5076b701c303bb594b20acb403d3ec2dabdf647fd262c070c8dabf1eea
DIST ffmpeg-2.8.7.tar.bz2 8581128 SHA256 8777ce4a335640fdd13680ba423ef6da330ff5071bfbe27cdbb452379167efe5 SHA512 26c7e50b76c89c606f4a3894c7c42bf1dc70b1778df879ba66723b0b29bfb7a206004bd3e9da29a27f57cf870ce395eb8b7ff1d53d7ba7b3c620d956b1c4cb06 WHIRLPOOL 361a3ef9c664b3b5f489b871071a1ce581cfef089a6a1014988e6c7463d45533d3a8af9b3e49ddb7e2257cef06205771d8e584a090d65e3c645421e963346a35
DIST ffmpeg-2.8.8.tar.bz2 8583641 SHA256 b70848958feadca180315d17b1131a1b519527971590e6ee8363a4c568ed06a6 SHA512 26fc2f9da8b0c62fb3147632476d328dff096f07efc83112dd3cf3a1da6b42edab053ef8f05d2035c5f824d9336020b3b4a99501243f83ec66255f082278bfb3 WHIRLPOOL 9ba67f08dcfbed0c3519767d9fea35f24a3652290ad095d01d928cf9f54e9e99afa410889c6afb84f22cd9882b5a7d44f304d602b41510973962517228f5f32f
-DIST ffmpeg-3.1.4.tar.bz2 9334429 SHA256 7c99df75a4dc12d22c0f1ed11d0acf98cac1f8b5fe7a7434344b167f810bcbfa SHA512 5ec8c525dcea153316ab5fb84337d29f920d81a3c3ca0f0cd10fcb60482e7e08bc9d9e73d7ea5d5dac32838ac45fed47fb41d1e73551e654ce55cc04071ec18e WHIRLPOOL fc752ec261411c38003970199d98b0dc61eb380b83156754d3fc8246113d0431c35079e954a9b4bdf93c6bd39a97b0f20c921397ab0ff510ca9d3d0473316615
+DIST ffmpeg-3.1.5.tar.bz2 9334190 SHA256 2400882a2c7795c74f0abebc28d267f2796510fb69ba324b0e9f16cc8dbb0d2b SHA512 9d22d48318cf6d44ce3a4d2ee57fa51d04c685a1c72e9668f5ad4443d246a33108f66f1dc9106e1c4db52b6c2c267b6682b9b7c3d267e4c37e4460f4169b97d1 WHIRLPOOL fda0698359383dda01ba8b96e3004d64fb8c32534771c6eb21d1daeca32596d2a2de566eb991170a259de31b5f029fb1a6d99ab8f100bf464058a71ee6438a42
diff --git a/media-video/ffmpeg/ffmpeg-3.1.4.ebuild b/media-video/ffmpeg/ffmpeg-3.1.5.ebuild
similarity index 99%
rename from media-video/ffmpeg/ffmpeg-3.1.4.ebuild
rename to media-video/ffmpeg/ffmpeg-3.1.5.ebuild
index a3950c4..e15449a 100644
--- a/media-video/ffmpeg/ffmpeg-3.1.4.ebuild
+++ b/media-video/ffmpeg/ffmpeg-3.1.5.ebuild
@@ -294,7 +294,6 @@ src_prepare() {
if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
export revision=git-N-${FFMPEG_REVISION}
fi
- epatch "${FILESDIR}/openjpeg2.patch" #595318
default
}
diff --git a/media-video/ffmpeg/files/openjpeg2.patch b/media-video/ffmpeg/files/openjpeg2.patch
deleted file mode 100644
index e203e61..00000000
--- a/media-video/ffmpeg/files/openjpeg2.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-https://bugs.gentoo.org/show_bug.cgi?id=595318
-https://trac.ffmpeg.org/ticket/5694
-
-diff -rupN ffmpeg-3.1.1/configure ffmpeg-3.1.1-new/configure
---- ffmpeg-3.1.1/configure 2016-06-27 01:54:28.000000000 +0200
-+++ ffmpeg-3.1.1-new/configure 2016-07-27 22:25:36.585141648 +0200
-@@ -5669,7 +5669,7 @@ enabled libopencv && { check_hea
- require opencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
- require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader; }
- enabled libopenh264 && require_pkg_config openh264 wels/codec_api.h WelsGetCodecVersion
--enabled libopenjpeg && { check_lib openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC ||
-+enabled libopenjpeg && { check_lib openjpeg-2.1/openjpeg.h opj_version -lopenjp2 ||
- check_lib openjpeg-2.0/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC ||
- check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC ||
- check_lib openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC ||
-diff -rupN ffmpeg-3.1.1/libavcodec/libopenjpegdec.c ffmpeg-3.1.1-new/libavcodec/libopenjpegdec.c
---- ffmpeg-3.1.1/libavcodec/libopenjpegdec.c 2016-06-27 01:54:29.000000000 +0200
-+++ ffmpeg-3.1.1-new/libavcodec/libopenjpegdec.c 2016-07-27 22:25:45.509327071 +0200
-@@ -24,8 +24,6 @@
- * JPEG 2000 decoder using libopenjpeg
- */
-
--#define OPJ_STATIC
--
- #include "libavutil/common.h"
- #include "libavutil/imgutils.h"
- #include "libavutil/intreadwrite.h"
-diff -rupN ffmpeg-3.1.1/libavcodec/libopenjpegenc.c ffmpeg-3.1.1-new/libavcodec/libopenjpegenc.c
---- ffmpeg-3.1.1/libavcodec/libopenjpegenc.c 2016-06-27 01:54:29.000000000 +0200
-+++ ffmpeg-3.1.1-new/libavcodec/libopenjpegenc.c 2016-07-27 22:25:40.298218807 +0200
-@@ -24,8 +24,6 @@
- * JPEG 2000 encoder using libopenjpeg
- */
-
--#define OPJ_STATIC
--
- #include "libavutil/avassert.h"
- #include "libavutil/common.h"
- #include "libavutil/imgutils.h"
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2017-08-27 6:33 Alexis Ballier
0 siblings, 0 replies; 22+ messages in thread
From: Alexis Ballier @ 2017-08-27 6:33 UTC (permalink / raw
To: gentoo-commits
commit: e63a1ba6346da70d5a896393f0c28cef6a6fd868
Author: James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 24 21:53:18 2017 +0000
Commit: Alexis Ballier <aballier <AT> gentoo <DOT> org>
CommitDate: Sun Aug 27 06:33:37 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e63a1ba6
media-video/ffmpeg: Allow building libffmpeg for Chromium via USE flag
Chromium is built from source and therefore can be built against the
system ffmpeg. Google Chrome already ships with support for
proprietary codecs and has libffmpeg.so built in.
Opera and Vivaldi, on the other hand, do not support proprietary
codecs and actively encourage you to replace the libffmpeg.so they
provide. Official instructions involve downloading the huge Chromium
tarball and building tons of baggage that you don't actually need,
despite the fact that libffmpeg.so is really just the main ffmpeg
libraries combined.
In order to build this, I felt it was worthwhile leveraging our
existing feature-rich ffmpeg package rather than duplicating it or
creating some poor imitation. This commit shows what little extra code
is required.
It would be possible to link to the regular libraries directly instead
of buildling additional copies if it weren't for the fact that these
browsers are usually built with -DFF_API_CONVERGENCE_DURATION=0,
making the ABI incompatible, at least until libavcodec hits 59.
That aside, all Chromium versions between 59 and 61 (maybe earlier?)
use the 55.57.57 ffmpeg ABI found in the 3.x series. Having these
browsers optionally RDEPEND on ffmpeg:0/55.57.57[chromium] should
therefore not be a problem for the time being. They simply need to
provide a symlink.
I have tested this with current versions of vivaldi, vivaldi-snapshot,
opera, opera-beta, and opera-developer. None were able to play videos
on news.bbc.co.uk without Flash until swapping in this library.
It has been noted that Vivaldi could potentially be built from
source. I may explore this possibility but I believe this change is
still useful, especially as some lack sufficient hardware to build
these browsers from source.
Package-Manager: Portage-2.3.6, Repoman-2.3.2
media-video/ffmpeg/ffmpeg-9999.ebuild | 34 ++++++++++++++++++++++++-
media-video/ffmpeg/files/chromium.patch | 45 +++++++++++++++++++++++++++++++++
media-video/ffmpeg/metadata.xml | 1 +
3 files changed, 79 insertions(+), 1 deletion(-)
diff --git a/media-video/ffmpeg/ffmpeg-9999.ebuild b/media-video/ffmpeg/ffmpeg-9999.ebuild
index e2ab9a865dc..55572458a50 100644
--- a/media-video/ffmpeg/ffmpeg-9999.ebuild
+++ b/media-video/ffmpeg/ffmpeg-9999.ebuild
@@ -96,7 +96,7 @@ FFMPEG_ENCODER_FLAG_MAP=(
)
IUSE="
- alsa doc +encode jack oss pic static-libs test v4l
+ alsa chromium doc +encode jack oss pic static-libs test v4l
${FFMPEG_FLAG_MAP[@]%:*}
${FFMPEG_ENCODER_FLAG_MAP[@]%:*}
"
@@ -289,6 +289,10 @@ RESTRICT="
S=${WORKDIR}/${P/_/-}
+PATCHES=(
+ "${FILESDIR}"/chromium.patch
+)
+
MULTILIB_WRAPPED_HEADERS=(
/usr/include/libavutil/avconfig.h
)
@@ -419,6 +423,20 @@ multilib_src_configure() {
"${myconf[@]}"
echo "${@}"
"${@}" || die
+
+ if multilib_is_native_abi && use chromium; then
+ einfo "Configuring for Chromium"
+ mkdir -p ../chromium || die
+ pushd ../chromium >/dev/null || die
+ set -- "${@}" \
+ --disable-shared \
+ --enable-static \
+ --enable-pic \
+ --extra-cflags="-DFF_API_CONVERGENCE_DURATION=0"
+ echo "${@}"
+ "${@}" || die
+ popd >/dev/null || die
+ fi
}
multilib_src_compile() {
@@ -430,6 +448,13 @@ multilib_src_compile() {
emake V=1 tools/${i}
fi
done
+
+ if use chromium; then
+ einfo "Compiling for Chromium"
+ pushd ../chromium >/dev/null || die
+ emake V=1 libffmpeg
+ popd >/dev/null || die
+ fi
fi
}
@@ -442,6 +467,13 @@ multilib_src_install() {
dobin tools/${i}
fi
done
+
+ if use chromium; then
+ einfo "Installing for Chromium"
+ pushd ../chromium >/dev/null || die
+ emake V=1 DESTDIR="${D}" install-libffmpeg
+ popd >/dev/null || die
+ fi
fi
}
diff --git a/media-video/ffmpeg/files/chromium.patch b/media-video/ffmpeg/files/chromium.patch
new file mode 100644
index 00000000000..bc8b8d38698
--- /dev/null
+++ b/media-video/ffmpeg/files/chromium.patch
@@ -0,0 +1,45 @@
+Allow libffmpeg to be built for Chromium-based browsers
+https://patchwork.ffmpeg.org/patch/4500/
+
+diff --git a/Makefile b/Makefile
+index 29870d7..1e267e7 100644
+--- a/Makefile
++++ b/Makefile
+@@ -65,6 +65,7 @@ all: all-yes
+
+ include $(SRC_PATH)/tools/Makefile
+ include $(SRC_PATH)/ffbuild/common.mak
++include $(SRC_PATH)/ffbuild/libffmpeg.mak
+
+ FF_EXTRALIBS := $(FFEXTRALIBS)
+ FF_DEP_LIBS := $(DEP_LIBS)
+diff --git a/ffbuild/libffmpeg.mak b/ffbuild/libffmpeg.mak
+new file mode 100644
+index 0000000..992cf3c
+--- /dev/null
++++ b/ffbuild/libffmpeg.mak
+@@ -0,0 +1,21 @@
++LIBFFMPEG = $(SLIBPREF)ffmpeg$(SLIBSUF)
++LIBFFMPEG_LINK = $(LD) -shared -Wl,-soname,$(LIBFFMPEG) -Wl,-Bsymbolic -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--gc-sections $(LDFLAGS) $(LDLIBFLAGS) -o $(LIBFFMPEG)
++
++libffmpeg-: libavcodec/$(LIBPREF)avcodec$(LIBSUF) libavformat/$(LIBPREF)avformat$(LIBSUF) libavutil/$(LIBPREF)avutil$(LIBSUF) libswresample/$(LIBPREF)swresample$(LIBSUF)
++ $(LIBFFMPEG_LINK) -Wl,--whole-archive $^ -Wl,--no-whole-archive $(FFEXTRALIBS)
++
++libffmpeg-yes: libavcodec/$(SLIBPREF)avcodec$(SLIBSUF) libavformat/$(SLIBPREF)avformat$(SLIBSUF) libavutil/$(SLIBPREF)avutil$(SLIBSUF)
++ $(LIBFFMPEG_LINK) -Wl,--no-as-needed -lavcodec -lavformat -lavutil
++
++$(LIBFFMPEG): libffmpeg-$(CONFIG_SHARED)
++libffmpeg: $(LIBFFMPEG)
++
++install-libffmpeg: $(LIBFFMPEG)
++ $(Q)mkdir -p "$(SHLIBDIR)/chromium"
++ $(INSTALL) -m 755 $< "$(SHLIBDIR)/chromium/$<"
++ $(STRIP) "$(SHLIBDIR)/chromium/$<"
++
++uninstall-libffmpeg:
++ $(RM) "$(SHLIBDIR)/chromium/$(LIBFFMPEG)"
++
++.PHONY: libffmpeg libffmpeg-* install-libffmpeg
+--
+2.13.1
+
diff --git a/media-video/ffmpeg/metadata.xml b/media-video/ffmpeg/metadata.xml
index b8773a83a67..ef95f758afd 100644
--- a/media-video/ffmpeg/metadata.xml
+++ b/media-video/ffmpeg/metadata.xml
@@ -17,6 +17,7 @@
<flag name="cdio">Enables audio CD grabbing with <pkg>dev-libs/libcdio</pkg>.</flag>
<flag name="celt">Adds Xiph CELT audio decoding support via <pkg>media-libs/celt</pkg></flag>
<flag name="chromaprint">Enables audio fingerprinting support with <pkg>media-libs/chromaprint</pkg>.</flag>
+ <flag name="chromium">Builds libffmpeg.so to enable media playback in Chromium-based browsers like Opera and Vivaldi.</flag>
<flag name="cpudetection">Enables runtime CPU detection (useful for bindist, compatibility on other CPUs)</flag>
<flag name="ebur128">Enables EBU R128 loudness normalization filter via <pkg>media-libs/libebur128</pkg></flag>
<flag name="faac">Use external faac library for AAC encoding</flag>
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2017-10-08 10:21 Alexis Ballier
0 siblings, 0 replies; 22+ messages in thread
From: Alexis Ballier @ 2017-10-08 10:21 UTC (permalink / raw
To: gentoo-commits
commit: ca978a6c5eee01f7bab203df144003ec7ae8979c
Author: Alexis Ballier <aballier <AT> gentoo <DOT> org>
AuthorDate: Sun Oct 8 10:20:38 2017 +0000
Commit: Alexis Ballier <aballier <AT> gentoo <DOT> org>
CommitDate: Sun Oct 8 10:20:38 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ca978a6c
media-video/ffmpeg: backport upstream patch to build with openjpeg 2.3; by Andreas Sturmlechner.
Close: https://bugs.gentoo.org/633576
Package-Manager: Portage-2.3.11, Repoman-2.3.3
media-video/ffmpeg/ffmpeg-3.3.4.ebuild | 1 +
media-video/ffmpeg/files/openjpeg23.patch | 109 ++++++++++++++++++++++++++++++
2 files changed, 110 insertions(+)
diff --git a/media-video/ffmpeg/ffmpeg-3.3.4.ebuild b/media-video/ffmpeg/ffmpeg-3.3.4.ebuild
index 9d94cd67b70..66159129457 100644
--- a/media-video/ffmpeg/ffmpeg-3.3.4.ebuild
+++ b/media-video/ffmpeg/ffmpeg-3.3.4.ebuild
@@ -309,6 +309,7 @@ MULTILIB_WRAPPED_HEADERS=(
PATCHES=(
"${FILESDIR}"/openjpeg22.patch
+ "${FILESDIR}"/openjpeg23.patch
"${FILESDIR}"/chromium.patch
)
diff --git a/media-video/ffmpeg/files/openjpeg23.patch b/media-video/ffmpeg/files/openjpeg23.patch
new file mode 100644
index 00000000000..4398769a22c
--- /dev/null
+++ b/media-video/ffmpeg/files/openjpeg23.patch
@@ -0,0 +1,109 @@
+From: Michael Bradshaw <mjbshaw at google.com>
+
+Signed-off-by: Michael Bradshaw <mjbshaw at google.com>
+---
+ configure | 5 ++++-
+ libavcodec/libopenjpegdec.c | 8 +++++---
+ libavcodec/libopenjpegenc.c | 10 ++++++----
+ 3 files changed, 15 insertions(+), 8 deletions(-)
+
+diff --git a/configure b/configure
+index 391c141e7a..77c9a18c3c 100755
+--- a/configure
++++ b/configure
+@@ -1930,6 +1930,7 @@ HEADERS_LIST="
+ machine_ioctl_meteor_h
+ malloc_h
+ opencv2_core_core_c_h
++ openjpeg_2_3_openjpeg_h
+ openjpeg_2_2_openjpeg_h
+ openjpeg_2_1_openjpeg_h
+ openjpeg_2_0_openjpeg_h
+@@ -5950,7 +5951,9 @@ enabled libopencv && { check_header opencv2/core/core_c.h &&
+ require opencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
+ require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader; }
+ enabled libopenh264 && require_pkg_config openh264 wels/codec_api.h WelsGetCodecVersion
+-enabled libopenjpeg && { { check_lib openjpeg-2.2/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
++enabled libopenjpeg && { { check_lib openjpeg-2.3/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
++ check_lib openjpeg-2.3/openjpeg.h opj_version -lopenjp2 ||
++ { check_lib openjpeg-2.2/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
+ check_lib openjpeg-2.2/openjpeg.h opj_version -lopenjp2 ||
+ { check_lib openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
+ check_lib openjpeg-2.1/openjpeg.h opj_version -lopenjp2 ||
+diff --git a/libavcodec/libopenjpegdec.c b/libavcodec/libopenjpegdec.c
+index 1210123265..67d47bd6a0 100644
+--- a/libavcodec/libopenjpegdec.c
++++ b/libavcodec/libopenjpegdec.c
+@@ -34,7 +34,9 @@
+ #include "internal.h"
+ #include "thread.h"
+
+-#if HAVE_OPENJPEG_2_2_OPENJPEG_H
++#if HAVE_OPENJPEG_2_3_OPENJPEG_H
++# include <openjpeg-2.3/openjpeg.h>
++#elif HAVE_OPENJPEG_2_2_OPENJPEG_H
+ # include <openjpeg-2.2/openjpeg.h>
+ #elif HAVE_OPENJPEG_2_1_OPENJPEG_H
+ # include <openjpeg-2.1/openjpeg.h>
+@@ -46,7 +48,7 @@
+ # include <openjpeg.h>
+ #endif
+
+-#if HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H || HAVE_OPENJPEG_2_0_OPENJPEG_H
++#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H || HAVE_OPENJPEG_2_0_OPENJPEG_H
+ # define OPENJPEG_MAJOR_VERSION 2
+ # define OPJ(x) OPJ_##x
+ #else
+@@ -431,7 +433,7 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx,
+ opj_stream_set_read_function(stream, stream_read);
+ opj_stream_set_skip_function(stream, stream_skip);
+ opj_stream_set_seek_function(stream, stream_seek);
+-#if HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
++#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
+ opj_stream_set_user_data(stream, &reader, NULL);
+ #elif HAVE_OPENJPEG_2_0_OPENJPEG_H
+ opj_stream_set_user_data(stream, &reader);
+diff --git a/libavcodec/libopenjpegenc.c b/libavcodec/libopenjpegenc.c
+index b67e533d1d..92b4433b04 100644
+--- a/libavcodec/libopenjpegenc.c
++++ b/libavcodec/libopenjpegenc.c
+@@ -32,7 +32,9 @@
+ #include "avcodec.h"
+ #include "internal.h"
+
+-#if HAVE_OPENJPEG_2_2_OPENJPEG_H
++#if HAVE_OPENJPEG_2_3_OPENJPEG_H
++# include <openjpeg-2.3/openjpeg.h>
++#elif HAVE_OPENJPEG_2_2_OPENJPEG_H
+ # include <openjpeg-2.2/openjpeg.h>
+ #elif HAVE_OPENJPEG_2_1_OPENJPEG_H
+ # include <openjpeg-2.1/openjpeg.h>
+@@ -44,7 +46,7 @@
+ # include <openjpeg.h>
+ #endif
+
+-#if HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H || HAVE_OPENJPEG_2_0_OPENJPEG_H
++#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H || HAVE_OPENJPEG_2_0_OPENJPEG_H
+ # define OPENJPEG_MAJOR_VERSION 2
+ # define OPJ(x) OPJ_##x
+ #else
+@@ -307,7 +309,7 @@ static av_cold int libopenjpeg_encode_init(AVCodecContext *avctx)
+
+ opj_set_default_encoder_parameters(&ctx->enc_params);
+
+-#if HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
++#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
+ switch (ctx->cinema_mode) {
+ case OPJ_CINEMA2K_24:
+ ctx->enc_params.rsiz = OPJ_PROFILE_CINEMA_2K;
+@@ -771,7 +773,7 @@ static int libopenjpeg_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
+ opj_stream_set_write_function(stream, stream_write);
+ opj_stream_set_skip_function(stream, stream_skip);
+ opj_stream_set_seek_function(stream, stream_seek);
+-#if HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
++#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
+ opj_stream_set_user_data(stream, &writer, NULL);
+ #elif HAVE_OPENJPEG_2_0_OPENJPEG_H
+ opj_stream_set_user_data(stream, &writer);
+--
+2.13.5 (Apple Git-94)
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2020-06-17 17:35 Thomas Deutschmann
0 siblings, 0 replies; 22+ messages in thread
From: Thomas Deutschmann @ 2020-06-17 17:35 UTC (permalink / raw
To: gentoo-commits
commit: 202e177b4796ebc90b6392e24178812dfd7cfe7c
Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 17 17:34:36 2020 +0000
Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Wed Jun 17 17:34:57 2020 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=202e177b
media-video/ffmpeg: fix building without SSSE3
Closes: https://bugs.gentoo.org/728566
Package-Manager: Portage-2.3.101, Repoman-2.3.22
Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-4.3.ebuild | 1 +
.../files/ffmpeg-4.3-fix-build-without-SSSE3.patch | 22 ++++++++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/media-video/ffmpeg/ffmpeg-4.3.ebuild b/media-video/ffmpeg/ffmpeg-4.3.ebuild
index 3536d79ae99..6a6b7f4fb6c 100644
--- a/media-video/ffmpeg/ffmpeg-4.3.ebuild
+++ b/media-video/ffmpeg/ffmpeg-4.3.ebuild
@@ -325,6 +325,7 @@ S=${WORKDIR}/${P/_/-}
PATCHES=(
"${FILESDIR}"/chromium-r1.patch
+ "${FILESDIR}"/${PN}-4.3-fix-build-without-SSSE3.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/files/ffmpeg-4.3-fix-build-without-SSSE3.patch b/media-video/ffmpeg/files/ffmpeg-4.3-fix-build-without-SSSE3.patch
new file mode 100644
index 00000000000..c3e6733160f
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-4.3-fix-build-without-SSSE3.patch
@@ -0,0 +1,22 @@
+https://bugs.gentoo.org/728566
+http://ffmpeg.org/pipermail/ffmpeg-devel/2020-February/257474.html
+
+--- a/libswscale/x86/yuv2rgb.c
++++ b/libswscale/x86/yuv2rgb.c
+@@ -83,6 +83,7 @@ av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c)
+ #if HAVE_X86ASM
+ int cpu_flags = av_get_cpu_flags();
+
++#if HAVE_SSSE3
+ if (EXTERNAL_SSSE3(cpu_flags)) {
+ switch (c->dstFormat) {
+ case AV_PIX_FMT_RGB32:
+@@ -111,6 +112,7 @@ av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c)
+ return yuv420_rgb15_ssse3;
+ }
+ }
++#endif
+
+ if (EXTERNAL_MMXEXT(cpu_flags)) {
+ switch (c->dstFormat) {
+
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2020-07-27 16:40 Sam James
0 siblings, 0 replies; 22+ messages in thread
From: Sam James @ 2020-07-27 16:40 UTC (permalink / raw
To: gentoo-commits
commit: 5aad0c4b02393043056f044fa39114bc1aa595ae
Author: John Helmert III <jchelmert3 <AT> posteo <DOT> net>
AuthorDate: Thu Jul 23 21:06:52 2020 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Jul 27 16:40:18 2020 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5aad0c4b
media-video/ffmpeg: security cleanup (drop <4.2.4)
Bug: https://bugs.gentoo.org/711144
Bug: https://bugs.gentoo.org/718012
Bug: https://bugs.gentoo.org/719940
Bug: https://bugs.gentoo.org/727450
Package-Manager: Portage-3.0.0, Repoman-2.3.23
Signed-off-by: John Helmert III <jchelmert3 <AT> posteo.net>
Signed-off-by: Sam James <sam <AT> gentoo.org>
media-video/ffmpeg/Manifest | 2 -
media-video/ffmpeg/ffmpeg-3.4.6-r1.ebuild | 490 ------------------
media-video/ffmpeg/ffmpeg-4.2.3.ebuild | 556 ---------------------
media-video/ffmpeg/files/chromium.patch | 36 --
...mpeg-3.4.6-fix-building-against-fdk-aac-2.patch | 74 ---
media-video/ffmpeg/metadata.xml | 1 -
6 files changed, 1159 deletions(-)
diff --git a/media-video/ffmpeg/Manifest b/media-video/ffmpeg/Manifest
index 93b5c001cd8..a6066b59fb8 100644
--- a/media-video/ffmpeg/Manifest
+++ b/media-video/ffmpeg/Manifest
@@ -1,7 +1,5 @@
-DIST ffmpeg-3.4.6.tar.bz2 10190001 BLAKE2B 4c7842900171cf871f8524f08f435797b1a168faa11877100fe74c3ecd4a2c2e004a5110dc23bda818f69b0a484f63d8f34c7904c4827c88894d877cdd70c6fe SHA512 0228751b288096e368f9049854936930b7c1fd89aac31a5382f5de78d3282b4e86a6f562c79833d1635222f0ad56b2e5401a150574714e1b7e0ab4f5d8939812
DIST ffmpeg-4.2.2-ppc64-altivec.patch.gz 7171 BLAKE2B 6676dadb22d2ab4b0f5c19b418448c5b9b54fd8c803c3f0ab517c6fa7990be08098dd6f6a2b1b3e77a1bed31a069c702366aba79ef9141ff9e23cd8c1b6e2885 SHA512 6653975017de3f7bde420860419fbdddb50ae41dbb811b819f4b5b13807bf885a4c01736f05a684515f97b0d63bd8896d5951a3276af90cc74abfe32dc2e2407
DIST ffmpeg-4.2.2-ppc64-gcc.patch.gz 750 BLAKE2B 3a9cc7f0135e077c77179a7ca3da917bca3995d99d53b58221b23181a075f330132f83ea90a6110e89f90c7c3b5b2a7837559c5df414d9bd52dbb3ec166b1545 SHA512 701b0635e0819484a31de2062ba52d95ee03883ab56547cd75c3646a9b32bf3ecc7f719690b93f29202cfed0fdeecd26b51b9f3c66e72a999a3e8d9e97389275
-DIST ffmpeg-4.2.3.tar.bz2 10957405 BLAKE2B fbc933f1750bbdcea236442c66faec78fb04ef18aef3b59516e7585946db7efd30c5f7e096e8aad057890e7c8e301240b557414c51767afeabbdd4902c52cd7e SHA512 ca9b0c8df41783689d80e9d0a43acef8b457fb4003ff4173a7b0898cefabc76efc24257e8990ab2559a3e409c9a1a66f90343a421579a85fe7398b1a898b60b5
DIST ffmpeg-4.2.4.tar.bz2 10959430 BLAKE2B 932bc0046edab5587063bbc04d6ef0149876bd1001ad185384fcabb3d0ae196c9ba591e680823b3c7b6e0ef9a0a9e9575a8b08439fdd89ef0e4dabb9d4a7f4e6 SHA512 5c74e3fe77ddf8ffede0e4692d574858dd0626e542380a819ab79c0f669c6c1329ffbccb872502f60306e561f10aa8bc1e61d09b2bea829870fe4a48b76460c6
DIST ffmpeg-4.3.1.tar.bz2 11301038 BLAKE2B 3b0eb332459921435b60e72f5c572034abf65d4ab79ef4cfae94fe594048eaa37eec47724d119863102a7211c2178f5a2382a6d4016b792818079b8241bde084 SHA512 831a187d8b8f2715a9f11c93c8d3ec126ff579d470797da452d3395178877de113af7ae90ed27fca0b223791ad257972570481e6dbb8361d2b7f3b010924bee8
DIST ffmpeg-4.3.tar.bz2 11297005 BLAKE2B 41b4752aa2c1a937e4e82ec76ca38f48c1dcca633cb77f100aeb6c56f0acc218a39621d8b1046d38f65b3fa5b0871fea7ace16348266ca1244dd889620bc73ab SHA512 fdccd281407d5bed0f673ad01ddc9134cd9a31f040b55e30f3b27913b877732b9d19c6ceeda96afb360e1ff49f4930f6c320747b240cf38d541df81a8ef4272f
diff --git a/media-video/ffmpeg/ffmpeg-3.4.6-r1.ebuild b/media-video/ffmpeg/ffmpeg-3.4.6-r1.ebuild
deleted file mode 100644
index 5f812cb1b01..00000000000
--- a/media-video/ffmpeg/ffmpeg-3.4.6-r1.ebuild
+++ /dev/null
@@ -1,490 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-# 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=55.57.57
-
-SCM=""
-if [ "${PV#9999}" != "${PV}" ] ; then
- SCM="git-r3"
- EGIT_REPO_URI="git://source.ffmpeg.org/ffmpeg.git"
-fi
-
-inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
-
-DESCRIPTION="Complete solution to record/convert/stream audio and video. Includes libavcodec"
-HOMEPAGE="http://ffmpeg.org/"
-if [ "${PV#9999}" != "${PV}" ] ; then
- SRC_URI=""
-elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
- SRC_URI="mirror://gentoo/${P}.tar.bz2"
-else # Release
- SRC_URI="http://ffmpeg.org/releases/${P/_/-}.tar.bz2"
-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 )
- )
- encode? (
- amrenc? (
- gpl? ( GPL-3 )
- !gpl? ( LGPL-3 )
- )
- )
- samba? ( GPL-3 )
-"
-if [ "${PV#9999}" = "${PV}" ] ; then
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~mips ppc ppc64 x86 ~amd64-linux ~x86-linux"
-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 lzma +network opencl openssl +postproc
- samba:libsmbclient sdl:ffplay sdl:sdl2 vaapi vdpau X:xlib xcb:libxcb
- xcb:libxcb-shm xcb:libxcb-xfixes +zlib
- # libavdevice options
- cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal
- opengl
- # indevs
- libv4l:libv4l2 pulseaudio:libpulse libdrm
- # decoders
- amr:libopencore-amrwb amr:libopencore-amrnb fdk:libfdk-aac
- jpeg2k:libopenjpeg bluray:libbluray gme:libgme gsm:libgsm
- mmal modplug:libmodplug opus:libopus libilbc librtmp ssh:libssh
- speex:libspeex svg:librsvg vorbis:libvorbis
- vpx:libvpx zvbi:libzvbi
- # libavfilter options
- appkit
- bs2b:libbs2b chromaprint flite:libflite frei0r
- fribidi:libfribidi fontconfig ladspa libass truetype:libfreetype
- 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=(
- amrenc:libvo-amrwbenc mp3:libmp3lame
- kvazaar:libkvazaar nvenc:nvenc
- openh264:libopenh264 snappy:libsnappy theora:libtheora twolame:libtwolame
- wavpack:libwavpack webp:libwebp x264:libx264 x265:libx265 xvid:libxvid
-)
-
-IUSE="
- alsa chromium doc +encode jack oss pic 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_thumb2 cpu_flags_arm_vfp )
- cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
- cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
- cpu_flags_arm_v6? ( cpu_flags_arm_thumb )
-"
-MIPS_CPU_FEATURES=( mipsdspr1:mipsdsp mipsdspr2 mipsfpu )
-PPC_CPU_FEATURES=( altivec )
-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}
- ${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}] )
- 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}] )
- encode? (
- amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
- kvazaar? ( media-libs/kvazaar[${MULTILIB_USEDEP}] )
- mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
- nvenc? ( media-video/nvidia_video_sdk )
- openh264? ( >=media-libs/openh264-1.4.0-r1[${MULTILIB_USEDEP}] )
- snappy? ( >=app-arch/snappy-1.1.2-r1:=[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- )
- twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
- wavpack? ( >=media-sound/wavpack-4.60.1-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 )
- 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}] )
- gnutls? ( >=net-libs/gnutls-2.12.23-r6:=[${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[${MULTILIB_USEDEP}]
- >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
- )
- jack? ( virtual/jack[${MULTILIB_USEDEP}] )
- jpeg2k? ( >=media-libs/openjpeg-2:2[${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}] )
- libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
- libv4l? ( >=media-libs/libv4l-0.9.5[${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}] )
- openssl? ( >=dev-libs/openssl-1.0.1h-r2:0=[${MULTILIB_USEDEP}] )
- opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
- pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
- librtmp? ( >=media-video/rtmpdump-2.4_p20131018[${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}] )
- speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
- ssh? ( >=net-libs/libssh-0.5.5[${MULTILIB_USEDEP}] )
- svg? ( gnome-base/librsvg:2=[${MULTILIB_USEDEP}] )
- truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
- vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${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}] )
- 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}]
- )
- xcb? ( >=x11-libs/libxcb-1.4[${MULTILIB_USEDEP}] )
- zeromq? ( >=net-libs/zeromq-4.1.6 )
- zimg? ( >=media-libs/zimg-2.4:=[${MULTILIB_USEDEP}] )
- zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
- zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
- !media-video/qt-faststart
- postproc? ( !media-libs/libpostproc )
-"
-
-DEPEND="${RDEPEND}
- >=sys-devel/make-3.81
- doc? ( sys-apps/texinfo )
- virtual/pkgconfig
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- cpu_flags_x86_mmx? ( || ( >=dev-lang/nasm-2.13 >=dev-lang/yasm-1.3 ) )
- test? ( net-misc/wget sys-devel/bc )
- v4l? ( sys-kernel/linux-headers )
-"
-
-# Code requiring FFmpeg to be built under gpl license
-GPL_REQUIRED_USE="
- postproc? ( gpl )
- frei0r? ( gpl )
- cdio? ( gpl )
- samba? ( gpl )
- encode? (
- x264? ( gpl )
- x265? ( gpl )
- xvid? ( gpl )
- X? ( !xcb? ( gpl ) )
- )
-"
-REQUIRED_USE="
- 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.patch
- "${FILESDIR}"/${PN}-3.4.6-fix-building-against-fdk-aac-2.patch #682890
-)
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
- default
- echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
-}
-
-multilib_src_configure() {
- local myconf=( ${EXTRA_FFMPEG_CONF} )
-
- local ffuse=( "${FFMPEG_FLAG_MAP[@]}" )
- use openssl && use gpl && 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 ; do
- use ${i} || myconf+=( --disable-indev=${i} )
- done
-
- # Outdevs
- for i in alsa oss sdl ; do
- use ${i} || myconf+=( --disable-outdev=${i} )
- done
-
- # Decoders
- use amr && myconf+=( --enable-version3 )
- use gmp && myconf+=( --enable-version3 )
- use fdk && use gpl && myconf+=( --enable-nonfree )
-
- for i in "${ffuse[@]#+}" ; do
- myconf+=( $(use_enable ${i%:*} ${i#*:}) )
- done
-
- # (temporarily) disable non-multilib deps
- if ! multilib_is_native_abi; then
- for i in frei0r 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
- is-flagq "-flto*" && myconf+=( "--enable-lto" )
-
- # Mandatory configuration
- myconf=(
- --enable-avfilter
- --enable-avresample
- --disable-stripping
- --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
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- *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)
- )
-
- 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)" \
- --optflags="${CFLAGS}" \
- $(use_enable static-libs static) \
- "${myconf[@]}"
- echo "${@}"
- "${@}" || die
-
- if multilib_is_native_abi && use chromium; then
- einfo "Configuring for Chromium"
- mkdir -p ../chromium || die
- pushd ../chromium >/dev/null || die
- set -- "${@}" \
- --disable-shared \
- --enable-static \
- --enable-pic \
- --extra-cflags="-DFF_API_CONVERGENCE_DURATION=0"
- 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
- einfo "Compiling for Chromium"
- pushd ../chromium >/dev/null || die
- emake V=1 libffmpeg
- popd >/dev/null || die
- fi
- fi
-}
-
-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
- einfo "Installing for Chromium"
- pushd ../chromium >/dev/null || die
- emake V=1 DESTDIR="${D}" install-libffmpeg
- popd >/dev/null || die
- fi
- fi
-}
-
-multilib_src_install_all() {
- dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
- [ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
-}
-
-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
-}
diff --git a/media-video/ffmpeg/ffmpeg-4.2.3.ebuild b/media-video/ffmpeg/ffmpeg-4.2.3.ebuild
deleted file mode 100644
index 870f697ab83..00000000000
--- a/media-video/ffmpeg/ffmpeg-4.2.3.ebuild
+++ /dev/null
@@ -1,556 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# 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 eutils 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.bz2"
-else # Release
- SRC_URI="https://ffmpeg.org/releases/${P/_/-}.tar.bz2
- https://dev.gentoo.org/~gyakovlev/distfiles/${PN}-4.2.2-ppc64-altivec.patch.gz
- https://dev.gentoo.org/~gyakovlev/distfiles/${PN}-4.2.2-ppc64-gcc.patch.gz
- "
-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 ~mips ppc ppc64 sparc x86 ~amd64-linux ~x86-linux"
-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 libressl:libtls libxml2 lzma +network opencl
- openssl +postproc samba:libsmbclient sdl:ffplay sdl:sdl2 vaapi vdpau
- 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 libilbc librtmp ssh:libssh
- speex:libspeex srt:libsrt svg:librsvg video_cards_nvidia:ffnvcodec
- vorbis:libvorbis vpx:libvpx zvbi:libzvbi
- # libavfilter options
- appkit
- bs2b:libbs2b chromaprint cuda:cuda-llvm flite:libflite frei0r
- 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=(
- amrenc:libvo-amrwbenc mp3:libmp3lame
- kvazaar:libkvazaar libaom
- openh264:libopenh264 snappy:libsnappy theora:libtheora twolame:libtwolame
- wavpack:libwavpack webp:libwebp x264:libx264 x265:libx265 xvid:libxvid
-)
-
-IUSE="
- alsa chromium doc +encode oss pic 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_thumb2 cpu_flags_arm_vfp )
- cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
- cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
- cpu_flags_arm_v6? ( 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}] )
- 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}] )
- snappy? ( >=app-arch/snappy-1.1.2-r1:=[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- )
- twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
- wavpack? ( >=media-sound/wavpack-4.60.1-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 )
- 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[${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}] )
- 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}] )
- 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[${MULTILIB_USEDEP}] )
- svg? ( gnome-base/librsvg:2=[${MULTILIB_USEDEP}] )
- truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
- vaapi? ( >=x11-libs/libva-1.2.1-r1:0=[${MULTILIB_USEDEP}] )
- video_cards_nvidia? ( >=media-libs/nv-codec-headers-9.0.18.0[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
- vidstab? ( >=media-libs/vidstab-1.1.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}] )
- 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}] )
- postproc? ( !media-libs/libpostproc )
-"
-
-# Crypto & co provider magic
-# - libressl is a useflag meaning it should always favor libressl over openssl
-# - libressl and openssl provide more features to ffmpeg than gnutls
-#
-# The ordering is thus: libressl > openssl > gnutls
-RDEPEND="${RDEPEND}
- libressl? ( dev-libs/libressl:0=[${MULTILIB_USEDEP}] )
- !libressl? (
- openssl? ( >=dev-libs/openssl-1.0.1h-r2:0=[${MULTILIB_USEDEP}] )
- !openssl? ( gnutls? ( >=net-libs/gnutls-2.12.23-r6:=[${MULTILIB_USEDEP}] ) )
- )
-"
-
-DEPEND="${RDEPEND}
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
-"
-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 )
- samba? ( gpl )
- encode? (
- x264? ( gpl )
- x265? ( gpl )
- xvid? ( gpl )
- )
-"
-REQUIRED_USE="
- cuda? ( video_cards_nvidia )
- libv4l? ( v4l )
- fftools_cws2fws? ( zlib )
- test? ( encode )
- ${GPL_REQUIRED_USE}
- ${CPU_REQUIRED_USE}"
-RESTRICT="
- !test? ( test )
- gpl? ( openssl? ( bindist ) fdk? ( bindist ) libressl? ( bindist ) )
-"
-
-S=${WORKDIR}/${P/_/-}
-
-PATCHES=(
- "${FILESDIR}"/chromium-r1.patch
- "${WORKDIR}/${PN}"-4.2.2-ppc64-gcc.patch # both ppc patches from
- "${WORKDIR}/${PN}"-4.2.2-ppc64-altivec.patch # https://trac.ffmpeg.org/ticket/7861
-
-)
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-build_separate_libffmpeg() {
- use opencl
-}
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
- default
- echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
-}
-
-multilib_src_configure() {
- local myconf=( ${EXTRA_FFMPEG_CONF} )
-
- local ffuse=( "${FFMPEG_FLAG_MAP[@]}" )
- use openssl || use libressl && use gpl && 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 ; do
- use ${i} || myconf+=( --disable-indev=${i} )
- done
-
- # Outdevs
- for i in alsa oss ; 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
-
- # Incompatible features: openssl or libressl and gnutls
- if use libressl ; then
- myconf+=( --disable-gnutls --disable-openssl )
- elif use openssl ; then
- myconf+=( --disable-gnutls )
- fi
-
- # (temporarily) disable non-multilib deps
- if ! multilib_is_native_abi; then
- for i in frei0r 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
- is-flagq "-flto*" && myconf+=( "--enable-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
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- *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)
- )
-
- 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)" \
- --optflags="${CFLAGS}" \
- $(use_enable static-libs static) \
- "${myconf[@]}"
- 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_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"
-}
-
-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
-}
diff --git a/media-video/ffmpeg/files/chromium.patch b/media-video/ffmpeg/files/chromium.patch
deleted file mode 100644
index 60a3e5d6cb9..00000000000
--- a/media-video/ffmpeg/files/chromium.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Allow libffmpeg to be built for Chromium-based browsers
-https://patchwork.ffmpeg.org/patch/4500/
-
-NOTE: This patch lacks the Makefile include line. We append it
-manually instead to make patching across different versions easier.
-
-diff --git a/ffbuild/libffmpeg.mak b/ffbuild/libffmpeg.mak
-new file mode 100644
-index 0000000..992cf3c
---- /dev/null
-+++ b/ffbuild/libffmpeg.mak
-@@ -0,0 +1,21 @@
-+LIBFFMPEG = $(SLIBPREF)ffmpeg$(SLIBSUF)
-+LIBFFMPEG_LINK = $(LD) -shared -Wl,-soname,$(LIBFFMPEG) -Wl,-Bsymbolic -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--gc-sections $(LDFLAGS) $(LDLIBFLAGS) -o $(LIBFFMPEG)
-+
-+libffmpeg-: libavcodec/$(LIBPREF)avcodec$(LIBSUF) libavformat/$(LIBPREF)avformat$(LIBSUF) libavutil/$(LIBPREF)avutil$(LIBSUF) libswresample/$(LIBPREF)swresample$(LIBSUF)
-+ $(LIBFFMPEG_LINK) -Wl,--whole-archive $^ -Wl,--no-whole-archive $(FFEXTRALIBS)
-+
-+libffmpeg-yes: libavcodec/$(SLIBPREF)avcodec$(SLIBSUF) libavformat/$(SLIBPREF)avformat$(SLIBSUF) libavutil/$(SLIBPREF)avutil$(SLIBSUF)
-+ $(LIBFFMPEG_LINK) -Wl,--no-as-needed -lavcodec -lavformat -lavutil
-+
-+$(LIBFFMPEG): libffmpeg-$(CONFIG_SHARED)
-+libffmpeg: $(LIBFFMPEG)
-+
-+install-libffmpeg: $(LIBFFMPEG)
-+ $(Q)mkdir -p "$(SHLIBDIR)/chromium"
-+ $(INSTALL) -m 755 $< "$(SHLIBDIR)/chromium/$<"
-+ $(STRIP) "$(SHLIBDIR)/chromium/$<"
-+
-+uninstall-libffmpeg:
-+ $(RM) "$(SHLIBDIR)/chromium/$(LIBFFMPEG)"
-+
-+.PHONY: libffmpeg libffmpeg-* install-libffmpeg
---
-2.13.1
-
diff --git a/media-video/ffmpeg/files/ffmpeg-3.4.6-fix-building-against-fdk-aac-2.patch b/media-video/ffmpeg/files/ffmpeg-3.4.6-fix-building-against-fdk-aac-2.patch
deleted file mode 100644
index 0ee99da96b3..00000000000
--- a/media-video/ffmpeg/files/ffmpeg-3.4.6-fix-building-against-fdk-aac-2.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-https://bugs.gentoo.org/682890
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/141c960e21d2860e354f9b90df136184dd00a9a8
-
---- a/libavcodec/libfdk-aacenc.c
-+++ b/libavcodec/libfdk-aacenc.c
-@@ -26,6 +26,11 @@
- #include "audio_frame_queue.h"
- #include "internal.h"
-
-+#define FDKENC_VER_AT_LEAST(vl0, vl1) \
-+ (defined(AACENCODER_LIB_VL0) && \
-+ ((AACENCODER_LIB_VL0 > vl0) || \
-+ (AACENCODER_LIB_VL0 == vl0 && AACENCODER_LIB_VL1 >= vl1)))
-+
- typedef struct AACContext {
- const AVClass *class;
- HANDLE_AACENCODER handle;
-@@ -290,7 +295,11 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
- }
-
- avctx->frame_size = info.frameLength;
-+#if FDKENC_VER_AT_LEAST(4, 0)
-+ avctx->initial_padding = info.nDelay;
-+#else
- avctx->initial_padding = info.encoderDelay;
-+#endif
- ff_af_queue_init(avctx, &s->afq);
-
- if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) {
-@@ -323,28 +332,35 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
- int out_buffer_size, out_buffer_element_size;
- void *in_ptr, *out_ptr;
- int ret;
-+ uint8_t dummy_buf[1];
- AACENC_ERROR err;
-
- /* handle end-of-stream small frame and flushing */
- if (!frame) {
-+ /* Must be a non-null pointer, even if it's a dummy. We could use
-+ * the address of anything else on the stack as well. */
-+ in_ptr = dummy_buf;
-+ in_buffer_size = 0;
-+
- in_args.numInSamples = -1;
- } else {
-- in_ptr = frame->data[0];
-- in_buffer_size = 2 * avctx->channels * frame->nb_samples;
-- in_buffer_element_size = 2;
-+ in_ptr = frame->data[0];
-+ in_buffer_size = 2 * avctx->channels * frame->nb_samples;
-
-- in_args.numInSamples = avctx->channels * frame->nb_samples;
-- in_buf.numBufs = 1;
-- in_buf.bufs = &in_ptr;
-- in_buf.bufferIdentifiers = &in_buffer_identifier;
-- in_buf.bufSizes = &in_buffer_size;
-- in_buf.bufElSizes = &in_buffer_element_size;
-+ in_args.numInSamples = avctx->channels * frame->nb_samples;
-
- /* add current frame to the queue */
- if ((ret = ff_af_queue_add(&s->afq, frame)) < 0)
- return ret;
- }
-
-+ in_buffer_element_size = 2;
-+ in_buf.numBufs = 1;
-+ in_buf.bufs = &in_ptr;
-+ in_buf.bufferIdentifiers = &in_buffer_identifier;
-+ in_buf.bufSizes = &in_buffer_size;
-+ in_buf.bufElSizes = &in_buffer_element_size;
-+
- /* The maximum packet size is 6144 bits aka 768 bytes per channel. */
- if ((ret = ff_alloc_packet(avpkt, FFMAX(8192, 768 * avctx->channels)))) {
- av_log(avctx, AV_LOG_ERROR, "Error getting output packet\n");
diff --git a/media-video/ffmpeg/metadata.xml b/media-video/ffmpeg/metadata.xml
index 68731ff2842..7d2db195f9a 100644
--- a/media-video/ffmpeg/metadata.xml
+++ b/media-video/ffmpeg/metadata.xml
@@ -42,7 +42,6 @@
<flag name="mipsfpu">Enables floating point MIPS optimizations.</flag>
<flag name="mmal">Enables Multi-Media Abstraction Layer (MMAL) decoding support: Available e.g. on the Raspberry Pi.</flag>
<flag name="network">Enables network streaming support</flag>
- <flag name="nvenc">Adds support for NVIDIA Encoder (NVENC) API for hardware accelerated encoding on NVIDIA cards.</flag>
<flag name="opencl">Enable OpenCL support</flag>
<flag name="openh264">Enables H.264 encoding suppoprt via <pkg>media-libs/openh264</pkg>.</flag>
<flag name="openssl">Enables <pkg>dev-libs/openssl</pkg> support. Adds support for encrypted network protocols (TLS/HTTPS).</flag>
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2020-10-07 17:07 Sam James
0 siblings, 0 replies; 22+ messages in thread
From: Sam James @ 2020-10-07 17:07 UTC (permalink / raw
To: gentoo-commits
commit: 44b6376a81a1912b0a5337585b694d38521025e9
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Oct 7 17:03:52 2020 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Oct 7 17:07:01 2020 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=44b6376a
media-video/ffmpeg: fix ppc build for 4.3.1
See: https://trac.ffmpeg.org/ticket/8750
Package-Manager: Portage-3.0.4, Repoman-3.0.1
Signed-off-by: Sam James <sam <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-4.3.1.ebuild | 1 +
.../files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch | 23 ++++++++++++++++++++++
2 files changed, 24 insertions(+)
diff --git a/media-video/ffmpeg/ffmpeg-4.3.1.ebuild b/media-video/ffmpeg/ffmpeg-4.3.1.ebuild
index e1d995bd1cf..f1f6178b251 100644
--- a/media-video/ffmpeg/ffmpeg-4.3.1.ebuild
+++ b/media-video/ffmpeg/ffmpeg-4.3.1.ebuild
@@ -327,6 +327,7 @@ S=${WORKDIR}/${P/_/-}
PATCHES=(
"${FILESDIR}"/chromium-r1.patch
"${FILESDIR}"/${PN}-4.3-fix-build-without-SSSE3.patch
+ "${FILESDIR}"/${PN}-4.3-altivec-novsx-yuv2rgb.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch b/media-video/ffmpeg/files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch
new file mode 100644
index 00000000000..40e7f916172
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch
@@ -0,0 +1,23 @@
+Fixes build on ppc.
+https://trac.ffmpeg.org/attachment/ticket/8750/ffmpeg_altivec_yuv2rgb_novsx.patch
+diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c
+index 536545293d..930ef6b98f 100644
+--- a/libswscale/ppc/yuv2rgb_altivec.c
++++ b/libswscale/ppc/yuv2rgb_altivec.c
+@@ -283,6 +283,16 @@ static inline void cvtyuvtoRGB(SwsContext *c, vector signed short Y,
+ * ------------------------------------------------------------------------------
+ */
+
++#if !HAVE_VSX
++static inline vector unsigned char vec_xl(signed long long offset, const ubyte *addr)
++{
++ const vector unsigned char *v_addr = (const vector unsigned char *) (addr + offset);
++ vector unsigned char align_perm = vec_lvsl(offset, addr);
++
++ return (vector unsigned char) vec_perm(v_addr[0], v_addr[1], align_perm);
++}
++#endif /* !HAVE_VSX */
++
+ #define DEFCSP420_CVT(name, out_pixels) \
+ static int altivec_ ## name(SwsContext *c, const unsigned char **in, \
+ int *instrides, int srcSliceY, int srcSliceH, \
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2022-03-16 15:18 Sam James
0 siblings, 0 replies; 22+ messages in thread
From: Sam James @ 2022-03-16 15:18 UTC (permalink / raw
To: gentoo-commits
commit: ad0cb7464d90af3480697b3695b84751f9890f77
Author: Adrian Ratiu <adrian.ratiu <AT> collabora <DOT> com>
AuthorDate: Wed Mar 16 11:20:20 2022 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Mar 16 15:17:28 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ad0cb746
media-video/ffmpeg: backport small GNU ranlib hardcoding fix
I've landed this fix in ffmpeg upstream and would like to backport
it to Gentoo so the --ranlib="$(tc-getRANLIB) option set in the
ebuilds has an effect, to be able to use the LLVM tool which is
currently ignored.
Because this is a small fix not impacting the majority of users
who don't care about mixed LLVM/GNU tools usage, I don't think
we nede to bump the ebuild revisons to cause rebuilds.
Closes: https://bugs.gentoo.org/835419
Signed-off-by: Adrian Ratiu <adrian.ratiu <AT> collabora.com>
Closes: https://github.com/gentoo/gentoo/pull/24602
Signed-off-by: Sam James <sam <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild | 2 +-
media-video/ffmpeg/ffmpeg-4.3.1-r1.ebuild | 1 +
media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild | 1 +
media-video/ffmpeg/ffmpeg-4.4-r1.ebuild | 1 +
media-video/ffmpeg/ffmpeg-4.4.1-r2.ebuild | 1 +
media-video/ffmpeg/ffmpeg-5.0.ebuild | 1 +
.../ffmpeg-5.0-backport-ranlib-build-fix.patch | 59 ++++++++++++++++++++++
7 files changed, 65 insertions(+), 1 deletion(-)
diff --git a/media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild b/media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild
index 59583db2d8db..4646abcd5728 100644
--- a/media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild
+++ b/media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild
@@ -320,7 +320,7 @@ PATCHES=(
"${FILESDIR}"/chromium-r1.patch
"${WORKDIR}/${PN}"-4.2.2-ppc64-gcc.patch # both ppc patches from
"${WORKDIR}/${PN}"-4.2.2-ppc64-altivec.patch # https://trac.ffmpeg.org/ticket/7861
-
+ "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/ffmpeg-4.3.1-r1.ebuild b/media-video/ffmpeg/ffmpeg-4.3.1-r1.ebuild
index e202c8064726..4bed84ce408b 100644
--- a/media-video/ffmpeg/ffmpeg-4.3.1-r1.ebuild
+++ b/media-video/ffmpeg/ffmpeg-4.3.1-r1.ebuild
@@ -321,6 +321,7 @@ PATCHES=(
"${FILESDIR}"/${PN}-4.3-fix-build-without-SSSE3.patch
"${FILESDIR}"/${PN}-4.3-altivec-novsx-yuv2rgb.patch
"${FILESDIR}"/${PN}-4.3.1-srt-1.4.2-build.patch
+ "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild b/media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild
index 13b361860963..398b9df600b8 100644
--- a/media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild
+++ b/media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild
@@ -320,6 +320,7 @@ PATCHES=(
"${FILESDIR}"/chromium-r1.patch
"${FILESDIR}"/${PN}-4.3-fix-build-without-SSSE3.patch
"${FILESDIR}"/${PN}-4.3-altivec-novsx-yuv2rgb.patch
+ "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/ffmpeg-4.4-r1.ebuild b/media-video/ffmpeg/ffmpeg-4.4-r1.ebuild
index c8ef29a7f0c0..197fd338b64d 100644
--- a/media-video/ffmpeg/ffmpeg-4.4-r1.ebuild
+++ b/media-video/ffmpeg/ffmpeg-4.4-r1.ebuild
@@ -318,6 +318,7 @@ S=${WORKDIR}/${P/_/-}
PATCHES=(
"${FILESDIR}"/chromium-r1.patch
+ "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/ffmpeg-4.4.1-r2.ebuild b/media-video/ffmpeg/ffmpeg-4.4.1-r2.ebuild
index 8ac03f042f31..0650f5458c0e 100644
--- a/media-video/ffmpeg/ffmpeg-4.4.1-r2.ebuild
+++ b/media-video/ffmpeg/ffmpeg-4.4.1-r2.ebuild
@@ -323,6 +323,7 @@ S=${WORKDIR}/${P/_/-}
PATCHES=(
"${FILESDIR}"/chromium-r1.patch
+ "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/ffmpeg-5.0.ebuild b/media-video/ffmpeg/ffmpeg-5.0.ebuild
index 6bed93997754..b6c059f58997 100644
--- a/media-video/ffmpeg/ffmpeg-5.0.ebuild
+++ b/media-video/ffmpeg/ffmpeg-5.0.ebuild
@@ -322,6 +322,7 @@ S=${WORKDIR}/${P/_/-}
PATCHES=(
"${FILESDIR}"/chromium-r1.patch
+ "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/files/ffmpeg-5.0-backport-ranlib-build-fix.patch b/media-video/ffmpeg/files/ffmpeg-5.0-backport-ranlib-build-fix.patch
new file mode 100644
index 000000000000..1c264f752099
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-5.0-backport-ranlib-build-fix.patch
@@ -0,0 +1,59 @@
+From bc5ccea3b9d2c71929af6271bd8afe9b6cfab436 Mon Sep 17 00:00:00 2001
+From: Adrian Ratiu <adrian.ratiu@collabora.com>
+Date: Mon, 14 Feb 2022 15:00:07 +0200
+Subject: [PATCH] configure: move ranlib -D test after setting defaults
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Backport [from master bc5ccea3b9d2c7]
+
+In Gentoo and ChromeOS we want to allow pure LLVM builds without
+using GNU tools, so we block any unwanted mixed GNU/LLVM usages
+(GNU tools are still kept around in our chroots for projects
+like glibc which cannot yet be built otherwise).
+
+The default ${cross_prefix}${ranlib_default} points to GNU and
+fails, so move the test a bit later - after the defaults are
+set and the proper values get overriden - such that ffmpeg
+configure calls the llvm-ranlib we desire. [1]
+
+[1] https://gitweb.gentoo.org/repo/gentoo.git/tree/media-video/ffmpeg/ffmpeg-4.4.1-r1.ebuild?id=7a34377e3277a6a0e2eedd40e90452a44c55f1e6#n477
+
+Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
+Signed-off-by: Martin Storsjö <martin@martin.st>
+---
+ configure | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/configure b/configure
+index 7d22c2a345..82642deabe 100755
+--- a/configure
++++ b/configure
+@@ -4403,11 +4403,7 @@ cc_default="${cross_prefix}${cc_default}"
+ cxx_default="${cross_prefix}${cxx_default}"
+ nm_default="${cross_prefix}${nm_default}"
+ pkg_config_default="${cross_prefix}${pkg_config_default}"
+-if ${cross_prefix}${ranlib_default} 2>&1 | grep -q "\-D "; then
+- ranlib_default="${cross_prefix}${ranlib_default} -D"
+-else
+- ranlib_default="${cross_prefix}${ranlib_default}"
+-fi
++ranlib_default="${cross_prefix}${ranlib_default}"
+ strip_default="${cross_prefix}${strip_default}"
+ windres_default="${cross_prefix}${windres_default}"
+
+@@ -4440,6 +4436,10 @@ set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \
+ enabled cross_compile || host_cc_default=$cc
+ set_default host_cc
+
++if ${ranlib} 2>&1 | grep -q "\-D "; then
++ ranlib="${ranlib} -D"
++fi
++
+ pkg_config_fail_message=""
+ if ! $pkg_config --version >/dev/null 2>&1; then
+ warn "$pkg_config not found, library detection may fail."
+--
+2.35.1
+
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2022-04-17 19:24 Sam James
0 siblings, 0 replies; 22+ messages in thread
From: Sam James @ 2022-04-17 19:24 UTC (permalink / raw
To: gentoo-commits
commit: 2b044bec42b4797cdba1be75c3d352a5ee8b9528
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Apr 17 19:19:36 2022 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Apr 17 19:19:56 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2b044bec
media-video/ffmpeg: drop 4.3.1-r1, 4.4-r1, 5.0-r3
Signed-off-by: Sam James <sam <AT> gentoo.org>
media-video/ffmpeg/Manifest | 3 -
media-video/ffmpeg/ffmpeg-4.3.1-r1.ebuild | 551 --------------------
media-video/ffmpeg/ffmpeg-4.4-r1.ebuild | 557 --------------------
media-video/ffmpeg/ffmpeg-5.0-r3.ebuild | 569 ---------------------
.../files/ffmpeg-4.3.1-srt-1.4.2-build.patch | 52 --
5 files changed, 1732 deletions(-)
diff --git a/media-video/ffmpeg/Manifest b/media-video/ffmpeg/Manifest
index 2920ce652142..ed947118622a 100644
--- a/media-video/ffmpeg/Manifest
+++ b/media-video/ffmpeg/Manifest
@@ -1,10 +1,7 @@
DIST ffmpeg-4.2.2-ppc64-altivec.patch.gz 7171 BLAKE2B 6676dadb22d2ab4b0f5c19b418448c5b9b54fd8c803c3f0ab517c6fa7990be08098dd6f6a2b1b3e77a1bed31a069c702366aba79ef9141ff9e23cd8c1b6e2885 SHA512 6653975017de3f7bde420860419fbdddb50ae41dbb811b819f4b5b13807bf885a4c01736f05a684515f97b0d63bd8896d5951a3276af90cc74abfe32dc2e2407
DIST ffmpeg-4.2.2-ppc64-gcc.patch.gz 750 BLAKE2B 3a9cc7f0135e077c77179a7ca3da917bca3995d99d53b58221b23181a075f330132f83ea90a6110e89f90c7c3b5b2a7837559c5df414d9bd52dbb3ec166b1545 SHA512 701b0635e0819484a31de2062ba52d95ee03883ab56547cd75c3646a9b32bf3ecc7f719690b93f29202cfed0fdeecd26b51b9f3c66e72a999a3e8d9e97389275
DIST ffmpeg-4.2.4.tar.bz2 10959430 BLAKE2B 932bc0046edab5587063bbc04d6ef0149876bd1001ad185384fcabb3d0ae196c9ba591e680823b3c7b6e0ef9a0a9e9575a8b08439fdd89ef0e4dabb9d4a7f4e6 SHA512 5c74e3fe77ddf8ffede0e4692d574858dd0626e542380a819ab79c0f669c6c1329ffbccb872502f60306e561f10aa8bc1e61d09b2bea829870fe4a48b76460c6
-DIST ffmpeg-4.3.1.tar.bz2 11301038 BLAKE2B 3b0eb332459921435b60e72f5c572034abf65d4ab79ef4cfae94fe594048eaa37eec47724d119863102a7211c2178f5a2382a6d4016b792818079b8241bde084 SHA512 831a187d8b8f2715a9f11c93c8d3ec126ff579d470797da452d3395178877de113af7ae90ed27fca0b223791ad257972570481e6dbb8361d2b7f3b010924bee8
DIST ffmpeg-4.3.2.tar.bz2 11307134 BLAKE2B 97e1e598e4abe397b06298d545c3073ea2303e11c01e98343fe09d99174e02ca94f52c4df0d389fbefe7814686221446d30f107092f00cb0b69275c8747d6f32 SHA512 ec5566f8684f0ceb18184d59786ea1fc166ab28c46260ebcca5b919ad53137ba7317fd0c537e97df28553572a0d5e42c558773c808cf76995d67985aec2d6d4d
DIST ffmpeg-4.4.1.tar.bz2 11494996 BLAKE2B 050b0501cb21f44451d59bf3b20b18d55234636b5a69a4962103d63f80ce9af172cc2cecb1e33b92334fcf635b283afddbdfa20cbd6deb526008cdb34ae01c16 SHA512 c41e63ffa9f5465ea3a7f4a8b255b299a2f49d5868ada4310a2344b8fea02476365c44871defd5609da55c805cbb58f34063dbdd4b203ade932cba8b3cfefc72
-DIST ffmpeg-4.4.tar.bz2 11489948 BLAKE2B a8dc007e260896228789d27339402e846cd21758e02c7a8d66a745ced2d1bbef4aa9c18c9b7cefef004b5ffa3fc859e2a2474c957bdf9ff27e82cec72ed4a5bf SHA512 212c330f477e9452b9d7873d6d3c452a5c946b6b9c17b01d94c60fda66e61e53b78388ef7686b8d9415a27cd3e05d5f0d6639a02a22467dbf1ed483b5594c80f
DIST ffmpeg-5.0.1.tar.xz 9812524 BLAKE2B 0a37d425780f7e15836848048214411829bceb0de12bb7089803feb3dda07a077be9c8e8174b72792558ed86d92224bee9d4db20cc74690ea54312fbf2f10e83 SHA512 e5810c7379748a6bbe1a903bf36b4372b67cb3973179727b6af6f0118eef46f4c990155961cc37255e08a5bafdc4b4683503ad410ebb7afe7a35b891c01fa602
DIST ffmpeg-5.0.1.tar.xz.asc 520 BLAKE2B 686a8c372d26bd0158a0e79f6cbe8d9c46127bd200df7f4f6e2a4285bfd412cfa9aff865eca125a27a7204f32ba0cca86bcbf769ee4874e5202cc700b0eb4449 SHA512 9c4bd404196c3a3808bae92873aefc77f8c26a9419cc6130a3f2359a75c8e83189d206e9aee8ff85c5a7fe4a98da24e11cf607ec351386c18979ec2d5ad3b3ad
-DIST ffmpeg-5.0.tar.bz2 11821587 BLAKE2B 76abc243707712b7974552cfbd703b5059487ac05b76744dcaacab45924598bffe173b41354a41718a7b5bd0933e71e95a11f9e715b9127b49cc19a88124a3d6 SHA512 2e7f05d3218201869602a32fc473ae55f9b8bc22d2710ebe7523953c27d39cf459e91e34d3b940d8ffe90677b028cea04c5b189775b1718a83b2b73943ba3f61
diff --git a/media-video/ffmpeg/ffmpeg-4.3.1-r1.ebuild b/media-video/ffmpeg/ffmpeg-4.3.1-r1.ebuild
deleted file mode 100644
index 4bed84ce408b..000000000000
--- a/media-video/ffmpeg/ffmpeg-4.3.1-r1.ebuild
+++ /dev/null
@@ -1,551 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# 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.bz2"
-else # Release
- SRC_URI="https://ffmpeg.org/releases/${P/_/-}.tar.bz2"
-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 ~mips ~ppc ppc64 sparc x86 ~amd64-linux ~x86-linux"
-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 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
- 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=(
- amrenc:libvo-amrwbenc mp3:libmp3lame
- kvazaar:libkvazaar libaom
- openh264:libopenh264 rav1e:librav1e snappy:libsnappy theora:libtheora twolame:libtwolame
- wavpack:libwavpack webp:libwebp x264:libx264 x265:libx265 xvid:libxvid
-)
-
-IUSE="
- alsa chromium doc +encode oss pic 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_thumb2 cpu_flags_arm_vfp )
- cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
- cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
- cpu_flags_arm_v6? ( 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}] )
- 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:=[capi] )
- snappy? ( >=app-arch/snappy-1.1.2-r1:=[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- )
- twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
- wavpack? ( >=media-sound/wavpack-4.60.1-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 )
- 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}] )
- 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}] )
- 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[${MULTILIB_USEDEP}] )
- svg? ( gnome-base/librsvg:2=[${MULTILIB_USEDEP}] )
- truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
- vaapi? ( >=x11-libs/libva-1.2.1-r1:0=[${MULTILIB_USEDEP}] )
- nvenc? ( >=media-libs/nv-codec-headers-9.1.23.1[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
- vidstab? ( >=media-libs/vidstab-1.1.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.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}] )
- postproc? ( !media-libs/libpostproc )
-"
-
-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}
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
-"
-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}-4.3-fix-build-without-SSSE3.patch
- "${FILESDIR}"/${PN}-4.3-altivec-novsx-yuv2rgb.patch
- "${FILESDIR}"/${PN}-4.3.1-srt-1.4.2-build.patch
- "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
-)
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-build_separate_libffmpeg() {
- use opencl
-}
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
- default
- echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
-}
-
-multilib_src_configure() {
- local myconf=( )
-
- 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 ; do
- use ${i} || myconf+=( --disable-indev=${i} )
- done
-
- # Outdevs
- for i in alsa oss ; 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 frei0r 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
- is-flagq "-flto*" && myconf+=( "--enable-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
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- *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)
- )
-
- 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_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"
-}
-
-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
-}
diff --git a/media-video/ffmpeg/ffmpeg-4.4-r1.ebuild b/media-video/ffmpeg/ffmpeg-4.4-r1.ebuild
deleted file mode 100644
index 197fd338b64d..000000000000
--- a/media-video/ffmpeg/ffmpeg-4.4-r1.ebuild
+++ /dev/null
@@ -1,557 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# 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.bz2"
-else # Release
- SRC_URI="https://ffmpeg.org/releases/${P/_/-}.tar.bz2"
-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 ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
-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 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
- 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=(
- amrenc:libvo-amrwbenc mp3:libmp3lame
- kvazaar:libkvazaar libaom
- openh264:libopenh264 rav1e:librav1e snappy:libsnappy 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_thumb2 cpu_flags_arm_vfp )
- cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
- cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
- cpu_flags_arm_v6? ( 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}] )
- 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/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${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}] )
- 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[${MULTILIB_USEDEP}] )
- svg? ( gnome-base/librsvg:2=[${MULTILIB_USEDEP}] )
- truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
- vaapi? ( >=x11-libs/libva-1.2.1-r1:0=[${MULTILIB_USEDEP}] )
- nvenc? ( >=media-libs/nv-codec-headers-9.1.23.1[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
- vidstab? ( >=media-libs/vidstab-1.1.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.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}] )
- postproc? ( !media-libs/libpostproc )
-"
-
-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}
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
-"
-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}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
-)
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-build_separate_libffmpeg() {
- use opencl
-}
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
- default
- echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
-}
-
-multilib_src_configure() {
- local myconf=( )
-
- 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
- is-flagq "-flto*" && myconf+=( "--enable-lto" )
- filter-flags "-flto*"
-
- # 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
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- *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)
- )
-
- local extra_libs
- if use arm || use ppc ; then
- # bug #782811
- # bug #790590
- extra_libs+="$(test-flags-CCLD -latomic) "
- fi
-
- 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}" \
- --extra-libs="${extra_libs}" \
- $(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"
-}
diff --git a/media-video/ffmpeg/ffmpeg-5.0-r3.ebuild b/media-video/ffmpeg/ffmpeg-5.0-r3.ebuild
deleted file mode 100644
index f4365662bbad..000000000000
--- a/media-video/ffmpeg/ffmpeg-5.0-r3.ebuild
+++ /dev/null
@@ -1,569 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# 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.bz2"
-else # Release
- SRC_URI="https://ffmpeg.org/releases/${P/_/-}.tar.bz2"
-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 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
-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 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_thumb2 cpu_flags_arm_vfp )
- cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
- cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
- cpu_flags_arm_v6? ( 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.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}] )
- 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}] )
- 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? ( >=x11-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.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}]
- )
- postproc? ( !media-libs/libpostproc )
- 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}
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
-"
-BDEPEND="
- >=sys-devel/make-3.81
- virtual/pkgconfig
- amf? ( media-libs/amf-headers )
- 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}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
-)
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-build_separate_libffmpeg() {
- use opencl
-}
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
-
- eapply "${FILESDIR}/vmaf-models-default-path.patch"
-
- default
- echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
-}
-
-multilib_src_configure() {
- local myconf=( )
-
- 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
- is-flagq "-flto*" && myconf+=( "--enable-lto" )
- filter-flags "-flto*"
-
- # 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
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- *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)
- )
-
- local extra_libs
- if use arm || use ppc || use mips || [[ ${CHOST} == *i486* ]] ; then
- # bug #782811
- # bug #790590
- extra_libs+="$(test-flags-CCLD -latomic) "
- fi
-
- 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}" \
- --extra-libs="${extra_libs}" \
- $(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/files/ffmpeg-4.3.1-srt-1.4.2-build.patch b/media-video/ffmpeg/files/ffmpeg-4.3.1-srt-1.4.2-build.patch
deleted file mode 100644
index 691314cbacb8..000000000000
--- a/media-video/ffmpeg/files/ffmpeg-4.3.1-srt-1.4.2-build.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-http://git.videolan.org/?p=ffmpeg.git;a=patch;h=7c59e1b0f285cd7c7b35fcd71f49c5fd52cf9315
-https://bugs.gentoo.org/756859
-From 7c59e1b0f285cd7c7b35fcd71f49c5fd52cf9315 Mon Sep 17 00:00:00 2001
-From: Jun Zhao <barryjzhao@tencent.com>
-Date: Sun, 12 Jul 2020 13:48:48 +0800
-Subject: [PATCH] lavf/srt: fix build fail when used the libsrt 1.4.1
-
-libsrt changed the:
-SRTO_SMOOTHER -> SRTO_CONGESTION
-SRTO_STRICTENC -> SRTO_ENFORCEDENCRYPTION
-and removed the front of deprecated options (SRTO_SMOOTHER/SRTO_STRICTENC)
-in the header, it's lead to build fail
-
-fix #8760
-
-Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
----
- libavformat/libsrt.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c
-index 4de575b37c..4719ce0d4b 100644
---- a/libavformat/libsrt.c
-+++ b/libavformat/libsrt.c
-@@ -313,8 +313,12 @@ static int libsrt_set_options_pre(URLContext *h, int fd)
- (s->pbkeylen >= 0 && libsrt_setsockopt(h, fd, SRTO_PBKEYLEN, "SRTO_PBKEYLEN", &s->pbkeylen, sizeof(s->pbkeylen)) < 0) ||
- (s->passphrase && libsrt_setsockopt(h, fd, SRTO_PASSPHRASE, "SRTO_PASSPHRASE", s->passphrase, strlen(s->passphrase)) < 0) ||
- #if SRT_VERSION_VALUE >= 0x010302
-+#if SRT_VERSION_VALUE >= 0x010401
-+ (s->enforced_encryption >= 0 && libsrt_setsockopt(h, fd, SRTO_ENFORCEDENCRYPTION, "SRTO_ENFORCEDENCRYPTION", &s->enforced_encryption, sizeof(s->enforced_encryption)) < 0) ||
-+#else
- /* SRTO_STRICTENC == SRTO_ENFORCEDENCRYPTION (53), but for compatibility, we used SRTO_STRICTENC */
- (s->enforced_encryption >= 0 && libsrt_setsockopt(h, fd, SRTO_STRICTENC, "SRTO_STRICTENC", &s->enforced_encryption, sizeof(s->enforced_encryption)) < 0) ||
-+#endif
- (s->kmrefreshrate >= 0 && libsrt_setsockopt(h, fd, SRTO_KMREFRESHRATE, "SRTO_KMREFRESHRATE", &s->kmrefreshrate, sizeof(s->kmrefreshrate)) < 0) ||
- (s->kmpreannounce >= 0 && libsrt_setsockopt(h, fd, SRTO_KMPREANNOUNCE, "SRTO_KMPREANNOUNCE", &s->kmpreannounce, sizeof(s->kmpreannounce)) < 0) ||
- #endif
-@@ -333,7 +337,11 @@ static int libsrt_set_options_pre(URLContext *h, int fd)
- (s->lossmaxttl >= 0 && libsrt_setsockopt(h, fd, SRTO_LOSSMAXTTL, "SRTO_LOSSMAXTTL", &s->lossmaxttl, sizeof(s->lossmaxttl)) < 0) ||
- (s->minversion >= 0 && libsrt_setsockopt(h, fd, SRTO_MINVERSION, "SRTO_MINVERSION", &s->minversion, sizeof(s->minversion)) < 0) ||
- (s->streamid && libsrt_setsockopt(h, fd, SRTO_STREAMID, "SRTO_STREAMID", s->streamid, strlen(s->streamid)) < 0) ||
-+#if SRT_VERSION_VALUE >= 0x010401
-+ (s->smoother && libsrt_setsockopt(h, fd, SRTO_CONGESTION, "SRTO_CONGESTION", s->smoother, strlen(s->smoother)) < 0) ||
-+#else
- (s->smoother && libsrt_setsockopt(h, fd, SRTO_SMOOTHER, "SRTO_SMOOTHER", s->smoother, strlen(s->smoother)) < 0) ||
-+#endif
- (s->messageapi >= 0 && libsrt_setsockopt(h, fd, SRTO_MESSAGEAPI, "SRTO_MESSAGEAPI", &s->messageapi, sizeof(s->messageapi)) < 0) ||
- (s->payload_size >= 0 && libsrt_setsockopt(h, fd, SRTO_PAYLOADSIZE, "SRTO_PAYLOADSIZE", &s->payload_size, sizeof(s->payload_size)) < 0) ||
- ((h->flags & AVIO_FLAG_WRITE) && libsrt_setsockopt(h, fd, SRTO_SENDER, "SRTO_SENDER", &yes, sizeof(yes)) < 0)) {
---
-2.20.1
-
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2022-07-21 2:31 Matt Turner
0 siblings, 0 replies; 22+ messages in thread
From: Matt Turner @ 2022-07-21 2:31 UTC (permalink / raw
To: gentoo-commits
commit: eeca71e786b6fdc384121c61019a13ff77be8f0f
Author: Matt Turner <mattst88 <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 21 02:30:16 2022 +0000
Commit: Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Thu Jul 21 02:30:16 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=eeca71e7
media-video/ffmpeg: Drop old versions
Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>
media-video/ffmpeg/Manifest | 5 -
media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild | 555 --------------------
media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild | 560 --------------------
media-video/ffmpeg/ffmpeg-4.4.1-r5.ebuild | 583 ---------------------
.../files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch | 23 -
.../files/ffmpeg-4.3-fix-build-without-SSSE3.patch | 22 -
6 files changed, 1748 deletions(-)
diff --git a/media-video/ffmpeg/Manifest b/media-video/ffmpeg/Manifest
index 26c660276496..a359d8f1a2cb 100644
--- a/media-video/ffmpeg/Manifest
+++ b/media-video/ffmpeg/Manifest
@@ -1,8 +1,3 @@
-DIST ffmpeg-4.2.2-ppc64-altivec.patch.gz 7171 BLAKE2B 6676dadb22d2ab4b0f5c19b418448c5b9b54fd8c803c3f0ab517c6fa7990be08098dd6f6a2b1b3e77a1bed31a069c702366aba79ef9141ff9e23cd8c1b6e2885 SHA512 6653975017de3f7bde420860419fbdddb50ae41dbb811b819f4b5b13807bf885a4c01736f05a684515f97b0d63bd8896d5951a3276af90cc74abfe32dc2e2407
-DIST ffmpeg-4.2.2-ppc64-gcc.patch.gz 750 BLAKE2B 3a9cc7f0135e077c77179a7ca3da917bca3995d99d53b58221b23181a075f330132f83ea90a6110e89f90c7c3b5b2a7837559c5df414d9bd52dbb3ec166b1545 SHA512 701b0635e0819484a31de2062ba52d95ee03883ab56547cd75c3646a9b32bf3ecc7f719690b93f29202cfed0fdeecd26b51b9f3c66e72a999a3e8d9e97389275
-DIST ffmpeg-4.2.4.tar.bz2 10959430 BLAKE2B 932bc0046edab5587063bbc04d6ef0149876bd1001ad185384fcabb3d0ae196c9ba591e680823b3c7b6e0ef9a0a9e9575a8b08439fdd89ef0e4dabb9d4a7f4e6 SHA512 5c74e3fe77ddf8ffede0e4692d574858dd0626e542380a819ab79c0f669c6c1329ffbccb872502f60306e561f10aa8bc1e61d09b2bea829870fe4a48b76460c6
-DIST ffmpeg-4.3.2.tar.bz2 11307134 BLAKE2B 97e1e598e4abe397b06298d545c3073ea2303e11c01e98343fe09d99174e02ca94f52c4df0d389fbefe7814686221446d30f107092f00cb0b69275c8747d6f32 SHA512 ec5566f8684f0ceb18184d59786ea1fc166ab28c46260ebcca5b919ad53137ba7317fd0c537e97df28553572a0d5e42c558773c808cf76995d67985aec2d6d4d
-DIST ffmpeg-4.4.1.tar.bz2 11494996 BLAKE2B 050b0501cb21f44451d59bf3b20b18d55234636b5a69a4962103d63f80ce9af172cc2cecb1e33b92334fcf635b283afddbdfa20cbd6deb526008cdb34ae01c16 SHA512 c41e63ffa9f5465ea3a7f4a8b255b299a2f49d5868ada4310a2344b8fea02476365c44871defd5609da55c805cbb58f34063dbdd4b203ade932cba8b3cfefc72
DIST ffmpeg-4.4.2.tar.xz 9562968 BLAKE2B be044e9895acdd71a237a343a8d047c56db845c693b8c07877fc8049b630eb254e3430b6e9916330e6b3d53cbdc9f06680d80307a1fea1377bb818f4168bb276 SHA512 abce847c607ac6d63fe32ceff8bf8724888acf2b7db9a083cba50e3235590cdcb27feb7e0a314133d0030809fb54d474f64001fc9ab7d896a819159869c09d5a
DIST ffmpeg-4.4.2.tar.xz.asc 520 BLAKE2B 1ff4a886c7703a05a19499ae5b2b6207df24e05844861cb52f2c56a97f47ab4fefa5011de46a385bab9684964470697ec5e74553098392877f7521a04ffe0fc4 SHA512 a4df97a6328fc076b5611023bd61254f1a5043db1ec2f3426bee305206b2b0937047ede9cb51db31a3387a16218fe95a7a40296770574fa32660118938a9d301
DIST ffmpeg-5.0.1.tar.xz 9812524 BLAKE2B 0a37d425780f7e15836848048214411829bceb0de12bb7089803feb3dda07a077be9c8e8174b72792558ed86d92224bee9d4db20cc74690ea54312fbf2f10e83 SHA512 e5810c7379748a6bbe1a903bf36b4372b67cb3973179727b6af6f0118eef46f4c990155961cc37255e08a5bafdc4b4683503ad410ebb7afe7a35b891c01fa602
diff --git a/media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild b/media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild
deleted file mode 100644
index 82599993e2d5..000000000000
--- a/media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild
+++ /dev/null
@@ -1,555 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# 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.bz2"
-else # Release
- SRC_URI="https://ffmpeg.org/releases/${P/_/-}.tar.bz2
- https://dev.gentoo.org/~gyakovlev/distfiles/${PN}-4.2.2-ppc64-altivec.patch.gz
- https://dev.gentoo.org/~gyakovlev/distfiles/${PN}-4.2.2-ppc64-gcc.patch.gz
- "
-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 ~mips ppc ppc64 sparc x86 ~amd64-linux ~x86-linux"
-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
- 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 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
- 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=(
- amrenc:libvo-amrwbenc mp3:libmp3lame
- kvazaar:libkvazaar libaom
- openh264:libopenh264 snappy:libsnappy theora:libtheora twolame:libtwolame
- wavpack:libwavpack webp:libwebp x264:libx264 x265:libx265 xvid:libxvid
-)
-
-IUSE="
- alsa chromium doc +encode oss pic 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_thumb2 cpu_flags_arm_vfp )
- cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
- cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
- cpu_flags_arm_v6? ( 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}] )
- 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}] )
- snappy? ( >=app-arch/snappy-1.1.2-r1:=[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
- )
- twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
- wavpack? ( >=media-sound/wavpack-4.60.1-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 )
- 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[${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}] )
- 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}] )
- 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[${MULTILIB_USEDEP}] )
- svg? ( gnome-base/librsvg:2=[${MULTILIB_USEDEP}] )
- truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
- vaapi? ( >=x11-libs/libva-1.2.1-r1:0=[${MULTILIB_USEDEP}] )
- nvenc? ( >=media-libs/nv-codec-headers-9.0.18.0[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
- vidstab? ( >=media-libs/vidstab-1.1.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}] )
- 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}] )
- postproc? ( !media-libs/libpostproc )
-"
-
-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}
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
-"
-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 )
- 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
- "${WORKDIR}/${PN}"-4.2.2-ppc64-gcc.patch # both ppc patches from
- "${WORKDIR}/${PN}"-4.2.2-ppc64-altivec.patch # https://trac.ffmpeg.org/ticket/7861
- "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
-)
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-build_separate_libffmpeg() {
- use opencl
-}
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
- default
- echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
-}
-
-multilib_src_configure() {
- local myconf=( ${EXTRA_FFMPEG_CONF} )
-
- # 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 ; do
- use ${i} || myconf+=( --disable-indev=${i} )
- done
-
- # Outdevs
- for i in alsa oss ; 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 frei0r 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
- is-flagq "-flto*" && myconf+=( "--enable-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
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- *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)
- )
-
- 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)" \
- --strip="$(tc-getSTRIP)" \
- --optflags="${CFLAGS}" \
- $(use_enable static-libs static) \
- "${myconf[@]}"
- 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_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"
-}
-
-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
-}
diff --git a/media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild b/media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild
deleted file mode 100644
index 297bd22c24ca..000000000000
--- a/media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild
+++ /dev/null
@@ -1,560 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# 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.bz2"
-else # Release
- SRC_URI="https://ffmpeg.org/releases/${P/_/-}.tar.bz2"
-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 ~mips ppc ppc64 sparc x86 ~amd64-linux ~x86-linux"
-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 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
- 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=(
- amrenc:libvo-amrwbenc mp3:libmp3lame
- kvazaar:libkvazaar libaom
- openh264:libopenh264 rav1e:librav1e snappy:libsnappy 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_thumb2 cpu_flags_arm_vfp )
- cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
- cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
- cpu_flags_arm_v6? ( 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}] )
- 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:=[capi] )
- snappy? ( >=app-arch/snappy-1.1.2-r1:=[${MULTILIB_USEDEP}] )
- theora? (
- >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
- >=media-libs/libogg-1.3.0[${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}] )
- 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[${MULTILIB_USEDEP}] )
- svg? ( gnome-base/librsvg:2=[${MULTILIB_USEDEP}] )
- truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
- vaapi? ( >=x11-libs/libva-1.2.1-r1:0=[${MULTILIB_USEDEP}] )
- nvenc? ( >=media-libs/nv-codec-headers-9.1.23.1[${MULTILIB_USEDEP}] )
- vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
- vidstab? ( >=media-libs/vidstab-1.1.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.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}] )
- postproc? ( !media-libs/libpostproc )
-"
-
-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}
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
-"
-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}-4.3-fix-build-without-SSSE3.patch
- "${FILESDIR}"/${PN}-4.3-altivec-novsx-yuv2rgb.patch
- "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
-)
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-build_separate_libffmpeg() {
- use opencl
-}
-
-src_prepare() {
- if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
- export revision=git-N-${FFMPEG_REVISION}
- fi
- default
- 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
- is-flagq "-flto*" && myconf+=( "--enable-lto" )
- filter-flags "-flto*"
-
- # 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
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- *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)
- )
-
- 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_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"
-}
-
-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
-}
diff --git a/media-video/ffmpeg/ffmpeg-4.4.1-r5.ebuild b/media-video/ffmpeg/ffmpeg-4.4.1-r5.ebuild
deleted file mode 100644
index 6a6818ddac25..000000000000
--- a/media-video/ffmpeg/ffmpeg-4.4.1-r5.ebuild
+++ /dev/null
@@ -1,583 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# 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.bz2"
-else # Release
- SRC_URI="https://ffmpeg.org/releases/${P/_/-}.tar.bz2"
-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 ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
-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 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_thumb2 cpu_flags_arm_vfp )
- cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
- cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
- cpu_flags_arm_v6? ( 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}] )
- 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? ( >=x11-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}]
- )
- postproc? ( !media-libs/libpostproc )
- 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}
- ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
- v4l? ( sys-kernel/linux-headers )
-"
-BDEPEND="
- >=sys-devel/make-3.81
- virtual/pkgconfig
- amf? ( media-libs/amf-headers )
- 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}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
-)
-
-MULTILIB_WRAPPED_HEADERS=(
- /usr/include/libavutil/avconfig.h
-)
-
-build_separate_libffmpeg() {
- use opencl
-}
-
-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
- is-flagq "-flto*" && myconf+=( "--enable-lto" )
- filter-flags "-flto*"
-
- # 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
- *freebsd*)
- myconf+=( --target-os=freebsd )
- ;;
- *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)
- )
-
- local extra_libs
- if use arm || use ppc || use mips || [[ ${CHOST} == *i486* ]] ; then
- # bug #782811
- # bug #790590
- extra_libs+="$(test-flags-CCLD -latomic) "
- fi
-
- 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}" \
- --extra-libs="${extra_libs}" \
- $(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/files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch b/media-video/ffmpeg/files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch
deleted file mode 100644
index 40e7f9161726..000000000000
--- a/media-video/ffmpeg/files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Fixes build on ppc.
-https://trac.ffmpeg.org/attachment/ticket/8750/ffmpeg_altivec_yuv2rgb_novsx.patch
-diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c
-index 536545293d..930ef6b98f 100644
---- a/libswscale/ppc/yuv2rgb_altivec.c
-+++ b/libswscale/ppc/yuv2rgb_altivec.c
-@@ -283,6 +283,16 @@ static inline void cvtyuvtoRGB(SwsContext *c, vector signed short Y,
- * ------------------------------------------------------------------------------
- */
-
-+#if !HAVE_VSX
-+static inline vector unsigned char vec_xl(signed long long offset, const ubyte *addr)
-+{
-+ const vector unsigned char *v_addr = (const vector unsigned char *) (addr + offset);
-+ vector unsigned char align_perm = vec_lvsl(offset, addr);
-+
-+ return (vector unsigned char) vec_perm(v_addr[0], v_addr[1], align_perm);
-+}
-+#endif /* !HAVE_VSX */
-+
- #define DEFCSP420_CVT(name, out_pixels) \
- static int altivec_ ## name(SwsContext *c, const unsigned char **in, \
- int *instrides, int srcSliceY, int srcSliceH, \
diff --git a/media-video/ffmpeg/files/ffmpeg-4.3-fix-build-without-SSSE3.patch b/media-video/ffmpeg/files/ffmpeg-4.3-fix-build-without-SSSE3.patch
deleted file mode 100644
index c3e6733160f6..000000000000
--- a/media-video/ffmpeg/files/ffmpeg-4.3-fix-build-without-SSSE3.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-https://bugs.gentoo.org/728566
-http://ffmpeg.org/pipermail/ffmpeg-devel/2020-February/257474.html
-
---- a/libswscale/x86/yuv2rgb.c
-+++ b/libswscale/x86/yuv2rgb.c
-@@ -83,6 +83,7 @@ av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c)
- #if HAVE_X86ASM
- int cpu_flags = av_get_cpu_flags();
-
-+#if HAVE_SSSE3
- if (EXTERNAL_SSSE3(cpu_flags)) {
- switch (c->dstFormat) {
- case AV_PIX_FMT_RGB32:
-@@ -111,6 +112,7 @@ av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c)
- return yuv420_rgb15_ssse3;
- }
- }
-+#endif
-
- if (EXTERNAL_MMXEXT(cpu_flags)) {
- switch (c->dstFormat) {
-
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2022-07-21 2:53 Matt Turner
0 siblings, 0 replies; 22+ messages in thread
From: Matt Turner @ 2022-07-21 2:53 UTC (permalink / raw
To: gentoo-commits
commit: 2c52b57df8765a1d6a9fadabc6826de0cb701245
Author: Matt Turner <mattst88 <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 21 02:50:35 2022 +0000
Commit: Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Thu Jul 21 02:50:35 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c52b57d
Revert "media-video/ffmpeg: Drop old versions"
This reverts commit eeca71e786b6fdc384121c61019a13ff77be8f0f.
Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>
media-video/ffmpeg/Manifest | 5 +
media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild | 555 ++++++++++++++++++++
media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild | 560 ++++++++++++++++++++
media-video/ffmpeg/ffmpeg-4.4.1-r5.ebuild | 583 +++++++++++++++++++++
.../files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch | 23 +
.../files/ffmpeg-4.3-fix-build-without-SSSE3.patch | 22 +
6 files changed, 1748 insertions(+)
diff --git a/media-video/ffmpeg/Manifest b/media-video/ffmpeg/Manifest
index a359d8f1a2cb..26c660276496 100644
--- a/media-video/ffmpeg/Manifest
+++ b/media-video/ffmpeg/Manifest
@@ -1,3 +1,8 @@
+DIST ffmpeg-4.2.2-ppc64-altivec.patch.gz 7171 BLAKE2B 6676dadb22d2ab4b0f5c19b418448c5b9b54fd8c803c3f0ab517c6fa7990be08098dd6f6a2b1b3e77a1bed31a069c702366aba79ef9141ff9e23cd8c1b6e2885 SHA512 6653975017de3f7bde420860419fbdddb50ae41dbb811b819f4b5b13807bf885a4c01736f05a684515f97b0d63bd8896d5951a3276af90cc74abfe32dc2e2407
+DIST ffmpeg-4.2.2-ppc64-gcc.patch.gz 750 BLAKE2B 3a9cc7f0135e077c77179a7ca3da917bca3995d99d53b58221b23181a075f330132f83ea90a6110e89f90c7c3b5b2a7837559c5df414d9bd52dbb3ec166b1545 SHA512 701b0635e0819484a31de2062ba52d95ee03883ab56547cd75c3646a9b32bf3ecc7f719690b93f29202cfed0fdeecd26b51b9f3c66e72a999a3e8d9e97389275
+DIST ffmpeg-4.2.4.tar.bz2 10959430 BLAKE2B 932bc0046edab5587063bbc04d6ef0149876bd1001ad185384fcabb3d0ae196c9ba591e680823b3c7b6e0ef9a0a9e9575a8b08439fdd89ef0e4dabb9d4a7f4e6 SHA512 5c74e3fe77ddf8ffede0e4692d574858dd0626e542380a819ab79c0f669c6c1329ffbccb872502f60306e561f10aa8bc1e61d09b2bea829870fe4a48b76460c6
+DIST ffmpeg-4.3.2.tar.bz2 11307134 BLAKE2B 97e1e598e4abe397b06298d545c3073ea2303e11c01e98343fe09d99174e02ca94f52c4df0d389fbefe7814686221446d30f107092f00cb0b69275c8747d6f32 SHA512 ec5566f8684f0ceb18184d59786ea1fc166ab28c46260ebcca5b919ad53137ba7317fd0c537e97df28553572a0d5e42c558773c808cf76995d67985aec2d6d4d
+DIST ffmpeg-4.4.1.tar.bz2 11494996 BLAKE2B 050b0501cb21f44451d59bf3b20b18d55234636b5a69a4962103d63f80ce9af172cc2cecb1e33b92334fcf635b283afddbdfa20cbd6deb526008cdb34ae01c16 SHA512 c41e63ffa9f5465ea3a7f4a8b255b299a2f49d5868ada4310a2344b8fea02476365c44871defd5609da55c805cbb58f34063dbdd4b203ade932cba8b3cfefc72
DIST ffmpeg-4.4.2.tar.xz 9562968 BLAKE2B be044e9895acdd71a237a343a8d047c56db845c693b8c07877fc8049b630eb254e3430b6e9916330e6b3d53cbdc9f06680d80307a1fea1377bb818f4168bb276 SHA512 abce847c607ac6d63fe32ceff8bf8724888acf2b7db9a083cba50e3235590cdcb27feb7e0a314133d0030809fb54d474f64001fc9ab7d896a819159869c09d5a
DIST ffmpeg-4.4.2.tar.xz.asc 520 BLAKE2B 1ff4a886c7703a05a19499ae5b2b6207df24e05844861cb52f2c56a97f47ab4fefa5011de46a385bab9684964470697ec5e74553098392877f7521a04ffe0fc4 SHA512 a4df97a6328fc076b5611023bd61254f1a5043db1ec2f3426bee305206b2b0937047ede9cb51db31a3387a16218fe95a7a40296770574fa32660118938a9d301
DIST ffmpeg-5.0.1.tar.xz 9812524 BLAKE2B 0a37d425780f7e15836848048214411829bceb0de12bb7089803feb3dda07a077be9c8e8174b72792558ed86d92224bee9d4db20cc74690ea54312fbf2f10e83 SHA512 e5810c7379748a6bbe1a903bf36b4372b67cb3973179727b6af6f0118eef46f4c990155961cc37255e08a5bafdc4b4683503ad410ebb7afe7a35b891c01fa602
diff --git a/media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild b/media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild
new file mode 100644
index 000000000000..82599993e2d5
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-4.2.4-r1.ebuild
@@ -0,0 +1,555 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# 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.bz2"
+else # Release
+ SRC_URI="https://ffmpeg.org/releases/${P/_/-}.tar.bz2
+ https://dev.gentoo.org/~gyakovlev/distfiles/${PN}-4.2.2-ppc64-altivec.patch.gz
+ https://dev.gentoo.org/~gyakovlev/distfiles/${PN}-4.2.2-ppc64-gcc.patch.gz
+ "
+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 ~mips ppc ppc64 sparc x86 ~amd64-linux ~x86-linux"
+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
+ 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 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
+ 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=(
+ amrenc:libvo-amrwbenc mp3:libmp3lame
+ kvazaar:libkvazaar libaom
+ openh264:libopenh264 snappy:libsnappy theora:libtheora twolame:libtwolame
+ wavpack:libwavpack webp:libwebp x264:libx264 x265:libx265 xvid:libxvid
+)
+
+IUSE="
+ alsa chromium doc +encode oss pic 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_thumb2 cpu_flags_arm_vfp )
+ cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
+ cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
+ cpu_flags_arm_v6? ( 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}] )
+ 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}] )
+ snappy? ( >=app-arch/snappy-1.1.2-r1:=[${MULTILIB_USEDEP}] )
+ theora? (
+ >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
+ >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
+ )
+ twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
+ wavpack? ( >=media-sound/wavpack-4.60.1-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 )
+ 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[${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}] )
+ 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}] )
+ 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[${MULTILIB_USEDEP}] )
+ svg? ( gnome-base/librsvg:2=[${MULTILIB_USEDEP}] )
+ truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
+ vaapi? ( >=x11-libs/libva-1.2.1-r1:0=[${MULTILIB_USEDEP}] )
+ nvenc? ( >=media-libs/nv-codec-headers-9.0.18.0[${MULTILIB_USEDEP}] )
+ vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
+ vidstab? ( >=media-libs/vidstab-1.1.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}] )
+ 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}] )
+ postproc? ( !media-libs/libpostproc )
+"
+
+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}
+ ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
+ v4l? ( sys-kernel/linux-headers )
+"
+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 )
+ 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
+ "${WORKDIR}/${PN}"-4.2.2-ppc64-gcc.patch # both ppc patches from
+ "${WORKDIR}/${PN}"-4.2.2-ppc64-altivec.patch # https://trac.ffmpeg.org/ticket/7861
+ "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
+)
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libavutil/avconfig.h
+)
+
+build_separate_libffmpeg() {
+ use opencl
+}
+
+src_prepare() {
+ if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
+ export revision=git-N-${FFMPEG_REVISION}
+ fi
+ default
+ echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
+}
+
+multilib_src_configure() {
+ local myconf=( ${EXTRA_FFMPEG_CONF} )
+
+ # 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 ; do
+ use ${i} || myconf+=( --disable-indev=${i} )
+ done
+
+ # Outdevs
+ for i in alsa oss ; 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 frei0r 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
+ is-flagq "-flto*" && myconf+=( "--enable-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
+ *freebsd*)
+ myconf+=( --target-os=freebsd )
+ ;;
+ *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)
+ )
+
+ 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)" \
+ --strip="$(tc-getSTRIP)" \
+ --optflags="${CFLAGS}" \
+ $(use_enable static-libs static) \
+ "${myconf[@]}"
+ 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_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"
+}
+
+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
+}
diff --git a/media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild b/media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild
new file mode 100644
index 000000000000..297bd22c24ca
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-4.3.2-r1.ebuild
@@ -0,0 +1,560 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# 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.bz2"
+else # Release
+ SRC_URI="https://ffmpeg.org/releases/${P/_/-}.tar.bz2"
+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 ~mips ppc ppc64 sparc x86 ~amd64-linux ~x86-linux"
+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 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
+ 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=(
+ amrenc:libvo-amrwbenc mp3:libmp3lame
+ kvazaar:libkvazaar libaom
+ openh264:libopenh264 rav1e:librav1e snappy:libsnappy 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_thumb2 cpu_flags_arm_vfp )
+ cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
+ cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
+ cpu_flags_arm_v6? ( 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}] )
+ 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:=[capi] )
+ snappy? ( >=app-arch/snappy-1.1.2-r1:=[${MULTILIB_USEDEP}] )
+ theora? (
+ >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
+ >=media-libs/libogg-1.3.0[${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}] )
+ 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[${MULTILIB_USEDEP}] )
+ svg? ( gnome-base/librsvg:2=[${MULTILIB_USEDEP}] )
+ truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
+ vaapi? ( >=x11-libs/libva-1.2.1-r1:0=[${MULTILIB_USEDEP}] )
+ nvenc? ( >=media-libs/nv-codec-headers-9.1.23.1[${MULTILIB_USEDEP}] )
+ vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
+ vidstab? ( >=media-libs/vidstab-1.1.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.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}] )
+ postproc? ( !media-libs/libpostproc )
+"
+
+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}
+ ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
+ v4l? ( sys-kernel/linux-headers )
+"
+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}-4.3-fix-build-without-SSSE3.patch
+ "${FILESDIR}"/${PN}-4.3-altivec-novsx-yuv2rgb.patch
+ "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
+)
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libavutil/avconfig.h
+)
+
+build_separate_libffmpeg() {
+ use opencl
+}
+
+src_prepare() {
+ if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
+ export revision=git-N-${FFMPEG_REVISION}
+ fi
+ default
+ 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
+ is-flagq "-flto*" && myconf+=( "--enable-lto" )
+ filter-flags "-flto*"
+
+ # 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
+ *freebsd*)
+ myconf+=( --target-os=freebsd )
+ ;;
+ *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)
+ )
+
+ 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_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"
+}
+
+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
+}
diff --git a/media-video/ffmpeg/ffmpeg-4.4.1-r5.ebuild b/media-video/ffmpeg/ffmpeg-4.4.1-r5.ebuild
new file mode 100644
index 000000000000..6a6818ddac25
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-4.4.1-r5.ebuild
@@ -0,0 +1,583 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# 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.bz2"
+else # Release
+ SRC_URI="https://ffmpeg.org/releases/${P/_/-}.tar.bz2"
+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 ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
+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 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_thumb2 cpu_flags_arm_vfp )
+ cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
+ cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
+ cpu_flags_arm_v6? ( 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}] )
+ 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? ( >=x11-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}]
+ )
+ postproc? ( !media-libs/libpostproc )
+ 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}
+ ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
+ v4l? ( sys-kernel/linux-headers )
+"
+BDEPEND="
+ >=sys-devel/make-3.81
+ virtual/pkgconfig
+ amf? ( media-libs/amf-headers )
+ 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}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
+)
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libavutil/avconfig.h
+)
+
+build_separate_libffmpeg() {
+ use opencl
+}
+
+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
+ is-flagq "-flto*" && myconf+=( "--enable-lto" )
+ filter-flags "-flto*"
+
+ # 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
+ *freebsd*)
+ myconf+=( --target-os=freebsd )
+ ;;
+ *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)
+ )
+
+ local extra_libs
+ if use arm || use ppc || use mips || [[ ${CHOST} == *i486* ]] ; then
+ # bug #782811
+ # bug #790590
+ extra_libs+="$(test-flags-CCLD -latomic) "
+ fi
+
+ 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}" \
+ --extra-libs="${extra_libs}" \
+ $(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/files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch b/media-video/ffmpeg/files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch
new file mode 100644
index 000000000000..40e7f9161726
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch
@@ -0,0 +1,23 @@
+Fixes build on ppc.
+https://trac.ffmpeg.org/attachment/ticket/8750/ffmpeg_altivec_yuv2rgb_novsx.patch
+diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c
+index 536545293d..930ef6b98f 100644
+--- a/libswscale/ppc/yuv2rgb_altivec.c
++++ b/libswscale/ppc/yuv2rgb_altivec.c
+@@ -283,6 +283,16 @@ static inline void cvtyuvtoRGB(SwsContext *c, vector signed short Y,
+ * ------------------------------------------------------------------------------
+ */
+
++#if !HAVE_VSX
++static inline vector unsigned char vec_xl(signed long long offset, const ubyte *addr)
++{
++ const vector unsigned char *v_addr = (const vector unsigned char *) (addr + offset);
++ vector unsigned char align_perm = vec_lvsl(offset, addr);
++
++ return (vector unsigned char) vec_perm(v_addr[0], v_addr[1], align_perm);
++}
++#endif /* !HAVE_VSX */
++
+ #define DEFCSP420_CVT(name, out_pixels) \
+ static int altivec_ ## name(SwsContext *c, const unsigned char **in, \
+ int *instrides, int srcSliceY, int srcSliceH, \
diff --git a/media-video/ffmpeg/files/ffmpeg-4.3-fix-build-without-SSSE3.patch b/media-video/ffmpeg/files/ffmpeg-4.3-fix-build-without-SSSE3.patch
new file mode 100644
index 000000000000..c3e6733160f6
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-4.3-fix-build-without-SSSE3.patch
@@ -0,0 +1,22 @@
+https://bugs.gentoo.org/728566
+http://ffmpeg.org/pipermail/ffmpeg-devel/2020-February/257474.html
+
+--- a/libswscale/x86/yuv2rgb.c
++++ b/libswscale/x86/yuv2rgb.c
+@@ -83,6 +83,7 @@ av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c)
+ #if HAVE_X86ASM
+ int cpu_flags = av_get_cpu_flags();
+
++#if HAVE_SSSE3
+ if (EXTERNAL_SSSE3(cpu_flags)) {
+ switch (c->dstFormat) {
+ case AV_PIX_FMT_RGB32:
+@@ -111,6 +112,7 @@ av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c)
+ return yuv420_rgb15_ssse3;
+ }
+ }
++#endif
+
+ if (EXTERNAL_MMXEXT(cpu_flags)) {
+ switch (c->dstFormat) {
+
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2022-08-21 2:39 Sam James
0 siblings, 0 replies; 22+ messages in thread
From: Sam James @ 2022-08-21 2:39 UTC (permalink / raw
To: gentoo-commits
commit: a73ef46b806cc76752ac0f6c3b453452787261bb
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 21 02:39:06 2022 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Aug 21 02:39:06 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a73ef46b
media-video/ffmpeg: fix configure with >=media-libs/libsdl2-2.24.0
ffmpeg needed adaptation to the new libsdl2 versioning scheme.
Signed-off-by: Sam James <sam <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-4.4.2.ebuild | 3 ++-
media-video/ffmpeg/ffmpeg-5.0.1.ebuild | 3 ++-
.../ffmpeg-4.4.2-libsdl2-new-version-scheme.patch | 25 ++++++++++++++++++++++
.../ffmpeg-5.0.1-libsdl2-new-version-scheme.patch | 25 ++++++++++++++++++++++
4 files changed, 54 insertions(+), 2 deletions(-)
diff --git a/media-video/ffmpeg/ffmpeg-4.4.2.ebuild b/media-video/ffmpeg/ffmpeg-4.4.2.ebuild
index 161cb301720b..49985fd883f3 100644
--- a/media-video/ffmpeg/ffmpeg-4.4.2.ebuild
+++ b/media-video/ffmpeg/ffmpeg-4.4.2.ebuild
@@ -332,7 +332,8 @@ S=${WORKDIR}/${P/_/-}
PATCHES=(
"${FILESDIR}"/chromium-r1.patch
- "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
+ "${FILESDIR}"/${PN}-5.0-backport-ranlib-build-fix.patch
+ "${FILESDIR}"/${P}-libsdl2-new-version-scheme.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/ffmpeg-5.0.1.ebuild b/media-video/ffmpeg/ffmpeg-5.0.1.ebuild
index 17f3f4c919f0..09f3d902db11 100644
--- a/media-video/ffmpeg/ffmpeg-5.0.1.ebuild
+++ b/media-video/ffmpeg/ffmpeg-5.0.1.ebuild
@@ -332,7 +332,8 @@ S=${WORKDIR}/${P/_/-}
PATCHES=(
"${FILESDIR}"/chromium-r1.patch
- "${FILESDIR}"/ffmpeg-5.0-backport-ranlib-build-fix.patch
+ "${FILESDIR}"/${PN}-5.0-backport-ranlib-build-fix.patch
+ "${FILESDIR}"/${P}-libsdl2-new-version-scheme.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/files/ffmpeg-4.4.2-libsdl2-new-version-scheme.patch b/media-video/ffmpeg/files/ffmpeg-4.4.2-libsdl2-new-version-scheme.patch
new file mode 100644
index 000000000000..b592c2f9b72d
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-4.4.2-libsdl2-new-version-scheme.patch
@@ -0,0 +1,25 @@
+https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/839f98ff6719cf2db0cbd88cd787a1b19b9cbf47
+
+From: Christopher Degawa <ccom@randomderp.com>
+Date: Wed, 11 May 2022 15:11:04 -0500
+Subject: [PATCH] configure: extend SDL check to accept all 2.x versions
+
+sdl2 recently changed their versioning, moving the patch level to minor level
+https://github.com/libsdl-org/SDL/commit/cd7c2f1de7d9e418bb554047d714dd7cacc020ff
+and have said that they will instead ship sdl3.pc for 3.0.0
+
+Fixes ticket 9768
+
+Signed-off-by: Christopher Degawa <ccom@randomderp.com>
+Signed-off-by: Gyan Doshi <ffmpeg@gyani.pro>
+--- a/configure
++++ b/configure
+@@ -6383,7 +6383,7 @@ fi
+
+ if enabled sdl2; then
+ SDL2_CONFIG="${cross_prefix}sdl2-config"
+- test_pkg_config sdl2 "sdl2 >= 2.0.1 sdl2 < 2.1.0" SDL_events.h SDL_PollEvent
++ test_pkg_config sdl2 "sdl2 >= 2.0.1 sdl2 < 3.0.0" SDL_events.h SDL_PollEvent
+ if disabled sdl2 && "${SDL2_CONFIG}" --version > /dev/null 2>&1; then
+ sdl2_cflags=$("${SDL2_CONFIG}" --cflags)
+ sdl2_extralibs=$("${SDL2_CONFIG}" --libs)
diff --git a/media-video/ffmpeg/files/ffmpeg-5.0.1-libsdl2-new-version-scheme.patch b/media-video/ffmpeg/files/ffmpeg-5.0.1-libsdl2-new-version-scheme.patch
new file mode 100644
index 000000000000..f95ff1cb7065
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-5.0.1-libsdl2-new-version-scheme.patch
@@ -0,0 +1,25 @@
+https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/240d82f26eef10461c8b78b09a0db76c464deea8
+
+From: Christopher Degawa <ccom@randomderp.com>
+Date: Wed, 11 May 2022 15:11:04 -0500
+Subject: [PATCH] configure: extend SDL check to accept all 2.x versions
+
+sdl2 recently changed their versioning, moving the patch level to minor level
+https://github.com/libsdl-org/SDL/commit/cd7c2f1de7d9e418bb554047d714dd7cacc020ff
+and have said that they will instead ship sdl3.pc for 3.0.0
+
+Fixes ticket 9768
+
+Signed-off-by: Christopher Degawa <ccom@randomderp.com>
+Signed-off-by: Gyan Doshi <ffmpeg@gyani.pro>
+--- a/configure
++++ b/configure
+@@ -6739,7 +6739,7 @@ fi
+
+ if enabled sdl2; then
+ SDL2_CONFIG="${cross_prefix}sdl2-config"
+- test_pkg_config sdl2 "sdl2 >= 2.0.1 sdl2 < 2.1.0" SDL_events.h SDL_PollEvent
++ test_pkg_config sdl2 "sdl2 >= 2.0.1 sdl2 < 3.0.0" SDL_events.h SDL_PollEvent
+ if disabled sdl2 && "${SDL2_CONFIG}" --version > /dev/null 2>&1; then
+ sdl2_cflags=$("${SDL2_CONFIG}" --cflags)
+ sdl2_extralibs=$("${SDL2_CONFIG}" --libs)
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2022-10-09 23:10 Sam James
0 siblings, 0 replies; 22+ messages in thread
From: Sam James @ 2022-10-09 23:10 UTC (permalink / raw
To: gentoo-commits
commit: f499582f7119a0485f60e1f2cd741eacc58c0fba
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Oct 9 23:04:21 2022 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Oct 9 23:10:34 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f499582f
media-video/ffmpeg: add 4.4.3
* Drop -latomic workaround added for bug 782811, bug 790590. Fixed
upstream in https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/78062c6d71324fa89708211213b4267d2a57b806.
* Fix UB in ff_seek_frame_binary-crash causing a crash with >= Clang 14.
Might be the issue hit in bug 858806 (seems very likely).
Bug: https://bugs.gentoo.org/782811
Bug: https://bugs.gentoo.org/790590
Closes: https://bugs.gentoo.org/858806
Signed-off-by: Sam James <sam <AT> gentoo.org>
media-video/ffmpeg/Manifest | 2 +
media-video/ffmpeg/ffmpeg-4.4.3.ebuild | 598 +++++++++++++++++++++
...4.4.3-clang-14-ff_seek_frame_binary-crash.patch | 46 ++
3 files changed, 646 insertions(+)
diff --git a/media-video/ffmpeg/Manifest b/media-video/ffmpeg/Manifest
index aff117b1f8d6..6daaad98a109 100644
--- a/media-video/ffmpeg/Manifest
+++ b/media-video/ffmpeg/Manifest
@@ -4,6 +4,8 @@ DIST ffmpeg-4.2.4.tar.bz2 10959430 BLAKE2B 932bc0046edab5587063bbc04d6ef0149876b
DIST ffmpeg-4.2.7.tar.bz2 10966448 BLAKE2B 91151a3ece19700fbc04f304ebad9f34ffce2de19416992ceccf3a347ab58195f746a0ace0a331cc1f34dafd87e4e8c6467268546b417d3f58a1cbbe41662807 SHA512 ab57fc370005d8f33eed2e0f18ac4f418372f47f03d43566c52f9ffc70de27e6ec1ba49faf6e3356fd8a495cff40a8073f8d85a625f6ee21bd7018e19b31734f
DIST ffmpeg-4.4.2.tar.xz 9562968 BLAKE2B be044e9895acdd71a237a343a8d047c56db845c693b8c07877fc8049b630eb254e3430b6e9916330e6b3d53cbdc9f06680d80307a1fea1377bb818f4168bb276 SHA512 abce847c607ac6d63fe32ceff8bf8724888acf2b7db9a083cba50e3235590cdcb27feb7e0a314133d0030809fb54d474f64001fc9ab7d896a819159869c09d5a
DIST ffmpeg-4.4.2.tar.xz.asc 520 BLAKE2B 1ff4a886c7703a05a19499ae5b2b6207df24e05844861cb52f2c56a97f47ab4fefa5011de46a385bab9684964470697ec5e74553098392877f7521a04ffe0fc4 SHA512 a4df97a6328fc076b5611023bd61254f1a5043db1ec2f3426bee305206b2b0937047ede9cb51db31a3387a16218fe95a7a40296770574fa32660118938a9d301
+DIST ffmpeg-4.4.3.tar.xz 9566020 BLAKE2B a8b62a37151173f90821b876cf51e6819eb5519d7fb1f47b55b5f3003cb0e3d18d43c9482d70e32ef2bb6f5c6310260ec2c04ee997aad5ef687d598d838e9bc9 SHA512 0b232b66555237ed1a061807f88dbc5e6cd156e604c5d611bb6ac0c32b9006414cc4f30d632b482d9cb95f526df98b36efa3af9c863c52e7b7aa1a183545d915
+DIST ffmpeg-4.4.3.tar.xz.asc 520 BLAKE2B 999785516beb913d246d5f9de6e189ee644d0dba07f64ac90cbec91961ca181e5d6b95d9e097c362a76b543e3498672b1458edd68c23a86c3123ffc8e6c5ff2b SHA512 347abc8d75f4447296d8f6105b188a187daac158fbd972dc157b8a3597919519c20b8f649b7460df4e9aea249d74c6287e35bc389cc99ae5629490a36b345557
DIST ffmpeg-5.0.1.tar.xz 9812524 BLAKE2B 0a37d425780f7e15836848048214411829bceb0de12bb7089803feb3dda07a077be9c8e8174b72792558ed86d92224bee9d4db20cc74690ea54312fbf2f10e83 SHA512 e5810c7379748a6bbe1a903bf36b4372b67cb3973179727b6af6f0118eef46f4c990155961cc37255e08a5bafdc4b4683503ad410ebb7afe7a35b891c01fa602
DIST ffmpeg-5.0.1.tar.xz.asc 520 BLAKE2B 686a8c372d26bd0158a0e79f6cbe8d9c46127bd200df7f4f6e2a4285bfd412cfa9aff865eca125a27a7204f32ba0cca86bcbf769ee4874e5202cc700b0eb4449 SHA512 9c4bd404196c3a3808bae92873aefc77f8c26a9419cc6130a3f2359a75c8e83189d206e9aee8ff85c5a7fe4a98da24e11cf607ec351386c18979ec2d5ad3b3ad
DIST ffmpeg-5.1.2.tar.xz 10004956 BLAKE2B 4e2682f040205e6344ff1f2cf8ac69c35cac90a14634a2cd4b41fffc0e09264586b014327f7e9cb6417d12210894cdbc180541c07ad02e782bdf79af9f22991f SHA512 04d9ae2a0e9238c469941d2bb9929d59b58f4be3830846cf91b02a440da17803a04b147a4e0168c9ffd6f62ca82187508bc7b53255de9787a97168278e903b9b
diff --git a/media-video/ffmpeg/ffmpeg-4.4.3.ebuild b/media-video/ffmpeg/ffmpeg-4.4.3.ebuild
new file mode 100644
index 000000000000..6d1dcc3ef576
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-4.4.3.ebuild
@@ -0,0 +1,598 @@
+# Copyright 1999-2022 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 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_thumb2 cpu_flags_arm_vfp )
+ cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
+ cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
+ cpu_flags_arm_v6? ( 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}] )
+ 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? ( >=x11-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}]
+ )
+ postproc? ( !media-libs/libpostproc )
+ 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}"/${P}-clang-14-ff_seek_frame_binary-crash.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
+ *freebsd*)
+ myconf+=( --target-os=freebsd )
+ ;;
+ *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)
+ )
+
+ 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}" \
+ --extra-libs="${extra_libs}" \
+ $(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/files/ffmpeg-4.4.3-clang-14-ff_seek_frame_binary-crash.patch b/media-video/ffmpeg/files/ffmpeg-4.4.3-clang-14-ff_seek_frame_binary-crash.patch
new file mode 100644
index 000000000000..c8733ea2382f
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-4.4.3-clang-14-ff_seek_frame_binary-crash.patch
@@ -0,0 +1,46 @@
+https://github.com/FFmpeg/FFmpeg/commit/ab792634197e364ca1bb194f9abe36836e42f12d
+
+(Rebased for 4.4.x in Gentoo.)
+
+From ab792634197e364ca1bb194f9abe36836e42f12d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
+Date: Mon, 18 Oct 2021 12:31:38 +0300
+Subject: [PATCH] seek: Fix crashes in ff_seek_frame_binary if built with
+ latest Clang 14
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Passing an uninitialized variable as argument to a function is
+undefined behaviour (UB). The compiler can assume that UB does not
+happen.
+
+Hence, the compiler can assume that the variables are never
+uninitialized when passed as argument, which means that the codepaths
+that initializes them must be taken.
+
+In ff_seek_frame_binary, this means that the compiler can assume
+that the codepaths that initialize pos_min and pos_max are taken,
+which means that the conditions "if (sti->index_entries)" and
+"if (index >= 0)" can be optimized out.
+
+Current Clang git versions (upcoming Clang 14) enabled an optimization
+that does this, which broke the current version of this function
+(which intentionally left the variables uninitialized, but silencing
+warnings about being uninitialized). See [1] for discussion on
+the matter.
+
+[1] https://reviews.llvm.org/D105169#3069555
+
+Signed-off-by: Martin Storsjö <martin@martin.st>
+--- a/libavformat/utils.c
++++ b/libavformat/utils.c
+@@ -2146,7 +2146,7 @@ int ff_seek_frame_binary(AVFormatContext *s, int stream_index,
+ int64_t target_ts, int flags)
+ {
+ const AVInputFormat *avif = s->iformat;
+- int64_t av_uninit(pos_min), av_uninit(pos_max), pos, pos_limit;
++ int64_t pos_min = 0, pos_max = 0, pos, pos_limit;
+ int64_t ts_min, ts_max, ts;
+ int index;
+ int64_t ret;
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2023-03-14 20:23 Craig Andrews
0 siblings, 0 replies; 22+ messages in thread
From: Craig Andrews @ 2023-03-14 20:23 UTC (permalink / raw
To: gentoo-commits
commit: 60499ecc38f18f53ce65cce6474cbb82d2ac4705
Author: Craig Andrews <candrews <AT> gentoo <DOT> org>
AuthorDate: Tue Mar 14 20:20:54 2023 +0000
Commit: Craig Andrews <candrews <AT> gentoo <DOT> org>
CommitDate: Tue Mar 14 20:22:57 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=60499ecc
media-video/ffmpeg: Fix build failure
DECLARE_ALIGNED has been moved to mem_internal.h.
Bug: https://trac.ffmpeg.org/ticket/10225
Closes: https://bugs.gentoo.org/900951
Signed-off-by: Craig Andrews <candrews <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-6.0.ebuild | 1 +
.../ffmpeg/files/ffmpeg-6.0-DECLARE_ALIGNED.patch | 29 ++++++++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/media-video/ffmpeg/ffmpeg-6.0.ebuild b/media-video/ffmpeg/ffmpeg-6.0.ebuild
index 31684f96890d..5cc3230259b2 100644
--- a/media-video/ffmpeg/ffmpeg-6.0.ebuild
+++ b/media-video/ffmpeg/ffmpeg-6.0.ebuild
@@ -336,6 +336,7 @@ S=${WORKDIR}/${P/_/-}
PATCHES=(
"${FILESDIR}"/chromium-r1.patch
+ "${FILESDIR}/${P}-DECLARE_ALIGNED.patch"
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/files/ffmpeg-6.0-DECLARE_ALIGNED.patch b/media-video/ffmpeg/files/ffmpeg-6.0-DECLARE_ALIGNED.patch
new file mode 100644
index 000000000000..88af1e58458c
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-6.0-DECLARE_ALIGNED.patch
@@ -0,0 +1,29 @@
+From: Zhao Zhili <zhilizhao@tencent.com>
+Date: Tue, 28 Feb 2023 18:23:00 +0000 (+0800)
+Subject: avcodec/aacps_tablegen: fix build error after avutil bump
+X-Git-Url: http://git.videolan.org/?p=ffmpeg.git;a=commitdiff_plain;h=46970dd1555b3e50eee48ec95c893ee9a52f7fab
+
+avcodec/aacps_tablegen: fix build error after avutil bump
+
+Fix tickets #10225
+
+DECLARE_ALIGNED has been moved to mem_internal.h.
+
+Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
+Reviewed-by: Anton Khirnov <anton@khirnov.net>
+(cherry picked from commit 814178f92647be2411516bbb82f48532373d2554)
+---
+
+diff --git a/libavcodec/aacps_tablegen.h b/libavcodec/aacps_tablegen.h
+index 0ac4f68d68..5fdd7f0a9d 100644
+--- a/libavcodec/aacps_tablegen.h
++++ b/libavcodec/aacps_tablegen.h
+@@ -34,7 +34,7 @@
+ #include "libavutil/common.h"
+ #include "libavutil/libm.h"
+ #include "libavutil/mathematics.h"
+-#include "libavutil/mem.h"
++#include "libavutil/mem_internal.h"
+ #define NR_ALLPASS_BANDS20 30
+ #define NR_ALLPASS_BANDS34 50
+ #define PS_AP_LINKS 3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2023-03-15 2:15 Sam James
0 siblings, 0 replies; 22+ messages in thread
From: Sam James @ 2023-03-15 2:15 UTC (permalink / raw
To: gentoo-commits
commit: 60b38d402d8674ea08c9b69cf3147e0b92ab87c2
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 15 02:13:59 2023 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Mar 15 02:14:48 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=60b38d40
media-video/ffmpeg: fix build on register-starved x86
Newer compilers may optimise such that < 7 registers are free on 32-bit x86
and then we get an "invalid asm" error. This is https://bugs.gentoo.org/901099
and https://trac.ffmpeg.org/ticket/8903.
Making matters worse, GCC sometimes hangs on invalid asm, so this also
mitigates a hang with e.g. -O3 -march=znver1. See https://bugs.gentoo.org/900937
and https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109137.
In future, we may want to adjust the definition of HAVE_7REGS to just exclude
32-bit x86, but that's a big sledgehammer, so let's avoid it for now until we have
a reply on the upstream ffmpeg bug.
Thanks to Ninpo.
Bug: https://trac.ffmpeg.org/ticket/8903
Bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109137
Bug: https://bugs.gentoo.org/900937
Closes: https://bugs.gentoo.org/901099
Signed-off-by: Sam James <sam <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-4.4.3.ebuild | 3 ++-
media-video/ffmpeg/ffmpeg-5.1.2-r1.ebuild | 3 ++-
media-video/ffmpeg/ffmpeg-6.0.ebuild | 3 ++-
.../ffmpeg-4.4.3-get_cabac_inline_x86-32-bit.patch | 24 +++++++++++++++++++++
.../ffmpeg-5.1.2-get_cabac_inline_x86-32-bit.patch | 25 ++++++++++++++++++++++
5 files changed, 55 insertions(+), 3 deletions(-)
diff --git a/media-video/ffmpeg/ffmpeg-4.4.3.ebuild b/media-video/ffmpeg/ffmpeg-4.4.3.ebuild
index 3a700cb2f82f..1eaa8af96b91 100644
--- a/media-video/ffmpeg/ffmpeg-4.4.3.ebuild
+++ b/media-video/ffmpeg/ffmpeg-4.4.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -333,6 +333,7 @@ PATCHES=(
"${FILESDIR}"/chromium-r1.patch
"${FILESDIR}"/${PN}-5.0-backport-ranlib-build-fix.patch
"${FILESDIR}"/${P}-clang-14-ff_seek_frame_binary-crash.patch
+ "${FILESDIR}"/${PN}-4.4.3-get_cabac_inline_x86-32-bit.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/ffmpeg-5.1.2-r1.ebuild b/media-video/ffmpeg/ffmpeg-5.1.2-r1.ebuild
index ebfee785a3f4..3d21b79ce2d7 100644
--- a/media-video/ffmpeg/ffmpeg-5.1.2-r1.ebuild
+++ b/media-video/ffmpeg/ffmpeg-5.1.2-r1.ebuild
@@ -336,7 +336,8 @@ S=${WORKDIR}/${P/_/-}
PATCHES=(
"${FILESDIR}"/chromium-r1.patch
- "${FILESDIR}/${P}-vulkan.patch"
+ "${FILESDIR}"/${P}-vulkan.patch
+ "${FILESDIR}"/${PN}-5.1.2-get_cabac_inline_x86-32-bit.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/ffmpeg-6.0.ebuild b/media-video/ffmpeg/ffmpeg-6.0.ebuild
index 5cc3230259b2..eee97981c06f 100644
--- a/media-video/ffmpeg/ffmpeg-6.0.ebuild
+++ b/media-video/ffmpeg/ffmpeg-6.0.ebuild
@@ -336,7 +336,8 @@ S=${WORKDIR}/${P/_/-}
PATCHES=(
"${FILESDIR}"/chromium-r1.patch
- "${FILESDIR}/${P}-DECLARE_ALIGNED.patch"
+ "${FILESDIR}"/${P}-DECLARE_ALIGNED.patch
+ "${FILESDIR}"/${PN}-5.1.2-get_cabac_inline_x86-32-bit.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/files/ffmpeg-4.4.3-get_cabac_inline_x86-32-bit.patch b/media-video/ffmpeg/files/ffmpeg-4.4.3-get_cabac_inline_x86-32-bit.patch
new file mode 100644
index 000000000000..ed273975452d
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-4.4.3-get_cabac_inline_x86-32-bit.patch
@@ -0,0 +1,24 @@
+https://bugs.gentoo.org/901099 and partly https://bugs.gentoo.org/900937.
+
+Newer compilers may optimise such that < 7 registers are free on 32-bit x86
+and then we get an "invalid asm" error. This is https://bugs.gentoo.org/901099
+and https://trac.ffmpeg.org/ticket/8903.
+
+Making matters worse, GCC sometimes hangs on invalid asm, so this also
+mitigates a hang with e.g. -O3 -march=znver1. See https://bugs.gentoo.org/900937
+and https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109137.
+
+In future, we may want to adjust the definition of HAVE_7REGS to just exclude
+32-bit x86, but that's a big sledgehammer, so let's avoid it for now until we have
+a reply on the upstream ffmpeg bug.
+--- a/libavcodec/x86/cabac.h
++++ b/libavcodec/x86/cabac.h
+@@ -175,7 +175,7 @@
+
+ #endif /* BROKEN_RELOCATIONS */
+
+-#if HAVE_7REGS && !BROKEN_COMPILER
++#if HAVE_7REGS && !BROKEN_COMPILER && !ARCH_X86_32
+ #define get_cabac_inline get_cabac_inline_x86
+ static av_always_inline int get_cabac_inline_x86(CABACContext *c,
+ uint8_t *const state)
diff --git a/media-video/ffmpeg/files/ffmpeg-5.1.2-get_cabac_inline_x86-32-bit.patch b/media-video/ffmpeg/files/ffmpeg-5.1.2-get_cabac_inline_x86-32-bit.patch
new file mode 100644
index 000000000000..40db3304b564
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-5.1.2-get_cabac_inline_x86-32-bit.patch
@@ -0,0 +1,25 @@
+https://bugs.gentoo.org/901099 and partly https://bugs.gentoo.org/900937.
+
+Newer compilers may optimise such that < 7 registers are free on 32-bit x86
+and then we get an "invalid asm" error. This is https://bugs.gentoo.org/901099
+and https://trac.ffmpeg.org/ticket/8903.
+
+Making matters worse, GCC sometimes hangs on invalid asm, so this also
+mitigates a hang with e.g. -O3 -march=znver1. See https://bugs.gentoo.org/900937
+and https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109137.
+
+In future, we may want to adjust the definition of HAVE_7REGS to just exclude
+32-bit x86, but that's a big sledgehammer, so let's avoid it for now until we have
+a reply on the upstream ffmpeg bug.
+--- a/libavcodec/x86/cabac.h
++++ b/libavcodec/x86/cabac.h
+@@ -175,7 +175,7 @@
+
+ #endif /* BROKEN_RELOCATIONS */
+
+-#if HAVE_7REGS && !BROKEN_COMPILER
++#if HAVE_7REGS && !BROKEN_COMPILER && !ARCH_X86_32
+ #define get_cabac_inline get_cabac_inline_x86
+ static
+ #if defined(_WIN32) && !defined(_WIN64) && defined(__clang__)
+
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2023-06-07 3:38 Sam James
0 siblings, 0 replies; 22+ messages in thread
From: Sam James @ 2023-06-07 3:38 UTC (permalink / raw
To: gentoo-commits
commit: 57a5e3b63c34414c772452044221be13e63e130a
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 7 03:37:42 2023 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jun 7 03:37:42 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=57a5e3b6
media-video/ffmpeg: backport (more) svt-av1 fixes
Thanks to Kostadin for reporting & bisecting and thanks to BtbN for backporting
the fix upstream for us on the 5.1 branch.
Closes: https://bugs.gentoo.org/907953
Signed-off-by: Sam James <sam <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-5.1.3-r1.ebuild | 601 +++++++++++++++++++++
.../ffmpeg/files/ffmpeg-5.1.3-svt-av1.patch | 67 +++
2 files changed, 668 insertions(+)
diff --git a/media-video/ffmpeg/ffmpeg-5.1.3-r1.ebuild b/media-video/ffmpeg/ffmpeg-5.1.3-r1.ebuild
new file mode 100644
index 000000000000..393198308111
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-5.1.3-r1.ebuild
@@ -0,0 +1,601 @@
+# 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 ~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_thumb2 cpu_flags_arm_vfp )
+ cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
+ cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
+ cpu_flags_arm_v6? ( 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
+ *freebsd*)
+ myconf+=( --target-os=freebsd )
+ ;;
+ *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/files/ffmpeg-5.1.3-svt-av1.patch b/media-video/ffmpeg/files/ffmpeg-5.1.3-svt-av1.patch
new file mode 100644
index 000000000000..fb905f714fa3
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-5.1.3-svt-av1.patch
@@ -0,0 +1,67 @@
+https://git.videolan.org/?p=ffmpeg.git;a=commit;h=8fe2fec45321d1b82f98f9725ad9118cefcfa58d
+https://git.videolan.org/?p=ffmpeg.git;a=commit;h=e5b5dd66535f444451e0fee59247b224d866f334
+
+From 8fe2fec45321d1b82f98f9725ad9118cefcfa58d Mon Sep 17 00:00:00 2001
+From: Christopher Degawa <ccom@randomderp.com>
+Date: Sun, 20 Nov 2022 13:07:36 -0600
+Subject: [PATCH] avcodec/libsvtav1: only set max_buf_sz if both bitrate and
+ rc_buf_sz is set
+
+maximum_buffer_size_ms should only be set if both are specified or if
+the user sets it through -svtav1-params buf-sz=val
+
+Signed-off-by: Christopher Degawa <ccom@randomderp.com>
+--- a/libavcodec/libsvtav1.c
++++ b/libavcodec/libsvtav1.c
+@@ -179,7 +179,8 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
+ param->min_qp_allowed = avctx->qmin;
+ }
+ param->max_bit_rate = avctx->rc_max_rate;
+- param->maximum_buffer_size_ms = avctx->rc_buffer_size * 1000LL / avctx->bit_rate;
++ if (avctx->bit_rate && avctx->rc_buffer_size)
++ param->maximum_buffer_size_ms = avctx->rc_buffer_size * 1000LL / avctx->bit_rate;
+
+ if (svt_enc->crf > 0) {
+ param->qp = svt_enc->crf;
+--
+2.30.2
+
+From e5b5dd66535f444451e0fee59247b224d866f334 Mon Sep 17 00:00:00 2001
+From: =?utf8?q?Jan=20Ekstr=C3=B6m?= <jeebjp@gmail.com>
+Date: Thu, 9 Mar 2023 20:27:06 +0200
+Subject: [PATCH] avcodec/libsvtav1: use larger of bit rate and max rate for
+ buffer size
+
+Generally if maxrate is set, the calculation should be maxrate over
+bufsize. This additionally enables CRF + maxrate & bufsize usage.
+
+In order to keep negative values from enabling zero to be treated
+as larger and causing a division by zero, check that one of the
+variables is larger than zero.
+--- a/libavcodec/libsvtav1.c
++++ b/libavcodec/libsvtav1.c
+@@ -179,8 +179,10 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
+ param->min_qp_allowed = avctx->qmin;
+ }
+ param->max_bit_rate = avctx->rc_max_rate;
+- if (avctx->bit_rate && avctx->rc_buffer_size)
+- param->maximum_buffer_size_ms = avctx->rc_buffer_size * 1000LL / avctx->bit_rate;
++ if ((avctx->bit_rate > 0 || avctx->rc_max_rate > 0) && avctx->rc_buffer_size)
++ param->maximum_buffer_size_ms =
++ avctx->rc_buffer_size * 1000LL /
++ FFMAX(avctx->bit_rate, avctx->rc_max_rate);
+
+ if (svt_enc->crf > 0) {
+ param->qp = svt_enc->crf;
+@@ -297,7 +299,8 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
+ avctx->bit_rate = param->rate_control_mode > 0 ?
+ param->target_bit_rate : 0;
+ avctx->rc_max_rate = param->max_bit_rate;
+- avctx->rc_buffer_size = param->maximum_buffer_size_ms * avctx->bit_rate / 1000LL;
++ avctx->rc_buffer_size = param->maximum_buffer_size_ms *
++ FFMAX(avctx->bit_rate, avctx->rc_max_rate) / 1000LL;
+
+ if (avctx->bit_rate || avctx->rc_max_rate || avctx->rc_buffer_size) {
+ AVCPBProperties *cpb_props = ff_add_cpb_side_data(avctx);
+--
+2.30.2
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2023-07-26 4:08 Sam James
0 siblings, 0 replies; 22+ messages in thread
From: Sam James @ 2023-07-26 4:08 UTC (permalink / raw
To: gentoo-commits
commit: 180b5c780fbc8154bf4be5c69d67ff184cd539c6
Author: Peter Levine <plevine457 <AT> gmail <DOT> com>
AuthorDate: Fri Jul 21 02:54:23 2023 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jul 26 03:49:57 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=180b5c78
media-video/ffmpeg: fix building against libplacebo-6
Backports two commits from master that remove the offending
force_icc_lut field.
Closes: https://bugs.gentoo.org/910406
Closes: https://github.com/gentoo/gentoo/pull/31987
Signed-off-by: Peter Levine <plevine457 <AT> gmail.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-6.0-r4.ebuild | 1 +
...eg-6.0-libplacebo-remove-deprecated-field.patch | 103 +++++++++++++++++++++
2 files changed, 104 insertions(+)
diff --git a/media-video/ffmpeg/ffmpeg-6.0-r4.ebuild b/media-video/ffmpeg/ffmpeg-6.0-r4.ebuild
index d3ce1df53e9f..e4b90e3a7bf4 100644
--- a/media-video/ffmpeg/ffmpeg-6.0-r4.ebuild
+++ b/media-video/ffmpeg/ffmpeg-6.0-r4.ebuild
@@ -344,6 +344,7 @@ PATCHES=(
"${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=(
diff --git a/media-video/ffmpeg/files/ffmpeg-6.0-libplacebo-remove-deprecated-field.patch b/media-video/ffmpeg/files/ffmpeg-6.0-libplacebo-remove-deprecated-field.patch
new file mode 100644
index 000000000000..ca05c1c56ea4
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-6.0-libplacebo-remove-deprecated-field.patch
@@ -0,0 +1,103 @@
+Bug: https://bugs.gentoo.org/910406
+
+Backports the following two commits:
+ https://github.com/FFmpeg/FFmpeg/commit/11eca6018c40f5ebe6af93cbc4b4dce447d8b3bc
+ https://github.com/FFmpeg/FFmpeg/commit/1231003c3c6d4839a9e838d06f8e16ee7690958f
+
+--- a/doc/filters.texi
++++ b/doc/filters.texi
+@@ -16242,9 +16242,6 @@
+ @item disable_builtin
+ Disable built-in GPU sampling (forces LUT).
+
+-@item force_icc_lut
+-Force the use of a full ICC 3DLUT for gamut mapping.
+-
+ @item disable_fbos
+ Forcibly disable FBOs, resulting in loss of almost all functionality, but
+ offering the maximum possible speed.
+--- a/libavfilter/version_major.h
++++ b/libavfilter/version_major.h
+@@ -35,4 +35,6 @@
+ * the public API and may change, break or disappear at any time.
+ */
+
++#define FF_API_LIBPLACEBO_OPTS (LIBAVFILTER_VERSION_MAJOR < 10)
++
+ #endif /* AVFILTER_VERSION_MAJOR_H */
+--- a/libavfilter/vf_libplacebo.c
++++ b/libavfilter/vf_libplacebo.c
+@@ -97,7 +97,6 @@
+ float polar_cutoff;
+ int disable_linear;
+ int disable_builtin;
+- int force_icc_lut;
+ int force_dither;
+ int disable_fbos;
+
+@@ -132,11 +131,15 @@
+ int inverse_tonemapping;
+ float crosstalk;
+ int tonemapping_lut_size;
++
++#if FF_API_LIBPLACEBO_OPTS
+ /* for backwards compatibility */
+ float desat_str;
+ float desat_exp;
+ int gamut_warning;
+ int gamut_clipping;
++ int force_icc_lut;
++#endif
+
+ /* pl_dither_params */
+ int dithering;
+@@ -380,6 +383,7 @@
+ pl_rect2df_aspect_set(&target.crop, aspect, s->pad_crop_ratio);
+ }
+
++#if FF_API_LIBPLACEBO_OPTS
+ /* backwards compatibility with older API */
+ if (!tonemapping_mode && (s->desat_str >= 0.0f || s->desat_exp >= 0.0f)) {
+ float str = s->desat_str < 0.0f ? 0.9f : s->desat_str;
+@@ -397,6 +401,7 @@
+ gamut_mode = PL_GAMUT_WARN;
+ if (s->gamut_clipping)
+ gamut_mode = PL_GAMUT_DESATURATE;
++#endif
+
+ /* Update render params */
+ params = (struct pl_render_params) {
+@@ -458,7 +463,6 @@
+ .polar_cutoff = s->polar_cutoff,
+ .disable_linear_scaling = s->disable_linear,
+ .disable_builtin_scalers = s->disable_builtin,
+- .force_icc_lut = s->force_icc_lut,
+ .force_dither = s->force_dither,
+ .disable_fbos = s->disable_fbos,
+ };
+@@ -818,11 +822,14 @@
+ { "inverse_tonemapping", "Inverse tone mapping (range expansion)", OFFSET(inverse_tonemapping), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC },
+ { "tonemapping_crosstalk", "Crosstalk factor for tone-mapping", OFFSET(crosstalk), AV_OPT_TYPE_FLOAT, {.dbl = 0.04}, 0.0, 0.30, DYNAMIC },
+ { "tonemapping_lut_size", "Tone-mapping LUT size", OFFSET(tonemapping_lut_size), AV_OPT_TYPE_INT, {.i64 = 256}, 2, 1024, DYNAMIC },
++
++#if FF_API_LIBPLACEBO_OPTS
+ /* deprecated options for backwards compatibility, defaulting to -1 to not override the new defaults */
+ { "desaturation_strength", "Desaturation strength", OFFSET(desat_str), AV_OPT_TYPE_FLOAT, {.dbl = -1.0}, -1.0, 1.0, DYNAMIC | AV_OPT_FLAG_DEPRECATED },
+ { "desaturation_exponent", "Desaturation exponent", OFFSET(desat_exp), AV_OPT_TYPE_FLOAT, {.dbl = -1.0}, -1.0, 10.0, DYNAMIC | AV_OPT_FLAG_DEPRECATED },
+ { "gamut_warning", "Highlight out-of-gamut colors", OFFSET(gamut_warning), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC | AV_OPT_FLAG_DEPRECATED },
+ { "gamut_clipping", "Enable colorimetric gamut clipping", OFFSET(gamut_clipping), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC | AV_OPT_FLAG_DEPRECATED },
++#endif
+
+ { "dithering", "Dither method to use", OFFSET(dithering), AV_OPT_TYPE_INT, {.i64 = PL_DITHER_BLUE_NOISE}, -1, PL_DITHER_METHOD_COUNT - 1, DYNAMIC, "dither" },
+ { "none", "Disable dithering", 0, AV_OPT_TYPE_CONST, {.i64 = -1}, 0, 0, STATIC, "dither" },
+@@ -847,7 +854,9 @@
+ { "polar_cutoff", "Polar LUT cutoff", OFFSET(polar_cutoff), AV_OPT_TYPE_FLOAT, {.dbl = 0}, 0.0, 1.0, DYNAMIC },
+ { "disable_linear", "Disable linear scaling", OFFSET(disable_linear), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC },
+ { "disable_builtin", "Disable built-in scalers", OFFSET(disable_builtin), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC },
+- { "force_icc_lut", "Force the use of a full ICC 3DLUT for color mapping", OFFSET(force_icc_lut), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC },
++#if FF_API_LIBPLACEBO_OPTS
++ { "force_icc_lut", "Deprecated, does nothing", OFFSET(force_icc_lut), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC | AV_OPT_FLAG_DEPRECATED },
++#endif
+ { "force_dither", "Force dithering", OFFSET(force_dither), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC },
+ { "disable_fbos", "Force-disable FBOs", OFFSET(disable_fbos), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC },
+ { NULL },
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2023-08-02 8:13 Sam James
0 siblings, 0 replies; 22+ messages in thread
From: Sam James @ 2023-08-02 8:13 UTC (permalink / raw
To: gentoo-commits
commit: 15aad11f0bc671bc81e5e998f19a00d05f1803ac
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 2 08:12:17 2023 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Aug 2 08:12:17 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=15aad11f
media-video/ffmpeg: fix build w/ binutils-2.41
Closes: https://bugs.gentoo.org/911582
Signed-off-by: Sam James <sam <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-5.1.3-r4.ebuild | 604 ++++++++++++++++++++
media-video/ffmpeg/ffmpeg-6.0-r6.ebuild | 605 +++++++++++++++++++++
.../ffmpeg/files/ffmpeg-5.1.3-binutils-2.41.patch | 76 +++
.../ffmpeg/files/ffmpeg-6.0-binutils-2.41.patch | 76 +++
4 files changed, 1361 insertions(+)
diff --git a/media-video/ffmpeg/ffmpeg-5.1.3-r4.ebuild b/media-video/ffmpeg/ffmpeg-5.1.3-r4.ebuild
new file mode 100644
index 000000000000..b6e43feb919a
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-5.1.3-r4.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=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
+ "${FILESDIR}"/${P}-binutils-2.41.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-r6.ebuild b/media-video/ffmpeg/ffmpeg-6.0-r6.ebuild
new file mode 100644
index 000000000000..b62d5e8abe3d
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-6.0-r6.ebuild
@@ -0,0 +1,605 @@
+# 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
+ "${FILESDIR}"/${P}-binutils-2.41.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/files/ffmpeg-5.1.3-binutils-2.41.patch b/media-video/ffmpeg/files/ffmpeg-5.1.3-binutils-2.41.patch
new file mode 100644
index 000000000000..7031d1f02ccf
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-5.1.3-binutils-2.41.patch
@@ -0,0 +1,76 @@
+https://bugs.gentoo.org/911582
+https://trac.ffmpeg.org/ticket/10405
+https://git.videolan.org/?p=ffmpeg.git;a=commit;h=25cd95a9dc3510c3cc0d7aad6f9d83f6a1078c7e
+https://sourceware.org/PR30578
+https://gcc.gnu.org/PR108941
+
+From 25cd95a9dc3510c3cc0d7aad6f9d83f6a1078c7e Mon Sep 17 00:00:00 2001
+From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
+Date: Sun, 16 Jul 2023 18:18:02 +0300
+Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift
+ instructions within inline assembly
+
+Fixes assembling with binutil as >= 2.41
+
+Signed-off-by: James Almer <jamrial@gmail.com>
+(cherry picked from commit effadce6c756247ea8bae32dc13bb3e6f464f0eb)
+--- a/libavcodec/x86/mathops.h
++++ b/libavcodec/x86/mathops.h
+@@ -35,12 +35,20 @@
+ static av_always_inline av_const int MULL(int a, int b, unsigned shift)
+ {
+ int rt, dummy;
++ if (__builtin_constant_p(shift))
+ __asm__ (
+ "imull %3 \n\t"
+ "shrdl %4, %%edx, %%eax \n\t"
+ :"=a"(rt), "=d"(dummy)
+- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
++ :"a"(a), "rm"(b), "i"(shift & 0x1F)
+ );
++ else
++ __asm__ (
++ "imull %3 \n\t"
++ "shrdl %4, %%edx, %%eax \n\t"
++ :"=a"(rt), "=d"(dummy)
++ :"a"(a), "rm"(b), "c"((uint8_t)shift)
++ );
+ return rt;
+ }
+
+@@ -113,19 +121,31 @@ __asm__ volatile(\
+ // avoid +32 for shift optimization (gcc should do that ...)
+ #define NEG_SSR32 NEG_SSR32
+ static inline int32_t NEG_SSR32( int32_t a, int8_t s){
++ if (__builtin_constant_p(s))
+ __asm__ ("sarl %1, %0\n\t"
+ : "+r" (a)
+- : "ic" ((uint8_t)(-s))
++ : "i" (-s & 0x1F)
+ );
++ else
++ __asm__ ("sarl %1, %0\n\t"
++ : "+r" (a)
++ : "c" ((uint8_t)(-s))
++ );
+ return a;
+ }
+
+ #define NEG_USR32 NEG_USR32
+ static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
++ if (__builtin_constant_p(s))
+ __asm__ ("shrl %1, %0\n\t"
+ : "+r" (a)
+- : "ic" ((uint8_t)(-s))
++ : "i" (-s & 0x1F)
+ );
++ else
++ __asm__ ("shrl %1, %0\n\t"
++ : "+r" (a)
++ : "c" ((uint8_t)(-s))
++ );
+ return a;
+ }
+
+--
+2.30.2
diff --git a/media-video/ffmpeg/files/ffmpeg-6.0-binutils-2.41.patch b/media-video/ffmpeg/files/ffmpeg-6.0-binutils-2.41.patch
new file mode 100644
index 000000000000..a06b9119666f
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-6.0-binutils-2.41.patch
@@ -0,0 +1,76 @@
+https://bugs.gentoo.org/911582
+https://trac.ffmpeg.org/ticket/10405
+https://git.videolan.org/?p=ffmpeg.git;a=commit;h=cc703cf60759d9798f440a9417e4efa2fcbe2747
+https://sourceware.org/PR30578
+https://gcc.gnu.org/PR108941
+
+From cc703cf60759d9798f440a9417e4efa2fcbe2747 Mon Sep 17 00:00:00 2001
+From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
+Date: Sun, 16 Jul 2023 18:18:02 +0300
+Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift
+ instructions within inline assembly
+
+Fixes assembling with binutil as >= 2.41
+
+Signed-off-by: James Almer <jamrial@gmail.com>
+(cherry picked from commit effadce6c756247ea8bae32dc13bb3e6f464f0eb)
+--- a/libavcodec/x86/mathops.h
++++ b/libavcodec/x86/mathops.h
+@@ -35,12 +35,20 @@
+ static av_always_inline av_const int MULL(int a, int b, unsigned shift)
+ {
+ int rt, dummy;
++ if (__builtin_constant_p(shift))
+ __asm__ (
+ "imull %3 \n\t"
+ "shrdl %4, %%edx, %%eax \n\t"
+ :"=a"(rt), "=d"(dummy)
+- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
++ :"a"(a), "rm"(b), "i"(shift & 0x1F)
+ );
++ else
++ __asm__ (
++ "imull %3 \n\t"
++ "shrdl %4, %%edx, %%eax \n\t"
++ :"=a"(rt), "=d"(dummy)
++ :"a"(a), "rm"(b), "c"((uint8_t)shift)
++ );
+ return rt;
+ }
+
+@@ -113,19 +121,31 @@ __asm__ volatile(\
+ // avoid +32 for shift optimization (gcc should do that ...)
+ #define NEG_SSR32 NEG_SSR32
+ static inline int32_t NEG_SSR32( int32_t a, int8_t s){
++ if (__builtin_constant_p(s))
+ __asm__ ("sarl %1, %0\n\t"
+ : "+r" (a)
+- : "ic" ((uint8_t)(-s))
++ : "i" (-s & 0x1F)
+ );
++ else
++ __asm__ ("sarl %1, %0\n\t"
++ : "+r" (a)
++ : "c" ((uint8_t)(-s))
++ );
+ return a;
+ }
+
+ #define NEG_USR32 NEG_USR32
+ static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
++ if (__builtin_constant_p(s))
+ __asm__ ("shrl %1, %0\n\t"
+ : "+r" (a)
+- : "ic" ((uint8_t)(-s))
++ : "i" (-s & 0x1F)
+ );
++ else
++ __asm__ ("shrl %1, %0\n\t"
++ : "+r" (a)
++ : "c" ((uint8_t)(-s))
++ );
+ return a;
+ }
+
+--
+2.30.2
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2023-12-03 23:20 James Le Cuirot
0 siblings, 0 replies; 22+ messages in thread
From: James Le Cuirot @ 2023-12-03 23:20 UTC (permalink / raw
To: gentoo-commits
commit: 7f29ab93f0b3a680d39e48dece2bb98149dd8aff
Author: James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 3 23:00:26 2023 +0000
Commit: James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Sun Dec 3 23:20:35 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7f29ab93
media-video/ffmpeg: Make Chromium library useful again for 6.1+
The libffmpeg.so Chromium library hasn't actually been usable with Chromium for
a long time due to a missing symbol. It seems like this symbol will never be
upstreamed, so patch it in here.
Also ensure Opus support is enabled as browsers expect this.
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-6.1.ebuild | 11 +++-----
media-video/ffmpeg/ffmpeg-9999.ebuild | 11 +++-----
media-video/ffmpeg/files/chromium-r2.patch | 41 ++++++++++++++++++++++++++++++
media-video/ffmpeg/files/chromium.c | 8 ++++++
4 files changed, 57 insertions(+), 14 deletions(-)
diff --git a/media-video/ffmpeg/ffmpeg-6.1.ebuild b/media-video/ffmpeg/ffmpeg-6.1.ebuild
index 665e6e7610cb..188eb6e7b762 100644
--- a/media-video/ffmpeg/ffmpeg-6.1.ebuild
+++ b/media-video/ffmpeg/ffmpeg-6.1.ebuild
@@ -334,6 +334,7 @@ GPL_REQUIRED_USE="
)
"
REQUIRED_USE="
+ chromium? ( opus )
cuda? ( nvenc )
fftools_cws2fws? ( zlib )
glslang? ( vulkan !shaderc )
@@ -350,7 +351,7 @@ RESTRICT="
S=${WORKDIR}/${P/_/-}
PATCHES=(
- "${FILESDIR}"/chromium-r1.patch
+ "${FILESDIR}"/chromium-r2.patch
)
MULTILIB_WRAPPED_HEADERS=(
@@ -382,6 +383,7 @@ src_prepare() {
# will ignore user's preference.
sed -i -e '/check_cflags -fdiagnostics-color=auto/d' configure || die
+ ln -snf "${FILESDIR}"/chromium.c chromium.c || die
echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
}
@@ -566,13 +568,8 @@ multilib_src_install() {
fi
done
- if use chromium; then
+ use chromium &&
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
}
diff --git a/media-video/ffmpeg/ffmpeg-9999.ebuild b/media-video/ffmpeg/ffmpeg-9999.ebuild
index 665e6e7610cb..188eb6e7b762 100644
--- a/media-video/ffmpeg/ffmpeg-9999.ebuild
+++ b/media-video/ffmpeg/ffmpeg-9999.ebuild
@@ -334,6 +334,7 @@ GPL_REQUIRED_USE="
)
"
REQUIRED_USE="
+ chromium? ( opus )
cuda? ( nvenc )
fftools_cws2fws? ( zlib )
glslang? ( vulkan !shaderc )
@@ -350,7 +351,7 @@ RESTRICT="
S=${WORKDIR}/${P/_/-}
PATCHES=(
- "${FILESDIR}"/chromium-r1.patch
+ "${FILESDIR}"/chromium-r2.patch
)
MULTILIB_WRAPPED_HEADERS=(
@@ -382,6 +383,7 @@ src_prepare() {
# will ignore user's preference.
sed -i -e '/check_cflags -fdiagnostics-color=auto/d' configure || die
+ ln -snf "${FILESDIR}"/chromium.c chromium.c || die
echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
}
@@ -566,13 +568,8 @@ multilib_src_install() {
fi
done
- if use chromium; then
+ use chromium &&
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
}
diff --git a/media-video/ffmpeg/files/chromium-r2.patch b/media-video/ffmpeg/files/chromium-r2.patch
new file mode 100644
index 000000000000..1de86fe09a1e
--- /dev/null
+++ b/media-video/ffmpeg/files/chromium-r2.patch
@@ -0,0 +1,41 @@
+Allow libffmpeg to be built for Chromium-based browsers
+https://patchwork.ffmpeg.org/patch/4500/
+
+NOTE: This patch lacks the Makefile include line. We append it
+manually instead to make patching across different versions easier.
+
+diff --git a/ffbuild/libffmpeg.mak b/ffbuild/libffmpeg.mak
+new file mode 100644
+index 0000000..992cf3c
+--- /dev/null
++++ b/ffbuild/libffmpeg.mak
+@@ -0,0 +1,27 @@
++LIBFFMPEG = $(SLIBPREF)ffmpeg$(SLIBSUF)
++LIBFFMPEG_LINK = $(LD) -shared -Wl,-soname,$(LIBFFMPEG) -Wl,-Bsymbolic -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--gc-sections $(LDFLAGS) $(LDLIBFLAGS) -o $(LIBFFMPEG)
++
++ifeq ($(CONFIG_SHARED),yes)
++LIBFFMPEG_DEPS = libavcodec/$(SLIBPREF)avcodec$(SLIBSUF) libavformat/$(SLIBPREF)avformat$(SLIBSUF) libavutil/$(SLIBPREF)avutil$(SLIBSUF)
++else
++LIBFFMPEG_DEPS = libavcodec/$(LIBPREF)avcodec$(LIBSUF) libavformat/$(LIBPREF)avformat$(LIBSUF) libavutil/$(LIBPREF)avutil$(LIBSUF) libswresample/$(LIBPREF)swresample$(LIBSUF)
++endif
++
++$(LIBFFMPEG): $(LIBFFMPEG_DEPS) chromium.o
++ifeq ($(CONFIG_SHARED),yes)
++ $(LIBFFMPEG_LINK) -Wl,--no-as-needed chromium.o -lavcodec -lavformat -lavutil
++else
++ $(LIBFFMPEG_LINK) -Wl,--whole-archive $^ -Wl,--no-whole-archive $(EXTRALIBS-avcodec) $(EXTRALIBS-avformat) $(EXTRALIBS-avutil) $(EXTRALIBS-swresample)
++endif
++
++libffmpeg: $(LIBFFMPEG)
++
++install-libffmpeg: $(LIBFFMPEG)
++ $(Q)mkdir -p "$(SHLIBDIR)/chromium"
++ $(INSTALL) -m 755 $< "$(SHLIBDIR)/chromium/$<"
++ $(STRIP) "$(SHLIBDIR)/chromium/$<"
++
++uninstall-libffmpeg:
++ $(RM) "$(SHLIBDIR)/chromium/$(LIBFFMPEG)"
++
++.PHONY: libffmpeg install-libffmpeg uninstall-libffmpeg
+--
+2.13.1
diff --git a/media-video/ffmpeg/files/chromium.c b/media-video/ffmpeg/files/chromium.c
new file mode 100644
index 000000000000..66c2e9f6614f
--- /dev/null
+++ b/media-video/ffmpeg/files/chromium.c
@@ -0,0 +1,8 @@
+#include "libavformat/avformat.h"
+#include "libavformat/internal.h"
+
+int64_t av_stream_get_first_dts(const AVStream *st);
+int64_t av_stream_get_first_dts(const AVStream *st)
+{
+ return cffstream(st)->first_dts;
+}
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2023-12-16 11:26 Sam James
0 siblings, 0 replies; 22+ messages in thread
From: Sam James @ 2023-12-16 11:26 UTC (permalink / raw
To: gentoo-commits
commit: 065f150386f661d27862e152f1613db28aa51d23
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 16 11:25:19 2023 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Dec 16 11:25:41 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=065f1503
media-video/ffmpeg: fix modern C issues
I've sent this upstream but I think it's stuck in the moderation queue.
Closes: https://bugs.gentoo.org/919067
Signed-off-by: Sam James <sam <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-6.1-r2.ebuild | 582 +++++++++++++++++++++
.../ffmpeg/files/ffmpeg-6.1-wint-conversion.patch | 88 ++++
2 files changed, 670 insertions(+)
diff --git a/media-video/ffmpeg/ffmpeg-6.1-r2.ebuild b/media-video/ffmpeg/ffmpeg-6.1-r2.ebuild
new file mode 100644
index 000000000000..22bd618b553c
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-6.1-r2.ebuild
@@ -0,0 +1,582 @@
+# 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=/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 fontconfig frei0r
+ fribidi:libfribidi glslang:libglslang ladspa lcms:lcms2 libass libplacebo
+ libtesseract lv2 rubberband:librubberband shaderc:libshaderc truetype:libfreetype
+ truetype:libharfbuzz vidstab:libvidstab vmaf:libvmaf zeromq:libzmq zimg:libzimg
+ # libswresample options
+ libsoxr
+ # Threads; we only support pthread for now but ffmpeg supports more
+ +threads:pthreads
+)
+
+# Same as above but for encoders, i.e. they do something only with USE=encode.
+FFMPEG_ENCODER_FLAG_MAP=(
+ amf amrenc:libvo-amrwbenc kvazaar:libkvazaar libaom mp3:libmp3lame
+ openh264:libopenh264 rav1e:librav1e snappy:libsnappy svt-av1:libsvtav1
+ theora:libtheora twolame:libtwolame webp:libwebp x264:libx264
+ x265:libx265 xvid:libxvid
+)
+
+IUSE="
+ alsa chromium doc +encode oss pic sndio static-libs test v4l
+ ${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.5.0:0=[${MULTILIB_USEDEP}] )
+ encode? (
+ amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
+ kvazaar? ( >=media-libs/kvazaar-2.0.0[${MULTILIB_USEDEP}] )
+ mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
+ openh264? ( >=media-libs/openh264-1.4.0-r1:=[${MULTILIB_USEDEP}] )
+ rav1e? ( >=media-video/rav1e-0.5:=[capi] )
+ snappy? ( >=app-arch/snappy-1.1.2-r1:=[${MULTILIB_USEDEP}] )
+ theora? (
+ >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
+ >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
+ )
+ twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
+ webp? ( >=media-libs/libwebp-0.3.0:=[${MULTILIB_USEDEP}] )
+ x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )
+ x265? ( >=media-libs/x265-1.6:=[${MULTILIB_USEDEP}] )
+ xvid? ( >=media-libs/xvid-1.3.2-r1[${MULTILIB_USEDEP}] )
+ )
+ fdk? ( >=media-libs/fdk-aac-0.1.3:=[${MULTILIB_USEDEP}] )
+ flite? ( >=app-accessibility/flite-1.4-r4[${MULTILIB_USEDEP}] )
+ fontconfig? ( >=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}] )
+ frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
+ fribidi? ( >=dev-libs/fribidi-0.19.6[${MULTILIB_USEDEP}] )
+ gcrypt? ( >=dev-libs/libgcrypt-1.6:0=[${MULTILIB_USEDEP}] )
+ glslang? ( dev-util/glslang:=[${MULTILIB_USEDEP}] )
+ gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
+ gmp? ( >=dev-libs/gmp-6:0=[${MULTILIB_USEDEP}] )
+ gsm? ( >=media-sound/gsm-1.0.13-r1[${MULTILIB_USEDEP}] )
+ iconv? ( >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] )
+ iec61883? (
+ >=media-libs/libiec61883-1.2.0-r1[${MULTILIB_USEDEP}]
+ >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
+ >=sys-libs/libavc1394-0.5.4-r1[${MULTILIB_USEDEP}]
+ )
+ ieee1394? (
+ >=media-libs/libdc1394-2.2.1:2=[${MULTILIB_USEDEP}]
+ >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
+ )
+ jack? ( virtual/jack[${MULTILIB_USEDEP}] )
+ jpeg2k? ( >=media-libs/openjpeg-2.1:2=[${MULTILIB_USEDEP}] )
+ jpegxl? ( >=media-libs/libjxl-0.7.0[$MULTILIB_USEDEP] )
+ lcms? ( >=media-libs/lcms-2.13:2[$MULTILIB_USEDEP] )
+ libaom? ( >=media-libs/libaom-1.0.0-r1:=[${MULTILIB_USEDEP}] )
+ libaribb24? ( >=media-libs/aribb24-1.0.3-r2[${MULTILIB_USEDEP}] )
+ libass? ( >=media-libs/libass-0.11.0:=[${MULTILIB_USEDEP}] )
+ libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
+ libdrm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
+ libilbc? ( >=media-libs/libilbc-2[${MULTILIB_USEDEP}] )
+ libplacebo? ( >=media-libs/libplacebo-4.192.0:=[$MULTILIB_USEDEP] )
+ librtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
+ libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
+ libtesseract? ( >=app-text/tesseract-4.1.0-r1[${MULTILIB_USEDEP}] )
+ libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
+ libxml2? ( dev-libs/libxml2:=[${MULTILIB_USEDEP}] )
+ lv2? ( media-libs/lv2[${MULTILIB_USEDEP}] media-libs/lilv[${MULTILIB_USEDEP}] )
+ lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
+ mmal? ( media-libs/raspberrypi-userland )
+ modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
+ openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
+ opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
+ opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
+ opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
+ pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
+ qsv? ( media-libs/oneVPL[${MULTILIB_USEDEP}] )
+ rubberband? ( >=media-libs/rubberband-1.8.1-r1[${MULTILIB_USEDEP}] )
+ samba? ( >=net-fs/samba-3.6.23-r1[client,${MULTILIB_USEDEP}] )
+ sdl? ( media-libs/libsdl2[sound,video,${MULTILIB_USEDEP}] )
+ shaderc? ( media-libs/shaderc[${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.6.0:=[sftp,${MULTILIB_USEDEP}] )
+ svg? (
+ gnome-base/librsvg:2=[${MULTILIB_USEDEP}]
+ x11-libs/cairo[${MULTILIB_USEDEP}]
+ )
+ nvenc? ( >=media-libs/nv-codec-headers-11.1.5.3 )
+ svt-av1? ( >=media-libs/svt-av1-0.9.0[${MULTILIB_USEDEP}] )
+ truetype? (
+ >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}]
+ media-libs/harfbuzz:=[${MULTILIB_USEDEP}]
+ )
+ vaapi? ( >=media-libs/libva-1.2.1-r1:0=[${MULTILIB_USEDEP}] )
+ vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
+ vidstab? ( >=media-libs/vidstab-1.1.0[${MULTILIB_USEDEP}] )
+ vmaf? ( >=media-libs/libvmaf-2.0.0[${MULTILIB_USEDEP}] )
+ vorbis? (
+ >=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
+ >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
+ )
+ vpx? ( >=media-libs/libvpx-1.4.0:=[${MULTILIB_USEDEP}] )
+ vulkan? ( >=media-libs/vulkan-loader-1.3.255:=[${MULTILIB_USEDEP}] )
+ X? (
+ >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
+ >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
+ >=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
+ >=x11-libs/libxcb-1.4:=[${MULTILIB_USEDEP}]
+ )
+ zeromq? ( >=net-libs/zeromq-4.2.1:= )
+ zimg? ( >=media-libs/zimg-2.7.4:=[${MULTILIB_USEDEP}] )
+ zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
+ zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="${RDEPEND}
+ openssl? ( >=dev-libs/openssl-1.0.1h-r2:0=[${MULTILIB_USEDEP}] )
+ !openssl? ( gnutls? ( >=net-libs/gnutls-2.12.23-r6:=[${MULTILIB_USEDEP}] ) )
+"
+
+DEPEND="${RDEPEND}
+ amf? ( media-libs/amf-headers )
+ ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
+ v4l? ( sys-kernel/linux-headers )
+ vulkan? ( >=dev-util/vulkan-headers-1.3.255 )
+"
+
+# += for verify-sig above
+BDEPEND+="
+ >=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="
+ chromium? ( opus )
+ cuda? ( nvenc )
+ fftools_cws2fws? ( zlib )
+ glslang? ( vulkan !shaderc )
+ libv4l? ( v4l )
+ shaderc? ( vulkan !glslang )
+ test? ( encode )
+ ${GPL_REQUIRED_USE}
+ ${CPU_REQUIRED_USE}"
+RESTRICT="
+ !test? ( test )
+ gpl? ( openssl? ( bindist ) fdk? ( bindist ) )
+"
+
+S=${WORKDIR}/${P/_/-}
+
+PATCHES=(
+ "${FILESDIR}"/chromium-r2.patch
+ "${FILESDIR}"/${PN}-6.1-wint-conversion.patch
+)
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libavutil/avconfig.h
+)
+
+pkg_setup() {
+ # ffmpeg[chromaprint] depends on chromaprint, and chromaprint[tools] depends on ffmpeg.
+ # May cause breakage while updating, #862996, #625210, #833821.
+ if has_version media-libs/chromaprint[tools] && use chromaprint; then
+ ewarn "You have media-libs/chromaprint installed with 'tools' USE flag, which "
+ ewarn "links to ffmpeg, and you have enabled 'chromaprint' USE flag for ffmpeg, "
+ ewarn "which links to chromaprint. This may cause issues while rebuilding ffmpeg."
+ ewarn ""
+ ewarn "If your build fails to 'ERROR: chromaprint not found', rebuild chromaprint "
+ ewarn "without the 'tools' use flag first, then rebuild ffmpeg, and then finally enable "
+ ewarn "'tools' USE flag for chromaprint. See #862996."
+ fi
+}
+
+src_prepare() {
+ if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
+ export revision=git-N-${FFMPEG_REVISION}
+ fi
+
+ default
+
+ # -fdiagnostics-color=auto gets appended after user flags which
+ # will ignore user's preference.
+ sed -i -e '/check_cflags -fdiagnostics-color=auto/d' configure || die
+
+ ln -snf "${FILESDIR}"/chromium.c chromium.c || die
+ echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
+}
+
+multilib_src_configure() {
+ local myconf=( )
+
+ # 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
+ # Bug #917277, #917278
+ myconf+=( --disable-dotprod --disable-i8mm )
+
+ if use pic ; then
+ myconf+=( --enable-pic )
+ # disable asm code if PIC is required
+ # as the provided asm decidedly is not PIC for x86.
+ [[ ${ABI} == x86 ]] && myconf+=( --disable-asm )
+ fi
+ [[ ${ABI} == x32 ]] && myconf+=( --disable-asm ) #427004
+
+ # Try to get cpu type based on CFLAGS.
+ # Bug #172723
+ # We need to do this so that features of that CPU will be better used
+ # If they contain an unknown CPU it will not hurt since ffmpeg's configure
+ # will just ignore it.
+ for i in $(get-flag mcpu) $(get-flag march) ; do
+ [[ ${i} = native ]] && i="host" # bug #273421
+ myconf+=( --cpu=${i} )
+ break
+ done
+
+ # LTO support, bug #566282, bug #754654, bug #772854
+ if [[ ${ABI} != x86 ]] && is-flagq "-flto*"; then
+ # Respect -flto value, e.g -flto=thin
+ local v="$(get-flag flto)"
+ [[ -n ${v} ]] && myconf+=( "--enable-lto=${v}" ) || myconf+=( "--enable-lto" )
+ fi
+ filter-lto
+
+ # Mandatory configuration
+ myconf=(
+ --disable-libaribcaption # libaribcaption is not packaged (yet?)
+ --enable-avfilter
+ --disable-stripping
+ # This is only for hardcoded cflags; those are used in configure checks that may
+ # interfere with proper detections, bug #671746 and bug #645778
+ # We use optflags, so that overrides them anyway.
+ --disable-optimizations
+ --disable-libcelt # bug #664158
+ "${myconf[@]}"
+ )
+
+ # cross compile support
+ if tc-is-cross-compiler ; then
+ myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- --host-cc="$(tc-getBUILD_CC)" )
+ case ${CHOST} in
+ *mingw32*)
+ myconf+=( --target-os=mingw32 )
+ ;;
+ *linux*)
+ myconf+=( --target-os=linux )
+ ;;
+ esac
+ fi
+
+ # doc
+ myconf+=(
+ $(multilib_native_use_enable doc)
+ $(multilib_native_use_enable doc htmlpages)
+ $(multilib_native_enable manpages)
+ )
+
+ # Use --extra-libs if needed for LIBS
+ set -- "${S}/configure" \
+ --prefix="${EPREFIX}/usr" \
+ --libdir="${EPREFIX}/usr/$(get_libdir)" \
+ --shlibdir="${EPREFIX}/usr/$(get_libdir)" \
+ --docdir="${EPREFIX}/usr/share/doc/${PF}/html" \
+ --mandir="${EPREFIX}/usr/share/man" \
+ --enable-shared \
+ --cc="$(tc-getCC)" \
+ --cxx="$(tc-getCXX)" \
+ --ar="$(tc-getAR)" \
+ --nm="$(tc-getNM)" \
+ --strip="$(tc-getSTRIP)" \
+ --ranlib="$(tc-getRANLIB)" \
+ --pkg-config="$(tc-getPKG_CONFIG)" \
+ --optflags="${CFLAGS}" \
+ $(use_enable static-libs static) \
+ "${myconf[@]}" \
+ ${EXTRA_FFMPEG_CONF}
+ echo "${@}"
+ "${@}" || die
+}
+
+multilib_src_compile() {
+ emake V=1
+
+ if multilib_is_native_abi; then
+ for i in "${FFTOOLS[@]}" ; do
+ if use fftools_${i} ; then
+ emake V=1 tools/${i}$(get_exeext)
+ fi
+ done
+
+ use chromium &&
+ emake V=1 libffmpeg
+ fi
+}
+
+multilib_src_test() {
+ LD_LIBRARY_PATH="${BUILD_DIR}/libpostproc:${BUILD_DIR}/libswscale:${BUILD_DIR}/libswresample:${BUILD_DIR}/libavcodec:${BUILD_DIR}/libavdevice:${BUILD_DIR}/libavfilter:${BUILD_DIR}/libavformat:${BUILD_DIR}/libavutil" \
+ emake V=1 fate -k
+}
+
+multilib_src_install() {
+ emake V=1 DESTDIR="${D}" install install-doc
+
+ if multilib_is_native_abi; then
+ for i in "${FFTOOLS[@]}" ; do
+ if use fftools_${i} ; then
+ dobin tools/${i}$(get_exeext)
+ fi
+ done
+
+ use chromium &&
+ emake V=1 DESTDIR="${D}" install-libffmpeg
+ fi
+}
+
+multilib_src_install_all() {
+ dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
+ [ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
+
+ use amf && newenvd "${FILESDIR}"/amf-env-vulkan-override 99amf-env-vulkan-override
+}
diff --git a/media-video/ffmpeg/files/ffmpeg-6.1-wint-conversion.patch b/media-video/ffmpeg/files/ffmpeg-6.1-wint-conversion.patch
new file mode 100644
index 000000000000..c95566117903
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-6.1-wint-conversion.patch
@@ -0,0 +1,88 @@
+Sent upstream to the mailing list but stuck in moderation queue / not yet on archive.
+
+From 50f34826bcff90f393dfbc6c4e0c908556831d4d Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Wed, 13 Dec 2023 04:25:54 +0000
+Subject: [PATCH] libavcodec: fix -Wint-conversion in vulkan
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+FIx warnings (soon to be errors in GCC 14, already so in Clang 15):
+```
+src/libavcodec/vulkan_av1.c: In function ‘vk_av1_create_params’:
+src/libavcodec/vulkan_av1.c:183:43: error: initialization of ‘long long unsigned int’ from ‘void *’ makes integer from pointer without a cast [-Wint-conversion]
+ 183 | .videoSessionParametersTemplate = NULL,
+ | ^~~~
+src/libavcodec/vulkan_av1.c:183:43: note: (near initialization for ‘(anonymous).videoSessionParametersTemplate’)
+```
+
+Use Vulkan's VK_NULL_HANDLE instead of bare NULL.
+
+Fix Trac ticket #10724.
+
+Was reported downstream in Gentoo at https://bugs.gentoo.org/919067.
+
+Signed-off-by: Sam James <sam@gentoo.org>
+--- a/libavcodec/vulkan_av1.c
++++ b/libavcodec/vulkan_av1.c
+@@ -180,7 +180,7 @@ static int vk_av1_create_params(AVCodecContext *avctx, AVBufferRef **buf)
+ .sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
+ .pNext = &av1_params,
+ .videoSession = ctx->common.session,
+- .videoSessionParametersTemplate = NULL,
++ .videoSessionParametersTemplate = VK_NULL_HANDLE,
+ };
+
+ err = ff_vk_decode_create_params(buf, avctx, ctx, &session_params_create);
+--- a/libavcodec/vulkan_decode.c
++++ b/libavcodec/vulkan_decode.c
+@@ -188,9 +188,9 @@ int ff_vk_decode_prepare_frame(FFVulkanDecodeContext *dec, AVFrame *pic,
+ return 0;
+
+ vkpic->dpb_frame = NULL;
+- vkpic->img_view_ref = NULL;
+- vkpic->img_view_out = NULL;
+- vkpic->img_view_dest = NULL;
++ vkpic->img_view_ref = VK_NULL_HANDLE;
++ vkpic->img_view_out = VK_NULL_HANDLE;
++ vkpic->img_view_dest = VK_NULL_HANDLE;
+
+ vkpic->destroy_image_view = vk->DestroyImageView;
+ vkpic->wait_semaphores = vk->WaitSemaphores;
+--- a/libavcodec/vulkan_h264.c
++++ b/libavcodec/vulkan_h264.c
+@@ -315,7 +315,7 @@ static int vk_h264_create_params(AVCodecContext *avctx, AVBufferRef **buf)
+ .sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
+ .pNext = &h264_params,
+ .videoSession = ctx->common.session,
+- .videoSessionParametersTemplate = NULL,
++ .videoSessionParametersTemplate = VK_NULL_HANDLE,
+ };
+
+ /* SPS list */
+--- a/libavcodec/vulkan_hevc.c
++++ b/libavcodec/vulkan_hevc.c
+@@ -653,7 +653,7 @@ static int vk_hevc_create_params(AVCodecContext *avctx, AVBufferRef **buf)
+ .sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
+ .pNext = &h265_params,
+ .videoSession = ctx->common.session,
+- .videoSessionParametersTemplate = NULL,
++ .videoSessionParametersTemplate = VK_NULL_HANDLE,
+ };
+
+ HEVCHeaderSet *hdr;
+--- a/libavcodec/vulkan_video.c
++++ b/libavcodec/vulkan_video.c
+@@ -287,7 +287,7 @@ av_cold void ff_vk_video_common_uninit(FFVulkanContext *s,
+ if (common->session) {
+ vk->DestroyVideoSessionKHR(s->hwctx->act_dev, common->session,
+ s->hwctx->alloc);
+- common->session = NULL;
++ common->session = VK_NULL_HANDLE;
+ }
+
+ if (common->nb_mem && common->mem)
+--
+2.43.0
+
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2024-07-03 0:37 Sam James
0 siblings, 0 replies; 22+ messages in thread
From: Sam James @ 2024-07-03 0:37 UTC (permalink / raw
To: gentoo-commits
commit: 30a975a77cc37ac5678880eb8d1b6255fe270a88
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 3 00:35:44 2024 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jul 3 00:35:44 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=30a975a7
media-video/ffmpeg: fix another modern C issue
Closes: https://bugs.gentoo.org/935377
Closes: https://bugs.gentoo.org/935046
Signed-off-by: Sam James <sam <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-6.1.1-r7.ebuild | 622 +++++++++++++++++++++
.../ffmpeg-6.1.1-wint-inconversion-libgcrypt.patch | 68 +++
2 files changed, 690 insertions(+)
diff --git a/media-video/ffmpeg/ffmpeg-6.1.1-r7.ebuild b/media-video/ffmpeg/ffmpeg-6.1.1-r7.ebuild
new file mode 100644
index 000000000000..a25bc7572607
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-6.1.1-r7.ebuild
@@ -0,0 +1,622 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Subslot: libavutil major.libavcodec major.libavformat major
+# Since FFmpeg ships several libraries, subslot is kind of limited here.
+# Most consumers will use those three libraries, if a "less used" library
+# changes its soname, consumers will have to be rebuilt the old way
+# (preserve-libs).
+# If, for example, a package does not link to libavformat and only libavformat
+# changes its ABI then this package will be rebuilt needlessly. Hence, such a
+# package is free _not_ to := depend on FFmpeg but I would strongly encourage
+# doing so since such a case is unlikely.
+FFMPEG_SUBSLOT=58.60.60
+
+SOC_PATCH="ffmpeg-rpi-6.1-r3.patch"
+
+SCM=""
+if [ "${PV#9999}" != "${PV}" ] ; then
+ SCM="git-r3"
+ EGIT_MIN_CLONE_TYPE="single"
+ EGIT_REPO_URI="https://git.ffmpeg.org/ffmpeg.git"
+fi
+
+inherit flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
+
+DESCRIPTION="Complete solution to record/convert/stream audio and video. Includes libavcodec"
+HOMEPAGE="https://ffmpeg.org/"
+SRC_URI="soc? ( https://dev.gentoo.org/~chewi/distfiles/${SOC_PATCH} )"
+if [ "${PV#9999}" != "${PV}" ] ; then
+ :
+elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
+ SRC_URI+=" mirror://gentoo/${P}.tar.xz"
+else # Release
+ inherit verify-sig
+
+ SRC_URI+="
+ https://ffmpeg.org/releases/${P/_/-}.tar.xz
+ verify-sig? (
+ https://ffmpeg.org/releases/${P/_/-}.tar.xz.asc
+ soc? ( https://dev.gentoo.org/~chewi/distfiles/${SOC_PATCH}.asc )
+ )
+ "
+
+ BDEPEND="
+ verify-sig? (
+ sec-keys/openpgp-keys-ffmpeg
+ soc? ( sec-keys/openpgp-keys-gentoo-developers )
+ )
+ "
+
+ src_unpack() {
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/${P/_/-}.tar.xz{,.asc} /usr/share/openpgp-keys/ffmpeg.asc
+ use soc && verify-sig_verify_detached "${DISTDIR}"/${SOC_PATCH}{,.asc} /usr/share/openpgp-keys/gentoo-developers.asc
+ fi
+ default
+ }
+fi
+FFMPEG_REVISION="${PV#*_p}"
+
+SLOT="0/${FFMPEG_SUBSLOT}"
+LICENSE="
+ !gpl? ( LGPL-2.1 )
+ gpl? ( GPL-2 )
+ amr? (
+ gpl? ( GPL-3 )
+ !gpl? ( LGPL-3 )
+ )
+ gmp? (
+ gpl? ( GPL-3 )
+ !gpl? ( LGPL-3 )
+ )
+ libaribb24? (
+ gpl? ( GPL-3 )
+ !gpl? ( LGPL-3 )
+ )
+ encode? (
+ amrenc? (
+ gpl? ( GPL-3 )
+ !gpl? ( LGPL-3 )
+ )
+ )
+ samba? ( GPL-3 )
+"
+if [ "${PV#9999}" = "${PV}" ] ; then
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+fi
+
+# Options to use as use_enable in the foo[:bar] form.
+# This will feed configure with $(use_enable foo bar)
+# or $(use_enable foo foo) if no :bar is set.
+# foo is added to IUSE.
+FFMPEG_FLAG_MAP=(
+ +bzip2:bzlib cpudetection:runtime-cpudetect debug gcrypt +gnutls gmp
+ +gpl hardcoded-tables +iconv libxml2 lzma +network opencl
+ openssl +postproc samba:libsmbclient sdl:ffplay sdl:sdl2 vaapi vdpau vulkan
+ X:xlib X:libxcb X:libxcb-shm X:libxcb-xfixes +zlib
+ # libavdevice options
+ cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal
+ opengl
+ # indevs
+ libv4l:libv4l2 pulseaudio:libpulse libdrm jack:libjack
+ # decoders
+ amr:libopencore-amrwb amr:libopencore-amrnb codec2:libcodec2 +dav1d:libdav1d fdk:libfdk-aac
+ jpeg2k:libopenjpeg jpegxl:libjxl bluray:libbluray gme:libgme gsm:libgsm
+ libaribb24 modplug:libmodplug opus:libopus qsv:libvpl libilbc librtmp ssh:libssh
+ speex:libspeex srt:libsrt svg:librsvg nvenc:ffnvcodec
+ vorbis:libvorbis vpx:libvpx zvbi:libzvbi
+ # libavfilter options
+ appkit
+ bs2b:libbs2b chromaprint cuda:cuda-llvm flite:libflite fontconfig frei0r
+ fribidi:libfribidi glslang:libglslang ladspa lcms:lcms2 libass libplacebo
+ libtesseract lv2 rubberband:librubberband shaderc:libshaderc truetype:libfreetype
+ truetype:libharfbuzz vidstab:libvidstab vmaf:libvmaf zeromq:libzmq zimg:libzimg
+ # libswresample options
+ libsoxr
+ # Threads; we only support pthread for now but ffmpeg supports more
+ +threads:pthreads
+)
+
+# Same as above but for encoders, i.e. they do something only with USE=encode.
+FFMPEG_ENCODER_FLAG_MAP=(
+ amf amrenc:libvo-amrwbenc kvazaar:libkvazaar libaom mp3:libmp3lame
+ openh264:libopenh264 rav1e:librav1e snappy:libsnappy svt-av1:libsvtav1
+ theora:libtheora twolame:libtwolame webp:libwebp x264:libx264
+ x265:libx265 xvid:libxvid
+)
+
+IUSE="
+ alsa chromium doc +encode oss +pic sndio static-libs test v4l soc
+ ${FFMPEG_FLAG_MAP[@]%:*}
+ ${FFMPEG_ENCODER_FLAG_MAP[@]%:*}
+"
+
+# Strings for CPU features in the useflag[:configure_option] form
+# if :configure_option isn't set, it will use 'useflag' as configure option
+ARM_CPU_FEATURES=(
+ cpu_flags_arm_thumb:armv5te
+ cpu_flags_arm_v6:armv6
+ cpu_flags_arm_thumb2:armv6t2
+ cpu_flags_arm_neon:neon
+ cpu_flags_arm_vfp:vfp
+ cpu_flags_arm_vfpv3:vfpv3
+ cpu_flags_arm_v8:armv8
+ cpu_flags_arm_asimddp:dotprod
+ cpu_flags_arm_i8mm:i8mm
+)
+ARM_CPU_REQUIRED_USE="
+ arm64? ( cpu_flags_arm_v8 )
+ cpu_flags_arm_v8? ( cpu_flags_arm_vfpv3 cpu_flags_arm_neon )
+ cpu_flags_arm_neon? (
+ cpu_flags_arm_vfp
+ arm? ( cpu_flags_arm_thumb2 )
+ )
+ cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp )
+ cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 )
+ cpu_flags_arm_v6? (
+ arm? ( cpu_flags_arm_thumb )
+ )
+"
+MIPS_CPU_FEATURES=( mipsdspr1:mipsdsp mipsdspr2 mipsfpu )
+PPC_CPU_FEATURES=( cpu_flags_ppc_altivec:altivec cpu_flags_ppc_vsx:vsx cpu_flags_ppc_vsx2:power8 )
+PPC_CPU_REQUIRED_USE="
+ cpu_flags_ppc_vsx? ( cpu_flags_ppc_altivec )
+ cpu_flags_ppc_vsx2? ( cpu_flags_ppc_vsx )
+"
+X86_CPU_FEATURES_RAW=( 3dnow:amd3dnow 3dnowext:amd3dnowext aes:aesni avx:avx avx2:avx2 fma3:fma3 fma4:fma4 mmx:mmx
+ mmxext:mmxext sse:sse sse2:sse2 sse3:sse3 ssse3:ssse3 sse4_1:sse4 sse4_2:sse42 xop:xop )
+X86_CPU_FEATURES=( ${X86_CPU_FEATURES_RAW[@]/#/cpu_flags_x86_} )
+X86_CPU_REQUIRED_USE="
+ cpu_flags_x86_avx2? ( cpu_flags_x86_avx )
+ cpu_flags_x86_fma4? ( cpu_flags_x86_avx )
+ cpu_flags_x86_fma3? ( cpu_flags_x86_avx )
+ cpu_flags_x86_xop? ( cpu_flags_x86_avx )
+ cpu_flags_x86_avx? ( cpu_flags_x86_sse4_2 )
+ cpu_flags_x86_aes? ( cpu_flags_x86_sse4_2 )
+ cpu_flags_x86_sse4_2? ( cpu_flags_x86_sse4_1 )
+ cpu_flags_x86_sse4_1? ( cpu_flags_x86_ssse3 )
+ cpu_flags_x86_ssse3? ( cpu_flags_x86_sse3 )
+ cpu_flags_x86_sse3? ( cpu_flags_x86_sse2 )
+ cpu_flags_x86_sse2? ( cpu_flags_x86_sse )
+ cpu_flags_x86_sse? ( cpu_flags_x86_mmxext )
+ cpu_flags_x86_mmxext? ( cpu_flags_x86_mmx )
+ cpu_flags_x86_3dnowext? ( cpu_flags_x86_3dnow )
+ cpu_flags_x86_3dnow? ( cpu_flags_x86_mmx )
+"
+
+CPU_FEATURES_MAP=(
+ ${ARM_CPU_FEATURES[@]}
+ ${MIPS_CPU_FEATURES[@]}
+ ${PPC_CPU_FEATURES[@]}
+ ${X86_CPU_FEATURES[@]}
+)
+IUSE="${IUSE}
+ ${CPU_FEATURES_MAP[@]%:*}"
+
+CPU_REQUIRED_USE="
+ ${ARM_CPU_REQUIRED_USE}
+ ${PPC_CPU_REQUIRED_USE}
+ ${X86_CPU_REQUIRED_USE}
+"
+
+FFTOOLS=( aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt
+ graph2dot ismindex pktdumper qt-faststart sidxindex trasher )
+IUSE="${IUSE} ${FFTOOLS[@]/#/+fftools_}"
+
+RDEPEND="
+ alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
+ amf? ( media-video/amdgpu-pro-amf:= )
+ amr? ( >=media-libs/opencore-amr-0.1.3-r1[${MULTILIB_USEDEP}] )
+ bluray? ( >=media-libs/libbluray-0.3.0-r1:=[${MULTILIB_USEDEP}] )
+ bs2b? ( >=media-libs/libbs2b-3.1.0-r1[${MULTILIB_USEDEP}] )
+ bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
+ cdio? ( >=dev-libs/libcdio-paranoia-0.90_p1-r1[${MULTILIB_USEDEP}] )
+ chromaprint? ( >=media-libs/chromaprint-1.2-r1[${MULTILIB_USEDEP}] )
+ codec2? ( media-libs/codec2[${MULTILIB_USEDEP}] )
+ dav1d? ( >=media-libs/dav1d-0.5.0:0=[${MULTILIB_USEDEP}] )
+ encode? (
+ amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
+ kvazaar? ( >=media-libs/kvazaar-2.0.0[${MULTILIB_USEDEP}] )
+ mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
+ openh264? ( >=media-libs/openh264-1.4.0-r1:=[${MULTILIB_USEDEP}] )
+ rav1e? ( >=media-video/rav1e-0.5:=[capi] )
+ snappy? ( >=app-arch/snappy-1.1.2-r1:=[${MULTILIB_USEDEP}] )
+ theora? (
+ >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
+ >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
+ )
+ twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
+ webp? ( >=media-libs/libwebp-0.3.0:=[${MULTILIB_USEDEP}] )
+ x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )
+ x265? ( >=media-libs/x265-1.6:=[${MULTILIB_USEDEP}] )
+ xvid? ( >=media-libs/xvid-1.3.2-r1[${MULTILIB_USEDEP}] )
+ )
+ fdk? ( >=media-libs/fdk-aac-0.1.3:=[${MULTILIB_USEDEP}] )
+ flite? ( >=app-accessibility/flite-1.4-r4[${MULTILIB_USEDEP}] )
+ fontconfig? ( >=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}] )
+ frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
+ fribidi? ( >=dev-libs/fribidi-0.19.6[${MULTILIB_USEDEP}] )
+ gcrypt? ( >=dev-libs/libgcrypt-1.6:0=[${MULTILIB_USEDEP}] )
+ glslang? ( dev-util/glslang:=[${MULTILIB_USEDEP}] )
+ gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
+ gmp? ( >=dev-libs/gmp-6:0=[${MULTILIB_USEDEP}] )
+ gsm? ( >=media-sound/gsm-1.0.13-r1[${MULTILIB_USEDEP}] )
+ iconv? ( >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] )
+ iec61883? (
+ >=media-libs/libiec61883-1.2.0-r1[${MULTILIB_USEDEP}]
+ >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
+ >=sys-libs/libavc1394-0.5.4-r1[${MULTILIB_USEDEP}]
+ )
+ ieee1394? (
+ >=media-libs/libdc1394-2.2.1:2=[${MULTILIB_USEDEP}]
+ >=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
+ )
+ jack? ( virtual/jack[${MULTILIB_USEDEP}] )
+ jpeg2k? ( >=media-libs/openjpeg-2.1:2=[${MULTILIB_USEDEP}] )
+ jpegxl? ( >=media-libs/libjxl-0.7.0:=[$MULTILIB_USEDEP] )
+ lcms? ( >=media-libs/lcms-2.13:2[$MULTILIB_USEDEP] )
+ libaom? ( >=media-libs/libaom-1.0.0-r1:=[${MULTILIB_USEDEP}] )
+ libaribb24? ( >=media-libs/aribb24-1.0.3-r2[${MULTILIB_USEDEP}] )
+ libass? ( >=media-libs/libass-0.11.0:=[${MULTILIB_USEDEP}] )
+ libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
+ libdrm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
+ libilbc? ( >=media-libs/libilbc-2[${MULTILIB_USEDEP}] )
+ libplacebo? ( >=media-libs/libplacebo-4.192.0:=[$MULTILIB_USEDEP] )
+ librtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
+ libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
+ libtesseract? ( >=app-text/tesseract-4.1.0-r1[${MULTILIB_USEDEP}] )
+ libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
+ libxml2? ( dev-libs/libxml2:=[${MULTILIB_USEDEP}] )
+ lv2? ( media-libs/lv2[${MULTILIB_USEDEP}] media-libs/lilv[${MULTILIB_USEDEP}] )
+ lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
+ modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
+ openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
+ opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
+ opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
+ opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
+ pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
+ qsv? ( media-libs/libvpl[${MULTILIB_USEDEP}] )
+ rubberband? ( >=media-libs/rubberband-1.8.1-r1[${MULTILIB_USEDEP}] )
+ samba? ( >=net-fs/samba-3.6.23-r1[client,${MULTILIB_USEDEP}] )
+ sdl? ( media-libs/libsdl2[sound,video,${MULTILIB_USEDEP}] )
+ shaderc? ( media-libs/shaderc[${MULTILIB_USEDEP}] )
+ sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] )
+ soc? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
+ speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
+ srt? ( >=net-libs/srt-1.3.0:=[${MULTILIB_USEDEP}] )
+ ssh? ( >=net-libs/libssh-0.6.0:=[sftp,${MULTILIB_USEDEP}] )
+ svg? (
+ gnome-base/librsvg:2=[${MULTILIB_USEDEP}]
+ x11-libs/cairo[${MULTILIB_USEDEP}]
+ )
+ nvenc? ( >=media-libs/nv-codec-headers-11.1.5.3 )
+ svt-av1? ( >=media-libs/svt-av1-0.9.0[${MULTILIB_USEDEP}] )
+ truetype? (
+ >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}]
+ media-libs/harfbuzz:=[${MULTILIB_USEDEP}]
+ )
+ vaapi? ( >=media-libs/libva-1.2.1-r1:0=[${MULTILIB_USEDEP}] )
+ vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
+ vidstab? ( >=media-libs/vidstab-1.1.0[${MULTILIB_USEDEP}] )
+ vmaf? ( >=media-libs/libvmaf-2.0.0:=[${MULTILIB_USEDEP}] )
+ vorbis? (
+ >=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
+ >=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
+ )
+ vpx? ( >=media-libs/libvpx-1.4.0:=[${MULTILIB_USEDEP}] )
+ vulkan? ( >=media-libs/vulkan-loader-1.3.255:=[${MULTILIB_USEDEP}] )
+ X? (
+ >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
+ >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
+ >=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
+ >=x11-libs/libxcb-1.4:=[${MULTILIB_USEDEP}]
+ )
+ zeromq? ( >=net-libs/zeromq-4.2.1:= )
+ zimg? ( >=media-libs/zimg-2.7.4:=[${MULTILIB_USEDEP}] )
+ zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
+ zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
+"
+
+RDEPEND="${RDEPEND}
+ openssl? ( >=dev-libs/openssl-1.0.1h-r2:0=[${MULTILIB_USEDEP}] )
+ !openssl? ( gnutls? ( >=net-libs/gnutls-2.12.23-r6:=[${MULTILIB_USEDEP}] ) )
+"
+
+DEPEND="${RDEPEND}
+ amf? ( media-libs/amf-headers )
+ ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
+ v4l? ( sys-kernel/linux-headers )
+ vulkan? ( >=dev-util/vulkan-headers-1.3.255 )
+"
+
+# += for verify-sig above
+BDEPEND+="
+ >=dev-build/make-3.81
+ virtual/pkgconfig
+ cpu_flags_x86_mmx? ( || ( >=dev-lang/nasm-2.13 >=dev-lang/yasm-1.3 ) )
+ cuda? ( >=sys-devel/clang-7[llvm_targets_NVPTX] )
+ doc? ( sys-apps/texinfo )
+ test? ( net-misc/wget app-alternatives/bc )
+"
+
+# Code requiring FFmpeg to be built under gpl license
+GPL_REQUIRED_USE="
+ postproc? ( gpl )
+ frei0r? ( gpl )
+ cdio? ( gpl )
+ rubberband? ( gpl )
+ vidstab? ( gpl )
+ samba? ( gpl )
+ encode? (
+ x264? ( gpl )
+ x265? ( gpl )
+ xvid? ( gpl )
+ )
+"
+REQUIRED_USE="
+ chromium? ( opus )
+ cuda? ( nvenc )
+ fftools_cws2fws? ( zlib )
+ glslang? ( vulkan !shaderc )
+ libv4l? ( v4l )
+ shaderc? ( vulkan !glslang )
+ soc? ( libdrm )
+ test? ( encode )
+ ${GPL_REQUIRED_USE}
+ ${CPU_REQUIRED_USE}"
+RESTRICT="
+ !test? ( test )
+ gpl? ( openssl? ( bindist ) fdk? ( bindist ) )
+"
+
+S=${WORKDIR}/${P/_/-}
+
+PATCHES=(
+ "${FILESDIR}"/chromium-r2.patch
+ "${FILESDIR}"/${PN}-6.1-wint-conversion.patch
+ "${FILESDIR}"/${PN}-6.0-fix-lto-type-mismatch.patch
+ "${FILESDIR}"/${PN}-6.1-opencl-parallel-gmake-fix.patch
+ "${FILESDIR}"/${PN}-6.1-gcc-14.patch
+ "${FILESDIR}"/${PN}-6.0.1-alignment.patch
+ "${FILESDIR}"/${PN}-6.1.1-vulkan-rename.patch
+ "${FILESDIR}"/${PN}-6.1.1-memory-leak.patch
+ "${FILESDIR}"/${PN}-6.1.1-wint-inconversion-libgcrypt.patch
+)
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libavutil/avconfig.h
+)
+
+pkg_setup() {
+ # ffmpeg[chromaprint] depends on chromaprint, and chromaprint[tools] depends on ffmpeg.
+ # May cause breakage while updating, #862996, #625210, #833821.
+ if has_version media-libs/chromaprint[tools] && use chromaprint; then
+ ewarn "You have media-libs/chromaprint installed with 'tools' USE flag, which "
+ ewarn "links to ffmpeg, and you have enabled 'chromaprint' USE flag for ffmpeg, "
+ ewarn "which links to chromaprint. This may cause issues while rebuilding ffmpeg."
+ ewarn ""
+ ewarn "If your build fails to 'ERROR: chromaprint not found', rebuild chromaprint "
+ ewarn "without the 'tools' use flag first, then rebuild ffmpeg, and then finally enable "
+ ewarn "'tools' USE flag for chromaprint. See #862996."
+ fi
+}
+
+src_prepare() {
+ if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
+ export revision=git-N-${FFMPEG_REVISION}
+ fi
+
+ use soc &&
+ eapply "${DISTDIR}"/${SOC_PATCH}
+
+ default
+
+ # -fdiagnostics-color=auto gets appended after user flags which
+ # will ignore user's preference.
+ sed -i -e '/check_cflags -fdiagnostics-color=auto/d' configure || die
+
+ ln -snf "${FILESDIR}"/chromium.c chromium.c || die
+ echo 'include $(SRC_PATH)/ffbuild/libffmpeg.mak' >> Makefile || die
+
+ # We need to detect LTO usage before multilib stuff and filter-lto is called (bug #923491)
+ if tc-is-lto ; then
+ # Respect -flto value, e.g -flto=thin
+ local v="$(get-flag flto)"
+ [[ ${v} != -flto ]] && LTO_FLAG="--enable-lto=${v}" || LTO_FLAG="--enable-lto"
+ fi
+ filter-lto
+}
+
+multilib_src_configure() {
+ local myconf=( )
+
+ # Conditional patch options
+ use soc && myconf+=( --enable-v4l2-request --enable-libudev --enable-sand )
+
+ # bug 842201
+ use ia64 && tc-is-gcc && append-flags \
+ -fno-tree-ccp \
+ -fno-tree-dominator-opts \
+ -fno-tree-fre \
+ -fno-code-hoisting \
+ -fno-tree-pre \
+ -fno-tree-vrp
+
+ local ffuse=( "${FFMPEG_FLAG_MAP[@]}" )
+ use openssl && myconf+=( --enable-nonfree )
+ use samba && myconf+=( --enable-version3 )
+
+ # Encoders
+ if use encode ; then
+ ffuse+=( "${FFMPEG_ENCODER_FLAG_MAP[@]}" )
+
+ # Licensing.
+ if use amrenc ; then
+ myconf+=( --enable-version3 )
+ fi
+ else
+ myconf+=( --disable-encoders )
+ fi
+
+ # Indevs
+ use v4l || myconf+=( --disable-indev=v4l2 --disable-outdev=v4l2 )
+ for i in alsa oss jack sndio ; do
+ use ${i} || myconf+=( --disable-indev=${i} )
+ done
+
+ # Outdevs
+ for i in alsa oss sndio ; do
+ use ${i} || myconf+=( --disable-outdev=${i} )
+ done
+
+ # Decoders
+ use amr && myconf+=( --enable-version3 )
+ use gmp && myconf+=( --enable-version3 )
+ use libaribb24 && myconf+=( --enable-version3 )
+ use fdk && use gpl && myconf+=( --enable-nonfree )
+
+ for i in "${ffuse[@]#+}" ; do
+ myconf+=( $(use_enable ${i%:*} ${i#*:}) )
+ done
+
+ if use openssl ; then
+ myconf+=( --disable-gnutls )
+ has_version dev-libs/openssl:0/3 && myconf+=( --enable-version3 )
+ fi
+
+ # (temporarily) disable non-multilib deps
+ if ! multilib_is_native_abi; then
+ for i in librav1e libzmq ; do
+ myconf+=( --disable-${i} )
+ done
+ fi
+
+ # CPU features
+ for i in "${CPU_FEATURES_MAP[@]}" ; do
+ use ${i%:*} || myconf+=( --disable-${i#*:} )
+ done
+
+ if use pic ; then
+ myconf+=( --enable-pic )
+ # disable asm code if PIC is required
+ # as the provided asm decidedly is not PIC for x86.
+ [[ ${ABI} == x86 ]] && myconf+=( --disable-asm )
+ fi
+ [[ ${ABI} == x32 ]] && myconf+=( --disable-asm ) #427004
+
+ # Try to get cpu type based on CFLAGS.
+ # Bug #172723
+ # We need to do this so that features of that CPU will be better used
+ # If they contain an unknown CPU it will not hurt since ffmpeg's configure
+ # will just ignore it.
+ for i in $(get-flag mcpu) $(get-flag march) ; do
+ [[ ${i} = native ]] && i="host" # bug #273421
+ myconf+=( --cpu=${i} )
+ break
+ done
+
+ # LTO support, bug #566282, bug #754654, bug #772854
+ if [[ ${ABI} != x86 && ! -z ${LTO_FLAG} ]]; then
+ myconf+=( ${LTO_FLAG} )
+ fi
+
+ # Mandatory configuration
+ myconf=(
+ --disable-libaribcaption # libaribcaption is not packaged (yet?)
+ --enable-avfilter
+ --disable-stripping
+ # This is only for hardcoded cflags; those are used in configure checks that may
+ # interfere with proper detections, bug #671746 and bug #645778
+ # We use optflags, so that overrides them anyway.
+ --disable-optimizations
+ --disable-libcelt # bug #664158
+ "${myconf[@]}"
+ )
+
+ # cross compile support
+ if tc-is-cross-compiler ; then
+ myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- --host-cc="$(tc-getBUILD_CC)" )
+ case ${CHOST} in
+ *mingw32*)
+ myconf+=( --target-os=mingw32 )
+ ;;
+ *linux*)
+ myconf+=( --target-os=linux )
+ ;;
+ esac
+ fi
+
+ # doc
+ myconf+=(
+ $(multilib_native_use_enable doc)
+ $(multilib_native_use_enable doc htmlpages)
+ $(multilib_native_enable manpages)
+ )
+
+ # Use --extra-libs if needed for LIBS
+ set -- "${S}/configure" \
+ --prefix="${EPREFIX}/usr" \
+ --libdir="${EPREFIX}/usr/$(get_libdir)" \
+ --shlibdir="${EPREFIX}/usr/$(get_libdir)" \
+ --docdir="${EPREFIX}/usr/share/doc/${PF}/html" \
+ --mandir="${EPREFIX}/usr/share/man" \
+ --enable-shared \
+ --cc="$(tc-getCC)" \
+ --cxx="$(tc-getCXX)" \
+ --ar="$(tc-getAR)" \
+ --nm="$(tc-getNM)" \
+ --strip="$(tc-getSTRIP)" \
+ --ranlib="$(tc-getRANLIB)" \
+ --pkg-config="$(tc-getPKG_CONFIG)" \
+ --optflags="${CFLAGS}" \
+ $(use_enable static-libs static) \
+ "${myconf[@]}" \
+ ${EXTRA_FFMPEG_CONF}
+ echo "${@}"
+ "${@}" || die
+}
+
+multilib_src_compile() {
+ emake V=1
+
+ if multilib_is_native_abi; then
+ for i in "${FFTOOLS[@]}" ; do
+ if use fftools_${i} ; then
+ emake V=1 tools/${i}$(get_exeext)
+ fi
+ done
+
+ use chromium &&
+ emake V=1 libffmpeg
+ fi
+}
+
+multilib_src_test() {
+ LD_LIBRARY_PATH="${BUILD_DIR}/libpostproc:${BUILD_DIR}/libswscale:${BUILD_DIR}/libswresample:${BUILD_DIR}/libavcodec:${BUILD_DIR}/libavdevice:${BUILD_DIR}/libavfilter:${BUILD_DIR}/libavformat:${BUILD_DIR}/libavutil" \
+ emake V=1 fate -k
+}
+
+multilib_src_install() {
+ emake V=1 DESTDIR="${D}" install install-doc
+
+ if multilib_is_native_abi; then
+ for i in "${FFTOOLS[@]}" ; do
+ if use fftools_${i} ; then
+ dobin tools/${i}$(get_exeext)
+ fi
+ done
+
+ use chromium &&
+ emake V=1 DESTDIR="${D}" install-libffmpeg
+ fi
+}
+
+multilib_src_install_all() {
+ dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
+ [ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
+
+ use amf && elog "To use AMF, prefix the ffmpeg call with the 'vk_pro' wrapper script, e.g. `vk_pro ffmpeg -vcodec h264_amf [...]`"
+}
diff --git a/media-video/ffmpeg/files/ffmpeg-6.1.1-wint-inconversion-libgcrypt.patch b/media-video/ffmpeg/files/ffmpeg-6.1.1-wint-inconversion-libgcrypt.patch
new file mode 100644
index 000000000000..d27240ffc557
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-6.1.1-wint-inconversion-libgcrypt.patch
@@ -0,0 +1,68 @@
+https://bugs.gentoo.org/935377
+https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/42982b5a5d461530a792e69b3e8abdd9d6d67052
+
+From 42982b5a5d461530a792e69b3e8abdd9d6d67052 Mon Sep 17 00:00:00 2001
+From: Frank Plowman <post@frankplowman.com>
+Date: Fri, 22 Dec 2023 12:00:01 +0000
+Subject: [PATCH 1/1] avformat/ffrtmpcrypt: Fix int-conversion warning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf8
+Content-Transfer-Encoding: 8bit
+
+The gcrypt definition of `bn_new` used to use the return statement
+on errors, with an AVERROR return value, regardless of the signature
+of the function where the macro is used - it is called in
+`dh_generate_key` and `ff_dh_init` which return pointers. As a result,
+compiling with gcrypt and the ffrtmpcrypt protocol resulted in an
+int-conversion warning. GCC 14 may upgrade these to errors [1].
+
+This patch fixes the problem by changing the macro to remove `AVERROR`
+and instead set `bn` to null if the allocation fails. This is the
+behaviour of all the other `bn_new` implementations and so the result is
+already checked at all the callsites. AFAICT, this should be the only
+change needed to get ffmpeg off Fedora's naughty list of projects with
+warnings which may be upgraded to errors in GCC 14 [2].
+
+[1]: https://gcc.gnu.org/pipermail/gcc/2023-May/241264.html
+[2]: https://www.mail-archive.com/devel@lists.fedoraproject.org/msg196024.html
+
+Signed-off-by: Frank Plowman <post@frankplowman.com>
+Signed-off-by: Martin Storsjö <martin@martin.st>
+---
+ libavformat/rtmpdh.c | 21 ++++++++++++---------
+ 1 file changed, 12 insertions(+), 9 deletions(-)
+
+diff --git a/libavformat/rtmpdh.c b/libavformat/rtmpdh.c
+index 5ddae537a1..6a6c2ccd87 100644
+--- a/libavformat/rtmpdh.c
++++ b/libavformat/rtmpdh.c
+@@ -113,15 +113,18 @@ static int bn_modexp(FFBigNum bn, FFBigNum y, FFBigNum q, FFBigNum p)
+ return 0;
+ }
+ #elif CONFIG_GCRYPT
+-#define bn_new(bn) \
+- do { \
+- if (!gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P)) { \
+- if (!gcry_check_version("1.5.4")) \
+- return AVERROR(EINVAL); \
+- gcry_control(GCRYCTL_DISABLE_SECMEM, 0); \
+- gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0); \
+- } \
+- bn = gcry_mpi_new(1); \
++#define bn_new(bn) \
++ do { \
++ if (!gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P)) { \
++ if (gcry_check_version("1.5.4")) { \
++ gcry_control(GCRYCTL_DISABLE_SECMEM, 0); \
++ gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0); \
++ } \
++ } \
++ if (gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P)) \
++ bn = gcry_mpi_new(1); \
++ else \
++ bn = NULL; \
+ } while (0)
+ #define bn_free(bn) gcry_mpi_release(bn)
+ #define bn_set_word(bn, w) gcry_mpi_set_ui(bn, w)
+--
+2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/
@ 2024-08-29 7:52 Andrew Ammerlaan
0 siblings, 0 replies; 22+ messages in thread
From: Andrew Ammerlaan @ 2024-08-29 7:52 UTC (permalink / raw
To: gentoo-commits
commit: 61d5569fa8071eb9c90f91de5b3a87d1674f9c63
Author: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 29 07:47:03 2024 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Thu Aug 29 07:47:03 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=61d5569f
media-video/ffmpeg: fix incompatible pointer types in 4.4.5
Closes: https://bugs.gentoo.org/936433
Co-authored-by: Kostadin Shishmanov <kocelfc <AT> tutanota.com>
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> gentoo.org>
media-video/ffmpeg/ffmpeg-4.4.5.ebuild | 1 +
.../ffmpeg/files/ffmpeg-4.4.5-incmptbl-pntr-types.patch | 15 +++++++++++++++
2 files changed, 16 insertions(+)
diff --git a/media-video/ffmpeg/ffmpeg-4.4.5.ebuild b/media-video/ffmpeg/ffmpeg-4.4.5.ebuild
index cb1b60ce093f..805cf2c0a13c 100644
--- a/media-video/ffmpeg/ffmpeg-4.4.5.ebuild
+++ b/media-video/ffmpeg/ffmpeg-4.4.5.ebuild
@@ -347,6 +347,7 @@ PATCHES=(
"${FILESDIR}"/${PN}-4.4.4-opencl-parallel-gmake-fix.patch
"${FILESDIR}"/${PN}-4.4.4-glslang.patch
"${FILESDIR}"/${PN}-4.4.4-amd-av1-vaapi.patch
+ "${FILESDIR}"/${PN}-4.4.5-incmptbl-pntr-types.patch
)
MULTILIB_WRAPPED_HEADERS=(
diff --git a/media-video/ffmpeg/files/ffmpeg-4.4.5-incmptbl-pntr-types.patch b/media-video/ffmpeg/files/ffmpeg-4.4.5-incmptbl-pntr-types.patch
new file mode 100644
index 000000000000..a47a62917a29
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-4.4.5-incmptbl-pntr-types.patch
@@ -0,0 +1,15 @@
+https://bugs.gentoo.org/936433
+
+diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c
+index 4b81bd1..4e7f49f 100644
+--- a/libavutil/hwcontext_vaapi.c
++++ b/libavutil/hwcontext_vaapi.c
+@@ -1032,7 +1032,7 @@ static int vaapi_map_from_drm(AVHWFramesContext *src_fc, AVFrame *dst,
+ uint32_t va_fourcc;
+ int err, i, j, k;
+
+- unsigned long buffer_handle;
++ uintptr_t buffer_handle;
+ VASurfaceAttribExternalBuffers buffer_desc;
+ VASurfaceAttrib attrs[2] = {
+ {
^ permalink raw reply related [flat|nested] 22+ messages in thread
end of thread, other threads:[~2024-08-29 7:52 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-29 7:52 [gentoo-commits] repo/gentoo:master commit in: media-video/ffmpeg/, media-video/ffmpeg/files/ Andrew Ammerlaan
-- strict thread matches above, loose matches on Subject: below --
2024-07-03 0:37 Sam James
2023-12-16 11:26 Sam James
2023-12-03 23:20 James Le Cuirot
2023-08-02 8:13 Sam James
2023-07-26 4:08 Sam James
2023-06-07 3:38 Sam James
2023-03-15 2:15 Sam James
2023-03-14 20:23 Craig Andrews
2022-10-09 23:10 Sam James
2022-08-21 2:39 Sam James
2022-07-21 2:53 Matt Turner
2022-07-21 2:31 Matt Turner
2022-04-17 19:24 Sam James
2022-03-16 15:18 Sam James
2020-10-07 17:07 Sam James
2020-07-27 16:40 Sam James
2020-06-17 17:35 Thomas Deutschmann
2017-10-08 10:21 Alexis Ballier
2017-08-27 6:33 Alexis Ballier
2016-10-24 10:35 Alexis Ballier
2016-02-01 8:41 Alexis Ballier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox