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