]> git.pld-linux.org Git - packages/ffmpeg.git/blame - ffmpeg.spec
- up to 0.5; it's not a joke, it's a release!
[packages/ffmpeg.git] / ffmpeg.spec
CommitLineData
94447fde 1# TODO
328d1431 2# - libnut enabled no (http://www.nut-container.org/)
197f4211 3#
2b3b2117 4# Conditional build:
48610c64 5%bcond_with amr # 3GPP Adaptive Multi Rate (AMR) codec support; makes package non-distributable
294c9b1e
JB
6%bcond_without autoreqdep # don't care about package name deps generated by rpm
7%bcond_without imlib2 # don't build imlib2 vhook module
874f67c9 8#
76243dbd 9Summary: Realtime audio/video encoder and streaming server
adcc0f76 10Summary(pl.UTF-8): Koder audio/wideo czasu rzeczywistego oraz serwer strumieni
9fc4ad22 11Name: ffmpeg
aed8e8c9
AM
12Version: 0.5
13Release: 1
9cf4d8a4 14# LGPL or GPL, chosen at configure time (GPL version is more featured)
48610c64 15# (postprocessing, ac3, xvid, x264, faad)
be868f35 16License: GPL v2+ with LGPL v2.1+ parts
fde29260 17Group: Applications/Multimedia
aed8e8c9
AM
18Source0: http://ffmpeg.mplayerhq.hu/releases/%{name}-%{version}.tar.bz2
19# Source0-md5: be8503f15c3b81ba00eb8379ca8dcf33
fde29260
ER
20Source1: ffserver.init
21Source2: ffserver.sysconfig
38cf6de3 22Source3: ffserver.conf
da99dcf2 23Patch0: %{name}-x264.patch
d2fa6a1d 24URL: http://ffmpeg.mplayerhq.hu/
2a60eebe 25BuildRequires: SDL-devel
fc8de229 26%if %{with amr}
7e9547bc
JB
27BuildRequires: amrnb-devel >= 6.1.0.4
28BuildRequires: amrwb-devel >= 7.0.0.1
fc8de229 29%endif
7ca51e4c 30BuildRequires: dirac-devel >= 1.0.0
e380e18a 31BuildRequires: faac-devel
b959c224 32BuildRequires: faad2-devel
2a60eebe 33BuildRequires: freetype-devel
4bee03f0
JB
34%ifarch ppc
35# require version with altivec support fixed
36BuildRequires: gcc >= 5:3.3.2-3
37%endif
15c15700 38%{?with_imlib2:BuildRequires: imlib2-devel >= 1.3.0}
e380e18a 39BuildRequires: lame-libs-devel
6382c99d 40BuildRequires: libdc1394-devel
f1669449 41BuildRequires: libgsm-devel
94447fde 42BuildRequires: libraw1394-devel
9042663c 43BuildRequires: libtheora-devel >= 1.0-0.beta3
4814ac84 44BuildRequires: libtool >= 2:1.4d-3
e380e18a 45BuildRequires: libvorbis-devel
1be8f878 46BuildRequires: libx264-devel >= 0.1.2-1.20081023
aed8e8c9 47BuildRequires: speex-devel
e1fe03f7 48%ifarch %{ix86}
49%ifnarch i386 i486
76243dbd
JB
50BuildRequires: nasm
51%endif
e1fe03f7 52%endif
1463656a 53BuildRequires: perl-tools-pod
ef3c0513 54BuildRequires: pkgconfig
db8052c8 55BuildRequires: rpmbuild(macros) >= 1.470
126fb805 56BuildRequires: schroedinger-devel
1463656a 57BuildRequires: tetex
9cf4d8a4 58BuildRequires: texinfo
872de59d 59%{?with_amr:BuildRequires: unzip}
46f2a56b 60BuildRequires: xvid-devel >= 1:1.1.0
33a1c0f3 61BuildRequires: zlib-devel
57ebb8ad 62%{?with_autoreqdep:BuildConflicts: libpostproc}
54ec280e 63Requires: %{name}-libs = %{version}-%{release}
839e806f 64Requires: xvid >= 1:1.1.0
af49d6ab 65Obsoletes: libpostproc
539b540f 66BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
9fc4ad22 67
2a60eebe
JB
68%define _noautoreqdep libGL.so.1 libGLU.so.1
69
c01d7857
PS
70%define specflags -fno-strict-aliasing
71
72# -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
73%define specflags_ia32 -fomit-frame-pointer
74# -mmmx is needed to enable <mmintrin.h> code.
75%define specflags_i586 -mmmx
76%define specflags_i686 -mmmx
77
9fc4ad22
AM
78%description
79ffmpeg is a hyper fast realtime audio/video encoder and streaming
80server. It can grab from a standard Video4Linux video source and
81convert it into several file formats based on DCT/motion compensation
82encoding. Sound is compressed in MPEG audio layer 2 or using an AC3
fda3e16d 83compatible stream.
9fc4ad22 84
cdb7b42e 85%description -l pl.UTF-8
fda3e16d 86ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
cdb7b42e
JR
87oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
88ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
89formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
90jest kompresowany do strumienia MPEG audio layer 2 lub używając
fda3e16d 91strumienia kompatybilnego z AC3.
9fc4ad22 92
54ec280e
PG
93%package libs
94Summary: ffmpeg libraries
adcc0f76 95Summary(pl.UTF-8): Biblioteki ffmpeg
54ec280e
PG
96Group: Libraries
97
98%description libs
5e173375 99This package contains ffmpeg shared libraries.
54ec280e 100
cdb7b42e
JR
101%description libs -l pl.UTF-8
102Ten pakiet zawiera biblioteki współdzielone ffmpeg.
54ec280e 103
af49d6ab
JB
104%package devel
105Summary: ffmpeg header files
adcc0f76 106Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
af49d6ab 107Group: Development/Libraries
54ec280e 108Requires: %{name}-libs = %{version}-%{release}
33a1c0f3 109# for libavcodec:
fc8de229
JB
110%if %{with amr}
111Requires: amrnb-devel
112Requires: amrwb-devel >= 5.3.0
113%endif
926ffa9a 114Requires: dirac-devel
33a1c0f3 115Requires: faac-devel
96182eea 116Requires: faad2-devel
33a1c0f3 117Requires: lame-libs-devel
bf479bc6 118Requires: libgsm-devel
95e2cf29 119Requires: libraw1394-devel
3e95d354 120Requires: libtheora-devel >= 1.0-0.alpha7
33a1c0f3 121Requires: libvorbis-devel
7bf6921d 122Requires: libx264-devel >= 0.1.2-1.20060828_2245.1
46f2a56b 123Requires: xvid-devel >= 1:1.1.0
33a1c0f3 124Requires: zlib-devel
8152d6a2 125Obsoletes: libpostproc-devel
af49d6ab
JB
126
127%description devel
128ffmpeg header files.
129
cdb7b42e
JR
130%description devel -l pl.UTF-8
131Pliki nagłówkowe ffmpeg.
af49d6ab
JB
132
133%package static
134Summary: ffmpeg static libraries
adcc0f76 135Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
af49d6ab
JB
136Group: Development/Libraries
137Requires: %{name}-devel = %{version}-%{release}
138
139%description static
140ffmpeg static libraries (libavcodec and libavformat).
141
cdb7b42e 142%description static -l pl.UTF-8
af49d6ab
JB
143Statyczne biblioteki ffmpeg (libavcodec i libavformat).
144
2a60eebe
JB
145%package ffplay
146Summary: FFplay - SDL-based media player
adcc0f76 147Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
2a60eebe 148Group: Applications/Multimedia
54ec280e 149Requires: %{name}-libs = %{version}-%{release}
2a60eebe
JB
150
151%description ffplay
152FFplay is a very simple and portable media player using the FFmpeg
153libraries and the SDL library. It is mostly used as a test bench for
154the various APIs of FFmpeg.
155
cdb7b42e
JR
156%description ffplay -l pl.UTF-8
157FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
158bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
159testowania różnych API FFmpeg.
2a60eebe 160
539b540f
JB
161%package vhook-imlib2
162Summary: imlib2 based hook
adcc0f76 163Summary(pl.UTF-8): Moduł przejściowy oparty o imlib2
539b540f 164Group: Libraries
54ec280e 165Requires: %{name}-libs = %{version}-%{release}
539b540f
JB
166
167%description vhook-imlib2
168This module implements a text overlay for a video image. Currently it
169supports a fixed overlay or reading the text from a file. The string
170is passed through strftime so that it is easy to imprint the date and
171time onto the image.
172
cdb7b42e
JR
173%description vhook-imlib2 -l pl.UTF-8
174Ten moduł implementuje tekstową nakładkę dla obrazu. Aktualnie
175obsługuje stałą nakładkę lub wczytywanie tekstu z pliku. Łańcuch jest
176przepuszczany przez strftime, więc łatwo umieścić datę i czas na
539b540f
JB
177obrazie.
178
fde29260
ER
179%package ffserver
180Summary: FFserver video server
adcc0f76 181Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
fde29260 182Group: Daemons
593d3a64 183Requires(post,preun): /sbin/chkconfig
67103923 184Requires: %{name}-libs = %{version}-%{release}
2305d791 185Requires: rc-scripts >= 0.4.0.10
fde29260
ER
186
187%description ffserver
188FFserver is a streaming server for both audio and video. It supports
189several live feeds, streaming from files and time shifting on live
190feeds (you can seek to positions in the past on each live feed,
191provided you specify a big enough feed storage in ffserver.conf).
192
cdb7b42e
JR
193%description ffserver -l pl.UTF-8
194FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
195źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
196czasie dla źródeł na żywo (można przeskakiwać na położenia w
197przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
198dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
4e0bd1da 199
9fc4ad22 200%prep
aed8e8c9 201%setup -q
f1669449 202%patch0 -p1
9fc4ad22 203
9d4f8977
ER
204# package the grep result for mplayer, the result formatted as ./mplayer/configure
205cat <<EOF > ffmpeg-avconfig
2b2445b7
ER
206#! /bin/sh
207_libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
208_libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
209_libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
210_libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
211_libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
212_libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
213_libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
214EOF
9d4f8977 215cat <<'EOF' >> ffmpeg-avconfig
2b2445b7
ER
216
217case "$1" in
218--decoders)
219 echo $_libavdecoders_all
220 ;;
221--encoders)
222 echo $_libavencoders_all
223 ;;
224--parsers)
225 echo $_libavparsers_all
226 ;;
227--bsfs)
228 echo $_libavbsfs_all
229 ;;
230--demuxers)
231 echo $_libavdemuxers_all
232 ;;
233--muxers)
234 echo $_libavmuxers_all
235 ;;
236--protocols)
237 echo $_libavprotocols_all
238 ;;
239*)
240 cat <<USAGE
241Usage: $0 [OPTION]
242Options:
243 --decoders
244 --encoders
245 --parsers
246 --bsfs
247 --demuxers
248 --muxers
249 --protocols
250USAGE
251 exit 1;;
252esac
253
254exit 0
255EOF
256
9fc4ad22 257%build
05e1eb2f
JB
258# notes:
259# - it's not autoconf configure
d0a0ec26 260# - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
2080d1d3 261./configure \
b4680d0b 262 --arch=%{_target_base_arch} \
539b540f 263 --prefix=%{_prefix} \
9cf4d8a4 264 --libdir=%{_libdir} \
d81dfa95 265 --shlibdir=%{_libdir} \
2a60eebe 266 --mandir=%{_mandir} \
126fb805 267 --cc="%{__cc}" \
db67a545 268 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags} -I/usr/include/libavcodec -I/usr/include/libswscale" \
126fb805
JB
269 --extra-ldflags="%{rpmldflags}" \
270 --disable-debug \
271 --disable-optimizations \
6382c99d 272 --disable-stripping \
126fb805 273 --enable-gpl \
15c15700
ER
274 --enable-libfaac \
275 --enable-libfaad \
276 --enable-libfaadbin \
6382c99d
AM
277 --enable-libdc1394 \
278 --enable-libdirac \
f3692243 279 --enable-libgsm \
15c15700 280 --enable-libmp3lame \
126fb805 281 --enable-libschroedinger \
da99dcf2 282 --enable-libspeex \
126fb805
JB
283 --enable-libtheora \
284 --enable-libvorbis \
285 --enable-libx264 \
286 --enable-libxvid \
6382c99d 287 --enable-postproc \
d7493de8 288 --enable-pthreads \
9cf4d8a4 289 --enable-shared \
6382c99d 290 --enable-swscale \
7a286645 291%ifnarch %{ix86} %{x8664}
e1fe03f7 292 --disable-mmx \
293%endif
294%ifarch i386 i486
05e1eb2f 295 --disable-mmx \
b524cd99 296%endif
297%if %{with amr}
48610c64 298 --enable-nonfree \
2c00d607 299 --enable-libamr-nb \
126fb805 300 --enable-libamr-wb
76243dbd 301%endif
2305d791 302
da99dcf2
AM
303# force oldscaler build
304sed -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
305
873cd1c3 306%{__make}
9fc4ad22
AM
307
308%install
309rm -rf $RPM_BUILD_ROOT
38cf6de3 310install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
38baa0f1 311 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
38cf6de3 312 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
9fc4ad22 313
539b540f 314%{__make} install \
9cf4d8a4 315 DESTDIR=$RPM_BUILD_ROOT
539b540f 316
544421b2
ER
317cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
318cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
319cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
320cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
321cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
322for a in libavutil/*/bswap.h; do
323 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
324done
9d4f8977
ER
325cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
326cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
544421b2 327
fde29260
ER
328install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
329install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
38cf6de3 330install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
539b540f 331mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
9fc4ad22 332
2b2445b7
ER
333# install as ffmpeg-avconfig to avoid with possible programs looking for
334# ffmpeg-config and expecting --libs output from it which is not implemented
335# simple to do (by querying pkgconfig), but why?
9d4f8977 336install ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
2b2445b7 337
9fc4ad22
AM
338%clean
339rm -rf $RPM_BUILD_ROOT
340
3146af55
KK
341%post libs -p /sbin/ldconfig
342%postun libs -p /sbin/ldconfig
539b540f 343
38cf6de3
ER
344%pre ffserver
345%groupadd -g 167 ffserver
346%useradd -g ffserver -u 167 ffserver
347
593d3a64
ER
348%post ffserver
349/sbin/chkconfig --add ffserver
350%service ffserver restart
351
38cf6de3 352%preun ffserver
593d3a64
ER
353if [ "$1" = 0 ]; then
354 %service ffserver stop
355 /sbin/chkconfig --del ffserver
356fi
357
38cf6de3
ER
358%postun ffserver
359if [ "$1" = 0 ]; then
360 %userremove ffserver
361 %groupremove ffserver
362fi
363
9fc4ad22
AM
364%files
365%defattr(644,root,root,755)
54ec280e 366%doc Changelog README doc/*.html doc/TODO
2a60eebe 367%attr(755,root,root) %{_bindir}/ffmpeg
da99dcf2
AM
368%dir %{_datadir}/ffmpeg
369%{_datadir}/ffmpeg/*.ffpreset
54ec280e 370%{_mandir}/man1/ffmpeg.1*
54ec280e
PG
371
372%files libs
373%defattr(644,root,root,755)
f50f7d7c 374%attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
d0a0ec26 375%attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
f50f7d7c
JB
376%attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
377%attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
d7493de8 378%attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
ee032235 379%attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
9042663c
AM
380%attr(755,root,root) %ghost %{_libdir}/libavcodec.so.[0-9][0-9]
381%attr(755,root,root) %ghost %{_libdir}/libavdevice.so.[0-9][0-9]
382%attr(755,root,root) %ghost %{_libdir}/libavformat.so.[0-9][0-9]
383%attr(755,root,root) %ghost %{_libdir}/libavutil.so.[0-9][0-9]
384%attr(755,root,root) %ghost %{_libdir}/libpostproc.so.[0-9][0-9]
385%attr(755,root,root) %ghost %{_libdir}/libswscale.so.[0-9]
539b540f 386%dir %{_libdir}/vhook
2a60eebe 387%attr(755,root,root) %{_libdir}/vhook/drawtext.so
539b540f 388%attr(755,root,root) %{_libdir}/vhook/fish.so
2a60eebe 389%attr(755,root,root) %{_libdir}/vhook/null.so
d2af4612 390%attr(755,root,root) %{_libdir}/vhook/ppm.so
d7493de8 391%attr(755,root,root) %{_libdir}/vhook/watermark.so
2a60eebe 392
539b540f
JB
393%files devel
394%defattr(644,root,root,755)
54ec280e 395%doc doc/optimization.txt
539b540f 396%attr(755,root,root) %{_libdir}/libavcodec.so
d0a0ec26 397%attr(755,root,root) %{_libdir}/libavdevice.so
539b540f 398%attr(755,root,root) %{_libdir}/libavformat.so
d7493de8 399%attr(755,root,root) %{_libdir}/libavutil.so
d2af4612 400%attr(755,root,root) %{_libdir}/libpostproc.so
ee032235 401%attr(755,root,root) %{_libdir}/libswscale.so
2b2445b7 402%attr(755,root,root) %{_bindir}/ffmpeg-avconfig
539b540f 403%{_includedir}/ffmpeg
6382c99d
AM
404%{_includedir}/libavcodec
405%{_includedir}/libavdevice
406%{_includedir}/libavformat
407%{_includedir}/libavutil
408%{_includedir}/libpostproc
409%{_includedir}/libswscale
d7493de8 410%{_pkgconfigdir}/*.pc
539b540f 411
9cf4d8a4
JB
412%files static
413%defattr(644,root,root,755)
414%{_libdir}/lib*.a
af49d6ab
JB
415
416%files ffplay
417%defattr(644,root,root,755)
418%attr(755,root,root) %{_bindir}/ffplay
419%{_mandir}/man1/ffplay.1*
420
421%if %{with imlib2}
422%files vhook-imlib2
423%defattr(644,root,root,755)
424%attr(755,root,root) %{_libdir}/vhook/imlib2.so
425%endif
fde29260
ER
426
427%files ffserver
428%defattr(644,root,root,755)
429%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
430%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
431%attr(755,root,root) %{_sbindir}/ffserver
432%attr(754,root,root) /etc/rc.d/init.d/ffserver
433%{_mandir}/man1/ffserver.1*
38cf6de3
ER
434%dir %attr(770,root,ffserver) /var/cache/ffserver
435%dir %attr(770,root,ffserver) /var/log/ffserver
This page took 0.123069 seconds and 4 git commands to generate.