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