media-video/ffmpeg: add cuda support

This commit is contained in:
Stefan Reimer 2017-01-09 13:18:56 -08:00
parent bbd113fd13
commit 327e47e330
7 changed files with 1942 additions and 0 deletions

View File

@ -0,0 +1,9 @@
AUX chromaprint14.patch 713 SHA256 73fcac34989917b945e91eadebd5685e4d880c74084f9c534a2a7ab5df209eba SHA512 8472a38143e89486ee4384a91d7f14e55121b197f6be7965afcd8f4678d0e37a1690397d6d6b74d3a46b126946fb884efae9012313682eaffb0d7e3829e903eb WHIRLPOOL 4c6c6080ee4d91a1a2db3381a557dbdd7c49a43bb1f8a306fcd1b0a8c2e4f976ec5537580ef8d4571a75c757362e659b14d3a6b191daa37227f70a43623a670a
DIST ffmpeg-2.8.10.tar.bz2 8585304 SHA256 d1ce1a73503dce6e2b1e208cb93a2a8a7e89f9c64357ddc3e4da3cab33dea9c9 SHA512 1ca8b0060361c49de201afc463bcd7c9340f09bbd116dff2539653bc36411d60cdf667874d2ec51664e141ee7a7be8bebc94e158687cb97db6bdfa40f00ec193 WHIRLPOOL 4ff9271290c138ad5caa50835da9fd6685fabf5a589cb6c068cfff6698ded948d93e9d40656dca3b516f9e591119d204e6283d57f7d2f0747a4f7ef9b322ebce
DIST ffmpeg-2.8.6.tar.bz2 8582420 SHA256 40611e329bc354592c6f8f1deb033c31b91f80e91f5707ca4f9afceca78d8e62 SHA512 68fb41884b95953025b9c56496b17e13062196800ff9834dac43a12e9a0048d4a763f50a2256418c91cc850b63713e1debbf9170737f29621f48946adef152dc WHIRLPOOL 20a4b12b5a03f187b753cca43c65bd75b49cc21c9ffabad31b8ac0ab47fc8e017931ad5076b701c303bb594b20acb403d3ec2dabdf647fd262c070c8dabf1eea
DIST ffmpeg-3.2.2.tar.bz2 9611373 SHA256 0b129a56d1b8d06101b1fcbfaa9f4f5eee3182d1ad6e44f511a84c12113a366b SHA512 7cb61684081bbe905ef324f60d259fd543e8be1ed2593167beb9324bec8bbc012cccff40a73e8be0ccc6bb0a20acd98a3dbac0d1d39403016cb381c1410b45db WHIRLPOOL fe43df569f88b79d5bfaab1d16929d3f3eaf7deecd3ca42a922d67cd971d8ac0a17b2dfc6db75b706a93da7e877887dcc75a38609e62e2ea4781b9363292a872
EBUILD ffmpeg-2.8.10.ebuild 14668 SHA256 6954aff7eedd92c3ca1eb1ee5bab7e8bcc69cd54f367d6d2a3330e2345e41d33 SHA512 e451173d3490a0e14e3c8257892143c52b73ea8e8b5a1d0a24207ab184a603d0cbd24c98e2650a69c9c8c10a4d4f6729df8185c6265e39d34f309a7a043f91ee WHIRLPOOL bbba818001e89fa5115d9a67b998b38c0338c3accea047543824be32906b24bffc5f44b8c9c8dadb8ac474e8bddc57ae5dfcdb3b7f8e0ae1111c6c2e5c846fdf
EBUILD ffmpeg-2.8.6.ebuild 14659 SHA256 9b50c9455fd08249ffd2f1724b4a45eb446a738b9cb605dc1e1cd3745a2e5a74 SHA512 05632d2708a29845cc03fbef53261495ee303db9206df862f94fd36eb5592b7240381881857ee3c00e04b5fc7f2ccdc3385aa99c2d85538e65988d5d66e7d279 WHIRLPOOL 4d3c74a46e58c306552f245e54889e93de5cfa873a45ca665cd8c72f2d12130cb6190ca98f243c6c046124d3d824c18d9f52cf390bd57dab01bcabf9fcd6b1be
EBUILD ffmpeg-3.2.2-r1.ebuild 14999 SHA256 13f5c33c9203a9952e10391082f7006949ebee819c00a4e3a264da2a2f8c8747 SHA512 14ff8a343007d0a61894119a6d7905cbdd73b0dc5f59e742f5b8c46436fe4aaae3d441cab5a4f9760350f10b268c54d86a5ef5ce20f172dde841fbdca06129b1 WHIRLPOOL db2cc15443c38b3ea773e1ce3b18a0709292b78a692e4bb4861e13d84d9a1010056f9ddfe246b9f394cd6a6fe06e625a5b08cfa50331bb92752d9f8d112aedbe
EBUILD ffmpeg-9999.ebuild 14583 SHA256 32eaad152bd510f61b4759a96dfefaad5b5398318d79e51a548fa9a0cdf3f186 SHA512 9d6d839624970599253616db78d6e87d3a1c65097f91309eaa283a6406c4620aa9439d018e7cc8d286c624bd2b2db2b70f7fbca71a69a6549d953aaa41446e06 WHIRLPOOL 7196e70b0db9c30ebd29945efadce7bab1950a74115fb1df4f10740b39c09255f8371435a8639ad7c895693684fc2f2bc53894ef0dde64226a621a6d4ff222f8
MISC metadata.xml 5559 SHA256 004d316f0d58fe3e898e43167a43893f32a681281e1c20778d3825ddc1ea26d0 SHA512 2d8557555d4257e1fd3eeba4ae7fd4c1a4a9a21ecfc04c32ed2148b3fc5fdbfb58e8bb8d9bb4980ce72d72965e84506b494bc20afb0910e401bb2a6cf1b0d970 WHIRLPOOL 19b128098f0a6cc5e0e8beebb18452cfe3133cdb11c023c53489e39ee8c18a9b34539b51bb0b0c32cbd9bed46e08f8bb02adb4b67b32cdeb83b376c635fa7088

View File

@ -0,0 +1,458 @@
# Copyright 1999-2016 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 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? ( virtual/jack[${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) ; 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
}

View File

@ -0,0 +1,458 @@
# Copyright 1999-2016 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 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? ( virtual/jack[${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) ; 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
}

View File

@ -0,0 +1,472 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
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 pax-utils 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 )
)
gmp? (
gpl? ( GPL-3 )
!gpl? ( LGPL-3 )
)
encode? (
amrenc? (
gpl? ( GPL-3 )
!gpl? ( LGPL-3 )
)
)
samba? ( GPL-3 )
"
if [ "${PV#9999}" = "${PV}" ] ; then
KEYWORDS="~amd64 ~mips ~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 gcrypt gnutls gmp
+gpl +hardcoded-tables +iconv lzma +network openssl +postproc
samba:libsmbclient sdl:ffplay sdl:sdl2 cuda 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
mmal modplug:libmodplug opus:libopus libilbc librtmp ssh:libssh
schroedinger:libschroedinger speex:libspeex vorbis:libvorbis vpx:libvpx
zvbi:libzvbi
# libavfilter options
bs2b:libbs2b chromaprint ebur128:libebur128 flite:libflite frei0r
fribidi:libfribidi fontconfig ladspa libass truetype:libfreetype
rubberband:librubberband 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 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=( armv5te armv6 armv6t2 neon armvfp:vfp )
MIPS_CPU_FEATURES=( mipsdspr1 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 )
"
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}] )
chromaprint? ( >=media-libs/chromaprint-1.2-r1[${MULTILIB_USEDEP}] )
cuda? ( dev-util/nvidia-cuda-sdk )
ebur128? ( >=media-libs/libebur128-1.1.0[${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}] )
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}] )
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[${MULTILIB_USEDEP}] )
schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${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}] )
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}] )
zimg? ( media-libs/zimg[${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-0-r1[${MULTILIB_USEDEP}]
ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
cpu_flags_x86_mmx? ( >=dev-lang/yasm-1.2 )
test? ( net-misc/wget sys-devel/bc )
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 )
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="
gpl? ( openssl? ( bindist ) fdk? ( bindist ) )
"
S=${WORKDIR}/${P/_/-}
PATCHES=( "${FILESDIR}/chromaprint14.patch" )
MULTILIB_WRAPPED_HEADERS=(
/usr/include/libavutil/avconfig.h
)
src_prepare() {
if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
export revision=git-N-${FFMPEG_REVISION}
fi
default
}
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 )
# Cuda, headers are under /opt/cuda
if use cuda; then
myconf+=( --enable-nonfree )
myconf+=( --enable-cuvid )
myconf+=( --extra-cflags=-I/opt/cuda/include)
fi
# 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
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 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 ; 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) ; 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
# 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
}
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-doc
if multilib_is_native_abi; then
for i in "${FFTOOLS[@]}" ; do
if use fftools_${i} ; then
dobin tools/${i}
fi
done
fi
# Required on Hardened due to binary nvidia libs
if use cuda; then
pax-mark -mr "${D}"usr/bin/${PN}
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
}

View File

@ -0,0 +1,456 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
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 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 )
)
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 ~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 gcrypt gnutls gmp
+gpl +hardcoded-tables +iconv lzma +network 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
# decoders
amr:libopencore-amrwb amr:libopencore-amrnb fdk:libfdk-aac
jpeg2k:libopenjpeg bluray:libbluray celt:libcelt gme:libgme gsm:libgsm
mmal modplug:libmodplug opus:libopus libilbc librtmp ssh:libssh
schroedinger:libschroedinger speex:libspeex vorbis:libvorbis vpx:libvpx
zvbi:libzvbi
# libavfilter options
bs2b:libbs2b chromaprint flite:libflite frei0r
fribidi:libfribidi fontconfig ladspa libass truetype:libfreetype
rubberband:librubberband 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 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=( armv5te armv6 armv6t2 neon armvfp:vfp )
MIPS_CPU_FEATURES=( mipsdspr1 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 )
"
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}] )
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}] )
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}] )
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[${MULTILIB_USEDEP}] )
schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${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}] )
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}] )
zimg? ( media-libs/zimg[${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-0-r1[${MULTILIB_USEDEP}]
ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
cpu_flags_x86_mmx? ( >=dev-lang/yasm-1.2 )
test? ( net-misc/wget sys-devel/bc )
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 )
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="
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
default
}
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
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 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 ; 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) ; 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
# 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
}
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-doc
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"
}
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
}

View File

@ -0,0 +1,24 @@
commit 581f93f37ef2e7a00662828ed0348d1edb9041fe
Author: Georgi D. Sotirov <gdsotirov@dir.bg>
Date: Tue Dec 6 21:07:59 2016 +0100
lavf/chromaprint: Update for version 1.4
Fixes ticket #5997.
diff --git a/libavformat/chromaprint.c b/libavformat/chromaprint.c
index 8c9a6c0111..4da02bef76 100644
--- a/libavformat/chromaprint.c
+++ b/libavformat/chromaprint.c
@@ -39,7 +39,11 @@ typedef struct ChromaprintMuxContext {
int silence_threshold;
int algorithm;
FingerprintFormat fp_format;
+#if CPR_VERSION_INT >= AV_VERSION_INT(1, 4, 0)
+ ChromaprintContext *ctx;
+#else
ChromaprintContext ctx;
+#endif
} ChromaprintMuxContext;
static void cleanup(ChromaprintMuxContext *cpr)

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>media-video@gentoo.org</email>
</maintainer>
<use>
<flag name="aacplus">AAC+ encoding via <pkg>media-libs/libaacplus</pkg>.</flag>
<flag name="amr">Enables Adaptive Multi-Rate Audio support</flag>
<flag name="amrenc">Enables Adaptive Multi-Rate Audio encoding support with <pkg>media-libs/vo-amrwbenc</pkg>.</flag>
<flag name="armv5te">Enables optimizations for armv5te processors.</flag>
<flag name="armv6">Enables optimizations for armv6 processors.</flag>
<flag name="armv6t2">Enables optimizations for armv6t2 processors.</flag>
<flag name="armvfp">Enables VFP optimizations for ARM processors.</flag>
<flag name="bluray">Enable playback of Blu-ray filesystems</flag>
<flag name="bs2b">Enables <pkg>media-libs/libbs2b</pkg> based Bauer stereo-to-binaural filter.</flag>
<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="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>
<flag name="fdk">Use external fdk-aac library for AAC encoding</flag>
<flag name="flite">Adds a text-to-speech filter based on <pkg>app-accessibility/flite</pkg>.</flag>
<flag name="frei0r">Enable frei0r wrapping in libavfilter</flag>
<flag name="fribidi">Enables fribidi support in the drawtext filter.</flag>
<flag name="gcrypt">Enables gcrypt support: Needed for rtmp(t)e support if openssl, librtmp or gmp is not used.</flag>
<flag name="gme">Enables support for <pkg>media-libs/game-music-emu</pkg> for playing various video game music formats.</flag>
<flag name="gpl">Build GPL code. Should be enabled unless you require LGPL binaries.</flag>
<flag name="hardcoded-tables">Use pre-calculated tables rather than calculating them on the fly.</flag>
<flag name="iec61883"> Support for FireWire DV/HDV input device using <pkg>media-libs/libiec61883</pkg>.</flag>
<flag name="kvazaar">Enables <pkg>media-libs/kvazaar</pkg> based HEVC encoder.</flag>
<flag name="libilbc">Enables iLBC de/encoding via <pkg>media-libs/libilbc</pkg>.</flag>
<flag name="librtmp">Enables Real Time Messaging Protocol using librtmp (<pkg>media-video/rtmpdump</pkg>) in addition to FFmpeg's native implementation.</flag>
<flag name="libsoxr">Enables audio resampling through <pkg>media-libs/soxr</pkg>.</flag>
<flag name="libv4l">Uses <pkg>media-libs/libv4l</pkg> for video4linux instead of direct calls. Adds support for more devices via the userspace library.</flag>
<flag name="mipsdspr1">Enables MIPS DSP ASE R1 optimizations.</flag>
<flag name="mipsdspr2">Enables MIPS DSP ASE R2 optimizations.</flag>
<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="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>
<flag name="opus">Adds (decoding) support for the Opus codec via <pkg>media-libs/opus</pkg>.</flag>
<flag name="pic">Force shared libraries to be built as PIC (this is slower)</flag>
<flag name="postproc">Build and install libpostproc.</flag>
<flag name="quvi">Adds support for playing media from Internet services using the quvi project.</flag>
<flag name="rubberband">Adds time-stretching and pitch-shifting audio filter based on <pkg>media-libs/rubberband</pkg>.</flag>
<flag name="schroedinger">Enable Dirac video support (an advanced royalty-free video compression format) via libschroedinger (high-speed implementation in C of the Dirac codec).</flag>
<flag name="snappy">Enable <pkg>app-arch/snappy</pkg> support. Required for e.g. Vidvox Hap encoder.</flag>
<flag name="ssh">Enable SSH/sftp support via <pkg>net-libs/libssh</pkg>.</flag>
<flag name="twolame">Enables MP2 encoding via <pkg>media-sound/twolame</pkg> as an alternative to the internal encoder.</flag>
<flag name="vpx">Enables vp8 codec support using libvpx: Decoding vp8 does not require this to be enabled but libvpx can also be used for decoding; encoding vp8 requires this useflag to be enabled though.</flag>
<flag name="webp">Enables WebP encoding with <pkg>media-libs/libwebp</pkg>.</flag>
<flag name="x265">Enables HEVC encoding with <pkg>media-libs/x265</pkg>.</flag>
<flag name="zimg">Enables <pkg>media-libs/zimg</pkg> based scale filter.</flag>
<flag name="zvbi">Enables <pkg>media-libs/zvbi</pkg> based teletext decoder.</flag>
</use>
<slots>
<slot name="0">For building against. This is the only slot that provides
headers and command line tools. Binary compatibility slots come and go
as required, so always pin dependencies to this slot when appropriate.</slot>
</slots>
</pkgmetadata>