]> git.pld-linux.org Git - packages/ffmpeg.git/blob - ffmpeg.spec
7fa4c63024dc62ea530e48e9ab347cd0aceed20d
[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 %define         _snap   2008-08-22
10 %define         snap    %(echo %{_snap} | tr -d -)
11 %define         rel 4
12 Summary:        Realtime audio/video encoder and streaming server
13 Summary(pl.UTF-8):      Koder audio/wideo czasu rzeczywistego oraz serwer strumieni
14 Name:           ffmpeg
15 Version:        0.4.9
16 Release:        4.%{snap}.%{rel}
17 # LGPL or GPL, chosen at configure time (GPL version is more featured)
18 # (postprocessing, ac3, xvid, x264, faad)
19 License:        GPL v2+ with LGPL v2.1+ parts
20 Group:          Applications/Multimedia
21 #Source0:       http://dl.sourceforge.net/ffmpeg/%{name}-%{version}-pre1.tar.gz
22 Source0:        http://ffmpeg.mplayerhq.hu/%{name}-export-snapshot.tar.bz2
23 # Source0-md5:  573ff56bb619391fbc13ecde23389b45
24 Source1:        ffserver.init
25 Source2:        ffserver.sysconfig
26 Source3:        ffserver.conf
27 Patch0:         %{name}-img_convert_symbol.patch
28 URL:            http://ffmpeg.mplayerhq.hu/
29 BuildRequires:  SDL-devel
30 %if %{with amr}
31 BuildRequires:  amrnb-devel >= 6.1.0.4
32 BuildRequires:  amrwb-devel >= 7.0.0.1
33 %endif
34 BuildRequires:  dirac-devel
35 BuildRequires:  faac-devel
36 BuildRequires:  faad2-devel
37 BuildRequires:  freetype-devel
38 %ifarch ppc
39 # require version with altivec support fixed
40 BuildRequires:  gcc >= 5:3.3.2-3
41 %endif
42 BuildRequires:  a52dec-libs-devel
43 %{?with_imlib2:BuildRequires:   imlib2-devel >= 1.3.0}
44 BuildRequires:  lame-libs-devel
45 BuildRequires:  libdc1394-devel
46 BuildRequires:  libgsm-devel
47 BuildRequires:  libraw1394-devel
48 BuildRequires:  libtheora-devel >= 1.0-0.alpha7
49 BuildRequires:  libtool >= 2:1.4d-3
50 BuildRequires:  libvorbis-devel
51 BuildRequires:  libx264-devel >= 0.1.2-1.20080801
52 %ifarch %{ix86}
53 %ifnarch i386 i486
54 BuildRequires:  nasm
55 %endif
56 %endif
57 BuildRequires:  perl-tools-pod
58 BuildRequires:  pkgconfig
59 BuildRequires:  rpmbuild(macros) >= 1.470
60 BuildRequires:  schroedinger-devel
61 BuildRequires:  tetex
62 BuildRequires:  texinfo
63 %{?with_amr:BuildRequires:      unzip}
64 BuildRequires:  xvid-devel >= 1:1.1.0
65 BuildRequires:  zlib-devel
66 %{?with_autoreqdep:BuildConflicts:      libpostproc}
67 Requires:       %{name}-libs = %{version}-%{release}
68 Requires:       xvid >= 1:1.1.0
69 Obsoletes:      libpostproc
70 BuildRoot:      %{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
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:       faac-devel
119 Requires:       faad2-devel
120 Requires:       lame-libs-devel
121 Requires:       libgsm-devel
122 Requires:       libtheora-devel >= 1.0-0.alpha7
123 Requires:       libvorbis-devel
124 Requires:       libx264-devel >= 0.1.2-1.20060828_2245.1
125 Requires:       xvid-devel >= 1:1.1.0
126 Requires:       zlib-devel
127 Obsoletes:      libpostproc-devel
128
129 %description devel
130 ffmpeg header files.
131
132 %description devel -l pl.UTF-8
133 Pliki nagłówkowe ffmpeg.
134
135 %package static
136 Summary:        ffmpeg static libraries
137 Summary(pl.UTF-8):      Statyczne biblioteki ffmpeg
138 Group:          Development/Libraries
139 Requires:       %{name}-devel = %{version}-%{release}
140
141 %description static
142 ffmpeg static libraries (libavcodec and libavformat).
143
144 %description static -l pl.UTF-8
145 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
146
147 %package ffplay
148 Summary:        FFplay - SDL-based media player
149 Summary(pl.UTF-8):      FFplay - odtwarzacz mediów oparty na SDL
150 Group:          Applications/Multimedia
151 Requires:       %{name}-libs = %{version}-%{release}
152
153 %description ffplay
154 FFplay is a very simple and portable media player using the FFmpeg
155 libraries and the SDL library. It is mostly used as a test bench for
156 the various APIs of FFmpeg.
157
158 %description ffplay -l pl.UTF-8
159 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
160 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
161 testowania różnych API FFmpeg.
162
163 %package vhook-imlib2
164 Summary:        imlib2 based hook
165 Summary(pl.UTF-8):      Moduł przejściowy oparty o imlib2
166 Group:          Libraries
167 Requires:       %{name}-libs = %{version}-%{release}
168
169 %description vhook-imlib2
170 This module implements a text overlay for a video image. Currently it
171 supports a fixed overlay or reading the text from a file. The string
172 is passed through strftime so that it is easy to imprint the date and
173 time onto the image.
174
175 %description vhook-imlib2 -l pl.UTF-8
176 Ten moduł implementuje tekstową nakładkę dla obrazu. Aktualnie
177 obsługuje stałą nakładkę lub wczytywanie tekstu z pliku. Łańcuch jest
178 przepuszczany przez strftime, więc łatwo umieścić datę i czas na
179 obrazie.
180
181 %package ffserver
182 Summary:        FFserver video server
183 Summary(pl.UTF-8):      FFserver - serwer strumieni obrazu
184 Group:          Daemons
185 Requires(post,preun):   /sbin/chkconfig
186 Requires:       %{name}-libs = %{version}-%{release}
187 Requires:       rc-scripts >= 0.4.0.10
188
189 %description ffserver
190 FFserver is a streaming server for both audio and video. It supports
191 several live feeds, streaming from files and time shifting on live
192 feeds (you can seek to positions in the past on each live feed,
193 provided you specify a big enough feed storage in ffserver.conf).
194
195 %description ffserver -l pl.UTF-8
196 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
197 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
198 czasie dla źródeł na żywo (można przeskakiwać na położenia w
199 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
200 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
201
202 %prep
203 %setup -q -n %{name}-export-%{_snap}
204 %patch0 -p1
205
206 # package the grep result for mplayer, the result formatted as mplayer/configure
207 cat <<EOF > ffmpeg-config
208 #! /bin/sh
209 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
210 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
211 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
212 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
213 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
214 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
215 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
216 EOF
217 cat <<'EOF' >> ffmpeg-config
218
219 case "$1" in
220 --decoders)
221         echo $_libavdecoders_all
222         ;;
223 --encoders)
224         echo $_libavencoders_all
225         ;;
226 --parsers)
227         echo $_libavparsers_all
228         ;;
229 --bsfs)
230         echo $_libavbsfs_all
231         ;;
232 --demuxers)
233         echo $_libavdemuxers_all
234         ;;
235 --muxers)
236         echo $_libavmuxers_all
237         ;;
238 --protocols)
239         echo $_libavprotocols_all
240         ;;
241 *)
242         cat <<USAGE
243 Usage: $0 [OPTION]
244 Options:
245   --decoders
246   --encoders
247   --parsers
248   --bsfs
249   --demuxers
250   --muxers
251   --protocols
252 USAGE
253         exit 1;;
254 esac
255
256 exit 0
257 EOF
258
259 %build
260 # notes:
261 # - it's not autoconf configure
262 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
263 ./configure \
264         --arch=%{_target_base_arch} \
265         --prefix=%{_prefix} \
266         --libdir=%{_libdir} \
267         --shlibdir=%{_libdir} \
268         --mandir=%{_mandir} \
269         --cc="%{__cc}" \
270         --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
271         --extra-ldflags="%{rpmldflags}" \
272         --disable-debug \
273         --disable-optimizations \
274         --disable-stripping \
275         --enable-gpl \
276         --enable-liba52 \
277         --enable-liba52bin \
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-libtheora \
287         --enable-libvorbis \
288         --enable-libx264 \
289         --enable-libxvid \
290         --enable-postproc \
291         --enable-pthreads \
292         --enable-shared \
293         --enable-swscale \
294 %ifnarch %{ix86} %{x8664}
295         --disable-mmx \
296 %endif
297 %ifarch i386 i486
298         --disable-mmx \
299 %endif
300 %if %{with amr}
301         --enable-nonfree \
302         --enable-libamr-nb \
303         --enable-libamr-wb
304 %endif
305
306 %{__make}
307
308 %install
309 rm -rf $RPM_BUILD_ROOT
310 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
311         $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
312         $RPM_BUILD_ROOT/var/{cache,log}/ffserver
313
314 %{__make} install \
315         DESTDIR=$RPM_BUILD_ROOT
316
317 install config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
318 install libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
319 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
320 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
321 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
322 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
323
324 # install as ffmpeg-avconfig to avoid with possible programs looking for
325 # ffmpeg-config and expecting --libs output from it which is not implemented
326 # simple to do (by querying pkgconfig), but why?
327 install ffmpeg-config $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
328
329 %clean
330 rm -rf $RPM_BUILD_ROOT
331
332 %post libs      -p /sbin/ldconfig
333 %postun libs    -p /sbin/ldconfig
334
335 %pre ffserver
336 %groupadd -g 167 ffserver
337 %useradd -g ffserver -u 167 ffserver
338
339 %post ffserver
340 /sbin/chkconfig --add ffserver
341 %service ffserver restart
342
343 %preun ffserver
344 if [ "$1" = 0 ]; then
345         %service ffserver stop
346         /sbin/chkconfig --del ffserver
347 fi
348
349 %postun ffserver
350 if [ "$1" = 0 ]; then
351         %userremove ffserver
352         %groupremove ffserver
353 fi
354
355 %files
356 %defattr(644,root,root,755)
357 %doc Changelog README doc/*.html doc/TODO
358 %attr(755,root,root) %{_bindir}/ffmpeg
359 %{_mandir}/man1/ffmpeg.1*
360
361 %files libs
362 %defattr(644,root,root,755)
363 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
364 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
365 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
366 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
367 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
368 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
369 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.51
370 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.52
371 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.52
372 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.49
373 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
374 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.0
375 %dir %{_libdir}/vhook
376 %attr(755,root,root) %{_libdir}/vhook/drawtext.so
377 %attr(755,root,root) %{_libdir}/vhook/fish.so
378 %attr(755,root,root) %{_libdir}/vhook/null.so
379 %attr(755,root,root) %{_libdir}/vhook/ppm.so
380 %attr(755,root,root) %{_libdir}/vhook/watermark.so
381
382 %files devel
383 %defattr(644,root,root,755)
384 %doc doc/optimization.txt
385 %attr(755,root,root) %{_libdir}/libavcodec.so
386 %attr(755,root,root) %{_libdir}/libavdevice.so
387 %attr(755,root,root) %{_libdir}/libavformat.so
388 %attr(755,root,root) %{_libdir}/libavutil.so
389 %attr(755,root,root) %{_libdir}/libpostproc.so
390 %attr(755,root,root) %{_libdir}/libswscale.so
391 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
392 %{_includedir}/ffmpeg
393 %{_includedir}/libavcodec
394 %{_includedir}/libavdevice
395 %{_includedir}/libavformat
396 %{_includedir}/libavutil
397 %{_includedir}/libpostproc
398 %{_includedir}/libswscale
399 %{_pkgconfigdir}/*.pc
400
401 %files static
402 %defattr(644,root,root,755)
403 %{_libdir}/lib*.a
404
405 %files ffplay
406 %defattr(644,root,root,755)
407 %attr(755,root,root) %{_bindir}/ffplay
408 %{_mandir}/man1/ffplay.1*
409
410 %if %{with imlib2}
411 %files vhook-imlib2
412 %defattr(644,root,root,755)
413 %attr(755,root,root) %{_libdir}/vhook/imlib2.so
414 %endif
415
416 %files ffserver
417 %defattr(644,root,root,755)
418 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
419 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
420 %attr(755,root,root) %{_sbindir}/ffserver
421 %attr(754,root,root) /etc/rc.d/init.d/ffserver
422 %{_mandir}/man1/ffserver.1*
423 %dir %attr(770,root,ffserver) /var/cache/ffserver
424 %dir %attr(770,root,ffserver) /var/log/ffserver
This page took 0.098609 seconds and 3 git commands to generate.