ffmpeg: add v1.0.10, v2.8.15; add '+avresample'; improve variant handling (#16359)
* ffmpeg: add older versions (i.e. 2.8.15, 1.0.10), add 'avresample' variant * ffmpeg: update variant handling to support older versions (i.e. 2.8.15, 1.0.10)
This commit is contained in:
parent
c37857f995
commit
97e67b385c
@ -13,10 +13,12 @@ class Ffmpeg(AutotoolsPackage):
|
|||||||
homepage = "https://ffmpeg.org"
|
homepage = "https://ffmpeg.org"
|
||||||
url = "http://ffmpeg.org/releases/ffmpeg-4.1.1.tar.bz2"
|
url = "http://ffmpeg.org/releases/ffmpeg-4.1.1.tar.bz2"
|
||||||
|
|
||||||
version('4.2.2', sha256='b620d187c26f76ca19e74210a0336c3b8380b97730df5cdf45f3e69e89000e5c')
|
version('4.2.2', sha256='b620d187c26f76ca19e74210a0336c3b8380b97730df5cdf45f3e69e89000e5c')
|
||||||
version('4.1.1', sha256='0cb40e3b8acaccd0ecb38aa863f66f0c6e02406246556c2992f67bf650fab058')
|
version('4.1.1', sha256='0cb40e3b8acaccd0ecb38aa863f66f0c6e02406246556c2992f67bf650fab058')
|
||||||
version('4.1', sha256='b684fb43244a5c4caae652af9022ed5d85ce15210835bce054a33fb26033a1a5')
|
version('4.1', sha256='b684fb43244a5c4caae652af9022ed5d85ce15210835bce054a33fb26033a1a5')
|
||||||
version('3.2.4', sha256='c0fa3593a2e9e96ace3c1757900094437ad96d1d6ca19f057c378b5f394496a4')
|
version('3.2.4', sha256='c0fa3593a2e9e96ace3c1757900094437ad96d1d6ca19f057c378b5f394496a4')
|
||||||
|
version('2.8.15', sha256='35647f6c1f6d4a1719bc20b76bf4c26e4ccd665f46b5676c0e91c5a04622ee21')
|
||||||
|
version('1.0.10', sha256='1dbde434c3b5c573d3b2ffc1babe3814f781c10c4bc66193a4132a44c9715176')
|
||||||
|
|
||||||
# Licensing
|
# Licensing
|
||||||
variant('gpl', default=True,
|
variant('gpl', default=True,
|
||||||
@ -53,9 +55,10 @@ class Ffmpeg(AutotoolsPackage):
|
|||||||
# variant('libxml2', default=False,
|
# variant('libxml2', default=False,
|
||||||
# description='XML parsing, needed for dash demuxing support')
|
# description='XML parsing, needed for dash demuxing support')
|
||||||
variant('libzmq', default=False, description='message passing via libzmq')
|
variant('libzmq', default=False, description='message passing via libzmq')
|
||||||
variant('lzma', default=True, description='lzma support')
|
variant('lzma', default=False, description='lzma support')
|
||||||
|
variant('avresample', default=False, description='AV reasmpling component')
|
||||||
variant('openssl', default=False, description='needed for https support')
|
variant('openssl', default=False, description='needed for https support')
|
||||||
variant('sdl2', default=True, description='sdl2 support')
|
variant('sdl2', default=False, description='sdl2 support')
|
||||||
variant('shared', default=True, description='build shared libraries')
|
variant('shared', default=True, description='build shared libraries')
|
||||||
|
|
||||||
depends_on('alsa-lib')
|
depends_on('alsa-lib')
|
||||||
@ -84,58 +87,88 @@ class Ffmpeg(AutotoolsPackage):
|
|||||||
depends_on('speex', when='+libspeex')
|
depends_on('speex', when='+libspeex')
|
||||||
depends_on('xz', when='+lzma')
|
depends_on('xz', when='+lzma')
|
||||||
|
|
||||||
|
# TODO: enable when libxml2 header issue is resolved
|
||||||
|
# conflicts('+libxml2', when='@:3.999')
|
||||||
|
# See: https://www.ffmpeg.org/index.html#news (search AV1)
|
||||||
|
conflicts('+libaom', when='@:3.999')
|
||||||
|
# All of the following constraints were sourced from the official 'ffmpeg'
|
||||||
|
# change log, which can be found here:
|
||||||
|
# https://raw.githubusercontent.com/FFmpeg/FFmpeg/release/4.0/Changelog
|
||||||
|
conflicts('+sdl2', when='@:3.1.999')
|
||||||
|
conflicts('+libsnappy', when='@:2.7.999')
|
||||||
|
conflicts('+X', when='@:2.4.999')
|
||||||
|
conflicts('+lzma', when='@2.3.999:')
|
||||||
|
conflicts('+libwebp', when='@2.1.999:')
|
||||||
|
conflicts('+libssh', when='@2.0.999:')
|
||||||
|
conflicts('+libzmq', when='@:1.999.999')
|
||||||
|
|
||||||
|
def enable_or_disable_meta(self, variant, options):
|
||||||
|
switch = 'enable' if '+{0}'.format(variant) in self.spec else 'disable'
|
||||||
|
return ['--{0}-{1}'.format(switch, option) for option in options]
|
||||||
|
|
||||||
def configure_args(self):
|
def configure_args(self):
|
||||||
spec = self.spec
|
spec = self.spec
|
||||||
config_args = ['--enable-pic']
|
config_args = ['--enable-pic']
|
||||||
|
|
||||||
if '+X' in spec:
|
# '+X' meta variant #
|
||||||
config_args.extend([
|
|
||||||
'--enable-libxcb',
|
xlib_opts = []
|
||||||
'--enable-libxcb-shape',
|
|
||||||
'--enable-libxcb-shm',
|
if spec.satisfies('@2.5:'):
|
||||||
'--enable-libxcb-xfixes',
|
xlib_opts.extend([
|
||||||
'--enable-xlib',
|
'libxcb',
|
||||||
])
|
'libxcb-shape',
|
||||||
else:
|
'libxcb-shm',
|
||||||
config_args.extend([
|
'libxcb-xfixes',
|
||||||
'--disable-libxcb',
|
'xlib',
|
||||||
'--disable-libxcb-shape',
|
|
||||||
'--disable-libxcb-shm',
|
|
||||||
'--disable-libxcb-xfixes',
|
|
||||||
'--disable-xlib',
|
|
||||||
])
|
])
|
||||||
|
|
||||||
if '+drawtext' in spec:
|
config_args += self.enable_or_disable_meta('X', xlib_opts)
|
||||||
config_args.extend([
|
|
||||||
'--enable-libfontconfig',
|
# '+drawtext' meta variant #
|
||||||
'--enable-libfreetype',
|
|
||||||
'--enable-libfribidi',
|
drawtext_opts = [
|
||||||
])
|
'{0}fontconfig'.format('lib' if spec.satisfies('@3:') else ''),
|
||||||
else:
|
'libfreetype',
|
||||||
config_args.extend([
|
]
|
||||||
'--disable-libfontconfig',
|
|
||||||
'--disable-libfreetype',
|
if spec.satisfies('@2.3:'):
|
||||||
'--disable-libfribidi',
|
drawtext_opts.append('libfribidi')
|
||||||
])
|
|
||||||
for variant in [
|
config_args += self.enable_or_disable_meta('drawtext', drawtext_opts)
|
||||||
|
|
||||||
|
# other variants #
|
||||||
|
|
||||||
|
variant_opts = [
|
||||||
'bzlib',
|
'bzlib',
|
||||||
'libaom',
|
|
||||||
'libmp3lame',
|
'libmp3lame',
|
||||||
'libopenjpeg',
|
'libopenjpeg',
|
||||||
'libopus',
|
'libopus',
|
||||||
'libsnappy',
|
|
||||||
'libspeex',
|
'libspeex',
|
||||||
'libssh',
|
|
||||||
'libvorbis',
|
'libvorbis',
|
||||||
'libwebp',
|
'avresample',
|
||||||
# TODO: enable when libxml2 header issue is resolved
|
|
||||||
# 'libxml2',
|
|
||||||
'libzmq',
|
|
||||||
'lzma',
|
|
||||||
'openssl',
|
'openssl',
|
||||||
'sdl2',
|
|
||||||
'shared',
|
'shared',
|
||||||
]:
|
]
|
||||||
config_args += self.enable_or_disable(variant)
|
|
||||||
|
if spec.satisfies('@2.0:'):
|
||||||
|
variant_opts.append('libzmq')
|
||||||
|
if spec.satisfies('@2.1:'):
|
||||||
|
variant_opts.append('libssh')
|
||||||
|
if spec.satisfies('@2.2:'):
|
||||||
|
variant_opts.append('libwebp')
|
||||||
|
if spec.satisfies('@2.4:'):
|
||||||
|
variant_opts.append('lzma')
|
||||||
|
if spec.satisfies('@2.8:'):
|
||||||
|
variant_opts.append('libsnappy')
|
||||||
|
if spec.satisfies('@3.2:'):
|
||||||
|
variant_opts.append('sdl2')
|
||||||
|
if spec.satisfies('@4:'):
|
||||||
|
variant_opts.append('libaom')
|
||||||
|
# TODO: enable when libxml2 header issue is resolved
|
||||||
|
# variant_opts.append('libxml2')
|
||||||
|
|
||||||
|
for variant_opt in variant_opts:
|
||||||
|
config_args += self.enable_or_disable(variant_opt)
|
||||||
|
|
||||||
return config_args
|
return config_args
|
||||||
|
Loading…
Reference in New Issue
Block a user