]> git.pld-linux.org Git - packages/ffmpeg.git/blobdiff - ffmpeg.spec
- enable avfilter (replaces vhook); rel 4
[packages/ffmpeg.git] / ffmpeg.spec
index c74dcf07a93afdb652195ef3c506c32cb13563e1..0a731e017651dd26e9dc1b157700214f109d817d 100644 (file)
@@ -1,58 +1,35 @@
-#
-# TODO: only lzo 1.x is supported
-#      - make (ffmpeg code inside) mplayer play .3gp mobile phone movies 
-#        (ffplay and vlc plays them fine
-#      - revert amr bcond when done
+# TODO
+# - libnut enabled   no (http://www.nut-container.org/)
 #
 # Conditional build:
-%bcond_without imlib2          # don't build imlib2 vhook module
+%bcond_with    amr             # 3GPP Adaptive Multi Rate (AMR) codec support; makes package non-distributable
 %bcond_without autoreqdep      # don't care about package name deps generated by rpm
-%bcond_with     amr             # build with 3GPP Adaptive Multi Rate (AMR) speech codec
-#
-%define        snap    20060129
-%define        _rel 8.8
+%bcond_without imlib2          # don't build imlib2 vhook module
+
 Summary:       Realtime audio/video encoder and streaming server
-Summary(pl):   Koder audio/wideo czasu rzeczywistego oraz serwer strumieni
+Summary(pl.UTF-8):     Koder audio/wideo czasu rzeczywistego oraz serwer strumieni
 Name:          ffmpeg
-Version:       0.4.9
-Release:       3.%{snap}.%{_rel}
+Version:       0.5
+Release:       4
 # LGPL or GPL, chosen at configure time (GPL version is more featured)
-#
-# (BTW. what are the 'more' features mentioned above?)
-#
-# Some parts of the code *is* LGPL (for example libavformat amr.c) so 
-# it is possible to include /and distribute/ external 3GPP AMR codecs 
-# (some kind of public domain with patent restrictions) to the 
-# GPL-licensed stuff /and keep GPL license/.
-%if %{with amr}
-License:       GPL with LGPL/Public Domain parts
-%else
-License:       GPL with LGPL parts
-%endif
+# (postprocessing, ac3, xvid, x264, faad)
+License:       GPL v2+ with LGPL v2.1+ parts
 Group:         Applications/Multimedia
-#Source0:      http://dl.sourceforge.net/ffmpeg/%{name}-%{version}-pre1.tar.gz
-#Source0:      ftp://ftp2.mplayerhq.hu/MPlayer/cvs/FFMpeg-%{snap}.tar.bz2
-Source0:       %{name}-%{snap}.tar.bz2
-# Source0-md5: d8ea09431d6c0c91bfd35e0ca74a67e1
+Source0:       http://ffmpeg.mplayerhq.hu/releases/%{name}-%{version}.tar.bz2
+# Source0-md5: be8503f15c3b81ba00eb8379ca8dcf33
 Source1:       ffserver.init
 Source2:       ffserver.sysconfig
 Source3:       ffserver.conf
+Patch0:                %{name}-x264.patch
+Patch1:                %{name}-bug-803.patch
+Patch2:                imagewidth.patch
+URL:           http://ffmpeg.mplayerhq.hu/
+BuildRequires: SDL-devel
 %if %{with amr}
-# AMR WB FLOAT 
-#Source4:      http://www.3gpp.org/ftp/Specs/latest/Rel-6/26_series/26204-600.zip
-Source4:       http://www.3gpp.org/ftp/Specs/latest/Rel-5/26_series/26204-530.zip
-# Source4-md5:  988060bdb18b5d64b8bd82c3507d2420
-# AMR NB FLOAT 
-#Source6:      http://www.3gpp.org/ftp/Specs/latest/Rel-6/26_series/26104-610.zip
-Source6:       http://www.3gpp.org/ftp/Specs/latest/Rel-5/26_series/26104-540.zip
-# Source6-md5:  4dcbeb2bc28bf86e7131fe4cae3e0dec
+BuildRequires: amrnb-devel >= 6.1.0.4
+BuildRequires: amrwb-devel >= 7.0.0.1
 %endif
-
-Patch0:                %{name}-libtool.patch
-Patch1:                %{name}-libdir.patch
-Patch2:                %{name}-gcc4.patch
-URL:           http://ffmpeg.sourceforge.net/
-BuildRequires: SDL-devel
+BuildRequires: dirac-devel >= 1.0.0
 BuildRequires: faac-devel
 BuildRequires: faad2-devel
 BuildRequires: freetype-devel
@@ -60,23 +37,27 @@ BuildRequires:      freetype-devel
 # require version with altivec support fixed
 BuildRequires: gcc >= 5:3.3.2-3
 %endif
-%{?with_imlib2:BuildRequires:  imlib2-devel >= 1.1.0-2}
+%{?with_imlib2:BuildRequires:  imlib2-devel >= 1.3.0}
 BuildRequires: lame-libs-devel
-BuildRequires: libdts-devel
+BuildRequires: libdc1394-devel
 BuildRequires: libgsm-devel
-BuildRequires: libtheora-devel
+BuildRequires: libraw1394-devel
+BuildRequires: libtheora-devel >= 1.0-0.beta3
 BuildRequires: libtool >= 2:1.4d-3
 BuildRequires: libvorbis-devel
-#BuildRequires:        libx264-devel
-BuildRequires: lzo-devel
+BuildRequires: libx264-devel >= 0.1.2-1.20081023
+BuildRequires: speex-devel
 %ifarch %{ix86}
 %ifnarch i386 i486
 BuildRequires: nasm
 %endif
 %endif
 BuildRequires: perl-tools-pod
-BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: pkgconfig
+BuildRequires: rpmbuild(macros) >= 1.470
+BuildRequires: schroedinger-devel
 BuildRequires: tetex
+BuildRequires: texi2html
 BuildRequires: texinfo
 %{?with_amr:BuildRequires:     unzip}
 BuildRequires: xvid-devel >= 1:1.1.0
@@ -96,6 +77,7 @@ 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
@@ -104,38 +86,44 @@ 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 pl
+%description -l pl.UTF-8
 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
-oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucaæ dane
-ze standardowego urz±dzenia Video4Linux i przekonwertowaæ je w kilka
-formatów plików bazuj±cych na kodowaniu DCT/kompensacji ruchu. D¼wiêk
-jest kompresowany do strumienia MPEG audio layer 2 lub u¿ywaj±c
+oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
+ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
+formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
+jest kompresowany do strumienia MPEG audio layer 2 lub używając
 strumienia kompatybilnego z AC3.
 
 %package libs
 Summary:       ffmpeg libraries
-Summary(pl):   Biblioteki ffmpeg
+Summary(pl.UTF-8):     Biblioteki ffmpeg
 Group:         Libraries
 
 %description libs
 This package contains ffmpeg shared libraries.
 
-%description libs -l pl
-Ten pakiet zawiera biblioteki wspó³dzielone ffmpeg.
+%description libs -l pl.UTF-8
+Ten pakiet zawiera biblioteki współdzielone ffmpeg.
 
 %package devel
 Summary:       ffmpeg header files
-Summary(pl):   Pliki nag³ówkowe ffmpeg
+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:      libdts-devel
 Requires:      libgsm-devel
-Requires:      libtheora-devel
+Requires:      libraw1394-devel
+Requires:      libtheora-devel >= 1.0-0.alpha7
 Requires:      libvorbis-devel
-Requires:      lzo-devel
+Requires:      libx264-devel >= 0.1.2-1.20060828_2245.1
 Requires:      xvid-devel >= 1:1.1.0
 Requires:      zlib-devel
 Obsoletes:     libpostproc-devel
@@ -143,24 +131,24 @@ Obsoletes:        libpostproc-devel
 %description devel
 ffmpeg header files.
 
-%description devel -l pl
-Pliki nag³ówkowe ffmpeg.
+%description devel -l pl.UTF-8
+Pliki nagłówkowe ffmpeg.
 
 %package static
 Summary:       ffmpeg static libraries
-Summary(pl):   Statyczne biblioteki ffmpeg
+Summary(pl.UTF-8):     Statyczne biblioteki ffmpeg
 Group:         Development/Libraries
 Requires:      %{name}-devel = %{version}-%{release}
 
 %description static
 ffmpeg static libraries (libavcodec and libavformat).
 
-%description static -l pl
+%description static -l pl.UTF-8
 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
 
 %package ffplay
 Summary:       FFplay - SDL-based media player
-Summary(pl):   FFplay - odtwarzacz mediów oparty na SDL
+Summary(pl.UTF-8):     FFplay - odtwarzacz mediów oparty na SDL
 Group:         Applications/Multimedia
 Requires:      %{name}-libs = %{version}-%{release}
 
@@ -169,14 +157,14 @@ FFplay is a very simple and portable media player using the FFmpeg
 libraries and the SDL library. It is mostly used as a test bench for
 the various APIs of FFmpeg.
 
-%description ffplay -l pl
-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.
+%description ffplay -l pl.UTF-8
+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):   Modu³ przej¶ciowy oparty o imlib2
+Summary(pl.UTF-8):     Moduł przejściowy oparty o imlib2
 Group:         Libraries
 Requires:      %{name}-libs = %{version}-%{release}
 
@@ -186,19 +174,19 @@ 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
-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
+%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):   FFserver - serwer strumieni obrazu
+Summary(pl.UTF-8):     FFserver - serwer strumieni obrazu
 Group:         Daemons
 Requires(post,preun):  /sbin/chkconfig
-Requires:      rc-scripts >= 0.4.0.10
 Requires:      %{name}-libs = %{version}-%{release}
+Requires:      rc-scripts >= 0.4.0.10
 
 %description ffserver
 FFserver is a streaming server for both audio and video. It supports
@@ -206,59 +194,107 @@ several live feeds, streaming from files and time shifting on live
 feeds (you can seek to positions in the past on each live feed,
 provided you specify a big enough feed storage in ffserver.conf).
 
-%description ffserver -l pl
-FFserver to serwer strumieni dla d¼wiêku i obrazu. Obs³uguje kilka
-¼róde³ na ¿ywo, przekazywanie strumieni z plików i przesuwanie w
-czasie dla ¼róde³ na ¿ywo (mo¿na przeskakiwaæ na po³o¿enia w
-przesz³o¶ci dla ka¿dego ¼ród³a na ¿ywo, pod warunkiem odpowiednio
-du¿ej przestrzeni na dane skonfigurowanej w ffserver.conf).
+%description ffserver -l pl.UTF-8
+FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
+źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
+czasie dla źródeł na żywo (można przeskakiwać na położenia w
+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}
+%setup -q
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
-%if %{with amr}
-cd libavcodec
-mkdir amrwb_float
-mkdir amr
-mkdir amr_float
-# put 26204-xxx.zip into libavcodec/amrwb_float
-cd amrwb_float
-unzip -j %{SOURCE4}
-unzip -j 26204-530_ANSI-C_source_code.zip
-# put 26104-xxx.zip into libavcodec/amr_float
-cd ../amr_float
-unzip -j %{SOURCE6}
-unzip -j 26104-540_ANSI_C_source_code.zip
-cd ../..
-%endif
+
+# 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-a52 \
-       --enable-a52bin \
-       --enable-dts \
-       --enable-faac \
-       --enable-faad \
-       --enable-faadbin \
+       --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-libdc1394 \
+       --enable-libdirac \
+       --enable-libfaac \
+       --enable-libfaad \
+       --enable-libfaadbin \
        --enable-libgsm \
-       --enable-libogg \
-       --enable-mp3lame \
-       --enable-pp \
+       --enable-libmp3lame \
+       --enable-libschroedinger \
+       --enable-libspeex \
+       --enable-libtheora \
+       --enable-libvorbis \
+       --enable-libx264 \
+       --enable-libxvid \
+       --enable-postproc \
        --enable-pthreads \
        --enable-shared \
-       --enable-theora \
-       --enable-vorbis \
-       --enable-xvid \
+       --enable-swscale \
 %ifnarch %{ix86} %{x8664}
        --disable-mmx \
 %endif
@@ -266,38 +302,51 @@ cd ../..
        --disable-mmx \
 %endif
 %if %{with amr}
-       --enable-amr_nb \
-       --enable-amr_wb \
+       --enable-nonfree \
+       --enable-libamr-nb \
+       --enable-libamr-wb
 %endif
-       --cc="%{__cc}" \
-       --extra-cflags="%{rpmcflags}" \
-       --extra-ldflags="%{rpmldflags}" \
-       --disable-debug \
-       --disable-opts \
-       --tune=generic
 
-%{__make} \
-       BUILD_DOC=yes
+# 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 xvmc_render.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
 
-%post  -p /sbin/ldconfig
-%postun        -p /sbin/ldconfig
+%post libs     -p /sbin/ldconfig
+%postun libs   -p /sbin/ldconfig
 
 %pre ffserver
 %groupadd -g 167 ffserver
@@ -323,14 +372,27 @@ fi
 %defattr(644,root,root,755)
 %doc Changelog README doc/*.html doc/TODO
 %attr(755,root,root) %{_bindir}/ffmpeg
+%dir %{_datadir}/ffmpeg
+%{_datadir}/ffmpeg/*.ffpreset
 %{_mandir}/man1/ffmpeg.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.0
 %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.49
 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
+%attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libswscale.so.0
+
 %dir %{_libdir}/vhook
 %attr(755,root,root) %{_libdir}/vhook/drawtext.so
 %attr(755,root,root) %{_libdir}/vhook/fish.so
@@ -342,12 +404,21 @@ fi
 %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
-%{_libdir}/lib*.la
+%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
This page took 0.360593 seconds and 4 git commands to generate.