File ffmpeg.spec of Package ffmpeg.6568

#
# spec file for package ffmpeg
#
# Copyright (c) 2016 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 http://bugs.opensuse.org/
#


%bcond_with    dcadec
%bcond_with    lame
%bcond_with    librtmp
%bcond_with    twolame
%bcond_with    vo_aacenc
%bcond_with    x264
%bcond_with    x265
%bcond_with    xvid
%bcond_without celt
%bcond_without libass
%bcond_without libva
%bcond_without openjpeg
%bcond_without vdpau
%bcond_without webp

Name:           ffmpeg
Version:        2.8.10
Release:        0
Summary:        Library working with various multimedia formats
License:        LGPL-2.1+ and GPL-2.0+
Group:          Productivity/Multimedia/Video/Editors and Convertors
Url:            https://ffmpeg.org/
#Freshcode-URL:    http://freshcode.club/projects/ffmpeg
#Git-Clone:    git://source.ffmpeg.org/ffmpeg
Source:         https://www.ffmpeg.org/releases/%name-%version.tar.xz
Source2:        https://www.ffmpeg.org/releases/%name-%version.tar.xz.asc
Source3:        ffmpeg-rpmlintrc
Source99:       baselibs.conf
Patch1:         ffmpeg-libcdio_cdda-pkgconfig.patch
Patch2:         ffmpeg-2.4.5-arm6l.patch
Patch3:         0001-avcodec-exr-Check-tile-positions.patch
Patch6:         0001-avformat-avidec-Fix-memleak-with-dv-in-avi.patch
#
Provides:       ffmpeg-tools = %{version}
Obsoletes:      ffmpeg-tools < %{version}
#
BuildRequires:  ladspa-devel
BuildRequires:  libgsm-devel
BuildRequires:  pkg-config
BuildRequires:  xz
BuildRequires:  yasm
BuildRequires:  pkgconfig(alsa)
BuildRequires:  pkgconfig(bzip2)
%if %{with celt}
BuildRequires:  pkgconfig(celt) >= 0.11.0
%endif
BuildRequires:  pkgconfig(enca)
BuildRequires:  pkgconfig(fontconfig) >= 2.4.2
BuildRequires:  pkgconfig(freetype2)
BuildRequires:  pkgconfig(fribidi) >= 0.19.0
BuildRequires:  pkgconfig(gnutls)
BuildRequires:  pkgconfig(jack)
%if %{with libass}
BuildRequires:  pkgconfig(libass)
%endif
BuildRequires:  pkgconfig(libbluray)
BuildRequires:  pkgconfig(libcdio)
BuildRequires:  pkgconfig(libcdio_paranoia)
BuildRequires:  pkgconfig(libdc1394-2)
BuildRequires:  pkgconfig(liboil-0.3) >= 0.3.15
%if %{with openjpeg}
BuildRequires:  pkgconfig(libopenjpeg)
%endif
BuildRequires:  pkgconfig(libpulse)
BuildRequires:  pkgconfig(libraw1394)
%if %{with libva}
BuildRequires:  pkgconfig(libva)
%endif
%if %{with webp}
BuildRequires:  pkgconfig(libwebp) >= 0.4
%endif
BuildRequires:  pkgconfig(ogg)
BuildRequires:  pkgconfig(opus)
BuildRequires:  pkgconfig(schroedinger-1.0)
BuildRequires:  pkgconfig(sdl)
BuildRequires:  pkgconfig(speex)
BuildRequires:  pkgconfig(theora) >= 1.1
%if %{with vdpau}
BuildRequires:  pkgconfig(vdpau)
%endif
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 0%{?BUILD_ORIG}
%if %{with librtmp}
BuildRequires:  pkgconfig(librtmp)
%endif
%if %{with lame}
BuildRequires:  libmp3lame-devel
%endif
%if %{with xvid}
BuildRequires:  libxvidcore-devel
%endif
%if %{with dcadec}
BuildRequires:  pkgconfig(dcadec)
%endif
BuildRequires:  pkgconfig(opencore-amrnb)
%if %{with twolame}
BuildRequires:  pkgconfig(twolame)
%endif
%if %{with vo_aacenc}
BuildRequires:  pkgconfig(vo-aacenc)
%endif
%if %{with x264}
BuildRequires:  pkgconfig(x264)
%endif
%if %{with x265}
BuildRequires:  pkgconfig(x265)
%endif
%endif
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
FFmpeg is the leading multimedia framework, able to decode, encode,
transcode, mux, demux, stream, filter and play pretty much anything
that humans and machines have created. It supports the most obscure
ancient formats up to the cutting edge. No matter if they were
designed by some standards committee, the community or a corporation.

%package -n libavcodec56
Summary:        FFmpeg codec library
Group:          System/Libraries
# For mozillas
Provides:       libavcodec = %version-%release
%if 0%{?BUILD_ORIG}
Provides:       libavcodec-full = %version-%release
%endif

%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.

The shared architecture provides various services ranging from bit
stream I/O to DSP optimizations, and makes it suitable for
implementing robust and fast codecs as well as for experimentation.

%package -n libavcodec-devel
Summary:        Development files for FFmpeg's codec library
Group:          Development/Libraries/C and C++
Requires:       libavcodec56 = %version

%description -n 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

%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 -n libavdevice-devel
Summary:        Development files for FFmpeg's device library
Group:          Development/Libraries/C and C++
Requires:       libavdevice56 = %version

%description -n 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 libavcodec.

%package -n libavfilter5
Summary:        FFmpeg audio and video filtering library
Group:          System/Libraries

%description -n libavfilter5
The libavfilter library provides a generic audio/video filtering
framework containing several filters, sources and sinks.

%package -n libavfilter-devel
Summary:        Development files for FFmpeg's audio/video filter library
Group:          Development/Libraries/C and C++
Requires:       libavfilter5 = %version

%description -n 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 libavcodec.

%package -n libavformat56
Summary:        FFmpeg's stream format library
Group:          System/Libraries

%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 -n libavformat-devel
Summary:        Development files for FFmpeg's stream format library
Group:          Development/Libraries/C and C++
Requires:       libavformat56 = %version

%description -n 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 libavcodec.

%package -n libavresample2
Summary:        FFmpeg alternate audio resampling library
Group:          System/Libraries

%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 -n libavresample-devel
Summary:        Development files for libavresample as present in FFmpeg
Group:          Development/Libraries/C and C++
Requires:       libavresample2 = %version

%description -n 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 -n libavutil-devel
Summary:        Development files for FFmpeg's utility library
Group:          Development/Libraries/C and C++
Requires:       libavutil54 = %version

%description -n 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 libavcodec.

%package -n libpostproc53
Summary:        FFmpeg post-processing library
Group:          System/Libraries

%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 -n libpostproc-devel
Summary:        Development files for the FFmpeg post-processing library
Group:          Development/Libraries/C and C++
Requires:       libpostproc53 = %version

%description -n 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 libavcodec.

%package -n libswresample1
Summary:        FFmpeg software resampling library
Group:          System/Libraries

%description -n libswresample1
The libswresample library performs audio conversion between different
sample rates, channel layout and channel formats.

%package -n libswresample-devel
Summary:        Development files for the FFmpeg software resampling library
Group:          Development/Libraries/C and C++
Requires:       libswresample1 = %version

%description -n 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

%description -n libswscale3
The libswscale library performs image scaling and colorspace and
pixel format conversion operations.

%package -n libswscale-devel
Summary:        Development files for FFmpeg's image scaling and colorspace library
Group:          Development/Libraries/C and C++
Requires:       libswscale3 = %version

%description -n libswscale-devel
The libswscale library performs image scaling and colorspace and
pixel format conversion operations.

This subpackage contains the headers for FFmpeg libswscale.

%package devel
Summary:        Development files for FFmpeg
Group:          Development/Libraries/C and C++
Requires:       libavcodec-devel = %version
Requires:       libavdevice-devel = %version
Requires:       libavfilter-devel = %version
Requires:       libavformat-devel = %version
Requires:       libavutil-devel = %version
Requires:       libpostproc-devel = %version
Requires:       libswresample-devel = %version
Requires:       libswscale-devel = %version

%description devel
FFmpeg consists of a number of C libraries that work with various
multimedia formats.

This metapackage will pull them all in.

%prep
%setup -q
%patch -P 1 -P 2 -P 3 -P 6 -p1

%build
perl -i -pe 's{__TIME__|__DATE__}{"$&"}g' *.c

%if !0%{?BUILD_ORIG}
#image
b="$b,012v,ansi,apng,bmp,flac,exr,ffv1,ffvhuff,gif,huffyuv"
b="$b,jpegls,libopenjpeg,libtheora,libvpx,pam,pbm,pcx,pgm,png,pgmyuv,ppm"
b="$b,sgi,sunrast,targa,tiff,v210,v308,v408,v410,webp,xbm,xwd,y41p,yuv4"
d="ljpeg,v210x,vorbis,vp3,vp5,vp6,vp6a,vp6f,vp8,vp9"
#audio
b="$b,celt,flac,ilbc,opus,pcm_alaw,pcm_bluray,pcm_dvd,pcm_f32be,pcm_f32le"
b="$b,pcm_f64be,pcm_f64le,pcm_mulaw,pcm_s16be,pcm_s16be_planer,pcm_s16le"
b="$b,pcm_s16le_planar,pcm_s24be,pcm_s24le,pcm_s24le_planar,pcm_s32be"
b="$b,pcm_s32le,pcm_s32le_planar,pcm_s8,pcm_s8_planar,pcm_u16be,pcm_u16le"
b="$b,pcm_u24be,pcm_u24le,pcm_u32be,pcm_u32le,pcm_u8,speex"
e="libvorbis"
#other
d="$d,otf,ttf,ass,srt,ssa,text"
%endif

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 \
%if %{with libass}
	--enable-libass \
%endif
	--enable-libbluray \
%if %{with celt}
	--enable-libcelt \
%endif
	--enable-libcdio \
	--enable-libdc1394 \
	--enable-libfreetype \
	--enable-libgsm \
%if %{with openjpeg}
	--enable-libopenjpeg \
%endif
	--enable-libopus \
	--enable-libpulse \
	--enable-libschroedinger \
	--enable-libspeex \
	--enable-libtheora \
	--enable-libvorbis \
	--enable-libvpx \
%if %{with webp}
	--enable-libwebp \
%endif
	--enable-pic \
	--enable-pthreads \
%if %{with libva}
	--enable-vaapi \
%endif
%if %{with vdpau}
	--enable-vdpau \
%endif
%if 0%{?BUILD_ORIG}
%if %{with dcadec}
	--disable-decoder="dca" \
	--enable-libdcadec \
%endif
%if %{with lame}
	--enable-libmp3lame \
%endif
	--enable-libopencore-amrnb \
	--enable-libopencore-amrwb \
	--enable-version3 \
%if %{with twolame}
	--enable-libtwolame \
%endif
%if %{with vo_aacenc}
	--enable-libvo-aacenc \
%endif
%if %{with x264}
	--enable-libx264 \
%endif
%if %{with x265}
	--enable-libx265 \
%endif
%if %{with xvid}
	--enable-libxvid \
%endif
%else
	--disable-encoders \
	--disable-decoders \
	--disable-muxers \
	--disable-demuxers \
	--enable-encoder="$b,$e" \
	--enable-decoder="$b,$d" \
	--enable-muxer="flac,gif,image2,image2pipe,matroska,matroska_audio,null,webm" \
	--enable-demuxer="flac,gif,image2,image2pipe,matroska" \
%endif
	--enable-x11grab
make %{?_smp_mflags}

%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
rm -Rf "$b/%_datadir/ffmpeg/examples"
for i in %extratools; do
	cp -a "tools/$i" "$b/%_bindir/"
done

%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

%files
%defattr(-,root,root)
%doc Changelog COPYING.GPLv2 CREDITS LICENSE.md README.md
%_bindir/*
%_mandir/man1/ff*.1*
%_datadir/ffmpeg/

%files -n libavcodec56
%defattr(-,root,root)
%_libdir/libavcodec.so.*

%files -n libavdevice56
%defattr(-,root,root)
%_libdir/libavdevice.so.*

%files -n libavfilter5
%defattr(-,root,root)
%_libdir/libavfilter.so.*

%files -n libavformat56
%defattr(-,root,root)
%_libdir/libavformat.so.*

%files -n libavresample2
%defattr(-,root,root)
%_libdir/libavresample.so.*

%files -n libavutil54
%defattr(-,root,root)
%_libdir/libavutil.so.*

%files -n libpostproc53
%defattr(-,root,root)
%_libdir/libpostproc.so.*

%files -n libswresample1
%defattr(-,root,root)
%_libdir/libswresample.so.*

%files -n libswscale3
%defattr(-,root,root)
%_libdir/libswscale.so.*

%files -n libavcodec-devel
%defattr(-,root,root)
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libavcodec/
%_libdir/libavcodec.so
%_libdir/pkgconfig/libavcodec.pc
%_mandir/man3/libavcodec.3*

%files -n libavdevice-devel
%defattr(-,root,root)
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libavdevice/
%_libdir/libavdevice.so
%_libdir/pkgconfig/libavdevice.pc
%_mandir/man3/libavdevice.3*

%files -n libavfilter-devel
%defattr(-,root,root)
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libavfilter/
%_libdir/libavfilter.so
%_libdir/pkgconfig/libavfilter.pc
%_mandir/man3/libavfilter.3*

%files -n libavformat-devel
%defattr(-,root,root)
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libavformat/
%_libdir/libavformat.so
%_libdir/pkgconfig/libavformat.pc
%_mandir/man3/libavformat.3*

%files -n libavresample-devel
%defattr(-,root,root)
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libavresample/
%_libdir/libavresample.so
%_libdir/pkgconfig/libavresample.pc

%files -n libavutil-devel
%defattr(-,root,root)
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libavutil/
%_libdir/libavutil.so
%_libdir/pkgconfig/libavutil.pc
%_mandir/man3/libavutil.3*

%files -n libpostproc-devel
%defattr(-,root,root)
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libpostproc/
%_libdir/libpostproc.so
%_libdir/pkgconfig/libpostproc.pc

%files -n libswresample-devel
%defattr(-,root,root)
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libswresample/
%_libdir/libswresample.so
%_libdir/pkgconfig/libswresample.pc
%_mandir/man3/libswresample.3*

%files -n libswscale-devel
%defattr(-,root,root)
%dir %_includedir/ffmpeg/
%_includedir/ffmpeg/libswscale/
%_libdir/libswscale.so
%_libdir/pkgconfig/libswscale.pc
%_mandir/man3/libswscale.3*

%files devel
%defattr(-,root,root)
%dir %_includedir/ffmpeg/

%changelog
openSUSE Build Service is sponsored by