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