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