]> git.pld-linux.org Git - packages/ffmpeg.git/blob - ffmpeg.spec
- rel 5
[packages/ffmpeg.git] / ffmpeg.spec
1 # TODO
2 # - is bug803 patch still needed? the code changed somehow
3 #
4 # Conditional build:
5 %bcond_with     nonfree         # non free options of package (currently: faac)
6 %bcond_without  autoreqdep      # don't care about package name deps generated by rpm
7 %bcond_without  va              # VAAPI (Video Acceleration API)
8 %bcond_without  vpx             # VP8, a high-quality video codec
9 %bcond_without  doc             # don't build docs
10
11 Summary:        FFmpeg - a very fast video and audio converter
12 Summary(pl.UTF-8):      FFmpeg - szybki konwerter audio/wideo
13 Name:           ffmpeg
14 Version:        0.8
15 Release:        5
16 # LGPL or GPL, chosen at configure time (GPL version is more featured)
17 # (postprocessing, some filters, x264, xavs, xvid, x11grab)
18 # using v3 allows Apache-licensed libs (opencore-amr, libvo-*enc)
19 License:        GPL v3+ with LGPL v3+ parts
20 Group:          Applications/Multimedia
21 Source0:        http://ffmpeg.org/releases/%{name}-%{version}.tar.bz2
22 # Source0-md5:  7e9b8c8a6952de0c477027e48249f3ed
23 Source1:        ffserver.init
24 Source2:        ffserver.sysconfig
25 Source3:        ffserver.conf
26 Patch0:         %{name}-bug-803.patch
27 Patch1:         %{name}-gsm.patch
28 Patch2:         %{name}-AV_PICTURE_TYPE_NONE.patch
29 URL:            http://www.ffmpeg.org/
30 BuildRequires:  SDL-devel
31 BuildRequires:  alsa-lib-devel
32 BuildRequires:  bzip2-devel
33 BuildRequires:  celt-devel
34 BuildRequires:  dirac-devel >= 1.0.0
35 %{?with_nonfree:BuildRequires:  faac-devel}
36 BuildRequires:  freetype-devel
37 BuildRequires:  frei0r-devel
38 %ifarch ppc
39 # require version with altivec support fixed
40 BuildRequires:  gcc >= 5:3.3.2-3
41 %endif
42 BuildRequires:  jack-audio-connection-kit-devel
43 BuildRequires:  lame-libs-devel >= 3.98.3
44 BuildRequires:  libdc1394-devel
45 BuildRequires:  libgsm-devel
46 BuildRequires:  libnut-devel
47 BuildRequires:  libraw1394-devel
48 BuildRequires:  librtmp-devel
49 BuildRequires:  libtheora-devel >= 1.0-0.beta3
50 BuildRequires:  libtool >= 2:1.4d-3
51 %{?with_va:BuildRequires:       libva-devel >= 1.0.3}
52 BuildRequires:  libvdpau-devel
53 BuildRequires:  libvorbis-devel
54 %{?with_vpx:BuildRequires:      libvpx-devel >= 0.9.6}
55 # X264_BUILD >= 83
56 BuildRequires:  libx264-devel >= 0.1.3-1.20110625_2245
57 BuildRequires:  opencore-amr-devel
58 BuildRequires:  openjpeg-devel >= 1.3-2
59 BuildRequires:  speex-devel >= 1:1.2-rc1
60 %ifarch %{ix86}
61 %ifnarch i386 i486
62 BuildRequires:  nasm
63 %endif
64 %endif
65 BuildRequires:  perl-Encode
66 BuildRequires:  perl-tools-pod
67 BuildRequires:  pkgconfig
68 BuildRequires:  rpmbuild(macros) >= 1.470
69 BuildRequires:  schroedinger-devel
70 %{?with_doc:BuildRequires:      tetex}
71 %{?with_doc:BuildRequires:      texi2html}
72 %{?with_doc:BuildRequires:      texinfo}
73 BuildRequires:  vo-aacenc-devel
74 BuildRequires:  vo-amrwbenc-devel
75 BuildRequires:  xavs-devel
76 BuildRequires:  xorg-lib-libXext-devel
77 BuildRequires:  xorg-lib-libXfixes-devel
78 BuildRequires:  xvid-devel >= 1:1.1.0
79 BuildRequires:  zlib-devel
80 %{?with_autoreqdep:BuildConflicts:      libpostproc}
81 Requires:       %{name}-libs = %{version}-%{release}
82 Requires:       xvid >= 1:1.1.0
83 Obsoletes:      libpostproc
84 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
85
86 %define         _noautoreqdep   libGL.so.1 libGLU.so.1
87
88 %define         specflags       -fno-strict-aliasing
89
90 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
91 %define         specflags_ia32  -fomit-frame-pointer
92 # -mmmx is needed to enable <mmintrin.h> code.
93 %define         specflags_i586  -mmmx
94 %define         specflags_i686  -mmmx
95 %define         specflags_ppc   -fPIC
96
97 %description
98 FFmpeg is a complete solution to record, convert and stream audio and
99 video. It is a command line tool to convert one video file format to
100 another. It also supports grabbing and encoding in real time from a TV
101 card.
102
103 %description -l pl.UTF-8
104 FFmpeg to kompletne rozwiązanie nagrywania, konwersji i transmisji
105 strumieni dźwięku i obrazu. Jest to działające z linii poleceń
106 narzędzie do konwersji obrazu z jednego formatu do innego. Obsługuje
107 także przechwytywanie i kodowanie w czasie rzeczywistym z karty
108 telewizyjnej.
109
110 %package libs
111 Summary:        ffmpeg libraries
112 Summary(pl.UTF-8):      Biblioteki ffmpeg
113 Group:          Libraries
114
115 %description libs
116 This package contains the ffmpeg shared libraries:
117 - the codec library (libavcodec). It supports most existing encoding
118   formats (MPEG, DivX, MPEG4, AC3, DV...),
119 - demuxer library (libavformat). It supports most existing file
120   formats (AVI, MPEG, OGG, Matroska, ASF...),
121 - video postprocessing library (libpostproc).
122
123 %description libs -l pl.UTF-8
124 Ten pakiet zawiera biblioteki współdzielone ffmpeg:
125 - bibliotekę kodeków (libavcodec); obsługuje większość istniejących
126   formatów kodowania (MPEG, DivX, MPEG4, AC3, DV...),
127 - bibliotekę demuksera (libavformat); obsługuje większość istniejących
128   formatów plików (AVI, MPEG, OGG, Matroska, ASF...),
129 - bibliotekę postprocessingu (libpostproc).
130
131 %package devel
132 Summary:        ffmpeg header files
133 Summary(pl.UTF-8):      Pliki nagłówkowe ffmpeg
134 Group:          Development/Libraries
135 Requires:       %{name}-libs = %{version}-%{release}
136 # Libs.private from *.pc (unreasonably they are all the same)
137 Requires:       SDL-devel
138 Requires:       alsa-lib-devel
139 Requires:       bzip2-devel
140 Requires:       celt-devel
141 Requires:       dirac-devel >= 1.0.0
142 %{?with_nonfree:Requires:       faac-devel}
143 Requires:       jack-audio-connection-kit-devel
144 Requires:       lame-libs-devel >= 3.98.3
145 Requires:       libdc1394-devel
146 Requires:       libgsm-devel
147 Requires:       libnut-devel
148 Requires:       libraw1394-devel
149 Requires:       librtmp-devel
150 Requires:       libtheora-devel >= 1.0-0.beta3
151 %{?with_va:Requires:    libva-devel >= 1.0.3}
152 Requires:       libvorbis-devel
153 %{?with_vpx:Requires:   libvpx-devel >= 0.9.6}
154 Requires:       libx264-devel >= 0.1.3-1.20110625_2245
155 Requires:       opencore-amr-devel
156 Requires:       openjpeg-devel >= 1.3-2
157 Requires:       schroedinger-devel
158 Requires:       speex-devel >= 1:1.2-rc1
159 Requires:       vo-aacenc-devel
160 Requires:       vo-amrwbenc-devel
161 Requires:       xavs-devel
162 Requires:       xorg-lib-libXext-devel
163 Requires:       xorg-lib-libXfixes-devel
164 Requires:       xvid-devel >= 1:1.1.0
165 Requires:       zlib-devel
166 Obsoletes:      libpostproc-devel
167
168 %description devel
169 ffmpeg header files.
170
171 %description devel -l pl.UTF-8
172 Pliki nagłówkowe ffmpeg.
173
174 %package static
175 Summary:        ffmpeg static libraries
176 Summary(pl.UTF-8):      Statyczne biblioteki ffmpeg
177 Group:          Development/Libraries
178 Requires:       %{name}-devel = %{version}-%{release}
179
180 %description static
181 ffmpeg static libraries (libavcodec and libavformat).
182
183 %description static -l pl.UTF-8
184 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
185
186 %package ffplay
187 Summary:        FFplay - SDL-based media player
188 Summary(pl.UTF-8):      FFplay - odtwarzacz mediów oparty na SDL
189 Group:          Applications/Multimedia
190 Requires:       %{name}-libs = %{version}-%{release}
191
192 %description ffplay
193 FFplay is a very simple and portable media player using the FFmpeg
194 libraries and the SDL library. It is mostly used as a test bench for
195 the various APIs of FFmpeg.
196
197 %description ffplay -l pl.UTF-8
198 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
199 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
200 testowania różnych API FFmpeg.
201
202 %package ffserver
203 Summary:        FFserver video server
204 Summary(pl.UTF-8):      FFserver - serwer strumieni obrazu
205 Group:          Daemons
206 Requires(post,preun):   /sbin/chkconfig
207 Requires:       %{name}-libs = %{version}-%{release}
208 Requires:       rc-scripts >= 0.4.0.10
209
210 %description ffserver
211 FFserver is a streaming server for both audio and video. It supports
212 several live feeds, streaming from files and time shifting on live
213 feeds (you can seek to positions in the past on each live feed,
214 provided you specify a big enough feed storage in ffserver.conf).
215
216 %description ffserver -l pl.UTF-8
217 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
218 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
219 czasie dla źródeł na żywo (można przeskakiwać na położenia w
220 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
221 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
222
223 %prep
224 %setup -q
225 %patch0 -p1
226 %patch1 -p0
227 %patch2 -p1
228
229 # package the grep result for mplayer, the result formatted as ./mplayer/configure
230 cat <<EOF > ffmpeg-avconfig
231 #! /bin/sh
232 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
233 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
234 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
235 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
236 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
237 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
238 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
239 EOF
240 cat <<'EOF' >> ffmpeg-avconfig
241
242 case "$1" in
243 --decoders)
244         echo $_libavdecoders_all
245         ;;
246 --encoders)
247         echo $_libavencoders_all
248         ;;
249 --parsers)
250         echo $_libavparsers_all
251         ;;
252 --bsfs)
253         echo $_libavbsfs_all
254         ;;
255 --demuxers)
256         echo $_libavdemuxers_all
257         ;;
258 --muxers)
259         echo $_libavmuxers_all
260         ;;
261 --protocols)
262         echo $_libavprotocols_all
263         ;;
264 *)
265         cat <<USAGE
266 Usage: $0 [OPTION]
267 Options:
268   --decoders
269   --encoders
270   --parsers
271   --bsfs
272   --demuxers
273   --muxers
274   --protocols
275 USAGE
276         exit 1;;
277 esac
278
279 exit 0
280 EOF
281
282 %build
283 # notes:
284 # - it's not autoconf configure
285 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
286 ./configure \
287         --arch=%{_target_base_arch} \
288         --prefix=%{_prefix} \
289         --libdir=%{_libdir} \
290         --shlibdir=%{_libdir} \
291         --mandir=%{_mandir} \
292         --cc="%{__cc}" \
293         --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
294         --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
295         --disable-debug \
296         --disable-optimizations \
297         --disable-stripping \
298         --enable-avfilter \
299         --enable-gpl \
300         --enable-version3 \
301         --enable-frei0r \
302         --enable-libdc1394 \
303         --enable-libcelt \
304         --enable-libdirac \
305         --enable-libgsm \
306         --enable-libmp3lame \
307         --enable-libnut \
308         --enable-libopencore-amrnb \
309         --enable-libopencore-amrwb \
310         --enable-libopenjpeg \
311         --enable-librtmp \
312         --enable-libschroedinger \
313         --enable-libspeex \
314         --enable-libtheora \
315         --enable-libvo-aacenc \
316         --enable-libvo-amrwbenc \
317         --enable-libvorbis \
318         %{?with_vpx:--enable-libvpx} \
319         --enable-libx264 \
320         --enable-libxavs \
321         --enable-libxvid \
322         --enable-postproc \
323         --enable-pthreads \
324         --enable-shared \
325         --enable-swscale \
326         --enable-vdpau \
327         --enable-x11grab \
328 %ifnarch %{ix86} %{x8664}
329         --disable-mmx \
330 %endif
331 %ifarch i386 i486
332         --disable-mmx \
333 %endif
334 %if %{with nonfree}
335         --enable-nonfree \
336         --enable-libfaac \
337 %endif
338         --enable-runtime-cpudetect
339
340 #       --enable-libopencv would cause dependency loop
341
342 # force oldscaler build
343 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
344
345 %{__make} \
346         V=1
347
348 # CC_O to add -c to commandline. makefile should be patched
349 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
350
351 %install
352 rm -rf $RPM_BUILD_ROOT
353 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
354         $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
355         $RPM_BUILD_ROOT/var/{cache,log}/ffserver
356
357 %{__make} install \
358         DESTDIR=$RPM_BUILD_ROOT \
359         V=1
360
361 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
362 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
363 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
364 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
365 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
366 for a in libavutil/*/bswap.h; do
367         install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
368 done
369 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
370 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
371
372 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
373 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
374 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
375 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
376 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
377
378 # install as ffmpeg-avconfig to avoid with possible programs looking for
379 # ffmpeg-config and expecting --libs output from it which is not implemented
380 # simple to do (by querying pkgconfig), but why?
381 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
382
383 %clean
384 rm -rf $RPM_BUILD_ROOT
385
386 %post   libs -p /sbin/ldconfig
387 %postun libs -p /sbin/ldconfig
388
389 %pre ffserver
390 %groupadd -g 167 ffserver
391 %useradd -g ffserver -u 167 ffserver
392
393 %post ffserver
394 /sbin/chkconfig --add ffserver
395 %service ffserver restart
396
397 %preun ffserver
398 if [ "$1" = 0 ]; then
399         %service ffserver stop
400         /sbin/chkconfig --del ffserver
401 fi
402
403 %postun ffserver
404 if [ "$1" = 0 ]; then
405         %userremove ffserver
406         %groupremove ffserver
407 fi
408
409 %files
410 %defattr(644,root,root,755)
411 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES,TODO} %{?with_doc:doc/*.html}
412 %attr(755,root,root) %{_bindir}/ffmpeg
413 %attr(755,root,root) %{_bindir}/ffprobe
414 %attr(755,root,root) %{_bindir}/qt-faststart
415 %dir %{_datadir}/ffmpeg
416 %{_datadir}/ffmpeg/*.ffpreset
417 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
418 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
419
420 %files libs
421 %defattr(644,root,root,755)
422 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
423 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.53
424 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
425 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.53
426 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
427 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.2
428 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
429 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.53
430 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
431 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
432 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
433 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
434 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
435 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
436
437 %files devel
438 %defattr(644,root,root,755)
439 %doc doc/optimization.txt
440 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
441 %attr(755,root,root) %{_libdir}/libavcodec.so
442 %attr(755,root,root) %{_libdir}/libavdevice.so
443 %attr(755,root,root) %{_libdir}/libavfilter.so
444 %attr(755,root,root) %{_libdir}/libavformat.so
445 %attr(755,root,root) %{_libdir}/libavutil.so
446 %attr(755,root,root) %{_libdir}/libpostproc.so
447 %attr(755,root,root) %{_libdir}/libswscale.so
448 %{_includedir}/ffmpeg
449 %{_includedir}/libavcodec
450 %{_includedir}/libavdevice
451 %{_includedir}/libavfilter
452 %{_includedir}/libavformat
453 %{_includedir}/libavutil
454 %{_includedir}/libpostproc
455 %{_includedir}/libswscale
456 %{_pkgconfigdir}/libavcodec.pc
457 %{_pkgconfigdir}/libavdevice.pc
458 %{_pkgconfigdir}/libavfilter.pc
459 %{_pkgconfigdir}/libavformat.pc
460 %{_pkgconfigdir}/libavutil.pc
461 %{_pkgconfigdir}/libpostproc.pc
462 %{_pkgconfigdir}/libswscale.pc
463
464 %files static
465 %defattr(644,root,root,755)
466 %{_libdir}/libavcodec.a
467 %{_libdir}/libavdevice.a
468 %{_libdir}/libavfilter.a
469 %{_libdir}/libavformat.a
470 %{_libdir}/libavutil.a
471 %{_libdir}/libpostproc.a
472 %{_libdir}/libswscale.a
473
474 %files ffplay
475 %defattr(644,root,root,755)
476 %attr(755,root,root) %{_bindir}/ffplay
477 %{?with_doc:%{_mandir}/man1/ffplay.1*}
478
479 %files ffserver
480 %defattr(644,root,root,755)
481 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
482 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
483 %attr(755,root,root) %{_sbindir}/ffserver
484 %attr(754,root,root) /etc/rc.d/init.d/ffserver
485 %{?with_doc:%{_mandir}/man1/ffserver.1*}
486 %dir %attr(770,root,ffserver) /var/cache/ffserver
487 %dir %attr(770,root,ffserver) /var/log/ffserver
This page took 0.064 seconds and 4 git commands to generate.