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