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