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