]> git.pld-linux.org Git - packages/ffmpeg.git/blob - ffmpeg.spec
- ~sorted configure options, enabled libschroedinger
[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:  rpmbuild(macros) >= 1.470
59 BuildRequires:  schroedinger-devel
60 BuildRequires:  tetex
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
81 %description
82 ffmpeg is a hyper fast realtime audio/video encoder and streaming
83 server. It can grab from a standard Video4Linux video source and
84 convert it into several file formats based on DCT/motion compensation
85 encoding. Sound is compressed in MPEG audio layer 2 or using an AC3
86 compatible stream.
87
88 %description -l pl.UTF-8
89 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
90 oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
91 ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
92 formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
93 jest kompresowany do strumienia MPEG audio layer 2 lub używając
94 strumienia kompatybilnego z AC3.
95
96 %package libs
97 Summary:        ffmpeg libraries
98 Summary(pl.UTF-8):      Biblioteki ffmpeg
99 Group:          Libraries
100
101 %description libs
102 This package contains ffmpeg shared libraries.
103
104 %description libs -l pl.UTF-8
105 Ten pakiet zawiera biblioteki współdzielone ffmpeg.
106
107 %package devel
108 Summary:        ffmpeg header files
109 Summary(pl.UTF-8):      Pliki nagłówkowe ffmpeg
110 Group:          Development/Libraries
111 Requires:       %{name}-libs = %{version}-%{release}
112 # for libavcodec:
113 %if %{with amr}
114 Requires:       amrnb-devel
115 Requires:       amrwb-devel >= 5.3.0
116 %endif
117 Requires:       faac-devel
118 Requires:       faad2-devel
119 Requires:       lame-libs-devel
120 Requires:       libgsm-devel
121 Requires:       libtheora-devel >= 1.0-0.alpha7
122 Requires:       libvorbis-devel
123 Requires:       libx264-devel >= 0.1.2-1.20060828_2245.1
124 Requires:       xvid-devel >= 1:1.1.0
125 Requires:       zlib-devel
126 Obsoletes:      libpostproc-devel
127
128 %description devel
129 ffmpeg header files.
130
131 %description devel -l pl.UTF-8
132 Pliki nagłówkowe ffmpeg.
133
134 %package static
135 Summary:        ffmpeg static libraries
136 Summary(pl.UTF-8):      Statyczne biblioteki ffmpeg
137 Group:          Development/Libraries
138 Requires:       %{name}-devel = %{version}-%{release}
139
140 %description static
141 ffmpeg static libraries (libavcodec and libavformat).
142
143 %description static -l pl.UTF-8
144 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
145
146 %package ffplay
147 Summary:        FFplay - SDL-based media player
148 Summary(pl.UTF-8):      FFplay - odtwarzacz mediów oparty na SDL
149 Group:          Applications/Multimedia
150 Requires:       %{name}-libs = %{version}-%{release}
151
152 %description ffplay
153 FFplay is a very simple and portable media player using the FFmpeg
154 libraries and the SDL library. It is mostly used as a test bench for
155 the various APIs of FFmpeg.
156
157 %description ffplay -l pl.UTF-8
158 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
159 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
160 testowania różnych API FFmpeg.
161
162 %package vhook-imlib2
163 Summary:        imlib2 based hook
164 Summary(pl.UTF-8):      Moduł przejściowy oparty o imlib2
165 Group:          Libraries
166 Requires:       %{name}-libs = %{version}-%{release}
167
168 %description vhook-imlib2
169 This module implements a text overlay for a video image. Currently it
170 supports a fixed overlay or reading the text from a file. The string
171 is passed through strftime so that it is easy to imprint the date and
172 time onto the image.
173
174 %description vhook-imlib2 -l pl.UTF-8
175 Ten moduł implementuje tekstową nakładkę dla obrazu. Aktualnie
176 obsługuje stałą nakładkę lub wczytywanie tekstu z pliku. Łańcuch jest
177 przepuszczany przez strftime, więc łatwo umieścić datę i czas na
178 obrazie.
179
180 %package ffserver
181 Summary:        FFserver video server
182 Summary(pl.UTF-8):      FFserver - serwer strumieni obrazu
183 Group:          Daemons
184 Requires(post,preun):   /sbin/chkconfig
185 Requires:       %{name}-libs = %{version}-%{release}
186 Requires:       rc-scripts >= 0.4.0.10
187
188 %description ffserver
189 FFserver is a streaming server for both audio and video. It supports
190 several live feeds, streaming from files and time shifting on live
191 feeds (you can seek to positions in the past on each live feed,
192 provided you specify a big enough feed storage in ffserver.conf).
193
194 %description ffserver -l pl.UTF-8
195 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
196 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
197 czasie dla źródeł na żywo (można przeskakiwać na położenia w
198 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
199 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
200
201 %prep
202 %setup -q -n %{name}-export-%{_snap}
203 %patch0 -p1
204
205 # package the grep result for mplayer, the result formatted as mplayer/configure
206 cat <<EOF > ffmpeg-config
207 #! /bin/sh
208 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
209 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
210 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
211 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
212 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
213 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
214 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
215 EOF
216 cat <<'EOF' >> ffmpeg-config
217
218 case "$1" in
219 --decoders)
220         echo $_libavdecoders_all
221         ;;
222 --encoders)
223         echo $_libavencoders_all
224         ;;
225 --parsers)
226         echo $_libavparsers_all
227         ;;
228 --bsfs)
229         echo $_libavbsfs_all
230         ;;
231 --demuxers)
232         echo $_libavdemuxers_all
233         ;;
234 --muxers)
235         echo $_libavmuxers_all
236         ;;
237 --protocols)
238         echo $_libavprotocols_all
239         ;;
240 *)
241         cat <<USAGE
242 Usage: $0 [OPTION]
243 Options:
244   --decoders
245   --encoders
246   --parsers
247   --bsfs
248   --demuxers
249   --muxers
250   --protocols
251 USAGE
252         exit 1;;
253 esac
254
255 exit 0
256 EOF
257
258 %build
259 # notes:
260 # - it's not autoconf configure
261 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
262 ./configure \
263         --arch=%{_target_base_arch} \
264         --prefix=%{_prefix} \
265         --libdir=%{_libdir} \
266         --shlibdir=%{_libdir} \
267         --mandir=%{_mandir} \
268         --cc="%{__cc}" \
269         --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
270         --extra-ldflags="%{rpmldflags}" \
271         --disable-debug \
272         --disable-optimizations \
273         --disable-stripping \
274         --enable-gpl \
275         --enable-liba52 \
276         --enable-liba52bin \
277         --enable-libfaac \
278         --enable-libfaad \
279         --enable-libfaadbin \
280         --enable-libdc1394 \
281         --enable-libdirac \
282         --enable-libgsm \
283         --enable-libmp3lame \
284         --enable-libschroedinger \
285         --enable-libtheora \
286         --enable-libvorbis \
287         --enable-libx264 \
288         --enable-libxvid \
289         --enable-postproc \
290         --enable-pthreads \
291         --enable-shared \
292         --enable-swscale \
293 %ifnarch %{ix86} %{x8664}
294         --disable-mmx \
295 %endif
296 %ifarch i386 i486
297         --disable-mmx \
298 %endif
299 %if %{with amr}
300         --enable-nonfree \
301         --enable-libamr-nb \
302         --enable-libamr-wb
303 %endif
304
305 %{__make}
306
307 %install
308 rm -rf $RPM_BUILD_ROOT
309 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
310         $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
311         $RPM_BUILD_ROOT/var/{cache,log}/ffserver
312
313 %{__make} install \
314         DESTDIR=$RPM_BUILD_ROOT
315
316 install config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
317 install libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
318 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
319 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
320 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
321 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
322
323 # install as ffmpeg-avconfig to avoid with possible programs looking for
324 # ffmpeg-config and expecting --libs output from it which is not implemented
325 # simple to do (by querying pkgconfig), but why?
326 install ffmpeg-config $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
327
328 %clean
329 rm -rf $RPM_BUILD_ROOT
330
331 %post libs      -p /sbin/ldconfig
332 %postun libs    -p /sbin/ldconfig
333
334 %pre ffserver
335 %groupadd -g 167 ffserver
336 %useradd -g ffserver -u 167 ffserver
337
338 %post ffserver
339 /sbin/chkconfig --add ffserver
340 %service ffserver restart
341
342 %preun ffserver
343 if [ "$1" = 0 ]; then
344         %service ffserver stop
345         /sbin/chkconfig --del ffserver
346 fi
347
348 %postun ffserver
349 if [ "$1" = 0 ]; then
350         %userremove ffserver
351         %groupremove ffserver
352 fi
353
354 %files
355 %defattr(644,root,root,755)
356 %doc Changelog README doc/*.html doc/TODO
357 %attr(755,root,root) %{_bindir}/ffmpeg
358 %{_mandir}/man1/ffmpeg.1*
359
360 %files libs
361 %defattr(644,root,root,755)
362 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
363 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
364 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
365 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
366 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
367 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
368 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.51
369 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.52
370 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.52
371 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.49
372 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
373 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.0
374 %dir %{_libdir}/vhook
375 %attr(755,root,root) %{_libdir}/vhook/drawtext.so
376 %attr(755,root,root) %{_libdir}/vhook/fish.so
377 %attr(755,root,root) %{_libdir}/vhook/null.so
378 %attr(755,root,root) %{_libdir}/vhook/ppm.so
379 %attr(755,root,root) %{_libdir}/vhook/watermark.so
380
381 %files devel
382 %defattr(644,root,root,755)
383 %doc doc/optimization.txt
384 %attr(755,root,root) %{_libdir}/libavcodec.so
385 %attr(755,root,root) %{_libdir}/libavdevice.so
386 %attr(755,root,root) %{_libdir}/libavformat.so
387 %attr(755,root,root) %{_libdir}/libavutil.so
388 %attr(755,root,root) %{_libdir}/libpostproc.so
389 %attr(755,root,root) %{_libdir}/libswscale.so
390 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
391 %{_includedir}/ffmpeg
392 %{_includedir}/libavcodec
393 %{_includedir}/libavdevice
394 %{_includedir}/libavformat
395 %{_includedir}/libavutil
396 %{_includedir}/libpostproc
397 %{_includedir}/libswscale
398 %{_pkgconfigdir}/*.pc
399
400 %files static
401 %defattr(644,root,root,755)
402 %{_libdir}/lib*.a
403
404 %files ffplay
405 %defattr(644,root,root,755)
406 %attr(755,root,root) %{_bindir}/ffplay
407 %{_mandir}/man1/ffplay.1*
408
409 %if %{with imlib2}
410 %files vhook-imlib2
411 %defattr(644,root,root,755)
412 %attr(755,root,root) %{_libdir}/vhook/imlib2.so
413 %endif
414
415 %files ffserver
416 %defattr(644,root,root,755)
417 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
418 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
419 %attr(755,root,root) %{_sbindir}/ffserver
420 %attr(754,root,root) /etc/rc.d/init.d/ffserver
421 %{_mandir}/man1/ffserver.1*
422 %dir %attr(770,root,ffserver) /var/cache/ffserver
423 %dir %attr(770,root,ffserver) /var/log/ffserver
This page took 0.10883 seconds and 4 git commands to generate.