Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37418985
en ru br
ALT Linux repos
S:6.0-alt2.1
D:0.5.0-alt0.14329.1
5.0: 15151-alt5.M50.1
4.1: 11656-alt1.M41.1
4.0: 10629-alt3.M40.0
3.0: 0.4.9-alt2cvs20050406

Group :: Video
RPM: ffmpeg

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

# vim: set ft=spec fdm=marker :

# {{{ Macros

%define set_disable() %{expand:%%force_disable %{1}} %{expand:%%undefine _enable_%{1}}
%define set_enable() %{expand:%%force_enable %{1}} %{expand:%%undefine _disable_%{1}}
%define subst_enable_with() %{expand:%%{?_enable_%{1}:--enable-%{2}} } %{expand:%%{?_disable_%{1}:--disable-%{2}} }
# }}}

# {{{ Enable/Disable stuff

%def_enable gpl
%def_enable liba52
%def_disable liba52bin
%def_disable libxvid
%def_enable libfaad
%def_disable libfaadbin
%def_enable libx264
%def_enable postproc
%def_enable libmp3lame
%def_disable libvorbis
%def_enable libfaac
%def_enable libgsm
%def_enable libdc1394
%def_enable shared
%def_enable static
%def_enable pthreads
%def_enable zlib
%def_enable vhook
%def_disable mpegaudio_hp
%def_enable mmx
%def_disable iwmmxt
%def_disable memalign_hack
%def_enable ffserver
%def_enable ffplay
%def_disable libdirac
%def_enable libschroedinger
%def_disable avisynth
%def_disable libnut
%def_enable libtheora
%def_disable gprof
%def_disable debug
%def_enable libamrnbbin
%def_enable libamrwbbin
%def_enable bzlib

%if_disabled gpl
%set_disable a52bin
%set_disable liba52
%set_disable libfaad
%set_disable libfaadbin
%set_disable libxvid
%set_disable libx264
%set_disable postproc
%endif

%if_enabled mmx
%set_verify_elf_method textrel=relaxed
%endif
# }}}

# {{{ General

%define Name FFmpeg
Name: ffmpeg
Version: 15151
Release: alt5.M50.1
Summary: Hyper fast MPEG1/MPEG4/H263/RV and AC3/MPEG audio encoder
Summary(ru_RU.CP1251): Быстрый кодировщик/декодировщик MPEG1/MPEG4/H263/RV и AC3/MPEG
Group: Video
License: %{!?_enabled_gpl:L}GPL
Packager: Pavlov Konstantin <thresh at altlinux.ru>
URL: http://ffmpeg.mplayerhq.hu
Source0: %name-%version-%release.tar.bz2

# We surely need this:

Requires: libavcodec = %version-%release
Requires: libavformat = %version-%release
Requires: libavutil = %version-%release
Requires: libavdevice = %version-%release
Requires: libavfilter = %version-%release

Patch1: %name-%version-alt-specific.patch
Patch2: %name-%version-debian-patches.patch
Patch4: %name-%version-swscale.patch
Patch5: %name-%version-xvmc-support.patch
# }}}

# {{{ BuildRequires

BuildRequires: libfreetype-devel texi2html
BuildRequires: glibc-kernheaders
BuildRequires: libX11-devel libXext-devel libXvMC-devel

%{?_enable_ffplay:BuildRequires: libSDL-devel}
%{?_enable_vhook:BuildRequires: libSDL-devel imlib2-devel >= 1.3.0-alt1}
%{?_enable_libmp3lame:BuildRequires: liblame-devel}
%{?_enable_libvorbis:BuildRequires: libvorbis-devel}
%{?_enable_libfaad:%{?_disable_libfaadbin:BuildRequires: libfaad-devel}}
%{?_enable_liba52:%{?_disable_liba52bin:BuildRequires: liba52-devel}}
%{?_enable_libfaac:BuildRequires: libfaac-devel}
%{?_enable_libgsm:BuildRequires: libgsm-devel}
%{?_enable_libxvid:BuildRequires: libxvid-devel}
%{?_enable_libx264:BuildRequires: libx264-devel >= 0.0-alt54}
%{?_enable_libdc1394:BuildRequires: libdc1394-devel libraw1394-devel}
%{?_enable_libdirac:BuildRequires: libdirac-devel >= 0.9.1-alt1 libstdc++-devel gcc4.1-c++}
%{?_enable_libschroedinger:BuildRequires: libschroedinger-devel}
%{?_enable_libnut:BuildRequires: libnut-devel}
%{?_enable_libtheora:BuildRequires: libtheora-devel}
%{?_enable_bzlib:BuildRequires: bzlib-devel}

# }}}


# {{{ Description

%description
%name is a hyper fast realtime audio/video encoder, a streaming
server and a generic audio and video file converter.

It can grab from a standard Video4Linux video source and convert it
into several file formats based on DCT/motion compensation encoding.
Sound is compressed in MPEG audio layer 2 or using an AC3 compatible
stream.

%description -l ru_RU.CP1251
%name -- это "сверхзвуковой" кодировщик/декодировщик видео и звука,
работающий в режиме реального времени, а также потоковый сервер и
преобразователь различных звуковых и видеоформатов.

%name умеет захватывать видеосигнал из источника Video4Linux и
преобразовывать его в файлы различных форматов на основе
компенсирующего кодирования DCT/motion. Звук при этом сжимается по
алгоритму MPEG audio layer 2 или алгоритму, совместимому с AC3.

# }}}


# {{{ Packages

%package doc
Summary: Documentation files for ffmpeg project.
Group: Video

%description doc
This package contains documentation for ffmpeg project.

%if_enabled vhook
%package -n %name-vhook
Summary: The video hook functionality for ffmpeg
Group: System/Libraries
Requires: %name = %version-%release

%description -n %name-vhook
The ffmpeg video hook functionality is designed (mostly) for live
video. It allows the video to be modified or examined between the
decoder and the encoder.
%endif

%if_enabled ffserver
%package -n ffserver
Summary: A streaming server for both audio and video
Group: Video
Requires: libavcodec = %version-%release
Requires: libavformat = %version-%release

%description -n ffserver
FFserver is a streaming server for both audio and video. It supports
several live feeds, streaming from files and time shifting on live
feeds.
%endif

%if_enabled ffplay
%package -n ffplay
Summary: A very simple media player using the ffmpeg and SDL libraries
Group: Video
Requires: libavcodec = %version-%release
Requires: libavformat = %version-%release

%description -n ffplay
FFplay is a very simple and portable media player using the ffmpeg
libraries and the SDL library. It is mostly used as a testbed for the
various ffmpeg APIs
%endif

%package -n lib%name
Summary: Shared libraries to run ffmpeg
Group: System/Libraries
Requires: libavcodec = %version-%release
Requires: libavformat = %version-%release
Requires: libpostproc = %version-%release
Requires: libswscale = %version-%release
Requires: libavutil = %version-%release
Requires: libavdevice = %version-%release
Requires: libavfilter = %version-%release

%description -n lib%name
This is a virtual package for backwards compatibility.
Contains requires to libavcodec, libavformat and libpostproc packages.

%description -n lib%name -l ru_RU.CP1251
Этот пакет содержит разделяемые библиотеки для ffmpeg.

%package -n lib%name-devel
Summary: Development files for ffmpeg
Group: Development/C
Provides: %name-devel = %version-%release
Obsoletes: %name-devel
Requires: lib%name = %version-%release
Requires: libavcodec-devel = %version-%release
Requires: libavformat-devel = %version-%release
Requires: libavutil-devel = %version-%release
Requires: libpostproc-devel = %version-%release
Requires: libswscale-devel = %version-%release
Requires: libavdevice-devel = %version-%release
Requires: libavfilter-devel = %version-%release

%description -n lib%name-devel
This package includes the development libraries, header files and
documentation necessary for developing programs which will use ffmpeg.

%description -l ru_RU.CP1251 -n lib%name-devel
Этот пакет содержит все необходимые файлы для разработки программ на
основе ffmpeg -- библиотеки для разработки, заголовочные файлы и
документацию.

%if_enabled static
%package -n lib%name-devel-static
Summary: ffmpeg static libraries
Group: Development/C
Requires: lib%name-devel = %version-%release
Requires: libavformat-devel-static = %version-%release
Requires: libavcodec-devel-static = %version-%release
Requires: libavutil-devel-static = %version-%release
Requires: libpostproc-devel-static = %version-%release
Requires: libswscale-devel-static = %version-%release
Requires: libavdevice-devel-static = %version-%release
Requires: libavfilter-devel-static = %version-%release

%description -n lib%name-devel-static
This package is virtual packet, which contains the ffmpeg static libraries.

%description -l ru_RU.CP1251 -n lib%name-devel-static
Этот пакет содержит статические библиотеки ffmpeg.
%endif

%package -n libavcodec
Summary: ffmpeg codec library
Group: System/Libraries
%{?_enable_libdirac:Requires: libdirac >= 0.9.1-alt1}

%description -n libavcodec
This package contains libavcodec, the ffmpeg project codec library.

%package -n libavcodec-devel
Summary: Development files for libavcodec
Group: Development/C
Requires: libavcodec = %version-%release

%description -n libavcodec-devel
This package contains development files for libavcodec.

%package -n libavformat52
Summary: ffmpeg file format library
Group: System/Libraries
Requires: libavcodec = %version-%release
Provides: libavformat = %version-%release
Obsoletes: libavformat <= %version-%release

%description -n libavformat52
This package contains libavformat, the ffmpeg project file format library.

%package -n libavformat-devel
Summary: Development files for libavcodec
Group: Development/C
Requires: libavformat = %version-%release

%description -n libavformat-devel
This package contains development files for libavformat.

%package -n libavutil
Summary: ffmpeg utility library
Group: System/Libraries

%description -n libavutil
This package contains libavutil, the ffmpeg project utility library.

%package -n libavutil-devel
Summary: Development files for libavutil
Group: Development/C
Requires: libavutil = %version-%release

%description -n libavutil-devel
This package contains development files for libavutil.

%package -n libpostproc
Summary: ffmpeg video postprocessing library
Group: System/Libraries

%description -n libpostproc
This package contains libpostproc, the ffmpeg project video postprocessing library.

%package -n libpostproc-devel
Summary: Development files for libpostproc
Group: Development/C
Requires: libpostproc = %version-%release

%description -n libpostproc-devel
This package contains development files for libpostproc

%package -n libswscale
Summary: ffmpeg image rescaling library
Group: System/Libraries

%description -n libswscale
This package contains libswscale, the ffmpeg project image rescaling library.

%package -n libswscale-devel
Summary: Development files for libswscale
Group: Development/C
Requires: libswscale = %version-%release

%description -n libswscale-devel
This package contains development files for libswscale.

%package -n libavdevice
Summary: ffmpeg device handling library
Group: System/Libraries

%description -n libavdevice
This package contains libavdevice, the ffmpeg project device handling library.

%package -n libavdevice-devel
Summary: Development files for libavdevice
Group: Development/C
Requires: libavdevice = %version-%release

%description -n libavdevice-devel
This package contains development files for libavdevice.

%package -n libavfilter
Summary: ffmpeg filter handling library
Group: System/Libraries

%description -n libavfilter
This package contains libavfilter, the ffmpeg project filter handling library.

%package -n libavfilter-devel
Summary: Development files for libavfilter
Group: Development/C
Requires: libavfilter = %version-%release

%description -n libavfilter-devel
This package contains development files for libavfilter.

%if_enabled static
%package -n libavformat-devel-static
Summary: Static development files for libavformat
Group: Development/C
Requires: libavformat-devel = %version-%release

%description -n libavformat-devel-static
This package contains static development files for libavformat.

%package -n libavcodec-devel-static
Summary: Static development files for libavcodec
Group: Development/C
Requires: libavcodec-devel = %version-%release

%description -n libavcodec-devel-static
This package contains static development files for libavcodec.

%package -n libpostproc-devel-static
Summary: Static development files for libpostproc
Group: Development/C
Requires: libpostproc-devel = %version-%release

%description -n libpostproc-devel-static
This package contains static development files for libpostproc

%package -n libswscale-devel-static
Summary: Static development files for libswscale
Group: Development/C
Requires: libswscale-devel = %version-%release

%description -n libswscale-devel-static
This package contains static development files for libswscale

%package -n libavutil-devel-static
Summary: Static development files for libavutil
Group: Development/C
Requires: libavutil-devel = %version-%release

%description -n libavutil-devel-static
This package contains static development files for libavutil.

%package -n libavdevice-devel-static
Summary: Static development files for libavdevice
Group: Development/C
Requires: libavdevice-devel = %version-%release

%description -n libavdevice-devel-static
This package contains static development files for libavdevice.

%package -n libavfilter-devel-static
Summary: Static development files for libavfilter
Group: Development/C
Requires: libavfilter-devel = %version-%release

%description -n libavfilter-devel-static
This package contains static development files for libavfilter.

%endif

# }}}


# {{{ Prep

%prep
%setup -q -n %name-%version-%release

subst 's/UNKNOWN/%version/' version.sh

find . -name Makefile -print0 | xargs -r0 subst '/ldconfig/d' --
# }}}

# {{{ Build

%build
# we have -O3 by default with --enable-opts
%add_optflags -frename-registers
%ifarch x86_64
%add_optflags %optflags_shared
%else
%ifarch %ix86
%add_optflags %{?_enable_mmx:-DRUNTIME_CPUDETECT}
%endif
%endif
./configure \
   --prefix=%_prefix \
   --libdir=%_libdir \
--shlibdir=%_libdir \
   --mandir=%_mandir \
   %{subst_enable gpl} \
   %{subst_enable postproc} \
   %{subst_enable pthreads} \
   %{subst_enable shared} \
   %{subst_enable static} \
   %{subst_enable libvorbis} \
   %{subst_enable liba52} \
   %{subst_enable liba52bin} \
   %{subst_enable libfaad} \
   %{subst_enable libfaadbin} \
   %{subst_enable libfaac} \
   %{subst_enable libxvid} \
   %{subst_enable libx264} \
   %{subst_enable libmp3lame} \
   %{subst_enable libgsm} \
   %{subst_enable libdc1394} \
   %{subst_enable zlib} \
   %{subst_enable vhook} \
   %{subst_enable_with mpegaudio_hp mpegaudio-hp} \
   %{subst_enable mmx} \
   %{subst_enable iwmmxt} \
   %{subst_enable_with memalign_hack memalign-hack} \
   %{subst_enable ffserver} \
   %{subst_enable ffplay} \
   %{subst_enable gprof} \
%{subst_enable libdirac} \
%{subst_enable libschroedinger} \
--enable-swscale \
--enable-avfilter \
%{subst_enable avisynth} \
%{subst_enable libnut} \
%{subst_enable libtheora} \
%{subst_enable libamrnbbin} \
%{subst_enable libamrwbbin} \
--enable-x11grab \
--enable-bzlib \
%if_enabled debug
--enable-debug \
--disable-strip \
%else
--disable-debug \
%endif
--extra-cflags="%optflags"

echo "HAVE_XVMC_ACCEL=yes" >> config.mak
echo "EXTRALIBS += -lXvMCW" >> config.mak
echo "#define HAVE_XVMC 1" >> config.h
echo "#define HAVE_XVMC_VLD 1" >> config.h

%make

# }}}


# {{{ Install

%install
%make_install \
INCDIR="%buildroot%_includedir" \
DESTDIR="%buildroot" \
MANDIR="%buildroot%_mandir" install

%{?_enable_ffserver:install -pD -m640 doc/ffserver.conf %buildroot%_sysconfdir/ffserver.conf}

# compatibility for older clients..

install -d -m 0755 %buildroot%_includedir/%name
for l in codec format util; do
   for f in %buildroot%_includedir/libav$l/*; do
ln -sf ../libav$l/$(basename "$f") %buildroot%_includedir/%name/
   done
done

for f in %buildroot%_includedir/libswscale/*; do
   ln -sf ../libswscale/$(basename "$f") %buildroot%_includedir/%name/
done

%if_enabled postproc
install -d -m 0755 %buildroot%_includedir/postproc
for f in %buildroot%_includedir/libpostproc/*; do
   ln -sf ../libpostproc/$(basename "$f") %buildroot%_includedir/postproc/
   ln -sf ../libpostproc/$(basename "$f") %buildroot%_includedir/%name/
done
%endif

bzip2 --best --force --keep -- Changelog

# }}}


# {{{ Post/postun scripts

%post -n lib%name -p %post_ldconfig
%post -n libavcodec -p %post_ldconfig
%post -n libpostproc -p %post_ldconfig
%post -n libavformat52 -p %post_ldconfig
%post -n libswscale -p %post_ldconfig
%post -n libavdevice -p %post_ldconfig

%postun -n lib%name -p %postun_ldconfig
%postun -n libavcodec -p %postun_ldconfig
%postun -n libpostproc -p %postun_ldconfig
%postun -n libavformat52 -p %postun_ldconfig
%postun -n libswscale -p %postun_ldconfig
%postun -n libavdevice -p %postun_ldconfig
# }}}

# {{{ Files

%files
%_bindir/%name
%_man1dir/%name.*
%dir %_libdir/vhook

%files doc
%doc doc/faq.html doc/%name-doc.html
%doc doc/TODO doc/optimization.txt
%doc MAINTAINERS CREDITS
%doc Changelog.*
%doc doc/hooks.html

%files -n libavcodec
%doc README.ALT-AMR
%_libdir/libavcodec.so.*

%files -n libavcodec-devel
%dir %_includedir/ffmpeg
%_includedir/libavcodec
%_includedir/ffmpeg/avcodec.h
%_includedir/ffmpeg/opt.h
%_includedir/ffmpeg/dsputil.h
%_libdir/libavcodec.so
%_pkgconfigdir/libavcodec.pc

%files -n libavformat52
%_libdir/libavformat.so.*

%files -n libavformat-devel
%_includedir/libavformat
%_pkgconfigdir/libavformat.pc
%_includedir/ffmpeg/avformat.h
%_includedir/ffmpeg/avio.h
%_includedir/ffmpeg/rtsp.h
%_includedir/ffmpeg/rtspcodes.h
%_includedir/ffmpeg/riff.h
%_libdir/libavformat.so

%files -n libavutil
%_libdir/libavutil.so.*

%files -n libavutil-devel
%_includedir/libavutil
%_includedir/ffmpeg/avutil.h
%_includedir/ffmpeg/avstring.h
%_includedir/ffmpeg/common.h
%_includedir/ffmpeg/crc.h
%_includedir/ffmpeg/mathematics.h
%_includedir/ffmpeg/rational.h
%_includedir/ffmpeg/intfloat_readwrite.h
%_includedir/ffmpeg/adler32.h
%_includedir/ffmpeg/md5.h
%_includedir/ffmpeg/log.h
%_includedir/ffmpeg/fifo.h
%_includedir/ffmpeg/lzo.h
%_includedir/ffmpeg/random.h
%_includedir/ffmpeg/mem.h
%_includedir/ffmpeg/base64.h
%_includedir/ffmpeg/sha1.h
%_includedir/ffmpeg/bswap.h
%_includedir/ffmpeg/intreadwrite.h
%_libdir/libavutil.so
%_pkgconfigdir/libavutil.pc

%files -n libavdevice
%_libdir/libavdevice.so.*

%files -n libavdevice-devel
%_includedir/libavdevice
%_libdir/libavdevice.so
%_pkgconfigdir/libavdevice.pc

%files -n libavfilter
%_libdir/libavfilter.so.*

%files -n libavfilter-devel
%_includedir/libavfilter
%_libdir/libavfilter.so
%_pkgconfigdir/libavfilter.pc

%if_enabled static
%files -n libavformat-devel-static
%_libdir/libavformat.a

%files -n libavcodec-devel-static
%_libdir/libavcodec.a

%files -n libavutil-devel-static
%_libdir/libavutil.a

%files -n libpostproc-devel-static
%_libdir/libpostproc.a

%files -n libswscale-devel-static
%_libdir/libswscale.a

%files -n libavdevice-devel-static
%_libdir/libavdevice.a

%files -n libavfilter-devel-static
%_libdir/libavfilter.a

%files -n lib%name-devel-static

%endif

%files -n libpostproc
%_libdir/libpostproc.so.*

%files -n libpostproc-devel
%_pkgconfigdir/libpostproc.pc
%_includedir/postproc
%_includedir/libpostproc
%_includedir/ffmpeg/postprocess.h
%_libdir/libpostproc.so

%files -n libswscale
%_libdir/libswscale.so.*

%files -n libswscale-devel
%_includedir/libswscale
%_pkgconfigdir/libswscale.pc
%_includedir/ffmpeg/rgb2rgb.h
%_includedir/ffmpeg/swscale.h
%_libdir/libswscale.so

%files -n lib%name

%if_enabled vhook
%files -n %name-vhook
%_libdir/vhook/*.so
%endif

%files -n lib%name-devel

%if_enabled ffserver
%files -n ffserver
%doc doc/ffserver-doc.html
%config(noreplace) %_sysconfdir/*
%_bindir/ffserver
%_man1dir/ffserver.*
%endif

%if_enabled ffplay
%files -n ffplay
%doc doc/ffplay-doc.html
%_bindir/ffplay
%_man1dir/ffplay.*
%endif

# }}}


# {{{ Changelog

%changelog

Full changelog you can see here

 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin