]> git.pld-linux.org Git - packages/ffmpeg.git/blob - ffmpeg.spec
- release 2
[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-09-30
10 %define         snap    %(echo %{_snap} | tr -d -)
11 %define         rel 2
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:  d85a173fa0843706e4f943b84046db84
24 Source1:        ffserver.init
25 Source2:        ffserver.sysconfig
26 Source3:        ffserver.conf
27 Patch0:         %{name}-img_convert_symbol.patch
28 Patch1:         %{name}-x264.patch
29 URL:            http://ffmpeg.mplayerhq.hu/
30 BuildRequires:  SDL-devel
31 %if %{with amr}
32 BuildRequires:  amrnb-devel >= 6.1.0.4
33 BuildRequires:  amrwb-devel >= 7.0.0.1
34 %endif
35 BuildRequires:  dirac-devel >= 1.0.0
36 BuildRequires:  faac-devel
37 BuildRequires:  faad2-devel
38 BuildRequires:  freetype-devel
39 %ifarch ppc
40 # require version with altivec support fixed
41 BuildRequires:  gcc >= 5:3.3.2-3
42 %endif
43 BuildRequires:  a52dec-libs-devel
44 %{?with_imlib2:BuildRequires:   imlib2-devel >= 1.3.0}
45 BuildRequires:  lame-libs-devel
46 BuildRequires:  libdc1394-devel
47 BuildRequires:  libgsm-devel
48 BuildRequires:  libraw1394-devel
49 BuildRequires:  libtheora-devel >= 1.0-0.beta3
50 BuildRequires:  libtool >= 2:1.4d-3
51 BuildRequires:  libvorbis-devel
52 BuildRequires:  libx264-devel >= 0.1.2-1.20080801
53 %ifarch %{ix86}
54 %ifnarch i386 i486
55 BuildRequires:  nasm
56 %endif
57 %endif
58 BuildRequires:  perl-tools-pod
59 BuildRequires:  pkgconfig
60 BuildRequires:  rpmbuild(macros) >= 1.470
61 BuildRequires:  schroedinger-devel
62 BuildRequires:  tetex
63 BuildRequires:  texinfo
64 %{?with_amr:BuildRequires:      unzip}
65 BuildRequires:  xvid-devel >= 1:1.1.0
66 BuildRequires:  zlib-devel
67 %{?with_autoreqdep:BuildConflicts:      libpostproc}
68 Requires:       %{name}-libs = %{version}-%{release}
69 Requires:       xvid >= 1:1.1.0
70 Obsoletes:      libpostproc
71 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
72
73 %define         _noautoreqdep   libGL.so.1 libGLU.so.1
74
75 %define         specflags       -fno-strict-aliasing
76
77 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
78 %define         specflags_ia32  -fomit-frame-pointer
79 # -mmmx is needed to enable <mmintrin.h> code.
80 %define         specflags_i586  -mmmx
81 %define         specflags_i686  -mmmx
82
83 %description
84 ffmpeg is a hyper fast realtime audio/video encoder and streaming
85 server. It can grab from a standard Video4Linux video source and
86 convert it into several file formats based on DCT/motion compensation
87 encoding. Sound is compressed in MPEG audio layer 2 or using an AC3
88 compatible stream.
89
90 %description -l pl.UTF-8
91 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
92 oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
93 ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
94 formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
95 jest kompresowany do strumienia MPEG audio layer 2 lub używając
96 strumienia kompatybilnego z AC3.
97
98 %package libs
99 Summary:        ffmpeg libraries
100 Summary(pl.UTF-8):      Biblioteki ffmpeg
101 Group:          Libraries
102
103 %description libs
104 This package contains ffmpeg shared libraries.
105
106 %description libs -l pl.UTF-8
107 Ten pakiet zawiera biblioteki współdzielone ffmpeg.
108
109 %package devel
110 Summary:        ffmpeg header files
111 Summary(pl.UTF-8):      Pliki nagłówkowe ffmpeg
112 Group:          Development/Libraries
113 Requires:       %{name}-libs = %{version}-%{release}
114 # for libavcodec:
115 %if %{with amr}
116 Requires:       amrnb-devel
117 Requires:       amrwb-devel >= 5.3.0
118 %endif
119 Requires:       dirac-devel
120 Requires:       faac-devel
121 Requires:       faad2-devel
122 Requires:       lame-libs-devel
123 Requires:       libgsm-devel
124 Requires:       libraw1394-devel
125 Requires:       libtheora-devel >= 1.0-0.alpha7
126 Requires:       libvorbis-devel
127 Requires:       libx264-devel >= 0.1.2-1.20060828_2245.1
128 Requires:       xvid-devel >= 1:1.1.0
129 Requires:       zlib-devel
130 Obsoletes:      libpostproc-devel
131
132 %description devel
133 ffmpeg header files.
134
135 %description devel -l pl.UTF-8
136 Pliki nagłówkowe ffmpeg.
137
138 %package static
139 Summary:        ffmpeg static libraries
140 Summary(pl.UTF-8):      Statyczne biblioteki ffmpeg
141 Group:          Development/Libraries
142 Requires:       %{name}-devel = %{version}-%{release}
143
144 %description static
145 ffmpeg static libraries (libavcodec and libavformat).
146
147 %description static -l pl.UTF-8
148 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
149
150 %package ffplay
151 Summary:        FFplay - SDL-based media player
152 Summary(pl.UTF-8):      FFplay - odtwarzacz mediów oparty na SDL
153 Group:          Applications/Multimedia
154 Requires:       %{name}-libs = %{version}-%{release}
155
156 %description ffplay
157 FFplay is a very simple and portable media player using the FFmpeg
158 libraries and the SDL library. It is mostly used as a test bench for
159 the various APIs of FFmpeg.
160
161 %description ffplay -l pl.UTF-8
162 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
163 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
164 testowania różnych API FFmpeg.
165
166 %package vhook-imlib2
167 Summary:        imlib2 based hook
168 Summary(pl.UTF-8):      Moduł przejściowy oparty o imlib2
169 Group:          Libraries
170 Requires:       %{name}-libs = %{version}-%{release}
171
172 %description vhook-imlib2
173 This module implements a text overlay for a video image. Currently it
174 supports a fixed overlay or reading the text from a file. The string
175 is passed through strftime so that it is easy to imprint the date and
176 time onto the image.
177
178 %description vhook-imlib2 -l pl.UTF-8
179 Ten moduł implementuje tekstową nakładkę dla obrazu. Aktualnie
180 obsługuje stałą nakładkę lub wczytywanie tekstu z pliku. Łańcuch jest
181 przepuszczany przez strftime, więc łatwo umieścić datę i czas na
182 obrazie.
183
184 %package ffserver
185 Summary:        FFserver video server
186 Summary(pl.UTF-8):      FFserver - serwer strumieni obrazu
187 Group:          Daemons
188 Requires(post,preun):   /sbin/chkconfig
189 Requires:       %{name}-libs = %{version}-%{release}
190 Requires:       rc-scripts >= 0.4.0.10
191
192 %description ffserver
193 FFserver is a streaming server for both audio and video. It supports
194 several live feeds, streaming from files and time shifting on live
195 feeds (you can seek to positions in the past on each live feed,
196 provided you specify a big enough feed storage in ffserver.conf).
197
198 %description ffserver -l pl.UTF-8
199 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
200 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
201 czasie dla źródeł na żywo (można przeskakiwać na położenia w
202 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
203 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
204
205 %prep
206 %setup -q -n %{name}-export-%{_snap}
207 %patch0 -p1
208 %patch1 -p1
209
210 # package the grep result for mplayer, the result formatted as mplayer/configure
211 cat <<EOF > ffmpeg-config
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-config
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="%{rpmldflags}" \
276         --disable-debug \
277         --disable-optimizations \
278         --disable-stripping \
279         --enable-gpl \
280         --enable-liba52 \
281         --enable-liba52bin \
282         --enable-libfaac \
283         --enable-libfaad \
284         --enable-libfaadbin \
285         --enable-libdc1394 \
286         --enable-libdirac \
287         --enable-libgsm \
288         --enable-libmp3lame \
289         --enable-libschroedinger \
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 %{__make}
311
312 %install
313 rm -rf $RPM_BUILD_ROOT
314 install -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
321 install config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
322 install libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
323 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
324 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
325 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
326 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
327
328 # install as ffmpeg-avconfig to avoid with possible programs looking for
329 # ffmpeg-config and expecting --libs output from it which is not implemented
330 # simple to do (by querying pkgconfig), but why?
331 install ffmpeg-config $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
332
333 %clean
334 rm -rf $RPM_BUILD_ROOT
335
336 %post libs      -p /sbin/ldconfig
337 %postun libs    -p /sbin/ldconfig
338
339 %pre ffserver
340 %groupadd -g 167 ffserver
341 %useradd -g ffserver -u 167 ffserver
342
343 %post ffserver
344 /sbin/chkconfig --add ffserver
345 %service ffserver restart
346
347 %preun ffserver
348 if [ "$1" = 0 ]; then
349         %service ffserver stop
350         /sbin/chkconfig --del ffserver
351 fi
352
353 %postun ffserver
354 if [ "$1" = 0 ]; then
355         %userremove ffserver
356         %groupremove ffserver
357 fi
358
359 %files
360 %defattr(644,root,root,755)
361 %doc Changelog README doc/*.html doc/TODO
362 %attr(755,root,root) %{_bindir}/ffmpeg
363 %{_mandir}/man1/ffmpeg.1*
364
365 %files libs
366 %defattr(644,root,root,755)
367 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
368 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
369 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
370 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
371 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
372 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
373 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.[0-9][0-9]
374 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.[0-9][0-9]
375 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.[0-9][0-9]
376 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.[0-9][0-9]
377 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.[0-9][0-9]
378 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.[0-9]
379 %dir %{_libdir}/vhook
380 %attr(755,root,root) %{_libdir}/vhook/drawtext.so
381 %attr(755,root,root) %{_libdir}/vhook/fish.so
382 %attr(755,root,root) %{_libdir}/vhook/null.so
383 %attr(755,root,root) %{_libdir}/vhook/ppm.so
384 %attr(755,root,root) %{_libdir}/vhook/watermark.so
385
386 %files devel
387 %defattr(644,root,root,755)
388 %doc doc/optimization.txt
389 %attr(755,root,root) %{_libdir}/libavcodec.so
390 %attr(755,root,root) %{_libdir}/libavdevice.so
391 %attr(755,root,root) %{_libdir}/libavformat.so
392 %attr(755,root,root) %{_libdir}/libavutil.so
393 %attr(755,root,root) %{_libdir}/libpostproc.so
394 %attr(755,root,root) %{_libdir}/libswscale.so
395 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
396 %{_includedir}/ffmpeg
397 %{_includedir}/libavcodec
398 %{_includedir}/libavdevice
399 %{_includedir}/libavformat
400 %{_includedir}/libavutil
401 %{_includedir}/libpostproc
402 %{_includedir}/libswscale
403 %{_pkgconfigdir}/*.pc
404
405 %files static
406 %defattr(644,root,root,755)
407 %{_libdir}/lib*.a
408
409 %files ffplay
410 %defattr(644,root,root,755)
411 %attr(755,root,root) %{_bindir}/ffplay
412 %{_mandir}/man1/ffplay.1*
413
414 %if %{with imlib2}
415 %files vhook-imlib2
416 %defattr(644,root,root,755)
417 %attr(755,root,root) %{_libdir}/vhook/imlib2.so
418 %endif
419
420 %files ffserver
421 %defattr(644,root,root,755)
422 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
423 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
424 %attr(755,root,root) %{_sbindir}/ffserver
425 %attr(754,root,root) /etc/rc.d/init.d/ffserver
426 %{_mandir}/man1/ffserver.1*
427 %dir %attr(770,root,ffserver) /var/cache/ffserver
428 %dir %attr(770,root,ffserver) /var/log/ffserver
This page took 0.999672 seconds and 4 git commands to generate.