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