- added rav1e support on bcond (off by default)
[packages/ffmpeg.git] / ffmpeg.spec
1 # TODO:
2 # - libtensorflow [-ltensorflow tensorflow/c/c_api.h]
3 # - AMF >= 1.4.4.1 (available at https://github.com/GPUOpen-LibrariesAndSDKs/AMF, where is original source?)
4 #
5 # How to deal with ffmpeg/opencv/chromaprint checken-egg problem:
6 #       1. make-request -r --with bootstrap ffmpeg.spec
7 #       2  bump release of opencv.spec and chromaprint.spec
8 #       3. make-request -r opencv.spec chromaprint.spec
9 #       4. bump release of ffmpeg.spec
10 #       5. make-request -r ffmpeg.spec
11 #
12 # Conditional build:
13 %bcond_with     bootstrap       # disable features to able to build without installed ffmpeg
14 %bcond_with     nonfree         # unblock non free options of package (currently: cuda_nvcc, decklib, fdk_aac, npp, openssl, libressl/libtls)
15 %bcond_without  amr             # AMR-NB/WB de/encoding via libopencore-amrnb/wb
16 %bcond_without  aribb24         # ARIB text and caption decoding via libaribb24
17 %bcond_without  avs             # AVS encoding via xavs
18 %bcond_without  avs2            # AVS2 de/encoding via libdavs2/libxavs2
19 %bcond_without  bs2b            # BS2B audio filter support
20 %bcond_without  caca            # textual display using libcaca
21 %bcond_without  codec2          # codec2 support using libcodec2
22 %bcond_without  chromaprint     # audio fingerprinting with chromaprint
23 %bcond_with     cudasdk         # NVIDIA CUDA code using nvcc from CUDA SDK [BR: cuda.h, non-free]
24 %bcond_without  dav1d           # AV1 decoding via libdav1d
25 %bcond_without  dc1394          # IIDC-1394 grabbing using libdc1394
26 %bcond_with     decklink        # Blackmagic DeckLink I/O support (requires nonfree)
27 %bcond_with     fdk_aac         # AAC de/encoding via libfdk_aac (requires nonfree)
28 %bcond_without  ffnvcodec       # NVIDIA codecs support using ffnvcodec headers (covered: cuda cuvid nvdec nvenc)
29 %bcond_without  flite           # flite voice synthesis support
30 %bcond_without  frei0r          # frei0r video filtering
31 %bcond_without  fribidi         # fribidi support
32 %bcond_without  gme             # Game Music Emu support
33 %bcond_without  gsm             # GSM de/encoding via libgsm
34 %bcond_without  iec61883        # ec61883 via libiec61883
35 %bcond_without  ilbc            # iLBC de/encoding via WebRTC libilbc
36 %bcond_without  kvazaar         # Kvazaar HEVC encoder support
37 %bcond_without  ladspa          # LADSPA audio filtering
38 %bcond_without  lensfun         # lensfun lens correction
39 %bcond_with     libdrm          # Linux Direct Rendering Manager code
40 %bcond_with     libklvanc       # Kernel Labs VANC processing (in decklink driver)
41 %bcond_without  libmysofa       # sofalizer filter
42 %bcond_with     librsvg         # SVG rasterization via librsvg
43 %bcond_with     libxml2         # XML parsing using libxml2
44 %bcond_without  lv2             # LV2 audio filtering
45 %bcond_with     mfx             # MFX hardware acceleration support
46 %bcond_without  modplug         # ModPlug via libmodplug
47 %bcond_with     npp             # NVIDIA Performance Primitives-based code (requires nonfree) [BR: libnppc+libnppi, npp.h]
48 %bcond_without  omx             # OpenMAX IL support
49 %bcond_without  openal          # OpenAL 1.1 capture support
50 %bcond_without  opencl          # OpenCL 1.2 code
51 %bcond_without  opencv          # OpenCV video filtering
52 %bcond_without  opengl          # OpenGL rendering support
53 %bcond_with     openh264        # OpenH264 H.264 encoder
54 %bcond_without  openmpt         # OpenMPT module decoder
55 %bcond_with     pocketsphinx    # asr filter using PocketSphinx
56 %bcond_without  pulseaudio      # PulseAudio input support
57 %bcond_with     rkmpp           # Rockchip Media Process Platform code [implies libdrm]
58 %bcond_without  rubberband      # rubberband filter
59 %bcond_without  shine           # shine fixed-point MP3 encoder
60 %bcond_without  snappy          # Snappy compression support (needed for hap encoding)
61 %bcond_without  srt             # Haivision SRT protocol support
62 %bcond_without  ssh             # SFTP protocol support via libssh
63 %bcond_with     smb             # SMB support via libsmbclient
64 %bcond_without  soxr            # SoX Resampler support
65 %bcond_with     tesseract       # OCR filter based on Tesseract
66 %bcond_without  theora          # Theora encoding via libtheora
67 %bcond_without  vmaf            # VMAF filter support
68 %bcond_without  x264            # H.264 x264 encoder
69 %bcond_without  x265            # H.265/HEVC x265 encoder
70 %bcond_without  va              # VAAPI (Video Acceleration API)
71 %bcond_without  vapoursynth     # VapourSynth demuxer
72 %bcond_without  vidstab         # vid.stab video stabilization support
73 %bcond_without  voamrwbenc      # MR-WB encoding via libvo-amrwbenc
74 %bcond_without  vpx             # VP8, a high-quality video codec
75 %bcond_without  wavpack         # wavpack encoding support
76 %bcond_without  webp            # WebP encoding support
77 %bcond_without  xvid            # vid encoding via xvidcore
78 %bcond_without  zimg            # zscale filter based on z.lib
79 %bcond_without  zmq             # 0MQ message passing
80 %bcond_without  zvbi            # teletext via libzvbi
81 %bcond_without  doc             # don't build docs
82 %bcond_with     tests           # "make check" (some tests fail as of 2.5)
83
84 %if %{with bootstrap}
85 %undefine       with_opencv
86 %undefine       with_chromaprint
87 %endif
88 %if %{with rkmpp}
89 %define         with_libdrm     1
90 %endif
91
92 %ifnarch %{ix86} %{x8664}
93 %undefine       with_ffnvcodec
94 %endif
95 %ifnarch %{ix86} %{x8664} %{arm}
96 %undefine       with_x265
97 %endif
98 %ifarch i386 i486
99 %undefine       with_x265
100 %endif
101 %ifarch i686 pentium4 athlon %{x8664} x32
102 %define         with_crystalhd  1
103 %endif
104 Summary:        FFmpeg - a very fast video and audio converter
105 Summary(pl.UTF-8):      FFmpeg - szybki konwerter audio/wideo
106 Name:           ffmpeg
107 Version:        4.3
108 Release:        2
109 # LGPL or GPL, chosen at configure time (GPL version is more featured)
110 # GPL: frei0r libcdio libdavs2 rubberband vidstab x264 x265 xavs xavs2 xvid
111 # v3 (allows *GPLv3 or Apache-licensed libs): gmp lensfun opencore-amr vmaf vo-*enc rkmpp
112 # GPLv3: smbclient
113 License:        GPL v3+ with LGPL v3+ parts
114 Group:          Applications/Multimedia
115 Source0:        http://ffmpeg.org/releases/%{name}-%{version}.tar.xz
116 # Source0-md5:  3adcf4f122fcc54624f5d509107d5625
117 Patch0:         %{name}-omx-libnames.patch
118 Patch1:         %{name}-atadenoise.patch
119 URL:            http://www.ffmpeg.org/
120 %{?with_decklink:BuildRequires: Blackmagic_DeckLink_SDK >= 10.9.5}
121 %{?with_openal:BuildRequires:   OpenAL-devel >= 1.1}
122 %{?with_opencl:BuildRequires:   OpenCL-devel >= 1.2}
123 %{?with_opengl:BuildRequires:   OpenGL-GLX-devel}
124 # libomxil-bellagio-devel or limoi-core-devel (just headers, library is dlopened at runtime)
125 %{?with_omx:BuildRequires:      OpenMAX-IL-devel}
126 BuildRequires:  SDL2-devel >= 2.0.1
127 BuildRequires:  SDL2-devel < 2.1.0
128 BuildRequires:  alsa-lib-devel
129 BuildRequires:  aom-devel >= 1.0.0
130 %{?with_aribb24:BuildRequires:  aribb24-devel}
131 BuildRequires:  bzip2-devel
132 BuildRequires:  celt-devel >= 0.11.0
133 %{?with_codec2:BuildRequires:   codec2-devel}
134 %{?with_dav1d:BuildRequires:    dav1d-devel >= 0.2.1}
135 %{?with_avs2:BuildRequires:     davs2-devel >= 1.6}
136 %{?with_fdk_aac:BuildRequires:  fdk-aac-devel}
137 %{?with_flite:BuildRequires:    flite-devel >= 1.4}
138 BuildRequires:  fontconfig-devel
139 BuildRequires:  freetype-devel
140 %{?with_frei0r:BuildRequires:   frei0r-devel}
141 %{?with_fribidi:BuildRequires:  fribidi-devel}
142 %{?with_gme:BuildRequires:      game-music-emu-devel}
143 %ifarch ppc
144 # require version with altivec support fixed
145 BuildRequires:  gcc >= 5:3.3.2-3
146 %endif
147 BuildRequires:  gmp-devel
148 BuildRequires:  gnutls-devel
149 BuildRequires:  jack-audio-connection-kit-devel
150 %{?with_kvazaar:BuildRequires:  kvazaar-devel >= 0.8.1}
151 %{?with_ladspa:BuildRequires:   ladspa-devel}
152 BuildRequires:  lame-libs-devel >= 3.98.3
153 %{?with_lensfun:BuildRequires:  lensfun-devel}
154 BuildRequires:  libass-devel
155 %{?with_iec61883:BuildRequires: libavc1394-devel}
156 %{?with_bs2b:BuildRequires:     libbs2b-devel}
157 BuildRequires:  libbluray-devel
158 %{?with_caca:BuildRequires:     libcaca-devel}
159 BuildRequires:  libcdio-paranoia-devel >= 0.90-2
160 %{?with_chromaprint:BuildRequires:      libchromaprint-devel}
161 %{?with_crystalhd:BuildRequires:        libcrystalhd-devel}
162 %{?with_dc1394:BuildRequires:   libdc1394-devel >= 2}
163 %{?with_libdrm:BuildRequires:   libdrm-devel}
164 %{?with_gsm:BuildRequires:      libgsm-devel}
165 %{?with_iec61883:BuildRequires: libiec61883-devel}
166 %{?with_libklvanc:BuildRequires:        libklvanc-devel}
167 %{?with_modplug:BuildRequires:  libmodplug-devel}
168 %{?with_libmysofa:BuildRequires:        libmysofa-devel >= 0.7}
169 %{?with_openmpt:BuildRequires: libopenmpt-devel >= 0.4.5}
170 %if %{with dc1394} || %{with iec61883}
171 BuildRequires:  libraw1394-devel >= 2
172 %endif
173 %{?with_librsvg:BuildRequires:  librsvg-devel >= 2}
174 BuildRequires:  librtmp-devel
175 %{?with_ssh:BuildRequires:      libssh-devel}
176 %{?with_smb:BuildRequires:      libsmbclient-devel}
177 %{?with_theora:BuildRequires:   libtheora-devel >= 1.0-0.beta3}
178 BuildRequires:  libtool >= 2:1.4d-3
179 BuildRequires:  libv4l-devel
180 %if %{with va}
181 BuildRequires:  libva-devel >= 1.0.3
182 BuildRequires:  libva-drm-devel >= 1.0.3
183 BuildRequires:  libva-x11-devel >= 1.0.3
184 %endif
185 BuildRequires:  libvdpau-devel >= 0.2
186 BuildRequires:  libvorbis-devel
187 %{?with_vpx:BuildRequires:      libvpx-devel >= 1.4.0}
188 %{?with_webp:BuildRequires:     libwebp-devel >= 0.4.0}
189 # X264_BUILD >= 118
190 %{?with_x264:BuildRequires:     libx264-devel >= 0.1.3-1.20111212_2245}
191 # X265_BUILD >= 68
192 %{?with_x265:BuildRequires:     libx265-devel >= 1.8}
193 # libxcb xcb-shm xcb-xfixes xcb-shape
194 BuildRequires:  libxcb-devel >= 1.4
195 %{?with_libxml2:BuildRequires:  libxml2-devel >= 2}
196 %{?with_lv2:BuildRequires:      lilv-devel}
197 %{?with_lv2:BuildRequires:      lv2-devel}
198 %{?with_mfx:BuildRequires:      mfx_dispatch-devel}
199 %ifarch %{ix86}
200 %ifnarch i386 i486
201 BuildRequires:  nasm
202 %endif
203 %endif
204 %{?with_ffnvcodec:BuildRequires:        nv-codec-headers >= 9.0.18.0}
205 # amrnb,amrwb
206 %{?with_amr:BuildRequires:      opencore-amr-devel}
207 %{?with_opencv:BuildRequires:   opencv-devel >= 2}
208 %{?with_openh264:BuildRequires: openh264-devel >= 1.3}
209 BuildRequires:  openjpeg2-devel >= 2.1
210 BuildRequires:  opus-devel
211 BuildRequires:  perl-Encode
212 BuildRequires:  perl-tools-pod
213 %{?with_pocketsphinx:BuildRequires:     pocketsphinx-devel > 0.8}
214 BuildRequires:  pkgconfig
215 %{?with_pulseaudio:BuildRequires:       pulseaudio-devel}
216 %{?with_rkmpp:BuildRequires:    rockchip-mpp-devel >= 1.3.7}
217 BuildRequires:  rpmbuild(macros) >= 1.470
218 %{?with_rubberband:BuildRequires:       rubberband-devel >= 1.8.1}
219 %{?with_shine:BuildRequires:    shine-devel >= 3.0.0}
220 %{?with_snappy:BuildRequires:   snappy-devel}
221 %{?with_soxr:BuildRequires:     soxr-devel}
222 BuildRequires:  speex-devel >= 1:1.2-rc1
223 %{?with_srt:BuildRequires:      srt-devel >= 1.3}
224 %{?with_tesseract:BuildRequires:        tesseract-devel}
225 %{?with_doc:BuildRequires:      tetex}
226 %{?with_doc:BuildRequires:      texi2html}
227 %{?with_doc:BuildRequires:      texinfo}
228 BuildRequires:  twolame-devel >= 0.3.10
229 %{?with_vapoursynth:BuildRequires:      vapoursynth-devel >= 42}
230 %{?with_vidstab:BuildRequires:  vid.stab-devel >= 0.98}
231 %{?with_vmaf:BuildRequires:     vmaf-devel >= 1.3.9}
232 %{?with_voamrwbenc:BuildRequires:       vo-amrwbenc-devel}
233 %{?with_wavpack:BuildRequires:  wavpack-devel}
234 %{?with_ilbc:BuildRequires:     webrtc-libilbc-devel}
235 %{?with_avs:BuildRequires:      xavs-devel}
236 %{?with_avs2:BuildRequires:     xavs2-devel >= 1.3}
237 BuildRequires:  xorg-lib-libX11-devel
238 BuildRequires:  xorg-lib-libXext-devel
239 BuildRequires:  xorg-lib-libXv-devel
240 %{?with_xvid:BuildRequires:     xvid-devel >= 1:1.1.0}
241 BuildRequires:  xz-devel
242 BuildRequires:  yasm
243 %{?with_zmq:BuildRequires:      zeromq-devel}
244 %{?with_zimg:BuildRequires:     zimg-devel >= 2.7.0}
245 BuildRequires:  zlib-devel
246 %{?with_zvbi:BuildRequires:     zvbi-devel >= 0.2.28}
247 %{?with_autoreqdep:BuildConflicts:      libpostproc}
248 # overflows maximum hash table size
249 BuildConflicts: pdksh < 5.2.14-57
250 Requires:       %{name}-libs = %{version}-%{release}
251 Suggests:       fontconfig
252 Suggests:       fonts-TTF-Roboto
253 Obsoletes:      libpostproc
254 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
255
256 %define         specflags       -fno-strict-aliasing
257
258 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
259 %define         specflags_ia32  -fomit-frame-pointer
260 # -mmmx is needed to enable <mmintrin.h> code.
261 %define         specflags_i586  -mmmx
262 %define         specflags_i686  -mmmx
263 %define         specflags_ppc   -fPIC
264
265 %description
266 FFmpeg is a complete solution to record, convert and stream audio and
267 video. It is a command line tool to convert one video file format to
268 another. It also supports grabbing and encoding in real time from a TV
269 card.
270
271 %description -l pl.UTF-8
272 FFmpeg to kompletne rozwiązanie nagrywania, konwersji i transmisji
273 strumieni dźwięku i obrazu. Jest to działające z linii poleceń
274 narzędzie do konwersji obrazu z jednego formatu do innego. Obsługuje
275 także przechwytywanie i kodowanie w czasie rzeczywistym z karty
276 telewizyjnej.
277
278 %package libs
279 Summary:        ffmpeg libraries
280 Summary(pl.UTF-8):      Biblioteki ffmpeg
281 Group:          Libraries
282 Requires:       SDL2 >= 2.0.1
283 Requires:       aom >= 1.0.0
284 Requires:       celt >= 0.11.0
285 %{?with_dav1d:Requires: dav1d >= 0.2.1}
286 %{?with_avs2:Requires:  davs2 >= 1.6}
287 %{?with_flite:Requires: flite >= 1.4}
288 %if "%(rpm -q --qf '%{V}' gnutls-devel)" >= "3.0.20"
289 # uses gnutls_certificate_set_x509_system_trust if >= 3.0.20
290 Requires:       gnutls-libs >= 3.0.20
291 %endif
292 %{?with_kvazaar:Requires:       kvazaar-libs >= 0.8.1}
293 %{?with_libmysofa:Requires:     libmysofa >= 0.7}
294 %{?with_openmpt:Requires: libopenmpt >= 0.4.5}
295 %{?with_theora:Requires:        libtheora >= 1.0-0.beta3}
296 %if %{with va}
297 Requires:       libva >= 1.0.3
298 Requires:       libva-drm >= 1.0.3
299 Requires:       libva-x11 >= 1.0.3
300 %endif
301 Requires:       libvdpau >= 0.2
302 %{?with_vpx:Requires:   libvpx >= 1.4.0}
303 %{?with_webp:Requires:  libwebp >= 0.4.0}
304 %{?with_x264:Requires:  libx264 >= 0.1.3-1.20111212_2245}
305 %{?with_x265:Requires:  libx265 >= 1.8}
306 Requires:       libxcb >= 1.4
307 Requires:       lame-libs >= 3.98.3
308 %{?with_openh264:Requires:      openh264 >= 1.3}
309 Requires:       openjpeg2 >= 2.1
310 %{?with_rkmpp:Requires: rockchip-mpp >= 1.3.7}
311 %{?with_rubberband:Requires:    rubberband-libs >= 1.8.1}
312 %{?with_shine:Requires: shine >= 3.0.0}
313 Requires:       speex >= 1:1.2-rc1
314 %{?with_srt:Requires:   srt >= 1.3}
315 Requires:       twolame-libs >= 0.3.10
316 %{?with_vapoursynth:Requires:   vapoursynth >= 42}
317 %{?with_vidstab:Requires:       vid.stab >= 0.98}
318 %{?with_vmaf:Requires:  vmaf-libs >= 1.3.9}
319 %{?with_avs2:Requires:  xavs2 >= 1.3}
320 %{?with_xvid:Requires:  xvid >= 1:1.1.0}
321 %{?with_zimg:Requires:  zimg >= 2.7.0}
322 %{?with_zvbi:Requires:  zvbi >= 0.2.28}
323
324 %description libs
325 This package contains the ffmpeg shared libraries:
326 - the codec library (libavcodec). It supports most existing encoding
327   formats (MPEG, DivX, MPEG4, AC3, DV...),
328 - demuxer library (libavformat). It supports most existing file
329   formats (AVI, MPEG, OGG, Matroska, ASF...),
330 - video postprocessing library (libpostproc).
331
332 %description libs -l pl.UTF-8
333 Ten pakiet zawiera biblioteki współdzielone ffmpeg:
334 - bibliotekę kodeków (libavcodec); obsługuje większość istniejących
335   formatów kodowania (MPEG, DivX, MPEG4, AC3, DV...),
336 - bibliotekę demuksera (libavformat); obsługuje większość istniejących
337   formatów plików (AVI, MPEG, OGG, Matroska, ASF...),
338 - bibliotekę postprocessingu (libpostproc).
339
340 %package devel
341 Summary:        ffmpeg header files
342 Summary(pl.UTF-8):      Pliki nagłówkowe ffmpeg
343 Group:          Development/Libraries
344 Requires:       %{name}-libs = %{version}-%{release}
345 # Libs.private from *.pc
346 %{?with_openal:Requires:        OpenAL-devel >= 1.1}
347 %{?with_opencl:Requires:        OpenCL-devel >= 1.2}
348 %{?with_opengl:Requires:        OpenGL-devel}
349 Requires:       SDL2-devel >= 2.0.1
350 Requires:       alsa-lib-devel
351 Requires:       aom-devel >= 1.0.0
352 %{?with_aribb24:Requires:       aribb24-devel}
353 %{?with_avs2:Requires:  davs2-devel >= 1.6}
354 Requires:       bzip2-devel
355 Requires:       celt-devel >= 0.11.0
356 %{?with_codec2:Requires:        codec2-devel}
357 %{?with_dav1d:Requires: dav1d-devel >= 0.2.1}
358 %{?with_fdk_aac:Requires:       fdk-aac-devel}
359 %{?with_flite:Requires: flite-devel >= 1.4}
360 Requires:       fontconfig-devel
361 Requires:       freetype-devel
362 %{?with_fribidi:Requires:       fribidi-devel}
363 %{?with_gme:Requires:   game-music-emu-devel}
364 Requires:       gnutls-devel
365 Requires:       jack-audio-connection-kit-devel
366 %{?with_kvazaar:Requires:       kvazaar-devel >= 0.8.1}
367 Requires:       lame-libs-devel >= 3.98.3
368 %{?with_lensfun:Requires:       lensfun-devel}
369 Requires:       libass-devel
370 %{?with_iec61883:Requires:      libavc1394-devel}
371 Requires:       libbluray-devel
372 %{?with_bs2b:Requires:  libbs2b-devel}
373 %{?with_caca:Requires:  libcaca-devel}
374 Requires:       libcdio-paranoia-devel >= 0.90-2
375 %{?with_chromaprint:Requires:   libchromaprint-devel}
376 %{?with_crystalhd:Requires:     libcrystalhd-devel}
377 %{?with_dc1394:Requires:        libdc1394-devel >= 2}
378 %{?with_libdrm:Requires:        libdrm-devel}
379 %{?with_gsm:Requires:   libgsm-devel}
380 %{?with_iec61883:Requires:      libiec61883-devel}
381 %{?with_libklvanc:Requires:     libklvanc-devel}
382 %{?with_modplug:Requires:       libmodplug-devel}
383 %{?with_libmysofa:Requires:     libmysofa-devel >= 0.7}
384 %{?with_openmpt:Requires: libopenmpt-devel >= 0.4.5}
385 %if %{with dc1394} || %{with iec61883}
386 Requires:       libraw1394-devel >= 2
387 %endif
388 %{?with_librsvg:Requires:       librsvg-devel >= 2}
389 Requires:       librtmp-devel
390 %{?with_smb:Requires:   libsmbclient-devel}
391 %{?with_ssh:Requires:   libssh-devel}
392 Requires:       libstdc++-devel
393 %{?with_theora:Requires:        libtheora-devel >= 1.0-0.beta3}
394 Requires:       libv4l-devel
395 %{?with_va:Requires:    libva-devel >= 1.0.3}
396 %{?with_va:Requires:    libva-drm-devel >= 1.0.3}
397 %{?with_va:Requires:    libva-x11-devel >= 1.0.3}
398 Requires:       libvdpau-devel >= 0.2
399 Requires:       libvorbis-devel
400 %{?with_vpx:Requires:   libvpx-devel >= 1.4.0}
401 %{?with_webp:Requires:  libwebp-devel >= 0.4.0}
402 %{?with_x264:Requires:  libx264-devel >= 0.1.3-1.20110625_2245}
403 %{?with_x265:Requires:  libx265-devel >= 1.8}
404 # libxcb xcb-shm xcb-xfixes xcb-shape
405 Requires:       libxcb-devel >= 1.4
406 %{?with_libxml2:Requires:       libxml2-devel >= 2}
407 %{?with_lv2:Requires:   lilv-devel}
408 %{?with_mfx:Requires:   mfx_dispatch-devel}
409 %{?with_amr:Requires:   opencore-amr-devel}
410 %{?with_opencv:Requires:        opencv-devel >= 2}
411 %{?with_openh264:Requires:      openh264-devel >= 1.3}
412 Requires:       openjpeg2-devel >= 2.1
413 Requires:       opus-devel
414 %{?with_pulseaudio:Requires:    pulseaudio-devel}
415 %{?with_rkmpp:Requires: rockchip-mpp-devel >= 1.3.7}
416 %{?with_rubberband:Requires:    rubberband-devel >= 1.8.1}
417 %{?with_shine:Requires: shine-devel >= 3.0.0}
418 %{?with_snappy:Requires:        snappy-devel}
419 %{?with_soxr:Requires:  soxr-devel}
420 Requires:       speex-devel >= 1:1.2-rc1
421 %{?with_srt:Requires:   srt-devel >= 1.3}
422 %{?with_tesseract:Requires:     tesseract-devel}
423 Requires:       twolame-devel >= 0.3.10
424 %{?with_vapoursynth:Requires:   vapoursynth-devel >= 42}
425 %{?with_vidstab:Requires:       vid.stab-devel >= 0.98}
426 %{?with_voamrwbenc:Requires:    vo-amrwbenc-devel}
427 %{?with_vmaf:Requires:  vmaf-devel >= 1.3.9}
428 %{?with_wavpack:Requires:       wavpack-devel}
429 %{?with_ilbc:Requires:  webrtc-libilbc-devel}
430 %{?with_avs:Requires:   xavs-devel}
431 %{?with_avs2:Requires:  xavs2-devel >= 1.3}
432 Requires:       xorg-lib-libX11-devel
433 Requires:       xorg-lib-libXext-devel
434 Requires:       xorg-lib-libXv-devel
435 %{?with_xvid:Requires:  xvid-devel >= 1:1.1.0}
436 Requires:       xz-devel
437 %{?with_zmq:Requires:   zeromq-devel}
438 %{?with_zimg:Requires:  zimg-devel >= 2.7.0}
439 Requires:       zlib-devel
440 %{?with_zvbi:Requires:  zvbi-devel >= 0.2.28}
441 Obsoletes:      libpostproc-devel
442
443 %description devel
444 ffmpeg header files.
445
446 %description devel -l pl.UTF-8
447 Pliki nagłówkowe ffmpeg.
448
449 %package static
450 Summary:        ffmpeg static libraries
451 Summary(pl.UTF-8):      Statyczne biblioteki ffmpeg
452 Group:          Development/Libraries
453 Requires:       %{name}-devel = %{version}-%{release}
454
455 %description static
456 ffmpeg static libraries (libavcodec and libavformat).
457
458 %description static -l pl.UTF-8
459 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
460
461 %package ffplay
462 Summary:        FFplay - SDL-based media player
463 Summary(pl.UTF-8):      FFplay - odtwarzacz mediów oparty na SDL
464 Group:          Applications/Multimedia
465 Requires:       %{name}-libs = %{version}-%{release}
466
467 %description ffplay
468 FFplay is a very simple and portable media player using the FFmpeg
469 libraries and the SDL library. It is mostly used as a test bench for
470 the various APIs of FFmpeg.
471
472 %description ffplay -l pl.UTF-8
473 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
474 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
475 testowania różnych API FFmpeg.
476
477 %package doc
478 Summary:        FFmpeg documentation in HTML format
479 Summary(pl.UTF-8):      Dokumentacja pakietu FFmpeg w formacie HTML
480 Group:          Documentation
481 %if "%{_rpmversion}" >= "5"
482 BuildArch:      noarch
483 %endif
484
485 %description doc
486 FFmpeg documentation in HTML format.
487
488 %description doc -l pl.UTF-8
489 Dokumentacja pakietu FFmpeg w formacie HTML.
490
491 %prep
492 %setup -q
493 %patch0 -p1
494 %patch1 -p1
495
496 # package the grep result for mplayer, the result formatted as ./mplayer/configure
497 cat <<EOF > ffmpeg-avconfig
498 #! /bin/sh
499 libavdecoders_all="$(sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]')"
500 libavencoders_all="$(sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]')"
501 libavparsers_all="$(sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]')"
502 libavbsfs_all="$(sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]')"
503 libavdemuxers_all="$(sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]')"
504 libavmuxers_all="$(sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]')"
505 libavprotocols_all="$(sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]')"
506 libavhwaccels_all="$(sed -n 's/^[^#]*HWACCEL.*(.*, *\(.*\)).*/\1_hwaccel/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]')"
507 libavfilters_all="$(sed -n 's/^[^#]*FILTER.*(.*, *\(.*\),.*).*/\1_filter/p' libavfilter/allfilters.c | tr '[a-z]' '[A-Z]')"
508 EOF
509 cat <<'EOF' >> ffmpeg-avconfig
510
511 case "$1" in
512 --decoders)
513         echo $libavdecoders_all
514         ;;
515 --encoders)
516         echo $libavencoders_all
517         ;;
518 --parsers)
519         echo $libavparsers_all
520         ;;
521 --bsfs)
522         echo $libavbsfs_all
523         ;;
524 --demuxers)
525         echo $libavdemuxers_all
526         ;;
527 --muxers)
528         echo $libavmuxers_all
529         ;;
530 --protocols)
531         echo $libavprotocols_all
532         ;;
533 --hwaccels)
534         echo $libavhwaccels_all
535         ;;
536 --filters)
537         echo $libavfilters_all
538         ;;
539 *)
540         cat <<USAGE
541 Usage: $0 [OPTION]
542 Options:
543   --decoders
544   --encoders
545   --parsers
546   --bsfs
547   --demuxers
548   --muxers
549   --protocols
550   --hwaccels
551   --filters
552 USAGE
553         exit 1;;
554 esac
555
556 exit 0
557 EOF
558
559 %build
560 # notes:
561 # - it's not autoconf configure
562 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
563 ./configure \
564         --arch=%{_target_base_arch} \
565         --prefix=%{_prefix} \
566         --libdir=%{_libdir} \
567         --shlibdir=%{_libdir} \
568         --mandir=%{_mandir} \
569         --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}%{?with_decklink: -I/usr/include/decklink}" \
570         --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
571         --cc="%{__cc}" \
572         --disable-debug \
573         --disable-optimizations \
574         --disable-stripping \
575         %{!?with_doc:--disable-doc} \
576         --enable-avfilter \
577         --enable-avresample \
578         %{?with_chromaprint:--enable-chromaprint} \
579         %{?with_cudasdk:--enable-cuda-nvcc} \
580         %{?with_decklink:--enable-decklink} \
581         %{!?with_ffnvcodec:--disable-ffnvcodec} \
582         --enable-gnutls \
583         --enable-gpl \
584         --enable-version3 \
585         %{?with_frei0r:--enable-frei0r} \
586         %{?with_ladspa:--enable-ladspa} \
587         --enable-libaom \
588         %{?with_aribb24:--enable-libaribb24} \
589         --enable-libass \
590         --enable-libbluray \
591         %{?with_bs2b:--enable-libbs2b} \
592         %{?with_caca:--enable-libcaca} \
593         --enable-libcelt \
594         --enable-libcdio \
595         %{?with_codec2:--enable-libcodec2} \
596         %{?with_dav1d:--enable-libdav1d} \
597         %{?with_avs2:--enable-libdavs2} \
598         %{?with_dc1394:--enable-libdc1394} \
599         %{?with_libdrm:--enable-libdrm} \
600         %{?with_flite:--enable-libflite} \
601         --enable-libfontconfig \
602         --enable-libfreetype \
603         %{?with_fribidi:--enable-libfribidi} \
604         %{?with_gme:--enable-libgme} \
605         %{?with_gsm:--enable-libgsm} \
606         %{?with_iec61883:--enable-libiec61883} \
607         %{?with_ilbc:--enable-libilbc} \
608         --enable-libjack \
609         %{?with_kvazaar:--enable-libkvazaar} \
610         %{?with_libklvanc:--enable-libklvanc} \
611         %{?with_lensfun:--enable-liblensfun} \
612         %{?with_mfx:--enable-libmfx} \
613         %{?with_modplug:--enable-libmodplug} \
614         --enable-libmp3lame \
615         %{?with_libmysofa:--enable-libmysofa} \
616         %{?with_amr:--enable-libopencore-amrnb} \
617         %{?with_amr:--enable-libopencore-amrwb} \
618         %{?with_opencv:--enable-libopencv} \
619         %{?with_openh264:--enable-libopenh264} \
620         --enable-libopenjpeg \
621         %{?with_openmpt:--enable-libopenmpt} \
622         --enable-libopus \
623         %{?with_pulseaudio:--enable-libpulse} \
624         %{?with_librsvg:--enable-librsvg} \
625         --enable-librtmp \
626         %{?with_srt:--enable-libsrt} \
627         %{?with_libxml2:--enable-libxml2} \
628         %{?with_rubberband:--enable-librubberband} \
629         %{?with_shine:--enable-libshine} \
630         %{?with_smb:--enable-libsmbclient} \
631         %{?with_snappy:--enable-libsnappy} \
632         %{?with_soxr:--enable-libsoxr} \
633         --enable-libspeex \
634         %{?with_ssh:--enable-libssh} \
635         %{?with_tesseract:--enable-libtesseract} \
636         %{?with_theora:--enable-libtheora} \
637         --enable-libtwolame \
638         --enable-libv4l2 \
639         %{?with_vidstab:--enable-libvidstab} \
640         %{?with_vmaf:--enable-libvmaf} \
641         %{?with_voamrwbenc:--enable-libvo-amrwbenc} \
642         --enable-libvorbis \
643         %{?with_vpx:--enable-libvpx} \
644         %{?with_wavpack:--enable-libwavpack} \
645         %{?with_webp:--enable-libwebp} \
646         %{?with_x264:--enable-libx264} \
647         %{?with_x265:--enable-libx265} \
648         %{?with_avs:--enable-libxavs} \
649         %{?with_avs2:--enable-libxavs2} \
650         --enable-libxcb \
651         %{?with_xvid:--enable-libxvid} \
652         %{?with_zimg:--enable-libzimg} \
653         %{?with_zmq:--enable-libzmq} \
654         %{?with_zvbi:--enable-libzvbi} \
655         %{?with_lv2:--enable-lv2} \
656         %{?with_omx:--enable-omx} \
657         %{?with_openal:--enable-openal} \
658         %{?with_opencl:--enable-opencl} \
659         %{?with_opengl:--enable-opengl} \
660         %{?with_pocketsphinx:--enable-pocketsphinx} \
661         --enable-postproc \
662         --enable-pthreads \
663         %{?with_rkmpp:--enable-rkmpp} \
664         --enable-shared \
665         --enable-swscale \
666         %{!?with_va:--disable-vaapi} \
667         %{?with_vapoursynth:--enable-vapoursynth} \
668 %ifnarch %{ix86} %{x8664}
669         --disable-mmx \
670 %endif
671 %ifarch i386 i486
672         --disable-mmx \
673 %endif
674 %ifarch x32
675         --disable-asm \
676 %endif
677 %if %{with nonfree}
678         --enable-nonfree \
679         %{?with_fdk_aac:--enable-libfdk-aac} \
680         %{?with_npp:--enable-libnpp} \
681 %endif
682         --enable-runtime-cpudetect
683
684 %{__make} \
685         V=1
686
687 # CC_O to add -c to commandline. makefile should be patched
688 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
689
690 %{?with_tests:%{__make} check V=1}
691
692 %install
693 rm -rf $RPM_BUILD_ROOT
694 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
695         $RPM_BUILD_ROOT%{_includedir}/ffmpeg
696
697 %{__make} install install-headers \
698         DESTDIR=$RPM_BUILD_ROOT \
699         V=1
700
701 # install nonstandard, non-public headers manually
702 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
703 for a in libavutil/*/{asm,bswap}.h; do
704         install -Dp $a $RPM_BUILD_ROOT%{_includedir}/$a
705 done
706 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
707
708 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
709
710 # install as ffmpeg-avconfig to avoid with possible programs looking for
711 # ffmpeg-config and expecting --libs output from it which is not implemented
712 # simple to do (by querying pkgconfig), but why?
713 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
714
715 # packaged as %doc in -doc
716 %if %{with doc}
717 %{__rm} $RPM_BUILD_ROOT%{_docdir}/ffmpeg/*.html
718 %endif
719
720 install -d $RPM_BUILD_ROOT%{_examplesdir}
721 %{__mv} $RPM_BUILD_ROOT%{_datadir}/ffmpeg/examples $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
722
723 %clean
724 rm -rf $RPM_BUILD_ROOT
725
726 %post   libs -p /sbin/ldconfig
727 %postun libs -p /sbin/ldconfig
728
729 %files
730 %defattr(644,root,root,755)
731 %doc CREDITS LICENSE.md MAINTAINERS README.md RELEASE_NOTES doc/APIchanges
732 %attr(755,root,root) %{_bindir}/ffmpeg
733 %attr(755,root,root) %{_bindir}/ffprobe
734 %attr(755,root,root) %{_bindir}/qt-faststart
735 %dir %{_datadir}/ffmpeg
736 %{_datadir}/ffmpeg/*.ffpreset
737 %{_datadir}/ffmpeg/ffprobe.xsd
738 %if %{with doc}
739 %{_mandir}/man1/ffmpeg.1*
740 %{_mandir}/man1/ffmpeg-all.1*
741 %{_mandir}/man1/ffmpeg-bitstream-filters.1*
742 %{_mandir}/man1/ffmpeg-codecs.1*
743 %{_mandir}/man1/ffmpeg-devices.1*
744 %{_mandir}/man1/ffmpeg-filters.1*
745 %{_mandir}/man1/ffmpeg-formats.1*
746 %{_mandir}/man1/ffmpeg-protocols.1*
747 %{_mandir}/man1/ffmpeg-resampler.1*
748 %{_mandir}/man1/ffmpeg-scaler.1*
749 %{_mandir}/man1/ffmpeg-utils.1*
750 %{_mandir}/man1/ffprobe.1*
751 %{_mandir}/man1/ffprobe-all.1*
752 %endif
753
754 %files libs
755 %defattr(644,root,root,755)
756 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
757 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.58
758 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
759 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.58
760 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
761 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.7
762 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
763 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.58
764 %attr(755,root,root) %{_libdir}/libavresample.so.*.*.*
765 %attr(755,root,root) %ghost %{_libdir}/libavresample.so.4
766 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
767 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.56
768 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
769 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.55
770 %attr(755,root,root) %{_libdir}/libswresample.so.*.*.*
771 %attr(755,root,root) %ghost %{_libdir}/libswresample.so.3
772 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
773 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.5
774
775 %files devel
776 %defattr(644,root,root,755)
777 %doc doc/optimization.txt
778 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
779 %attr(755,root,root) %{_libdir}/libavcodec.so
780 %attr(755,root,root) %{_libdir}/libavdevice.so
781 %attr(755,root,root) %{_libdir}/libavfilter.so
782 %attr(755,root,root) %{_libdir}/libavformat.so
783 %attr(755,root,root) %{_libdir}/libavresample.so
784 %attr(755,root,root) %{_libdir}/libavutil.so
785 %attr(755,root,root) %{_libdir}/libpostproc.so
786 %attr(755,root,root) %{_libdir}/libswresample.so
787 %attr(755,root,root) %{_libdir}/libswscale.so
788 %{_includedir}/ffmpeg
789 %{_includedir}/libavcodec
790 %{_includedir}/libavdevice
791 %{_includedir}/libavfilter
792 %{_includedir}/libavformat
793 %{_includedir}/libavresample
794 %{_includedir}/libavutil
795 %{_includedir}/libpostproc
796 %{_includedir}/libswresample
797 %{_includedir}/libswscale
798 %{_pkgconfigdir}/libavcodec.pc
799 %{_pkgconfigdir}/libavdevice.pc
800 %{_pkgconfigdir}/libavfilter.pc
801 %{_pkgconfigdir}/libavformat.pc
802 %{_pkgconfigdir}/libavresample.pc
803 %{_pkgconfigdir}/libavutil.pc
804 %{_pkgconfigdir}/libpostproc.pc
805 %{_pkgconfigdir}/libswresample.pc
806 %{_pkgconfigdir}/libswscale.pc
807 %if %{with doc}
808 %{_mandir}/man3/libavcodec.3*
809 %{_mandir}/man3/libavdevice.3*
810 %{_mandir}/man3/libavfilter.3*
811 %{_mandir}/man3/libavformat.3*
812 %{_mandir}/man3/libavutil.3*
813 %{_mandir}/man3/libswresample.3*
814 %{_mandir}/man3/libswscale.3*
815 %endif
816 %{_examplesdir}/%{name}-%{version}
817
818 %files static
819 %defattr(644,root,root,755)
820 %{_libdir}/libavcodec.a
821 %{_libdir}/libavdevice.a
822 %{_libdir}/libavfilter.a
823 %{_libdir}/libavformat.a
824 %{_libdir}/libavresample.a
825 %{_libdir}/libavutil.a
826 %{_libdir}/libpostproc.a
827 %{_libdir}/libswresample.a
828 %{_libdir}/libswscale.a
829
830 %files ffplay
831 %defattr(644,root,root,755)
832 %attr(755,root,root) %{_bindir}/ffplay
833 %if %{with doc}
834 %{_mandir}/man1/ffplay.1*
835 %{_mandir}/man1/ffplay-all.1*
836 %endif
837
838 %if %{with doc}
839 %files doc
840 %defattr(644,root,root,755)
841 %doc doc/*.html
842 %endif
This page took 0.097672 seconds and 3 git commands to generate.