File ffmpeg-2.spec of Package A_tw-ffmpeg-2
#
# spec file for package ffmpeg-2
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define _lto_cflags %{nil}
ExclusiveArch: %ix86 x86_64
# Create proper conflicts to make sure we require all from one version
# p: Conflict string, eg if you need them all for requires instead
# Default value Conflicts:
# c: copmare string ie "<" or ">=", must be defined
# v: version string ie. "< 42.3.4" or ">= 15.0.2.1", must be defined
%define devel_conflicts(p:c:v:) \
%define preamble_string %{-p:%{-p*}}%{!-p:Conflicts:} \
%define comparator %{-c:%{-c*}}%{!-c:%{error:Comparator not defined}} \
%define conflicts_version %{-v:%{-v*}}%{!-v:%{error:Version not defined}} \
\
%{preamble_string} libavcodec-devel %{comparator} %{conflicts_version} \
%{preamble_string} libavdevice-devel %{comparator} %{conflicts_version} \
%{preamble_string} libavfilter-devel %{comparator} %{conflicts_version} \
%{preamble_string} libavformat-devel %{comparator} %{conflicts_version} \
%{preamble_string} libavresample-devel %{comparator} %{conflicts_version} \
%{preamble_string} libavutil-devel %{comparator} %{conflicts_version} \
%{preamble_string} libpostproc-devel %{comparator} %{conflicts_version} \
%{preamble_string} libswresample-devel %{comparator} %{conflicts_version} \
%{preamble_string} libswscale-devel %{comparator} %{conflicts_version} \
%{preamble_string} ffmpeg-private-devel %{comparator} %{conflicts_version} \
%{nil}
%bcond_with fdk_aac
%bcond_without librtmp
%bcond_without opencore
%bcond_without vo_aacenc
%bcond_without x264
%bcond_without x265
%bcond_without xvid
# Full build or just support package on older codestream
%bcond_with ffmpeg2_full_build
%define _major_version 2
%define _major_expected 3
Name: ffmpeg-2
Version: 2.8.22
Release: 0
Summary: Library for working with various multimedia formats
License: LGPL-2.1-or-later AND GPL-2.0-or-later
Group: Productivity/Multimedia/Video/Editors and Convertors
Url: https://git.ffmpeg.org/gitweb/ffmpeg.git
Source: %name-%version.tar.xz
Source3: %name-rpmlintrc
Source4: enable_decoders
Source5: enable_encoders
Source6: enable_demuxers
Source7: enable_muxers
Source99: baselibs.conf
Patch0: %name.patch
Patch1: ffmpeg-libcdio_cdda-pkgconfig.patch
Patch2: ffmpeg-2.4.5-arm6l.patch
Patch3: ffmpeg-pkgconfig-version.patch
Patch5: ffmpeg-codec-choice.diff
Patch6: ffmpeg-fix-build-fdk-aac2.patch
Patch7: ffmpeg-x86-mathops.patch
BuildRequires: ladspa-devel
BuildRequires: libgsm-devel
BuildRequires: libmp3lame-devel
BuildRequires: pkg-config
BuildRequires: yasm
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(bzip2)
BuildRequires: pkgconfig(celt) >= 0.11.0
BuildRequires: pkgconfig(enca)
BuildRequires: pkgconfig(fontconfig) >= 2.4.2
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(fribidi) >= 0.19.0
BuildRequires: pkgconfig(gnutls)
BuildRequires: pkgconfig(jack)
BuildRequires: pkgconfig(libass)
BuildRequires: pkgconfig(libbluray)
BuildRequires: pkgconfig(libcdio)
BuildRequires: pkgconfig(libcdio_paranoia)
BuildRequires: pkgconfig(libdc1394-2)
%if 0%{?suse_version} <= 1500
BuildRequires: pkgconfig(libopenjpeg)
%endif
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libraw1394)
BuildRequires: pkgconfig(libva) >= 0.35.0
BuildRequires: pkgconfig(libwebp) >= 0.4
BuildRequires: pkgconfig(ogg)
BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(schroedinger-1.0)
BuildRequires: pkgconfig(sdl)
BuildRequires: pkgconfig(speex)
BuildRequires: pkgconfig(theora) >= 1.1
BuildRequires: pkgconfig(twolame)
BuildRequires: pkgconfig(vdpau)
BuildRequires: pkgconfig(vorbis)
BuildRequires: pkgconfig(vpx) >= 1.3.0
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xcb)
BuildRequires: pkgconfig(xcb-render)
BuildRequires: pkgconfig(xcb-shape)
BuildRequires: pkgconfig(xcb-shm)
BuildRequires: pkgconfig(xcb-xfixes)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xfixes)
BuildRequires: pkgconfig(zlib)
%if %{with fdk_aac}
BuildRequires: pkgconfig(fdk-aac)
%endif
%if %{with librtmp}
BuildRequires: pkgconfig(librtmp)
%endif
%if %{with xvid}
BuildRequires: libxvidcore-devel
%endif
%if %{with opencore}
BuildRequires: pkgconfig(opencore-amrnb)
%endif
%if %{with x264}
BuildRequires: pkgconfig(x264)
%endif
%if %{with x265}
BuildRequires: pkgconfig(x265)
%endif
Provides: ffmpeg-tools = %version-%release
Obsoletes: ffmpeg-tools < %version-%release
Provides: ffmpeg = %version-%release
Obsoletes: ffmpeg < %version-%release
Requires: libavcodec56 = %version-%release
Requires: libavdevice56 = %version-%release
Requires: libavfilter5 = %version-%release
Requires: libavformat56 = %version-%release
Requires: libavresample2 = %version-%release
Requires: libavutil54 = %version-%release
Requires: libpostproc53 = %version-%release
Requires: libswresample1 = %version-%release
Requires: libswscale3 = %version-%release
%description
FFmpeg is a multimedia framework, able to decode, encode,
transcode, mux, demux, stream, filter and play several formats
that humans and machines have created.
%package -n libavcodec56
Summary: FFmpeg codec library
Group: System/Libraries
Requires: libavutil54 = %version-%release
Requires: libswresample1 = %version-%release
Provides: libavcodec = %version-%release
Provides: libavcodec-full = %version-%release
# This can be required by packages likes vlc-codecs - following the shlib name to not get random lib providers
Provides: libavcodec56(unrestricted)
%description -n libavcodec56
The libavcodec library provides a generic encoding/decoding framework
and contains multiple decoders and encoders for audio, video and
subtitle streams, and several bitstream filters.
%package libavcodec-devel
Summary: Development files for FFmpeg's codec library
Group: Development/Libraries/C and C++
Provides: libavcodec-devel = %version-%release
Obsoletes: libavcodec-devel < %version-%release
Requires: %{name}-libavresample-devel = %version-%release
Requires: %{name}-libavutil-devel = %version-%release
Requires: libavcodec56 = %version-%release
%devel_conflicts -c < -v %{_major_version}
%devel_conflicts -c >= -v %{_major_expected}
%description libavcodec-devel
The libavcodec library provides a generic encoding/decoding framework
and contains multiple decoders and encoders for audio, video and
subtitle streams, and several bitstream filters.
This subpackage contains the headers for FFmpeg libavcodec.
%package -n libavdevice56
Summary: FFmpeg device library
Group: System/Libraries
Requires: libavcodec56 = %version-%release
Requires: libavfilter5 = %version-%release
Requires: libavformat56 = %version-%release
Requires: libavutil54 = %version-%release
%description -n libavdevice56
The libavdevice library provides a generic framework for grabbing from
and rendering to many common multimedia input/output devices, and
supports several input and output devices, including Video4Linux2, VfW,
DShow, and ALSA.
%package libavdevice-devel
Summary: Development files for FFmpeg's device library
Group: Development/Libraries/C and C++
Provides: ffmpeg-devel = %version-%release
Conflicts: ffmpeg-devel
Provides: ffmpeg2-devel = %version-%release
Obsoletes: ffmpeg2-devel < %version-%release
Provides: libavdevice-devel = %version-%release
Obsoletes: libavdevice-devel < %version-%release
Requires: %{name}-libavcodec-devel = %version-%release
Requires: %{name}-libavfilter-devel = %version-%release
Requires: %{name}-libavformat-devel = %version-%release
Requires: %{name}-libavresample-devel = %version-%release
Requires: %{name}-libavutil-devel = %version-%release
Requires: %{name}-libpostproc-devel = %version-%release
Requires: %{name}-libswresample-devel = %version-%release
Requires: %{name}-libswscale-devel = %version-%release
Requires: libavdevice56 = %version-%release
%devel_conflicts -c < -v %{_major_version}
%devel_conflicts -c >= -v %{_major_expected}
%description libavdevice-devel
The libavdevice library provides a generic framework for grabbing from
and rendering to many common multimedia input/output devices, and
supports several input and output devices, including Video4Linux2, VfW,
DShow, and ALSA.
This subpackage contains the headers for FFmpeg libavdevice.
%package -n libavfilter5
Summary: FFmpeg audio and video filtering library
Group: System/Libraries
Requires: libavcodec56 = %version-%release
Requires: libavformat56 = %version-%release
Requires: libavresample2 = %version-%release
Requires: libavutil54 = %version-%release
Requires: libpostproc53 = %version-%release
Requires: libswresample1 = %version-%release
Requires: libswscale3 = %version-%release
%description -n libavfilter5
The libavfilter library provides a generic audio/video filtering
framework containing several filters, sources and sinks.
%package libavfilter-devel
Summary: Development files for FFmpeg's audio/video filter library
Group: Development/Libraries/C and C++
Provides: libavfilter-devel = %version-%release
Obsoletes: libavfilter-devel < %version-%release
Requires: %{name}-libavcodec-devel = %version-%release
Requires: %{name}-libavformat-devel = %version-%release
Requires: %{name}-libavresample-devel = %version-%release
Requires: %{name}-libavutil-devel = %version-%release
Requires: %{name}-libpostproc-devel = %version-%release
Requires: %{name}-libswresample-devel = %version-%release
Requires: %{name}-libswscale-devel = %version-%release
Requires: libavfilter5 = %version-%release
%devel_conflicts -c < -v %{_major_version}
%devel_conflicts -c >= -v %{_major_expected}
%description libavfilter-devel
The libavfilter library provides a generic audio/video filtering
framework containing several filters, sources and sinks.
This subpackage contains the headers for FFmpeg libavfilter.
%package -n libavformat56
Summary: FFmpeg's stream format library
Group: System/Libraries
Requires: libavcodec56 = %version-%release
Requires: libavutil54 = %version-%release
%description -n libavformat56
The libavformat library provides a generic framework for multiplexing
and demultiplexing (muxing and demuxing) audio, video and subtitle
streams. It encompasses multiple muxers and demuxers for multimedia
container formats.
%package libavformat-devel
Summary: Development files for FFmpeg's stream format library
Group: Development/Libraries/C and C++
Provides: libavformat-devel = %version-%release
Obsoletes: libavformat-devel < %version-%release
Requires: %{name}-libavcodec-devel = %version-%release
Requires: %{name}-libswresample-devel = %version-%release
Requires: libavformat56 = %version-%release
Requires: libavutil-devel = %version-%release
%devel_conflicts -c < -v %{_major_version}
%devel_conflicts -c >= -v %{_major_expected}
%description libavformat-devel
The libavformat library provides a generic framework for multiplexing
and demultiplexing (muxing and demuxing) audio, video and subtitle
streams. It encompasses multiple muxers and demuxers for multimedia
container formats.
This subpackage contains the headers for FFmpeg libavformat.
%package -n libavresample2
Summary: FFmpeg alternate audio resampling library
Group: System/Libraries
Requires: libavutil54 = %version-%release
%description -n libavresample2
An audio resampling library that is being provided for drop-in
compatibility with libav.
It is advised to use libswresample for new code.
%package libavresample-devel
Summary: Development files for libavresample as present in FFmpeg
Group: Development/Libraries/C and C++
Provides: libavresample-devel = %version-%release
Obsoletes: libavresample-devel < %version-%release
Requires: %{name}-libavutil-devel = %version-%release
Requires: libavresample2 = %version-%release
%devel_conflicts -c < -v %{_major_version}
%devel_conflicts -c >= -v %{_major_expected}
%description libavresample-devel
An audio resampling library that is being provided for drop-in
compatibility with libav.
It is advised to use libswresample for new code.
This subpackage contains the headers for FFmpeg's copy of libavresample.
%package -n libavutil54
Summary: FFmpeg's utility library
Group: System/Libraries
%description -n libavutil54
The libavutil library is a utility library to aid portable multimedia
programming. It contains safe portable string functions, random
number generators, data structures, additional mathematics functions,
cryptography and multimedia related functionality (like enumerations
for pixel and sample formats).
%package libavutil-devel
Summary: Development files for FFmpeg's utility library
Group: Development/Libraries/C and C++
Provides: libavutil-devel = %version-%release
Obsoletes: libavutil-devel < %version-%release
Requires: libavutil54 = %version-%release
%devel_conflicts -c < -v %{_major_version}
%devel_conflicts -c >= -v %{_major_expected}
%description libavutil-devel
The libavutil library is a utility library to aid portable multimedia
programming. It contains safe portable string functions, random
number generators, data structures, additional mathematics functions,
cryptography and multimedia related functionality (like enumerations
for pixel and sample formats).
This subpackage contains the headers for FFmpeg libavutil.
%package -n libpostproc53
Summary: FFmpeg post-processing library
Group: System/Libraries
Requires: libavutil54 = %version-%release
%description -n libpostproc53
A library with video postprocessing filters, such as deblocking and
deringing filters, noise reduction, automatic contrast and brightness
correction, linear/cubic interpolating deinterlacing.
%package libpostproc-devel
Summary: Development files for the FFmpeg post-processing library
Group: Development/Libraries/C and C++
Provides: libpostproc-devel = %version-%release
Obsoletes: libpostproc-devel < %version-%release
Requires: %{name}-libavutil-devel = %version-%release
Requires: libpostproc53 = %version
%devel_conflicts -c < -v %{_major_version}
%devel_conflicts -c >= -v %{_major_expected}
%description libpostproc-devel
A library with video postprocessing filters, such as deblocking and
deringing filters, noise reduction, automatic contrast and brightness
correction, linear/cubic interpolating deinterlacing.
This subpackage contains the headers for FFmpeg libpostproc.
%package -n libswresample1
Summary: FFmpeg software resampling library
Group: System/Libraries
Requires: libavutil54 = %version-%release
%description -n libswresample1
The libswresample library performs audio conversion between different
sample rates, channel layout and channel formats.
%package libswresample-devel
Summary: Development files for the FFmpeg software resampling library
Group: Development/Libraries/C and C++
Provides: libswresample-devel = %version-%release
Obsoletes: libswresample-devel < %version-%release
Requires: %{name}-libavutil-devel = %version-%release
Requires: libswresample1 = %version-%release
%devel_conflicts -c < -v %{_major_version}
%devel_conflicts -c >= -v %{_major_expected}
%description libswresample-devel
The libswresample library performs audio conversion between different
sample rates, channel layout and channel formats.
This subpackage contains the headers for FFmpeg libswresample.
%package -n libswscale3
Summary: FFmpeg image scaling and colorspace/pixel conversion library
Group: System/Libraries
Requires: libavutil54 = %version-%release
%description -n libswscale3
The libswscale library performs image scaling and colorspace and
pixel format conversion operations.
%package libswscale-devel
Summary: Development files for FFmpeg's image scaling and colorspace library
Group: Development/Libraries/C and C++
Provides: libswscale-devel = %version-%release
Conflicts: libswscale-devel
Requires: %{name}-libavutil-devel = %version-%release
Requires: libswscale3 = %version-%release
%devel_conflicts -c < -v %{_major_version}
%devel_conflicts -c >= -v %{_major_expected}
%description libswscale-devel
The libswscale library performs image scaling and colorspace and
pixel format conversion operations.
This subpackage contains the headers for FFmpeg libswscale.
%prep
%autosetup -p1
%build
echo '%version' > VERSION
perl -i -pe 's{__TIME__|__DATE__}{"$&"}g' *.c
CFLAGS="%optflags" \
./configure \
--prefix="%_prefix" --libdir="%_libdir" --shlibdir="%_libdir" \
--incdir="%_includedir/ffmpeg" \
--extra-cflags="%optflags" --optflags="%optflags" \
--disable-htmlpages \
--enable-pic --disable-stripping \
--enable-shared --disable-static \
--enable-runtime-cpudetect \
--enable-gpl \
--disable-openssl \
--enable-avresample \
--enable-libcdio \
--enable-gnutls \
--enable-ladspa \
--enable-libass \
--enable-libbluray \
--enable-libcelt \
--enable-libcdio \
--enable-libdc1394 \
--enable-libfreetype \
--enable-libgsm \
%if 0%{?suse_version} <= 1500
--enable-libopenjpeg \
%endif
--enable-libopus \
--enable-libpulse \
--enable-libschroedinger \
--enable-libspeex \
--enable-libtheora \
--enable-libvorbis \
--enable-libvpx \
--enable-libwebp \
--enable-pic \
--enable-pthreads \
--enable-vaapi \
--enable-vdpau \
%if %{with fdk_aac}
--enable-libfdk_aac --enable-nonfree \
%endif
--enable-libmp3lame \
%if %{with opencore}
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-version3 \
%endif
--enable-libtwolame \
%if %{with x264}
--enable-libx264 \
%endif
%if %{with x265}
--enable-libx265 \
%endif
%if %{with xvid}
--enable-libxvid \
%endif
--enable-x11grab
cat config.h
%make_build
%global extratools aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt graph2dot ismindex pktdumper probetest qt-faststart seek_print trasher
for i in %extratools; do
make "tools/$i"
done
%install
b="%buildroot"
%make_install install-man
%if %{with ffmpeg2_full_build}
rm -Rf "$b/%_datadir/ffmpeg/examples"
for i in %extratools; do
cp -a "tools/$i" "$b/%_bindir/"
done
%else
rm -Rf "$b/%_bindir" "$b/%_mandir/man1" "$b/%_datadir/ffmpeg"
%endif
%post -n libavcodec56 -p /sbin/ldconfig
%postun -n libavcodec56 -p /sbin/ldconfig
%post -n libavdevice56 -p /sbin/ldconfig
%postun -n libavdevice56 -p /sbin/ldconfig
%post -n libavfilter5 -p /sbin/ldconfig
%postun -n libavfilter5 -p /sbin/ldconfig
%post -n libavformat56 -p /sbin/ldconfig
%postun -n libavformat56 -p /sbin/ldconfig
%post -n libavresample2 -p /sbin/ldconfig
%postun -n libavresample2 -p /sbin/ldconfig
%post -n libavutil54 -p /sbin/ldconfig
%postun -n libavutil54 -p /sbin/ldconfig
%post -n libpostproc53 -p /sbin/ldconfig
%postun -n libpostproc53 -p /sbin/ldconfig
%post -n libswresample1 -p /sbin/ldconfig
%postun -n libswresample1 -p /sbin/ldconfig
%post -n libswscale3 -p /sbin/ldconfig
%postun -n libswscale3 -p /sbin/ldconfig
%if %{with ffmpeg2_full_build}
%files
%doc CREDITS README.md
%_bindir/*
%_mandir/man1/ff*.1*
%_datadir/ffmpeg/
%endif
%files -n libavcodec56
%_libdir/libavcodec.so.*
%files -n libavdevice56
%_libdir/libavdevice.so.*
%files -n libavfilter5
%_libdir/libavfilter.so.*
%files -n libavformat56
%_libdir/libavformat.so.*
%files -n libavresample2
%_libdir/libavresample.so.*
%files -n libavutil54
%doc Changelog
%license COPYING.GPLv2 LICENSE.md
%_libdir/libavutil.so.*
%files -n libpostproc53
%_libdir/libpostproc.so.*
%files -n libswresample1
%_libdir/libswresample.so.*
%files -n libswscale3
%_libdir/libswscale.so.*
%files libavcodec-devel
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libavcodec/
%_libdir/libavcodec.so
%_libdir/pkgconfig/libavcodec.pc
%_mandir/man3/libavcodec.3*
%files libavdevice-devel
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libavdevice/
%_libdir/libavdevice.so
%_libdir/pkgconfig/libavdevice.pc
%_mandir/man3/libavdevice.3*
%files libavfilter-devel
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libavfilter/
%_libdir/libavfilter.so
%_libdir/pkgconfig/libavfilter.pc
%_mandir/man3/libavfilter.3*
%files libavformat-devel
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libavformat/
%_libdir/libavformat.so
%_libdir/pkgconfig/libavformat.pc
%_mandir/man3/libavformat.3*
%files libavresample-devel
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libavresample/
%_libdir/libavresample.so
%_libdir/pkgconfig/libavresample.pc
%files libavutil-devel
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libavutil/
%_libdir/libavutil.so
%_libdir/pkgconfig/libavutil.pc
%_mandir/man3/libavutil.3*
%files libpostproc-devel
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libpostproc/
%_libdir/libpostproc.so
%_libdir/pkgconfig/libpostproc.pc
%files libswresample-devel
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libswresample/
%_libdir/libswresample.so
%_libdir/pkgconfig/libswresample.pc
%_mandir/man3/libswresample.3*
%files libswscale-devel
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libswscale/
%_libdir/libswscale.so
%_libdir/pkgconfig/libswscale.pc
%_mandir/man3/libswscale.3*
%changelog