]> git.pld-linux.org Git - packages/ffmpeg.git/blob - ffmpeg.spec
- rel 5; add libvpx update
[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.6
13 Release:        5
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:  d6142a9a5821d6a6262a6edb903faa24
20 Source1:        ffserver.init
21 Source2:        ffserver.sysconfig
22 Source3:        ffserver.conf
23 Patch0:         %{name}-bug-803.patch
24 Patch1:         %{name}-gsm.patch
25 Patch2:         faadbin-libfaadname.patch
26 # vhook is gone. this patch needs different approach
27 #PatchX: imagewidth.patch
28 # http://webm.googlecode.com/files/ffmpeg-0.6_libvpx-0.9.1.diff.gz
29 Patch3:         ffmpeg-0.6_libvpx-0.9.1.diff
30 URL:            http://www.ffmpeg.org/
31 BuildRequires:  SDL-devel
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:  libva-devel >= 1.0.3
48 BuildRequires:  libvdpau-devel
49 BuildRequires:  libvorbis-devel
50 BuildRequires:  libvpx-devel >= 0.9.1
51 # X264_BUILD >= 83
52 BuildRequires:  libx264-devel >= 0.1.3-1.20100424_2245.1
53 BuildRequires:  opencore-amr-devel
54 BuildRequires:  openjpeg-devel >= 1.3-2
55 BuildRequires:  speex-devel >= 1:1.2-rc1
56 %ifarch %{ix86}
57 %ifnarch i386 i486
58 BuildRequires:  nasm
59 %endif
60 %endif
61 BuildRequires:  perl-Encode
62 BuildRequires:  perl-tools-pod
63 BuildRequires:  pkgconfig
64 BuildRequires:  rpmbuild(macros) >= 1.470
65 BuildRequires:  schroedinger-devel
66 BuildRequires:  tetex
67 BuildRequires:  texi2html
68 BuildRequires:  texinfo
69 BuildRequires:  xvid-devel >= 1:1.1.0
70 BuildRequires:  zlib-devel
71 %{?with_autoreqdep:BuildConflicts:      libpostproc}
72 Requires:       %{name}-libs = %{version}-%{release}
73 Requires:       xvid >= 1:1.1.0
74 Obsoletes:      libpostproc
75 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
76
77 %define         _noautoreqdep   libGL.so.1 libGLU.so.1
78
79 %define         specflags       -fno-strict-aliasing
80
81 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
82 %define         specflags_ia32  -fomit-frame-pointer
83 # -mmmx is needed to enable <mmintrin.h> code.
84 %define         specflags_i586  -mmmx
85 %define         specflags_i686  -mmmx
86 %define         specflags_ppc   -fPIC
87
88 %description
89 FFmpeg is a complete solution to record, convert and stream audio and
90 video. It is a command line tool to convert one video file format to
91 another. It also supports grabbing and encoding in real time from a TV
92 card.
93
94 %description -l pl.UTF-8
95 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
96 oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
97 ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
98 formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
99 jest kompresowany do strumienia MPEG audio layer 2 lub używając
100 strumienia kompatybilnego z AC3.
101
102 %package libs
103 Summary:        ffmpeg libraries
104 Summary(pl.UTF-8):      Biblioteki ffmpeg
105 Group:          Libraries
106
107 %description libs
108 This package contains:
109 - the codec library from the ffmpeg project. It supports most existing
110   encoding formats (MPEG, DivX, MPEG4, AC3, DV...),
111 - demuxer library from the ffmpeg project. It supports most existing
112   file formats (AVI, MPEG, OGG, Matroska, ASF...),
113 - video postprocessing library from the ffmpeg project.
114
115 %description libs -l pl.UTF-8
116 Ten pakiet zawiera biblioteki współdzielone ffmpeg.
117
118 %package devel
119 Summary:        ffmpeg header files
120 Summary(pl.UTF-8):      Pliki nagłówkowe ffmpeg
121 Group:          Development/Libraries
122 Requires:       %{name}-libs = %{version}-%{release}
123 # for libavcodec:
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 ffserver
172 Summary:        FFserver video server
173 Summary(pl.UTF-8):      FFserver - serwer strumieni obrazu
174 Group:          Daemons
175 Requires(post,preun):   /sbin/chkconfig
176 Requires:       %{name}-libs = %{version}-%{release}
177 Requires:       rc-scripts >= 0.4.0.10
178
179 %description ffserver
180 FFserver is a streaming server for both audio and video. It supports
181 several live feeds, streaming from files and time shifting on live
182 feeds (you can seek to positions in the past on each live feed,
183 provided you specify a big enough feed storage in ffserver.conf).
184
185 %description ffserver -l pl.UTF-8
186 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
187 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
188 czasie dla źródeł na żywo (można przeskakiwać na położenia w
189 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
190 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
191
192 %prep
193 %setup -q
194 %patch0 -p1
195 %patch1 -p0
196 %patch2 -p1
197 %patch3 -p0
198
199 # package the grep result for mplayer, the result formatted as ./mplayer/configure
200 cat <<EOF > ffmpeg-avconfig
201 #! /bin/sh
202 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
203 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
204 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
205 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
206 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
207 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
208 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
209 EOF
210 cat <<'EOF' >> ffmpeg-avconfig
211
212 case "$1" in
213 --decoders)
214         echo $_libavdecoders_all
215         ;;
216 --encoders)
217         echo $_libavencoders_all
218         ;;
219 --parsers)
220         echo $_libavparsers_all
221         ;;
222 --bsfs)
223         echo $_libavbsfs_all
224         ;;
225 --demuxers)
226         echo $_libavdemuxers_all
227         ;;
228 --muxers)
229         echo $_libavmuxers_all
230         ;;
231 --protocols)
232         echo $_libavprotocols_all
233         ;;
234 *)
235         cat <<USAGE
236 Usage: $0 [OPTION]
237 Options:
238   --decoders
239   --encoders
240   --parsers
241   --bsfs
242   --demuxers
243   --muxers
244   --protocols
245 USAGE
246         exit 1;;
247 esac
248
249 exit 0
250 EOF
251
252 %build
253 # notes:
254 # - it's not autoconf configure
255 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
256 ./configure \
257         --arch=%{_target_base_arch} \
258         --prefix=%{_prefix} \
259         --libdir=%{_libdir} \
260         --shlibdir=%{_libdir} \
261         --mandir=%{_mandir} \
262         --cc="%{__cc}" \
263         --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
264         --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
265         --disable-debug \
266         --disable-optimizations \
267         --disable-stripping \
268         --enable-avfilter \
269         --enable-gpl \
270         --enable-version3 \
271         --enable-libdc1394 \
272         --enable-libdirac \
273         --enable-libfaad \
274         --enable-libgsm \
275         --enable-libmp3lame \
276         --enable-libschroedinger \
277         --enable-libspeex \
278         --enable-libtheora \
279         --enable-libvorbis \
280         --enable-libvpx \
281         --enable-libx264 \
282         --enable-libxvid \
283         --enable-libopencore-amrnb \
284         --enable-libopencore-amrwb \
285         --enable-libopenjpeg \
286         --enable-postproc \
287         --enable-pthreads \
288         --enable-shared \
289         --enable-swscale \
290         --enable-vdpau \
291         --enable-x11grab \
292 %ifnarch %{ix86} %{x8664}
293         --disable-mmx \
294 %endif
295 %ifarch i386 i486
296         --disable-mmx \
297 %endif
298 %if %{with nonfree}
299         --enable-nonfree \
300         --enable-libfaac \
301 %endif
302         --enable-runtime-cpudetect
303
304 # force oldscaler build
305 sed -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
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 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
327 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
328
329 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
330 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
331 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
332 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
333
334 # install as ffmpeg-avconfig to avoid with possible programs looking for
335 # ffmpeg-config and expecting --libs output from it which is not implemented
336 # simple to do (by querying pkgconfig), but why?
337 install ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
338
339 %clean
340 rm -rf $RPM_BUILD_ROOT
341
342 %post libs      -p /sbin/ldconfig
343 %postun libs    -p /sbin/ldconfig
344
345 %pre ffserver
346 %groupadd -g 167 ffserver
347 %useradd -g ffserver -u 167 ffserver
348
349 %post ffserver
350 /sbin/chkconfig --add ffserver
351 %service ffserver restart
352
353 %preun ffserver
354 if [ "$1" = 0 ]; then
355         %service ffserver stop
356         /sbin/chkconfig --del ffserver
357 fi
358
359 %postun ffserver
360 if [ "$1" = 0 ]; then
361         %userremove ffserver
362         %groupremove ffserver
363 fi
364
365 %files
366 %defattr(644,root,root,755)
367 %doc Changelog README doc/*.html doc/TODO
368 %attr(755,root,root) %{_bindir}/ffmpeg
369 %attr(755,root,root) %{_bindir}/ffprobe
370 %dir %{_datadir}/ffmpeg
371 %{_datadir}/ffmpeg/*.ffpreset
372 %{_mandir}/man1/ffmpeg.1*
373 %{_mandir}/man1/ffprobe.1*
374
375 %files libs
376 %defattr(644,root,root,755)
377 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
378 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.52
379 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
380 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.52
381 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
382 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.1
383 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
384 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.52
385 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
386 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.50
387 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
388 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
389 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
390 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.0
391
392 %files devel
393 %defattr(644,root,root,755)
394 %doc doc/optimization.txt
395 %attr(755,root,root) %{_libdir}/libavcodec.so
396 %attr(755,root,root) %{_libdir}/libavdevice.so
397 %attr(755,root,root) %{_libdir}/libavfilter.so
398 %attr(755,root,root) %{_libdir}/libavformat.so
399 %attr(755,root,root) %{_libdir}/libavutil.so
400 %attr(755,root,root) %{_libdir}/libpostproc.so
401 %attr(755,root,root) %{_libdir}/libswscale.so
402 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
403 %{_includedir}/ffmpeg
404 %{_includedir}/libavcodec
405 %{_includedir}/libavdevice
406 %{_includedir}/libavfilter
407 %{_includedir}/libavformat
408 %{_includedir}/libavutil
409 %{_includedir}/libpostproc
410 %{_includedir}/libswscale
411 %{_pkgconfigdir}/*.pc
412
413 %files static
414 %defattr(644,root,root,755)
415 %{_libdir}/lib*.a
416
417 %files ffplay
418 %defattr(644,root,root,755)
419 %attr(755,root,root) %{_bindir}/ffplay
420 %{_mandir}/man1/ffplay.1*
421
422 %files ffserver
423 %defattr(644,root,root,755)
424 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
425 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
426 %attr(755,root,root) %{_sbindir}/ffserver
427 %attr(754,root,root) /etc/rc.d/init.d/ffserver
428 %{_mandir}/man1/ffserver.1*
429 %dir %attr(770,root,ffserver) /var/cache/ffserver
430 %dir %attr(770,root,ffserver) /var/log/ffserver
This page took 0.053898 seconds and 3 git commands to generate.