Skip to content

Commit

Permalink
media-video/libav: Add a libav-13 snapshot
Browse files Browse the repository at this point in the history
Some software can make use of the new features already.

Package-Manager: Portage-2.3.19, Repoman-2.3.6
  • Loading branch information
lu-zero committed Dec 18, 2017
1 parent 07233aa commit 96b6c0a
Show file tree
Hide file tree
Showing 2 changed files with 344 additions and 0 deletions.
2 changes: 2 additions & 0 deletions media-video/libav/Manifest
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ DIST 0001-x86-Put-COPY3_IF_LT-under-HAVE_6REGS.patch.gz 736 BLAKE2B 04e7b9f1b26e
DIST 0001-xcb-Add-all-the-libraries-to-the-link-line-explicitl.patch 1017 BLAKE2B ec5947dc258c03a4077da898b0895693de3a35979f086d0551696616ab2f2df1e7e122ad53f93ff0fbf78782acfd0ef2a9f664a1a33f4a4d40d9072733638a1f SHA512 8cf8d1dd46a423381e70ab046e5843f13028c1d2ee14877e96339ea6a7d80d3ae5b2441b5b41ca23ba0104a5ff2d1b7e871f43680967bad0b7f242952d7b0be9
DIST fate-11.tar.xz 691009480 BLAKE2B 01e1e8125d34a623b5bd4bf1da0daee96d045e73fd069cf438f471970ad4cf71df8bd3235306b3493cb547fb5ac4bb8fce416e194fec9a7e9b9de68a5a15d572 SHA512 f9dc152964e3f19cf32d5d4cbc923a2bd05ba3b0f8f3880122df79d32852ee9d4795a0bfd66d7a2925299e9e9533888df6103e212ea3e5cbfe799d17ffa2b433
DIST fate-12-r1.tar.xz 763758260 BLAKE2B 299e1a2a773e49c7a51c1222ac34eaea24f77420570a1b0c0b18db5517736656f52ad0a7ca807f65f5e9f9597709265fcd950cf989ad995aa4289ba0e364950e SHA512 084f584c34d34b66c1f4d4742a11376ee2b90f6a07529b5aba6d50421dc8f863fded73dd57ad2c201aadfd529f0f923fa531ea9b41aaaa7b682846ef565a1018
DIST fate-12.tar.xz 755165356 BLAKE2B 031cef24bcfae6205cd6546f453cddb17387176ae837086dd38c8c7132ad9b8dee5367be5fb1b8c604b2203a1e2a55f0c3be2a62f825a95a7ace1aceb4593b70 SHA512 f6ffb3b673b01debd71d7c79cd5c3c4d6f6adb975ed0bdb7c791d674efd8a84ac98f7db3943dfbe3756a3f8819ceab2bdf4633c15fefddf0f8e10adfc805c1e1
DIST fate-9.tar.xz 467671500 BLAKE2B df4ef8187f257c91b7b6c3c25c2f204c2d4a476cc73cca199ec1c8af2c4641cbb3a314e39ab38f6d8b68c5fe0b91ff1b4b592dec6b518d544806eaeaca003608 SHA512 8e45539f2512ef915b37c857226c0243940259f269b8f99393b9defa3352d7b8c1fcc5078f4f0d40dc0509737f0c915e179cedcc77f71fe5d96b1b956169a202
DIST libav-11.3.tar.xz 4858864 BLAKE2B f029581ea013564b69257f0ba71114c489afff3705bfeb9b7dad4a5c95eb64f727ebee4127b1205d1bbca0a2f56e2ebc907d57c25a5abf02ffdaf0b20ae30004 SHA512 f25b9fb7392d5bb4df35937f79beae26bd8f6606f0ad7cdebf16963834eb9b423d882f6a3a44b5120a5d5d853c7c31bb8c3420a427cd2b360f41a48a6d5df284
DIST libav-11.4.tar.xz 4860264 BLAKE2B 3e56751b806cdf542bf078e790085bb0599696df0646f7bab5187e7af1b008041952ceadb5e1a10a021202c84eb878a8316993eddb6973d9b22fea042114db65 SHA512 82ffe6aaccb1a19782dfcb0de641c8255531ce34ee5f49f9b8ec7f5a11c81713432aafc3a6b7c4de927eb8141ddea41f28e4e3a1ab715b943774193050fb02e7
Expand All @@ -11,4 +12,5 @@ DIST libav-11.8.tar.xz 4865796 BLAKE2B fb0e8f129edee0423252f334b12485d514f9fdfb3
DIST libav-12.1.tar.xz 5267292 BLAKE2B 4b8e5c9175aa34b2195238e16af4a21706ef18babb491c0c08d4432cb73ad576eaea55b5231af9033dc252a66b1fd51c5964b1d8ad80c85fe2600c27c332c3da SHA512 a0dd5fcc95cb62901b05b59a63ce4fcc6fb2943f0032a824ff6cfeeab2d13bd5edc65811aba1d06fe4d794119da049c52e5a9efbbc3599b445b61769992c9919
DIST libav-12.2.tar.xz 5268804 BLAKE2B e25b3dfe1026b9e69c89cbec2090070088a7004dc03e8cc23da2da03824a627c733c16c67e5fc65ec9f19942d93405d5ba6926de83cae04c497597f55220f004 SHA512 4b37cfb18a6cf6f12eddb5175b1751c093f3a495ae1d1b588884c60157cb260479b1d8fa3a6e3e08c00d7a26422b1e78a750eb35cf7bc763c01790f3567cba03
DIST libav-12.tar.xz 5265280 BLAKE2B 2fca534267537343ae51bf07ce226057ec0ecef81163c81559c7492a1591b611f393b2e8026733a733c715a890137b353140743a53227f030806a1c35418c910 SHA512 55f7dd171882d191c79c6ade10f02123b8b7d897cbbd13c77766c9af944c5ba4bfbc81487966bac1ee459bc61f7a2471ddd9a3ea29b412296e9044b98440c423
DIST libav-13_pre20171219.tar.xz 5427904 BLAKE2B 074dc5d071aeb656fc14a015c2e3c168aa81d25e2fb08d99e300dc47d7ea28f61500fcfab0b16fa136261a5af27631b7536eb3aefa0e1feb4d615af57f9f5a36 SHA512 0c9b59957f1fbbff8f5b95b02c11014a4efdddf4b7e1b158cd0fda3af8b89bd90d48263ed0239915adfb7abcd7a8b22c278cd5cf1d01822bd22df65cc7f69689
DIST libav-9.17.tar.xz 4080028 BLAKE2B 206e80835292af9f4c1c65539e69981b6993679c11e8a1feef1e37dc32174e47744ebce319b8709bcd60804f493fab1e524c781e174d60d9ebe35ad01f6fbc60 SHA512 20af83d4b6a23c159c2386b6592ba6a6acf3f2c54e8aeb16dd0c8a64d637fbde24f37b864698b1143c6802b64a7b5e8ddfe0e7601b35c35686a789e2b3232f5a
342 changes: 342 additions & 0 deletions media-video/libav/libav-13_pre20171219.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,342 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=5

inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs

if [[ ${PV} == *9999 ]] ; then
: ${EGIT_REPO_URI:="git://git.libav.org/libav.git"}
if [[ ${PV%9999} != "" ]] ; then
: ${EGIT_BRANCH:="release/${PV%.9999}"}
fi
inherit git-r3
fi

DESCRIPTION="Complete solution to record, convert and stream audio and video"
HOMEPAGE="https://libav.org/"
if [[ ${PV} == *9999 ]] ; then
SRC_URI=""
elif [[ ${PV%_p*} != ${PV} ]] ; then # Gentoo snapshot
SRC_URI="https://dev.gentoo.org/~lu_zero/libav/${P}.tar.xz"
else # Official release
SRC_URI="https://libav.org/releases/${P}.tar.xz"
fi

SRC_URI+=" test? ( https://dev.gentoo.org/~lu_zero/libav/fate-12.tar.xz )"

LICENSE="LGPL-2.1 gpl? ( GPL-3 )"
SLOT="0/13"
[[ ${PV} == *9999 ]] || KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64
~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos
~x64-solaris ~x86-solaris"
IUSE="aac alsa amr bs2b +bzip2 cdio cpudetection custom-cflags debug doc +encode faac fdk
frei0r fontconfig +gpl gsm +hardcoded-tables ieee1394 jack jpeg2k libressl mp3
+network openssl opus oss pic pulseaudio rtmp schroedinger sdl speex ssl
static-libs test theora threads tools truetype twolame v4l vaapi vdpau vorbis vpx X
wavpack webp x264 x265 xvid +zlib"

# String for CPU features in the useflag[:configure_option] form
# if :configure_option isn't set, it will use 'useflag' as configure option
CPU_FEATURES="altivec armv5te armv6 armv6t2 armvfp:vfp neon"
X86_CPU_FEATURES="3dnow:amd3dnow 3dnowext:amd3dnowext mmx mmxext sse sse2 sse3 ssse3 sse4_1:sse4 sse4_2:sse42 avx xop fma3 fma4 avx2"
for i in ${X86_CPU_FEATURES} ; do
CPU_FEATURES+=" cpu_flags_x86_${i%:*}:${i#*:}"
done
for i in ${CPU_FEATURES} ; do
IUSE+=" ${i%:*}"
done

RDEPEND="
!media-video/ffmpeg:0
alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
amr? ( >=media-libs/opencore-amr-0.1.3-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}] )
encode? (
aac? ( >=media-libs/vo-aacenc-0.1.3[${MULTILIB_USEDEP}] )
amr? ( >=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}] )
vorbis? (
>=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
)
webp? ( >=media-libs/libwebp-0.3.0[${MULTILIB_USEDEP}] )
wavpack? ( >=media-sound/wavpack-4.60.1-r1[${MULTILIB_USEDEP}] )
x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )
x265? ( >=media-libs/x265-1.2:=[${MULTILIB_USEDEP}] )
xvid? ( >=media-libs/xvid-1.3.2-r1[${MULTILIB_USEDEP}] )
)
fdk? ( >=media-libs/fdk-aac-0.1.2[${MULTILIB_USEDEP}] )
frei0r? ( media-plugins/frei0r-plugins )
gsm? ( >=media-sound/gsm-1.0.13-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}] )
opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
rtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
ssl? (
openssl? (
!libressl? ( >=dev-libs/openssl-1.0.1h-r2:0[${MULTILIB_USEDEP}] )
libressl? ( dev-libs/libressl[${MULTILIB_USEDEP}] )
)
!openssl? ( >=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}] )
)
sdl? ( >=media-libs/libsdl-1.2.15-r4[sound,video,${MULTILIB_USEDEP}] )
schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
fontconfig? ( >=media-libs/fontconfig-2.10[${MULTILIB_USEDEP}] )
vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
vpx? ( >=media-libs/libvpx-1.2.0_pre20130625[${MULTILIB_USEDEP}] )
X? ( >=x11-libs/libxcb-1.9.1[${MULTILIB_USEDEP}] )
zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
"

DEPEND="${RDEPEND}
>=sys-devel/make-3.81
doc? ( app-text/texi2html )
ieee1394? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
cpu_flags_x86_mmx? ( >=dev-lang/nasm-2.13 )
rtmp? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
schroedinger? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
ssl? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
test? ( sys-devel/bc )
truetype? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
fontconfig? ( >=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(-)] )"

# faac can't be binary distributed
# openssl support marked as nonfree
# faac and aac are concurent implementations
# amr and aac require at least lgpl3
# x264 requires gpl2
REQUIRED_USE="
rtmp? ( network )
amr? ( gpl ) aac? ( gpl ) x264? ( gpl ) cdio? ( gpl ) x265? ( gpl )
test? ( encode zlib )
fontconfig? ( truetype )
"
RESTRICT="faac? ( bindist ) fdk? ( bindist ) openssl? ( bindist )"

MULTILIB_WRAPPED_HEADERS=(
/usr/include/libavutil/avconfig.h
)

src_unpack() {
[[ ${PV} == *9999 ]] && git-r3_src_unpack
# 9999 does not have fate-*.tar.xz
[[ ${PV%9999} != "" ]] && default_src_unpack
}

src_prepare() {
epatch_user

# if we have snapshot then we need to hardcode the version
if [[ ${PV%_p*} != ${PV} ]]; then
sed -i -e "s/UNKNOWN/DATE-${PV#*_pre}/" "${S}/avbuild/version.sh" || die
fi

TOOLS=( aviocat graph2dot ismindex pktdumper qt-faststart trasher )
use zlib && TOOLS+=( cws2fws )

MAKEOPTS+=" V=1"
}

multilib_src_configure() {
local myconf=( ${EXTRA_LIBAV_CONF} )
local uses i

# 9999 does not have fate-*.tar.xz
[[ ${PV%9999} != "" ]] && use test && myconf+=( --samples="${WORKDIR}/fate" )

myconf+=(
$(use_enable gpl)
$(use_enable gpl version3)
--enable-avfilter
)

# enabled by default
uses="debug doc network zlib"
for i in ${uses}; do
use ${i} || myconf+=( --disable-${i} )
done
use bzip2 || myconf+=( --disable-bzlib )
use sdl || myconf+=( --disable-avplay )

if use ssl; then
use openssl && myconf+=( --enable-openssl --enable-nonfree ) \
|| myconf+=( --enable-gnutls )
fi

use custom-cflags && myconf+=( --disable-optimizations )
use cpudetection && myconf+=( --enable-runtime-cpudetect )

use vdpau || myconf+=( --disable-vdpau )

use vaapi && myconf+=( --enable-vaapi )

# Encoders
if use encode; then
use faac && myconf+=( --enable-nonfree )
use mp3 && myconf+=( --enable-libmp3lame )
use amr && myconf+=( --enable-libvo-amrwbenc )
use aac && myconf+=( --enable-libvo-aacenc )
uses="faac theora twolame vorbis wavpack webp x264 x265 xvid"
for i in ${uses}; do
use ${i} && myconf+=( --enable-lib${i} )
done
else
myconf+=( --disable-encoders )
fi

# libavdevice options
use cdio && myconf+=( --enable-libcdio )
use ieee1394 && myconf+=( --enable-libdc1394 )
use pulseaudio && myconf+=( --enable-libpulse )

# Indevs
# v4l1 is gone since linux-headers-2.6.38
myconf+=( --disable-indev=v4l )
use v4l || myconf+=( --disable-indev=v4l2 )
for i in alsa oss jack; do
use ${i} || myconf+=( --disable-indev=${i} )
done
use X && myconf+=( --enable-libxcb )

# libavfilter options
use bs2b && myconf+=( --enable-libbs2b )
multilib_is_native_abi && use frei0r && myconf+=( --enable-frei0r )
use truetype && myconf+=( --enable-libfreetype )
use fontconfig && myconf+=( --enable-libfontconfig )

# Threads; we only support pthread for now
use threads && myconf+=( --enable-pthreads )

# Decoders
use amr && myconf+=( --enable-libopencore-amrwb --enable-libopencore-amrnb )
use fdk && myconf+=( --enable-nonfree --enable-libfdk-aac )
uses="gsm opus rtmp schroedinger speex vpx"
for i in ${uses}; do
use ${i} && myconf+=( --enable-lib${i} )
done
use jpeg2k && myconf+=( --enable-libopenjpeg )

# CPU features
for i in ${CPU_FEATURES}; do
use ${i%:*} || myconf+=( --disable-${i#*:} )
done

# pass the right -mfpu as extra
use neon && use arm && append-cflags -mfpu=neon

# disable mmx accelerated code if PIC is required
# as the provided asm decidedly is not PIC for x86.
if use pic && [[ ${ABI} == x86 ]]; then
myconf+=( --disable-mmx --disable-mmxext )
fi

# Option to force building pic
use pic && myconf+=( --enable-pic )

# 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

# Misc stuff
use hardcoded-tables && myconf+=( --enable-hardcoded-tables )

# Forcing arm would make the compiler break left and right
if [[ ${ABI} == arm ]]; then
filter-flags -marm
fi

# Specific workarounds for too-few-registers arch...
if [[ ${ABI} == x86 ]]; then
local CFLAGS=${CFLAGS} CXXFLAGS=${CXXFLAGS}
filter-flags -fforce-addr -momit-leaf-frame-pointer
append-flags -fomit-frame-pointer
is-flag -O? || append-flags -O2
if use debug; then
# no need to warn about debug if not using debug flag
ewarn ""
ewarn "Debug information will be almost useless as the frame pointer is omitted."
ewarn "This makes debugging harder, so crashes that has no fixed behavior are"
ewarn "difficult to fix. Please have that in mind."
ewarn ""
fi
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)" \
--ar="$(tc-getAR)" \
--optflags="${CFLAGS}" \
--extra-cflags="${CFLAGS}" \
$(use_enable static-libs static) \
"${myconf[@]}"
echo "${@}"
"${@}" || die
}

multilib_src_compile() {
emake

if use tools; then
tc-export CC

emake ${TOOLS[@]/#/tools/}
fi
}

multilib_src_install() {
emake DESTDIR="${D}" install install-man
use doc && dodoc doc/*.html

if use tools; then
dobin ${TOOLS[@]/#/tools/}
fi
}

multilib_src_install_all() {
dodoc Changelog README.md INSTALL
}

multilib_src_test() {
local _libs="$(for i in lib*/;do echo -n "${BUILD_DIR}/${i%/}:";done)"
einfo "LD_LIBRARY_PATH is set to \"${_libs}\""
LD_LIBRARY_PATH="${_libs}" emake -k -j1 fate
}

0 comments on commit 96b6c0a

Please sign in to comment.