]> git.pld-linux.org Git - packages/ffmpeg.git/blob - ffmpeg.spec
- up to 0.6.1
[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.1
13 Release:        1
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:  4f5d732d25eedfb072251b5314ba2093
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 Suggests:       faad2-libs
107
108 %description libs
109 This package contains:
110 - the codec library from the ffmpeg project. It supports most existing
111   encoding formats (MPEG, DivX, MPEG4, AC3, DV...),
112 - demuxer library from the ffmpeg project. It supports most existing
113   file formats (AVI, MPEG, OGG, Matroska, ASF...),
114 - video postprocessing library from the ffmpeg project.
115
116 %description libs -l pl.UTF-8
117 Ten pakiet zawiera biblioteki współdzielone ffmpeg.
118
119 %package devel
120 Summary:        ffmpeg header files
121 Summary(pl.UTF-8):      Pliki nagłówkowe ffmpeg
122 Group:          Development/Libraries
123 Requires:       %{name}-libs = %{version}-%{release}
124 # for libavcodec:
125 Requires:       dirac-devel
126 Requires:       faac-devel
127 Requires:       faad2-devel
128 Requires:       lame-libs-devel
129 Requires:       libgsm-devel
130 Requires:       libraw1394-devel
131 Requires:       libtheora-devel >= 1.0-0.alpha7
132 Requires:       libvorbis-devel
133 Requires:       libx264-devel >= 0.1.2-1.20060828_2245.1
134 Requires:       xvid-devel >= 1:1.1.0
135 Requires:       zlib-devel
136 Obsoletes:      libpostproc-devel
137
138 %description devel
139 ffmpeg header files.
140
141 %description devel -l pl.UTF-8
142 Pliki nagłówkowe ffmpeg.
143
144 %package static
145 Summary:        ffmpeg static libraries
146 Summary(pl.UTF-8):      Statyczne biblioteki ffmpeg
147 Group:          Development/Libraries
148 Requires:       %{name}-devel = %{version}-%{release}
149
150 %description static
151 ffmpeg static libraries (libavcodec and libavformat).
152
153 %description static -l pl.UTF-8
154 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
155
156 %package ffplay
157 Summary:        FFplay - SDL-based media player
158 Summary(pl.UTF-8):      FFplay - odtwarzacz mediów oparty na SDL
159 Group:          Applications/Multimedia
160 Requires:       %{name}-libs = %{version}-%{release}
161
162 %description ffplay
163 FFplay is a very simple and portable media player using the FFmpeg
164 libraries and the SDL library. It is mostly used as a test bench for
165 the various APIs of FFmpeg.
166
167 %description ffplay -l pl.UTF-8
168 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
169 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
170 testowania różnych API FFmpeg.
171
172 %package ffserver
173 Summary:        FFserver video server
174 Summary(pl.UTF-8):      FFserver - serwer strumieni obrazu
175 Group:          Daemons
176 Requires(post,preun):   /sbin/chkconfig
177 Requires:       %{name}-libs = %{version}-%{release}
178 Requires:       rc-scripts >= 0.4.0.10
179
180 %description ffserver
181 FFserver is a streaming server for both audio and video. It supports
182 several live feeds, streaming from files and time shifting on live
183 feeds (you can seek to positions in the past on each live feed,
184 provided you specify a big enough feed storage in ffserver.conf).
185
186 %description ffserver -l pl.UTF-8
187 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
188 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
189 czasie dla źródeł na żywo (można przeskakiwać na położenia w
190 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
191 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
192
193 %prep
194 %setup -q
195 %patch0 -p1
196 %patch1 -p0
197 %patch2 -p1
198 %patch3 -p0
199
200 # package the grep result for mplayer, the result formatted as ./mplayer/configure
201 cat <<EOF > ffmpeg-avconfig
202 #! /bin/sh
203 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
204 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
205 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
206 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
207 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
208 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
209 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
210 EOF
211 cat <<'EOF' >> ffmpeg-avconfig
212
213 case "$1" in
214 --decoders)
215         echo $_libavdecoders_all
216         ;;
217 --encoders)
218         echo $_libavencoders_all
219         ;;
220 --parsers)
221         echo $_libavparsers_all
222         ;;
223 --bsfs)
224         echo $_libavbsfs_all
225         ;;
226 --demuxers)
227         echo $_libavdemuxers_all
228         ;;
229 --muxers)
230         echo $_libavmuxers_all
231         ;;
232 --protocols)
233         echo $_libavprotocols_all
234         ;;
235 *)
236         cat <<USAGE
237 Usage: $0 [OPTION]
238 Options:
239   --decoders
240   --encoders
241   --parsers
242   --bsfs
243   --demuxers
244   --muxers
245   --protocols
246 USAGE
247         exit 1;;
248 esac
249
250 exit 0
251 EOF
252
253 %build
254 # notes:
255 # - it's not autoconf configure
256 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
257 ./configure \
258         --arch=%{_target_base_arch} \
259         --prefix=%{_prefix} \
260         --libdir=%{_libdir} \
261         --shlibdir=%{_libdir} \
262         --mandir=%{_mandir} \
263         --cc="%{__cc}" \
264         --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
265         --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
266         --disable-debug \
267         --disable-optimizations \
268         --disable-stripping \
269         --enable-avfilter \
270         --enable-gpl \
271         --enable-version3 \
272         --enable-libdc1394 \
273         --enable-libdirac \
274         --enable-libfaad \
275         --enable-libfaadbin \
276         --enable-libgsm \
277         --enable-libmp3lame \
278         --enable-libschroedinger \
279         --enable-libspeex \
280         --enable-libtheora \
281         --enable-libvorbis \
282         --enable-libvpx \
283         --enable-libx264 \
284         --enable-libxvid \
285         --enable-libopencore-amrnb \
286         --enable-libopencore-amrwb \
287         --enable-libopenjpeg \
288         --enable-postproc \
289         --enable-pthreads \
290         --enable-shared \
291         --enable-swscale \
292         --enable-vdpau \
293         --enable-x11grab \
294 %ifnarch %{ix86} %{x8664}
295         --disable-mmx \
296 %endif
297 %ifarch i386 i486
298         --disable-mmx \
299 %endif
300 %if %{with nonfree}
301         --enable-nonfree \
302         --enable-libfaac \
303 %endif
304         --enable-runtime-cpudetect
305
306 # force oldscaler build
307 sed -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
308
309 %{__make}
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
320 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
321 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
322 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
323 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
324 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
325 for a in libavutil/*/bswap.h; do
326         install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
327 done
328 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
329 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
330
331 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
332 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
333 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
334 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
335
336 # install as ffmpeg-avconfig to avoid with possible programs looking for
337 # ffmpeg-config and expecting --libs output from it which is not implemented
338 # simple to do (by querying pkgconfig), but why?
339 install ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
340
341 %clean
342 rm -rf $RPM_BUILD_ROOT
343
344 %post libs      -p /sbin/ldconfig
345 %postun libs    -p /sbin/ldconfig
346
347 %pre ffserver
348 %groupadd -g 167 ffserver
349 %useradd -g ffserver -u 167 ffserver
350
351 %post ffserver
352 /sbin/chkconfig --add ffserver
353 %service ffserver restart
354
355 %preun ffserver
356 if [ "$1" = 0 ]; then
357         %service ffserver stop
358         /sbin/chkconfig --del ffserver
359 fi
360
361 %postun ffserver
362 if [ "$1" = 0 ]; then
363         %userremove ffserver
364         %groupremove ffserver
365 fi
366
367 %files
368 %defattr(644,root,root,755)
369 %doc Changelog README doc/*.html doc/TODO
370 %attr(755,root,root) %{_bindir}/ffmpeg
371 %attr(755,root,root) %{_bindir}/ffprobe
372 %dir %{_datadir}/ffmpeg
373 %{_datadir}/ffmpeg/*.ffpreset
374 %{_mandir}/man1/ffmpeg.1*
375 %{_mandir}/man1/ffprobe.1*
376
377 %files libs
378 %defattr(644,root,root,755)
379 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
380 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.52
381 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
382 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.52
383 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
384 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.1
385 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
386 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.52
387 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
388 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.50
389 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
390 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
391 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
392 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.0
393
394 %files devel
395 %defattr(644,root,root,755)
396 %doc doc/optimization.txt
397 %attr(755,root,root) %{_libdir}/libavcodec.so
398 %attr(755,root,root) %{_libdir}/libavdevice.so
399 %attr(755,root,root) %{_libdir}/libavfilter.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}/libavfilter
409 %{_includedir}/libavformat
410 %{_includedir}/libavutil
411 %{_includedir}/libpostproc
412 %{_includedir}/libswscale
413 %{_pkgconfigdir}/*.pc
414
415 %files static
416 %defattr(644,root,root,755)
417 %{_libdir}/lib*.a
418
419 %files ffplay
420 %defattr(644,root,root,755)
421 %attr(755,root,root) %{_bindir}/ffplay
422 %{_mandir}/man1/ffplay.1*
423
424 %files ffserver
425 %defattr(644,root,root,755)
426 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
427 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
428 %attr(755,root,root) %{_sbindir}/ffserver
429 %attr(754,root,root) /etc/rc.d/init.d/ffserver
430 %{_mandir}/man1/ffserver.1*
431 %dir %attr(770,root,ffserver) /var/cache/ffserver
432 %dir %attr(770,root,ffserver) /var/log/ffserver
This page took 0.088687 seconds and 4 git commands to generate.