]> git.pld-linux.org Git - packages/ffmpeg.git/blob - ffmpeg.spec
- updated Source URL
[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  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 is a very fast video and audio converter
12 Summary(pl.UTF-8):      Koder audio/wideo czasu rzeczywistego oraz serwer strumieni
13 Name:           ffmpeg
14 Version:        0.6.1
15 Release:        1
16 # LGPL or GPL, chosen at configure time (GPL version is more featured)
17 # (postprocessing, ac3, xvid, x264, faad)
18 License:        GPL v3+ with LGPL v3+ parts
19 Group:          Applications/Multimedia
20 Source0:        http://ffmpeg.org/releases/%{name}-%{version}.tar.bz2
21 # Source0-md5:  4f5d732d25eedfb072251b5314ba2093
22 Source1:        ffserver.init
23 Source2:        ffserver.sysconfig
24 Source3:        ffserver.conf
25 Patch0:         %{name}-bug-803.patch
26 Patch1:         %{name}-gsm.patch
27 Patch2:         faadbin-libfaadname.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 BuildRequires:  lame-libs-devel
41 BuildRequires:  libdc1394-devel
42 BuildRequires:  libgsm-devel
43 BuildRequires:  libraw1394-devel
44 BuildRequires:  libtheora-devel >= 1.0-0.beta3
45 BuildRequires:  libtool >= 2:1.4d-3
46 %{?with_va:BuildRequires:       libva-devel >= 1.0.3}
47 BuildRequires:  libvdpau-devel
48 BuildRequires:  libvorbis-devel
49 %{?with_vpx:BuildRequires:      libvpx-devel >= 0.9.1}
50 # X264_BUILD >= 83
51 BuildRequires:  libx264-devel >= 0.1.3-1.20100424_2245.1
52 BuildRequires:  opencore-amr-devel
53 BuildRequires:  openjpeg-devel >= 1.3-2
54 BuildRequires:  speex-devel >= 1:1.2-rc1
55 %ifarch %{ix86}
56 %ifnarch i386 i486
57 BuildRequires:  nasm
58 %endif
59 %endif
60 BuildRequires:  perl-Encode
61 BuildRequires:  perl-tools-pod
62 BuildRequires:  pkgconfig
63 BuildRequires:  rpmbuild(macros) >= 1.470
64 BuildRequires:  schroedinger-devel
65 %{?with_doc:BuildRequires:      tetex}
66 %{?with_doc:BuildRequires:      texi2html}
67 %{?with_doc:BuildRequires:      texinfo}
68 BuildRequires:  xvid-devel >= 1:1.1.0
69 BuildRequires:  zlib-devel
70 %{?with_autoreqdep:BuildConflicts:      libpostproc}
71 Requires:       %{name}-libs = %{version}-%{release}
72 Requires:       xvid >= 1:1.1.0
73 Obsoletes:      libpostproc
74 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
75
76 %define         _noautoreqdep   libGL.so.1 libGLU.so.1
77
78 %define         specflags       -fno-strict-aliasing
79
80 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
81 %define         specflags_ia32  -fomit-frame-pointer
82 # -mmmx is needed to enable <mmintrin.h> code.
83 %define         specflags_i586  -mmmx
84 %define         specflags_i686  -mmmx
85 %define         specflags_ppc   -fPIC
86
87 %description
88 FFmpeg is a complete solution to record, convert and stream audio and
89 video. It is a command line tool to convert one video file format to
90 another. It also supports grabbing and encoding in real time from a TV
91 card.
92
93 %description -l pl.UTF-8
94 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
95 oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
96 ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
97 formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
98 jest kompresowany do strumienia MPEG audio layer 2 lub używając
99 strumienia kompatybilnego z AC3.
100
101 %package libs
102 Summary:        ffmpeg libraries
103 Summary(pl.UTF-8):      Biblioteki ffmpeg
104 Group:          Libraries
105 Suggests:       faad2-libs
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-libfaadbin \
275         --enable-libgsm \
276         --enable-libmp3lame \
277         --enable-libschroedinger \
278         --enable-libspeex \
279         --enable-libtheora \
280         --enable-libvorbis \
281         %{?with_vpx:--enable-libvpx} \
282         --enable-libx264 \
283         --enable-libxvid \
284         --enable-libopencore-amrnb \
285         --enable-libopencore-amrwb \
286         --enable-libopenjpeg \
287         --enable-postproc \
288         --enable-pthreads \
289         --enable-shared \
290         --enable-swscale \
291         --enable-vdpau \
292         --enable-x11grab \
293 %ifnarch %{ix86} %{x8664}
294         --disable-mmx \
295 %endif
296 %ifarch i386 i486
297         --disable-mmx \
298 %endif
299 %if %{with nonfree}
300         --enable-nonfree \
301         --enable-libfaac \
302 %endif
303         --enable-runtime-cpudetect
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         V=1
310
311 %install
312 rm -rf $RPM_BUILD_ROOT
313 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
314         $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
315         $RPM_BUILD_ROOT/var/{cache,log}/ffserver
316
317 %{__make} install \
318         DESTDIR=$RPM_BUILD_ROOT \
319         V=1
320
321 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
322 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
323 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
324 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
325 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
326 for a in libavutil/*/bswap.h; do
327         install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
328 done
329 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
330 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
331
332 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
333 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
334 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
335 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
336
337 # install as ffmpeg-avconfig to avoid with possible programs looking for
338 # ffmpeg-config and expecting --libs output from it which is not implemented
339 # simple to do (by querying pkgconfig), but why?
340 install ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
341
342 %clean
343 rm -rf $RPM_BUILD_ROOT
344
345 %post   libs -p /sbin/ldconfig
346 %postun libs -p /sbin/ldconfig
347
348 %pre ffserver
349 %groupadd -g 167 ffserver
350 %useradd -g ffserver -u 167 ffserver
351
352 %post ffserver
353 /sbin/chkconfig --add ffserver
354 %service ffserver restart
355
356 %preun ffserver
357 if [ "$1" = 0 ]; then
358         %service ffserver stop
359         /sbin/chkconfig --del ffserver
360 fi
361
362 %postun ffserver
363 if [ "$1" = 0 ]; then
364         %userremove ffserver
365         %groupremove ffserver
366 fi
367
368 %files
369 %defattr(644,root,root,755)
370 %doc Changelog LICENSE README %{?with_doc:doc/*.html} doc/TODO
371 %attr(755,root,root) %{_bindir}/ffmpeg
372 %attr(755,root,root) %{_bindir}/ffprobe
373 %dir %{_datadir}/ffmpeg
374 %{_datadir}/ffmpeg/*.ffpreset
375 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
376 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
377
378 %files libs
379 %defattr(644,root,root,755)
380 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
381 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.52
382 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
383 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.52
384 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
385 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.1
386 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
387 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.52
388 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
389 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.50
390 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
391 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
392 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
393 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.0
394
395 %files devel
396 %defattr(644,root,root,755)
397 %doc doc/optimization.txt
398 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
399 %attr(755,root,root) %{_libdir}/libavcodec.so
400 %attr(755,root,root) %{_libdir}/libavdevice.so
401 %attr(755,root,root) %{_libdir}/libavfilter.so
402 %attr(755,root,root) %{_libdir}/libavformat.so
403 %attr(755,root,root) %{_libdir}/libavutil.so
404 %attr(755,root,root) %{_libdir}/libpostproc.so
405 %attr(755,root,root) %{_libdir}/libswscale.so
406 %{_includedir}/ffmpeg
407 %{_includedir}/libavcodec
408 %{_includedir}/libavdevice
409 %{_includedir}/libavfilter
410 %{_includedir}/libavformat
411 %{_includedir}/libavutil
412 %{_includedir}/libpostproc
413 %{_includedir}/libswscale
414 %{_pkgconfigdir}/libavcodec.pc
415 %{_pkgconfigdir}/libavdevice.pc
416 %{_pkgconfigdir}/libavfilter.pc
417 %{_pkgconfigdir}/libavformat.pc
418 %{_pkgconfigdir}/libavutil.pc
419 %{_pkgconfigdir}/libpostproc.pc
420 %{_pkgconfigdir}/libswscale.pc
421
422 %files static
423 %defattr(644,root,root,755)
424 %{_libdir}/libavcodec.a
425 %{_libdir}/libavdevice.a
426 %{_libdir}/libavfilter.a
427 %{_libdir}/libavformat.a
428 %{_libdir}/libavutil.a
429 %{_libdir}/libpostproc.a
430 %{_libdir}/libswscale.a
431
432 %files ffplay
433 %defattr(644,root,root,755)
434 %attr(755,root,root) %{_bindir}/ffplay
435 %{?with_doc:%{_mandir}/man1/ffplay.1*}
436
437 %files ffserver
438 %defattr(644,root,root,755)
439 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
440 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
441 %attr(755,root,root) %{_sbindir}/ffserver
442 %attr(754,root,root) /etc/rc.d/init.d/ffserver
443 %{?with_doc:%{_mandir}/man1/ffserver.1*}
444 %dir %attr(770,root,ffserver) /var/cache/ffserver
445 %dir %attr(770,root,ffserver) /var/log/ffserver
This page took 0.07026 seconds and 4 git commands to generate.