]> git.pld-linux.org Git - packages/ffmpeg.git/blob - ffmpeg.spec
- added frei0r bcond
[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  frei0r          # build without frei0r video filtering
8 %bcond_without  va              # VAAPI (Video Acceleration API)
9 %bcond_without  vpx             # VP8, a high-quality video codec
10 %bcond_without  doc             # don't build docs
11
12 Summary:        FFmpeg - a very fast video and audio converter
13 Summary(pl.UTF-8):      FFmpeg - szybki konwerter audio/wideo
14 Name:           ffmpeg
15 Version:        0.8.3
16 Release:        1
17 # LGPL or GPL, chosen at configure time (GPL version is more featured)
18 # (postprocessing, some filters, x264, xavs, xvid, x11grab)
19 # using v3 allows Apache-licensed libs (opencore-amr, libvo-*enc)
20 License:        GPL v3+ with LGPL v3+ parts
21 Group:          Applications/Multimedia
22 Source0:        http://ffmpeg.org/releases/%{name}-%{version}.tar.bz2
23 # Source0-md5:  556870ccfd6c9c0426c7dd86dd5beb62
24 Source1:        ffserver.init
25 Source2:        ffserver.sysconfig
26 Source3:        ffserver.conf
27 Patch0:         %{name}-bug-803.patch
28 Patch1:         %{name}-gsm.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 %{?with_frei0r: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
228 # package the grep result for mplayer, the result formatted as ./mplayer/configure
229 cat <<EOF > ffmpeg-avconfig
230 #! /bin/sh
231 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
232 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
233 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
234 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
235 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
236 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
237 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
238 EOF
239 cat <<'EOF' >> ffmpeg-avconfig
240
241 case "$1" in
242 --decoders)
243         echo $_libavdecoders_all
244         ;;
245 --encoders)
246         echo $_libavencoders_all
247         ;;
248 --parsers)
249         echo $_libavparsers_all
250         ;;
251 --bsfs)
252         echo $_libavbsfs_all
253         ;;
254 --demuxers)
255         echo $_libavdemuxers_all
256         ;;
257 --muxers)
258         echo $_libavmuxers_all
259         ;;
260 --protocols)
261         echo $_libavprotocols_all
262         ;;
263 *)
264         cat <<USAGE
265 Usage: $0 [OPTION]
266 Options:
267   --decoders
268   --encoders
269   --parsers
270   --bsfs
271   --demuxers
272   --muxers
273   --protocols
274 USAGE
275         exit 1;;
276 esac
277
278 exit 0
279 EOF
280
281 %build
282 # notes:
283 # - it's not autoconf configure
284 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
285 ./configure \
286         --arch=%{_target_base_arch} \
287         --prefix=%{_prefix} \
288         --libdir=%{_libdir} \
289         --shlibdir=%{_libdir} \
290         --mandir=%{_mandir} \
291         --cc="%{__cc}" \
292         --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
293         --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
294         --disable-debug \
295         --disable-optimizations \
296         --disable-stripping \
297         --enable-avfilter \
298         --enable-gpl \
299         --enable-version3 \
300         %{?with_frei0r:--enable-frei0r} \
301         --enable-libdc1394 \
302         --enable-libcelt \
303         --enable-libdirac \
304         --enable-libgsm \
305         --enable-libmp3lame \
306         --enable-libnut \
307         --enable-libopencore-amrnb \
308         --enable-libopencore-amrwb \
309         --enable-libopenjpeg \
310         --enable-librtmp \
311         --enable-libschroedinger \
312         --enable-libspeex \
313         --enable-libtheora \
314         --enable-libvo-aacenc \
315         --enable-libvo-amrwbenc \
316         --enable-libvorbis \
317         %{?with_vpx:--enable-libvpx} \
318         --enable-libx264 \
319         --enable-libxavs \
320         --enable-libxvid \
321         --enable-postproc \
322         --enable-pthreads \
323         --enable-shared \
324         --enable-swscale \
325         --enable-vdpau \
326         --enable-x11grab \
327 %ifnarch %{ix86} %{x8664}
328         --disable-mmx \
329 %endif
330 %ifarch i386 i486
331         --disable-mmx \
332 %endif
333 %if %{with nonfree}
334         --enable-nonfree \
335         --enable-libfaac \
336 %endif
337         --enable-runtime-cpudetect
338
339 #       --enable-libopencv would cause dependency loop
340
341 # force oldscaler build
342 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
343
344 %{__make} \
345         V=1
346
347 # CC_O to add -c to commandline. makefile should be patched
348 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
349
350 %install
351 rm -rf $RPM_BUILD_ROOT
352 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
353         $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
354         $RPM_BUILD_ROOT/var/{cache,log}/ffserver
355
356 %{__make} install \
357         DESTDIR=$RPM_BUILD_ROOT \
358         V=1
359
360 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
361 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
362 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
363 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
364 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
365 for a in libavutil/*/bswap.h; do
366         install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
367 done
368 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
369 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
370
371 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
372 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
373 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
374 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
375 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
376
377 # install as ffmpeg-avconfig to avoid with possible programs looking for
378 # ffmpeg-config and expecting --libs output from it which is not implemented
379 # simple to do (by querying pkgconfig), but why?
380 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
381
382 %clean
383 rm -rf $RPM_BUILD_ROOT
384
385 %post   libs -p /sbin/ldconfig
386 %postun libs -p /sbin/ldconfig
387
388 %pre ffserver
389 %groupadd -g 167 ffserver
390 %useradd -g ffserver -u 167 ffserver
391
392 %post ffserver
393 /sbin/chkconfig --add ffserver
394 %service ffserver restart
395
396 %preun ffserver
397 if [ "$1" = 0 ]; then
398         %service ffserver stop
399         /sbin/chkconfig --del ffserver
400 fi
401
402 %postun ffserver
403 if [ "$1" = 0 ]; then
404         %userremove ffserver
405         %groupremove ffserver
406 fi
407
408 %files
409 %defattr(644,root,root,755)
410 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES,TODO} %{?with_doc:doc/*.html}
411 %attr(755,root,root) %{_bindir}/ffmpeg
412 %attr(755,root,root) %{_bindir}/ffprobe
413 %attr(755,root,root) %{_bindir}/qt-faststart
414 %dir %{_datadir}/ffmpeg
415 %{_datadir}/ffmpeg/*.ffpreset
416 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
417 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
418
419 %files libs
420 %defattr(644,root,root,755)
421 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
422 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.53
423 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
424 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.53
425 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
426 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.2
427 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
428 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.53
429 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
430 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
431 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
432 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
433 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
434 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
435
436 %files devel
437 %defattr(644,root,root,755)
438 %doc doc/optimization.txt
439 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
440 %attr(755,root,root) %{_libdir}/libavcodec.so
441 %attr(755,root,root) %{_libdir}/libavdevice.so
442 %attr(755,root,root) %{_libdir}/libavfilter.so
443 %attr(755,root,root) %{_libdir}/libavformat.so
444 %attr(755,root,root) %{_libdir}/libavutil.so
445 %attr(755,root,root) %{_libdir}/libpostproc.so
446 %attr(755,root,root) %{_libdir}/libswscale.so
447 %{_includedir}/ffmpeg
448 %{_includedir}/libavcodec
449 %{_includedir}/libavdevice
450 %{_includedir}/libavfilter
451 %{_includedir}/libavformat
452 %{_includedir}/libavutil
453 %{_includedir}/libpostproc
454 %{_includedir}/libswscale
455 %{_pkgconfigdir}/libavcodec.pc
456 %{_pkgconfigdir}/libavdevice.pc
457 %{_pkgconfigdir}/libavfilter.pc
458 %{_pkgconfigdir}/libavformat.pc
459 %{_pkgconfigdir}/libavutil.pc
460 %{_pkgconfigdir}/libpostproc.pc
461 %{_pkgconfigdir}/libswscale.pc
462
463 %files static
464 %defattr(644,root,root,755)
465 %{_libdir}/libavcodec.a
466 %{_libdir}/libavdevice.a
467 %{_libdir}/libavfilter.a
468 %{_libdir}/libavformat.a
469 %{_libdir}/libavutil.a
470 %{_libdir}/libpostproc.a
471 %{_libdir}/libswscale.a
472
473 %files ffplay
474 %defattr(644,root,root,755)
475 %attr(755,root,root) %{_bindir}/ffplay
476 %{?with_doc:%{_mandir}/man1/ffplay.1*}
477
478 %files ffserver
479 %defattr(644,root,root,755)
480 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
481 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
482 %attr(755,root,root) %{_sbindir}/ffserver
483 %attr(754,root,root) /etc/rc.d/init.d/ffserver
484 %{?with_doc:%{_mandir}/man1/ffserver.1*}
485 %dir %attr(770,root,ffserver) /var/cache/ffserver
486 %dir %attr(770,root,ffserver) /var/log/ffserver
This page took 0.072981 seconds and 4 git commands to generate.