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