]> git.pld-linux.org Git - packages/ffmpeg.git/blobdiff - ffmpeg.spec
- va, vpx, doc bconds
[packages/ffmpeg.git] / ffmpeg.spec
index f932f3a875590c8448c1cb205e66f807b89eecdd..c3b4f38b3061fc53376e0b9681f7bed210d7b643 100644 (file)
@@ -2,38 +2,37 @@
 # - libnut enabled   no (http://www.nut-container.org/)
 #
 # Conditional build:
-%bcond_with    amr             # build 3GPP Adaptive Multi Rate (AMR) speech codec
+%bcond_with    nonfree         # non free options of package
 %bcond_without autoreqdep      # don't care about package name deps generated by rpm
 %bcond_without imlib2          # don't build imlib2 vhook module
-#
-%define                _snap   2007-08-27
-%define                snap    %(echo %{_snap} | tr -d -)
-%define                _rel 1
-Summary:       Realtime audio/video encoder and streaming server
+%bcond_without va                      # VAAPI (Video Acceleration API)
+%bcond_without vpx                     # VP8, a high-quality video codec
+%bcond_without doc                     # don't build docs
+
+Summary:       FFmpeg is a very fast video and audio converter
 Summary(pl.UTF-8):     Koder audio/wideo czasu rzeczywistego oraz serwer strumieni
 Name:          ffmpeg
-Version:       0.4.9
-Release:       3.%{snap}.%{_rel}
+Version:       0.6.1
+Release:       1
 # LGPL or GPL, chosen at configure time (GPL version is more featured)
-# (postprocessing, a52, xvid, x264, faad)
-License:       GPL with LGPL parts
+# (postprocessing, ac3, xvid, x264, faad)
+License:       GPL v3+ with LGPL v3+ parts
 Group:         Applications/Multimedia
-#Source0:      http://dl.sourceforge.net/ffmpeg/%{name}-%{version}-pre1.tar.gz
-Source0:       http://ffmpeg.mplayerhq.hu/%{name}-export-snapshot.tar.bz2
-# Source0-md5: 8731a103edb08f480b56dc94912bf744
+Source0:       http://ffmpeg.mplayerhq.hu/releases/%{name}-%{version}.tar.bz2
+# Source0-md5: 4f5d732d25eedfb072251b5314ba2093
 Source1:       ffserver.init
 Source2:       ffserver.sysconfig
 Source3:       ffserver.conf
-Patch0:                %{name}-gcc4.patch
-Patch1:                %{name}-img_convert_symbol.patch
-Patch2:                %{name}-a52bin.patch
-URL:           http://ffmpeg.mplayerhq.hu/
+Patch0:                %{name}-bug-803.patch
+Patch1:                %{name}-gsm.patch
+Patch2:                faadbin-libfaadname.patch
+# vhook is gone. this patch needs different approach
+#PatchX: imagewidth.patch
+# http://webm.googlecode.com/files/ffmpeg-0.6_libvpx-0.9.1.diff.gz
+Patch3:                ffmpeg-0.6_libvpx-0.9.1.diff
+URL:           http://www.ffmpeg.org/
 BuildRequires: SDL-devel
-BuildRequires: a52dec-libs-devel
-%if %{with amr}
-BuildRequires: amrnb-devel >= 6.1.0.4
-BuildRequires: amrwb-devel >= 7.0.0.1
-%endif
+BuildRequires: dirac-devel >= 1.0.0
 BuildRequires: faac-devel
 BuildRequires: faad2-devel
 BuildRequires: freetype-devel
@@ -43,23 +42,33 @@ BuildRequires:      gcc >= 5:3.3.2-3
 %endif
 %{?with_imlib2:BuildRequires:  imlib2-devel >= 1.3.0}
 BuildRequires: lame-libs-devel
+BuildRequires: libdc1394-devel
 BuildRequires: libgsm-devel
-BuildRequires: libogg-devel
 BuildRequires: libraw1394-devel
-BuildRequires: libtheora-devel >= 1.0-0.alpha7
+BuildRequires: libtheora-devel >= 1.0-0.beta3
 BuildRequires: libtool >= 2:1.4d-3
+%{?with_va:BuildRequires:      libva-devel >= 1.0.3}
+BuildRequires: libvdpau-devel
 BuildRequires: libvorbis-devel
-BuildRequires: libx264-devel >= 0.1.2-1.20061024_2245.1
+%{?with_vpx:BuildRequires:     libvpx-devel >= 0.9.1}
+# X264_BUILD >= 83
+BuildRequires: libx264-devel >= 0.1.3-1.20100424_2245.1
+BuildRequires: opencore-amr-devel
+BuildRequires: openjpeg-devel >= 1.3-2
+BuildRequires: speex-devel >= 1:1.2-rc1
 %ifarch %{ix86}
 %ifnarch i386 i486
 BuildRequires: nasm
 %endif
 %endif
+BuildRequires: perl-Encode
 BuildRequires: perl-tools-pod
-BuildRequires: rpmbuild(macros) >= 1.268
-BuildRequires: tetex
-BuildRequires: texinfo
-%{?with_amr:BuildRequires:     unzip}
+BuildRequires: pkgconfig
+BuildRequires: rpmbuild(macros) >= 1.470
+BuildRequires: schroedinger-devel
+%{?with_doc:BuildRequires:     tetex}
+%{?with_doc:BuildRequires:     texi2html}
+%{?with_doc:BuildRequires:     texinfo}
 BuildRequires: xvid-devel >= 1:1.1.0
 BuildRequires: zlib-devel
 %{?with_autoreqdep:BuildConflicts:     libpostproc}
@@ -77,13 +86,13 @@ BuildRoot:  %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 # -mmmx is needed to enable <mmintrin.h> code.
 %define                specflags_i586  -mmmx
 %define                specflags_i686  -mmmx
+%define                specflags_ppc   -fPIC
 
 %description
-ffmpeg is a hyper fast realtime audio/video encoder and streaming
-server. 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.
+FFmpeg is a complete solution to record, convert and stream audio and
+video. It is a command line tool to convert one video file format to
+another. It also supports grabbing and encoding in real time from a TV
+card.
 
 %description -l pl.UTF-8
 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
@@ -97,9 +106,15 @@ strumienia kompatybilnego z AC3.
 Summary:       ffmpeg libraries
 Summary(pl.UTF-8):     Biblioteki ffmpeg
 Group:         Libraries
+Suggests:      faad2-libs
 
 %description libs
-This package contains ffmpeg shared libraries.
+This package contains:
+- the codec library from the ffmpeg project. It supports most existing
+  encoding formats (MPEG, DivX, MPEG4, AC3, DV...),
+- demuxer library from the ffmpeg project. It supports most existing
+  file formats (AVI, MPEG, OGG, Matroska, ASF...),
+- video postprocessing library from the ffmpeg project.
 
 %description libs -l pl.UTF-8
 Ten pakiet zawiera biblioteki współdzielone ffmpeg.
@@ -110,14 +125,12 @@ Summary(pl.UTF-8):        Pliki nagłówkowe ffmpeg
 Group:         Development/Libraries
 Requires:      %{name}-libs = %{version}-%{release}
 # for libavcodec:
-%if %{with amr}
-Requires:      amrnb-devel
-Requires:      amrwb-devel >= 5.3.0
-%endif
+Requires:      dirac-devel
 Requires:      faac-devel
 Requires:      faad2-devel
 Requires:      lame-libs-devel
 Requires:      libgsm-devel
+Requires:      libraw1394-devel
 Requires:      libtheora-devel >= 1.0-0.alpha7
 Requires:      libvorbis-devel
 Requires:      libx264-devel >= 0.1.2-1.20060828_2245.1
@@ -159,24 +172,6 @@ FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
 testowania różnych API FFmpeg.
 
-%package vhook-imlib2
-Summary:       imlib2 based hook
-Summary(pl.UTF-8):     Moduł przejściowy oparty o imlib2
-Group:         Libraries
-Requires:      %{name}-libs = %{version}-%{release}
-
-%description vhook-imlib2
-This module implements a text overlay for a video image. Currently it
-supports a fixed overlay or reading the text from a file. The string
-is passed through strftime so that it is easy to imprint the date and
-time onto the image.
-
-%description vhook-imlib2 -l pl.UTF-8
-Ten moduł implementuje tekstową nakładkę dla obrazu. Aktualnie
-obsługuje stałą nakładkę lub wczytywanie tekstu z pliku. Łańcuch jest
-przepuszczany przez strftime, więc łatwo umieścić datę i czas na
-obrazie.
-
 %package ffserver
 Summary:       FFserver video server
 Summary(pl.UTF-8):     FFserver - serwer strumieni obrazu
@@ -199,73 +194,153 @@ przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
 
 %prep
-%setup -q -n %{name}-export-%{_snap}
+%setup -q
 %patch0 -p1
-%patch1 -p1
+%patch1 -p0
 %patch2 -p1
+%patch3 -p0
+
+# package the grep result for mplayer, the result formatted as ./mplayer/configure
+cat <<EOF > ffmpeg-avconfig
+#! /bin/sh
+_libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
+_libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
+_libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
+_libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
+_libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
+_libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
+_libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
+EOF
+cat <<'EOF' >> ffmpeg-avconfig
+
+case "$1" in
+--decoders)
+       echo $_libavdecoders_all
+       ;;
+--encoders)
+       echo $_libavencoders_all
+       ;;
+--parsers)
+       echo $_libavparsers_all
+       ;;
+--bsfs)
+       echo $_libavbsfs_all
+       ;;
+--demuxers)
+       echo $_libavdemuxers_all
+       ;;
+--muxers)
+       echo $_libavmuxers_all
+       ;;
+--protocols)
+       echo $_libavprotocols_all
+       ;;
+*)
+       cat <<USAGE
+Usage: $0 [OPTION]
+Options:
+  --decoders
+  --encoders
+  --parsers
+  --bsfs
+  --demuxers
+  --muxers
+  --protocols
+USAGE
+       exit 1;;
+esac
+
+exit 0
+EOF
 
 %build
 # notes:
 # - it's not autoconf configure
-# - --disable-debug, --disable-opts, tune=generic causes not to override our optflags
+# - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
 ./configure \
        --arch=%{_target_base_arch} \
        --prefix=%{_prefix} \
        --libdir=%{_libdir} \
        --shlibdir=%{_libdir} \
        --mandir=%{_mandir} \
-       --disable-strip \
-       --enable-liba52 \
-       --enable-liba52bin \
-       --enable-libfaac \
+       --cc="%{__cc}" \
+       --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
+       --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
+       --disable-debug \
+       --disable-optimizations \
+       --disable-stripping \
+       --enable-avfilter \
+       --enable-gpl \
+       --enable-version3 \
+       --enable-libdc1394 \
+       --enable-libdirac \
        --enable-libfaad \
        --enable-libfaadbin \
-       --enable-gpl \
        --enable-libgsm \
-       --enable-libogg \
-       --enable-libtheora \
        --enable-libmp3lame \
-       --enable-pp \
-       --enable-pthreads \
-       --enable-shared \
-       --enable-swscaler \
+       --enable-libschroedinger \
+       --enable-libspeex \
+       --enable-libtheora \
        --enable-libvorbis \
+       %{?with_vpx:--enable-libvpx} \
        --enable-libx264 \
        --enable-libxvid \
+       --enable-libopencore-amrnb \
+       --enable-libopencore-amrwb \
+       --enable-libopenjpeg \
+       --enable-postproc \
+       --enable-pthreads \
+       --enable-shared \
+       --enable-swscale \
+       --enable-vdpau \
+       --enable-x11grab \
 %ifnarch %{ix86} %{x8664}
        --disable-mmx \
 %endif
 %ifarch i386 i486
        --disable-mmx \
 %endif
-%if %{with amr}
-       --enable-libamr-nb \
-       --enable-libamr-wb \
+%if %{with nonfree}
+       --enable-nonfree \
+       --enable-libfaac \
 %endif
-       --cc="%{__cc}" \
-       --extra-cflags="%{rpmcflags}" \
-       --extra-ldflags="%{rpmldflags}" \
-       --disable-debug \
-       --disable-opts \
+       --enable-runtime-cpudetect
+
+# force oldscaler build
+sed -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
 
 %{__make}
 
 %install
 rm -rf $RPM_BUILD_ROOT
 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
+       $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
        $RPM_BUILD_ROOT/var/{cache,log}/ffserver
 
 %{__make} install \
        DESTDIR=$RPM_BUILD_ROOT
 
-install config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
-install libavformat/allformats.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
-install libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
+cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
+cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
+cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
+cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
+cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
+for a in libavutil/*/bswap.h; do
+       install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
+done
+cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
+cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
+
 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
 
+# install as ffmpeg-avconfig to avoid with possible programs looking for
+# ffmpeg-config and expecting --libs output from it which is not implemented
+# simple to do (by querying pkgconfig), but why?
+install ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
@@ -294,34 +369,50 @@ fi
 
 %files
 %defattr(644,root,root,755)
-%doc Changelog README doc/*.html doc/TODO
+%doc Changelog README %{?with_doc:doc/*.html} doc/TODO
 %attr(755,root,root) %{_bindir}/ffmpeg
-%{_mandir}/man1/ffmpeg.1*
+%attr(755,root,root) %{_bindir}/ffprobe
+%dir %{_datadir}/ffmpeg
+%{_datadir}/ffmpeg/*.ffpreset
+%{?with_doc:%{_mandir}/man1/ffmpeg.1*}
+%{?with_doc:%{_mandir}/man1/ffprobe.1*}
 
 %files libs
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libavcodec.so.52
+%attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libavdevice.so.52
+%attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libavfilter.so.1
 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libavformat.so.52
 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libavutil.so.50
 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
-%dir %{_libdir}/vhook
-%attr(755,root,root) %{_libdir}/vhook/drawtext.so
-%attr(755,root,root) %{_libdir}/vhook/fish.so
-%attr(755,root,root) %{_libdir}/vhook/null.so
-%attr(755,root,root) %{_libdir}/vhook/ppm.so
-%attr(755,root,root) %{_libdir}/vhook/watermark.so
+%attr(755,root,root) %ghost %{_libdir}/libswscale.so.0
 
 %files devel
 %defattr(644,root,root,755)
 %doc doc/optimization.txt
 %attr(755,root,root) %{_libdir}/libavcodec.so
+%attr(755,root,root) %{_libdir}/libavdevice.so
+%attr(755,root,root) %{_libdir}/libavfilter.so
 %attr(755,root,root) %{_libdir}/libavformat.so
 %attr(755,root,root) %{_libdir}/libavutil.so
 %attr(755,root,root) %{_libdir}/libpostproc.so
 %attr(755,root,root) %{_libdir}/libswscale.so
+%attr(755,root,root) %{_bindir}/ffmpeg-avconfig
 %{_includedir}/ffmpeg
-%{_includedir}/postproc
+%{_includedir}/libavcodec
+%{_includedir}/libavdevice
+%{_includedir}/libavfilter
+%{_includedir}/libavformat
+%{_includedir}/libavutil
+%{_includedir}/libpostproc
+%{_includedir}/libswscale
 %{_pkgconfigdir}/*.pc
 
 %files static
@@ -331,13 +422,7 @@ fi
 %files ffplay
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/ffplay
-%{_mandir}/man1/ffplay.1*
-
-%if %{with imlib2}
-%files vhook-imlib2
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/vhook/imlib2.so
-%endif
+%{?with_doc:%{_mandir}/man1/ffplay.1*}
 
 %files ffserver
 %defattr(644,root,root,755)
@@ -345,6 +430,6 @@ fi
 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
 %attr(755,root,root) %{_sbindir}/ffserver
 %attr(754,root,root) /etc/rc.d/init.d/ffserver
-%{_mandir}/man1/ffserver.1*
+%{?with_doc:%{_mandir}/man1/ffserver.1*}
 %dir %attr(770,root,ffserver) /var/cache/ffserver
 %dir %attr(770,root,ffserver) /var/log/ffserver
This page took 0.06005 seconds and 4 git commands to generate.