blob: 833f8916d3f93d4ccb2031c0e52dcb46508f464b [file] [log] [blame]
Sébastien Blin6c433a02023-11-10 14:12:09 -05001FFMPEG_HASH := 6.0.1
2FFMPEG_URL := https://ffmpeg.org/releases/ffmpeg-$(FFMPEG_HASH).tar.xz
Edric Milarete94f9f72015-03-12 17:00:51 -04003
philippegorleyc8a2c702017-06-07 11:41:23 -04004PKGS+=ffmpeg
Philippe Gorley921146f2016-06-22 17:16:29 -04005
agsantoscc8fb022021-11-16 09:23:04 -05006ifndef HAVE_LINUX
philippegorley8a1d9e22018-08-08 15:23:11 -04007ifeq ($(call need_pkg,"libavutil >= 55.75.100 libavcodec >= 57.106.101 libavformat >= 57.82.100 libavdevice >= 57.8.101 libavfilter >= 6.105.100 libswscale >= 4.7.103 libswresample >= 2.9.100"),)
Adrien Beraud1b615372017-05-25 17:14:12 +02008PKGS_FOUND += ffmpeg
9endif
agsantoscc8fb022021-11-16 09:23:04 -050010endif
Adrien Beraud1b615372017-05-25 17:14:12 +020011
Adrien Bérauda76800d2019-01-02 21:51:12 -050012DEPS_ffmpeg = iconv zlib vpx opus speex x264
Adrien Beraud1b615372017-05-25 17:14:12 +020013
Edric Milarete94f9f72015-03-12 17:00:51 -040014FFMPEGCONF = \
Adrien Beraud1b615372017-05-25 17:14:12 +020015 --cc="$(CC)" \
16 --pkg-config="$(PKG_CONFIG)"
Edric Milarete94f9f72015-03-12 17:00:51 -040017
18#disable everything
19FFMPEGCONF += \
Adrien Beraud1b615372017-05-25 17:14:12 +020020 --disable-everything \
21 --enable-zlib \
22 --enable-gpl \
23 --enable-swscale \
philippegorley64322312017-12-15 14:54:20 -050024 --enable-bsfs \
philippegorleyab4861f2018-06-14 10:03:52 -040025 --disable-filters \
Adrien Béraudf1c74ed2018-06-01 15:51:18 -040026 --disable-programs \
27 --disable-postproc
Edric Milarete94f9f72015-03-12 17:00:51 -040028
Sébastien Blinc5c3afa2023-11-09 14:58:01 -050029ifdef HAVE_LINUX
30ifndef HAVE_ANDROID
31ifndef DISABLE_PIPEWIRE
32FFMPEGCONF += --enable-libpipewire \
33 --enable-filter=pipewiregrab \
34 --enable-indev=lavfi \
35 --enable-decoder=wrapped_avframe
36endif
37endif
38endif
39
Adrien Béraud6b464852019-06-29 20:55:24 -040040FFMPEGCONF += \
41 --disable-protocols \
42 --enable-protocol=crypto \
43 --enable-protocol=file \
44 --enable-protocol=rtp \
45 --enable-protocol=srtp \
46 --enable-protocol=tcp \
47 --enable-protocol=udp \
48 --enable-protocol=unix \
49 --enable-protocol=pipe
50
Edric Milarete94f9f72015-03-12 17:00:51 -040051#enable muxers/demuxers
52FFMPEGCONF += \
Adrien Béraud6b464852019-06-29 20:55:24 -040053 --disable-demuxers \
54 --disable-muxers \
55 --enable-muxer=rtp \
56 --enable-muxer=g722 \
Adrien Bérauda7c04822022-06-23 11:53:47 -040057 --enable-muxer=g723_1 \
58 --enable-muxer=g726 \
59 --enable-muxer=g726le \
Adrien Béraud6b464852019-06-29 20:55:24 -040060 --enable-muxer=h263 \
61 --enable-muxer=h264 \
62 --enable-muxer=hevc \
Sébastien Blin0264efe2021-12-03 09:59:24 -050063 --enable-muxer=matroska \
Adrien Béraud6b464852019-06-29 20:55:24 -040064 --enable-muxer=webm \
65 --enable-muxer=ogg \
66 --enable-muxer=pcm_s16be \
67 --enable-muxer=pcm_s16le \
Adrien Beraudbfa5a932023-03-05 11:05:25 -050068 --enable-muxer=wav \
Adrien Béraud6b464852019-06-29 20:55:24 -040069 --enable-demuxer=rtp \
70 --enable-demuxer=mjpeg \
71 --enable-demuxer=mjpeg_2000 \
72 --enable-demuxer=mpegvideo \
73 --enable-demuxer=gif \
74 --enable-demuxer=image_jpeg_pipe \
75 --enable-demuxer=image_png_pipe \
76 --enable-demuxer=image_webp_pipe \
77 --enable-demuxer=matroska \
78 --enable-demuxer=m4v \
79 --enable-demuxer=mp3 \
80 --enable-demuxer=ogg \
81 --enable-demuxer=flac \
82 --enable-demuxer=wav \
83 --enable-demuxer=ac3 \
84 --enable-demuxer=g722 \
Adrien Bérauda7c04822022-06-23 11:53:47 -040085 --enable-demuxer=g723_1 \
86 --enable-demuxer=g726 \
87 --enable-demuxer=g726le \
Adrien Béraud6b464852019-06-29 20:55:24 -040088 --enable-demuxer=pcm_mulaw \
89 --enable-demuxer=pcm_alaw \
90 --enable-demuxer=pcm_s16be \
91 --enable-demuxer=pcm_s16le \
92 --enable-demuxer=h263 \
93 --enable-demuxer=h264 \
94 --enable-demuxer=hevc
Edric Milarete94f9f72015-03-12 17:00:51 -040095
96#enable parsers
97FFMPEGCONF += \
Adrien Beraud1b615372017-05-25 17:14:12 +020098 --enable-parser=h263 \
99 --enable-parser=h264 \
Pierre Lespagnol1b6ab3d2019-09-19 11:14:35 -0400100 --enable-parser=hevc \
Adrien Beraud1b615372017-05-25 17:14:12 +0200101 --enable-parser=mpeg4video \
philippegorley2f547072018-06-14 10:05:27 -0400102 --enable-parser=vp8 \
103 --enable-parser=vp9 \
104 --enable-parser=opus
Edric Milarete94f9f72015-03-12 17:00:51 -0400105
106#encoders/decoders
107FFMPEGCONF += \
Adrien Beraud1b615372017-05-25 17:14:12 +0200108 --enable-encoder=adpcm_g722 \
109 --enable-decoder=adpcm_g722 \
Adrien Bérauda7c04822022-06-23 11:53:47 -0400110 --enable-encoder=adpcm_g726 \
111 --enable-decoder=adpcm_g726 \
112 --enable-encoder=adpcm_g726le \
113 --enable-decoder=adpcm_g726le \
114 --enable-decoder=g729 \
115 --enable-encoder=g723_1 \
116 --enable-decoder=g723_1 \
Adrien Beraud1b615372017-05-25 17:14:12 +0200117 --enable-encoder=rawvideo \
118 --enable-decoder=rawvideo \
119 --enable-encoder=libx264 \
120 --enable-decoder=h264 \
121 --enable-encoder=pcm_alaw \
122 --enable-decoder=pcm_alaw \
123 --enable-encoder=pcm_mulaw \
124 --enable-decoder=pcm_mulaw \
125 --enable-encoder=mpeg4 \
126 --enable-decoder=mpeg4 \
127 --enable-encoder=libvpx_vp8 \
128 --enable-decoder=vp8 \
philippegorley2f547072018-06-14 10:05:27 -0400129 --enable-decoder=vp9 \
Adrien Beraud1b615372017-05-25 17:14:12 +0200130 --enable-encoder=h263 \
131 --enable-encoder=h263p \
132 --enable-decoder=h263 \
133 --enable-encoder=mjpeg \
134 --enable-decoder=mjpeg \
135 --enable-decoder=mjpegb \
136 --enable-libspeex \
137 --enable-libopus \
138 --enable-libvpx \
Adrien Bérauda76800d2019-01-02 21:51:12 -0500139 --enable-libx264 \
Adrien Beraud1b615372017-05-25 17:14:12 +0200140 --enable-encoder=libspeex \
141 --enable-decoder=libspeex \
142 --enable-encoder=libopus \
143 --enable-decoder=libopus
Edric Milarete94f9f72015-03-12 17:00:51 -0400144
philippegorley6d57b0c2018-08-03 16:54:43 -0400145# decoders for ringtones and audio streaming
146FFMPEGCONF += \
147 --enable-decoder=flac \
148 --enable-decoder=vorbis \
philippegorley005c6ff2018-10-25 13:28:21 -0400149 --enable-decoder=aac \
150 --enable-decoder=ac3 \
151 --enable-decoder=eac3 \
152 --enable-decoder=mp3 \
philippegorley6d57b0c2018-08-03 16:54:43 -0400153 --enable-decoder=pcm_u24le \
philippegorley6d57b0c2018-08-03 16:54:43 -0400154 --enable-decoder=pcm_u32le \
155 --enable-decoder=pcm_u8 \
156 --enable-decoder=pcm_f16le \
philippegorley6d57b0c2018-08-03 16:54:43 -0400157 --enable-decoder=pcm_f32le \
philippegorley6d57b0c2018-08-03 16:54:43 -0400158 --enable-decoder=pcm_f64le \
philippegorley6d57b0c2018-08-03 16:54:43 -0400159 --enable-decoder=pcm_s16le \
philippegorley6d57b0c2018-08-03 16:54:43 -0400160 --enable-decoder=pcm_s24le \
philippegorley6d57b0c2018-08-03 16:54:43 -0400161 --enable-decoder=pcm_s32le \
philippegorley6d57b0c2018-08-03 16:54:43 -0400162 --enable-decoder=pcm_s64le \
Adrien Beraudbfa5a932023-03-05 11:05:25 -0500163 --enable-decoder=pcm_u16le \
164 --enable-encoder=pcm_u8 \
165 --enable-encoder=pcm_f32le \
166 --enable-encoder=pcm_f64le \
167 --enable-encoder=pcm_s16le \
168 --enable-encoder=pcm_s32le \
169 --enable-encoder=pcm_s64le
philippegorley6d57b0c2018-08-03 16:54:43 -0400170
Eloi BAILc07bb6b2015-05-04 11:57:36 -0400171#encoders/decoders for images
172FFMPEGCONF += \
Adrien Beraud1b615372017-05-25 17:14:12 +0200173 --enable-encoder=gif \
174 --enable-decoder=gif \
175 --enable-encoder=jpegls \
176 --enable-decoder=jpegls \
177 --enable-encoder=ljpeg \
178 --enable-decoder=jpeg2000 \
179 --enable-encoder=png \
180 --enable-decoder=png \
181 --enable-encoder=bmp \
182 --enable-decoder=bmp \
183 --enable-encoder=tiff \
184 --enable-decoder=tiff
Eloi BAILc07bb6b2015-05-04 11:57:36 -0400185
philippegorleyab4861f2018-06-14 10:03:52 -0400186#filters
187FFMPEGCONF += \
188 --enable-filter=scale \
189 --enable-filter=overlay \
190 --enable-filter=amix \
191 --enable-filter=amerge \
192 --enable-filter=aresample \
193 --enable-filter=format \
194 --enable-filter=aformat \
Adrien Béraud3df2d8a2019-03-10 22:48:11 -0400195 --enable-filter=fps \
Adrien Béraud6d2de6c2019-03-26 13:14:23 -0400196 --enable-filter=transpose \
197 --enable-filter=pad
philippegorleyab4861f2018-06-14 10:03:52 -0400198
Kateryna Kostiuk635055a2023-12-06 11:03:29 -0500199#plugins
200
Kateryna Kostiuk635055a2023-12-06 11:03:29 -0500201ifdef __DEBUG__
202DEPS_ffmpeg += rav1e
203DEPS_ffmpeg += mp3lame
204endif
205
206# decoders for ringtones and audio streaming
207
Kateryna Kostiuk7494bd72023-12-05 20:20:07 -0500208FFMPEGCONF += \
Kateryna Kostiuk635055a2023-12-06 11:03:29 -0500209 --enable-decoder=pcm_s16be \
210 --enable-decoder=pcm_s16be_planar \
211 --enable-decoder=pcm_s16le_planar \
212 --enable-decoder=pcm_s24be \
213 --enable-decoder=pcm_s24le_planar \
214 --enable-decoder=pcm_s32be \
215 --enable-decoder=pcm_s32le_planar \
216 --enable-decoder=pcm_s64be \
217 --enable-decoder=pcm_s8 \
218 --enable-decoder=pcm_s8_planar \
219 --enable-decoder=pcm_u16be
220
221ifdef __DEBUG__
222FFMPEGCONF += \
223 --enable-libmp3lame \
224 --enable-encoder=libmp3lame \
225 --enable-muxer=mp3
226endif
227
228#filters
229FFMPEGCONF += \
230 --enable-filter=afir \
231 --enable-filter=split \
Kateryna Kostiuk7494bd72023-12-05 20:20:07 -0500232 --enable-filter=drawbox \
233 --enable-filter=drawtext \
Kateryna Kostiuk7494bd72023-12-05 20:20:07 -0500234 --enable-filter=rotate \
235 --enable-filter=loop \
236 --enable-filter=setpts \
Kateryna Kostiuk635055a2023-12-06 11:03:29 -0500237 --enable-filter=movie \
238 --enable-filter=alphamerge \
239 --enable-filter=boxblur \
240 --enable-filter=lut \
241 --enable-filter=negate \
242 --enable-filter=colorkey \
243 --enable-filter=transpose
244
245ifdef WITH_FREETYPE
246FFMPEGCONF += --enable-libfreetype
Xavier Jouslin de Noray225822e2024-03-25 07:29:50 -0400247DEPS_ffmpeg += freetype
Kateryna Kostiuk7494bd72023-12-05 20:20:07 -0500248endif
249
Adrien Beraud1b615372017-05-25 17:14:12 +0200250#platform specific options
Alexandre Lisiond0cb3372016-05-11 14:33:19 -0400251
Edric Milaret20d7b9b2016-06-07 13:00:19 -0400252ifdef HAVE_WIN32
Edric Milarete94f9f72015-03-12 17:00:51 -0400253FFMPEGCONF += \
254 --enable-indev=dshow \
Edric Milaret66487352015-06-03 12:49:26 -0400255 --enable-indev=gdigrab \
Edric Milarete94f9f72015-03-12 17:00:51 -0400256 --enable-dxva2
Edric Milaret20d7b9b2016-06-07 13:00:19 -0400257endif
Edric Milarete94f9f72015-03-12 17:00:51 -0400258
Philippe Gorley921146f2016-06-22 17:16:29 -0400259ifdef HAVE_LINUX
Adrien Beraud1b615372017-05-25 17:14:12 +0200260FFMPEGCONF += --enable-pic
Adrien Beraud1b615372017-05-25 17:14:12 +0200261ifdef HAVE_ANDROID
262# Android Linux
Philippe Gorley921146f2016-06-22 17:16:29 -0400263FFMPEGCONF += \
Adrien Beraud1b615372017-05-25 17:14:12 +0200264 --target-os=android \
philippegorley621198d2017-10-23 10:33:58 -0400265 --enable-jni \
Adrien Beraud1b615372017-05-25 17:14:12 +0200266 --enable-mediacodec \
Adrien Béraudcd2a2812022-06-15 16:10:22 -0400267 --disable-vulkan \
Adrien Beraud1b615372017-05-25 17:14:12 +0200268 --enable-decoder=vp8_mediacodec \
philippegorley14cbbf62017-07-31 14:16:55 -0400269 --enable-decoder=h264_mediacodec \
Pierre Lespagnol1b6ab3d2019-09-19 11:14:35 -0400270 --enable-decoder=mpeg4_mediacodec \
Adrien Bérauda226c542020-09-23 12:16:18 -0400271 --enable-decoder=hevc_mediacodec \
272 --enable-cross-compile \
273 --ranlib=$(RANLIB) \
274 --strip=$(STRIP) \
275 --cc=$(CC) \
276 --cxx=$(CXX) \
277 --ld=$(CC) \
278 --ar=$(AR)
Adrien Beraud1b615372017-05-25 17:14:12 +0200279# ASM not working on Android x86 https://trac.ffmpeg.org/ticket/4928
280ifeq ($(ARCH),i386)
281FFMPEGCONF += --disable-asm
282endif
Adrien Béraud657692a2017-07-14 09:47:22 -0400283ifeq ($(ARCH),x86_64)
284FFMPEGCONF += --disable-asm
285endif
Adrien Beraud1b615372017-05-25 17:14:12 +0200286else
287# Desktop Linux
Adrien Béraudac6044f2019-03-11 00:14:55 -0400288DEPS_ffmpeg += ffnvcodec
Adrien Beraud1b615372017-05-25 17:14:12 +0200289FFMPEGCONF += \
290 --target-os=linux \
291 --enable-indev=v4l2 \
292 --enable-indev=xcbgrab \
philippegorley45faaa22016-11-08 10:23:19 -0500293 --enable-vdpau \
294 --enable-hwaccel=h264_vdpau \
295 --enable-hwaccel=mpeg4_vdpau \
Philippe Gorley921146f2016-06-22 17:16:29 -0400296 --enable-vaapi \
297 --enable-hwaccel=h264_vaapi \
298 --enable-hwaccel=mpeg4_vaapi \
philippegorley2716f7f2018-06-18 16:09:59 -0400299 --enable-hwaccel=h263_vaapi \
300 --enable-hwaccel=vp8_vaapi \
philippegorley12932732019-01-30 16:09:03 -0500301 --enable-hwaccel=mjpeg_vaapi \
Pierre Lespagnol1b6ab3d2019-09-19 11:14:35 -0400302 --enable-hwaccel=hevc_vaapi \
philippegorley12932732019-01-30 16:09:03 -0500303 --enable-encoder=h264_vaapi \
304 --enable-encoder=vp8_vaapi \
Pierre Lespagnol1b6ab3d2019-09-19 11:14:35 -0400305 --enable-encoder=mjpeg_vaapi \
306 --enable-encoder=hevc_vaapi
Fredy P7a731452019-12-09 10:53:14 -0500307# ffnvcodec is not supported on ARM then we enable it here for i386 and x86_64
Fredy P32166622020-01-15 10:33:23 -0500308ifeq ($(ARCH),$(filter $(ARCH),i386 x86_64))
Fredy P7a731452019-12-09 10:53:14 -0500309FFMPEGCONF += --enable-cuvid \
310 --enable-ffnvcodec \
311 --enable-nvdec \
312 --enable-nvenc \
313 --enable-hwaccel=h264_nvdec \
314 --enable-hwaccel=hevc_nvdec \
315 --enable-hwaccel=vp8_nvdec \
316 --enable-hwaccel=mjpeg_nvdec \
317 --enable-encoder=h264_nvenc \
318 --enable-encoder=hevc_nvenc
319endif
320# End Desktop Linux:
321endif
322# End HAVE_LINUX:
philippegorley45faaa22016-11-08 10:23:19 -0500323endif
Philippe Gorley921146f2016-06-22 17:16:29 -0400324
325ifdef HAVE_MACOSX
326FFMPEGCONF += \
philippegorley64322312017-12-15 14:54:20 -0500327 --enable-avfoundation \
philippegorley14084832017-09-25 14:35:17 -0400328 --enable-indev=avfoundation \
philippegorleybd021132017-05-16 14:22:31 -0400329 --enable-videotoolbox \
330 --enable-hwaccel=h263_videotoolbox \
331 --enable-hwaccel=h264_videotoolbox \
Kateryna Kostiuk24a2e192018-05-30 14:40:19 -0400332 --enable-hwaccel=mpeg4_videotoolbox \
Pierre Lespagnol1b6ab3d2019-09-19 11:14:35 -0400333 --enable-hwaccel=hevc_videotoolbox \
philippegorley12932732019-01-30 16:09:03 -0500334 --enable-encoder=h264_videotoolbox \
Pierre Lespagnol1b6ab3d2019-09-19 11:14:35 -0400335 --enable-encoder=hevc_videotoolbox \
Kateryna Kostiuk24a2e192018-05-30 14:40:19 -0400336 --disable-securetransport
Kateryna Kostiuk2c078792022-10-12 14:54:18 -0400337ifdef HAVE_CROSS_COMPILE
338FFMPEGCONF += --enable-cross-compile
339endif
Philippe Gorley921146f2016-06-22 17:16:29 -0400340endif
Edric Milarete94f9f72015-03-12 17:00:51 -0400341
Edric Milaret20d7b9b2016-06-07 13:00:19 -0400342ifdef HAVE_IOS
343FFMPEGCONF += \
Kateryna Kostiukcbe39fc2019-04-08 17:16:16 -0400344 --enable-videotoolbox \
345 --enable-hwaccel=h263_videotoolbox \
346 --enable-hwaccel=h264_videotoolbox \
347 --enable-hwaccel=mpeg4_videotoolbox \
Pierre Lespagnol1b6ab3d2019-09-19 11:14:35 -0400348 --enable-hwaccel=hevc_videotoolbox \
Kateryna Kostiukcbe39fc2019-04-08 17:16:16 -0400349 --enable-encoder=h264_videotoolbox \
Pierre Lespagnol1b6ab3d2019-09-19 11:14:35 -0400350 --enable-encoder=hevc_videotoolbox \
Edric Milaret20d7b9b2016-06-07 13:00:19 -0400351 --target-os=darwin \
352 --enable-cross-compile \
philippegorley5066a442017-09-26 15:49:14 -0400353 --enable-pic
Romain Bertozzi3facadc2016-04-12 08:40:34 -0400354endif
355
Edric Milaret20d7b9b2016-06-07 13:00:19 -0400356ifndef HAVE_IOS
Adrien Bérauda226c542020-09-23 12:16:18 -0400357ifndef HAVE_ANDROID
Kateryna Kostiuk2c078792022-10-12 14:54:18 -0400358ifndef HAVE_MACOSX
Edric Milarete94f9f72015-03-12 17:00:51 -0400359ifdef HAVE_CROSS_COMPILE
360FFMPEGCONF += --cross-prefix=$(HOST)-
361endif
Edric Milaret20d7b9b2016-06-07 13:00:19 -0400362endif
Adrien Bérauda226c542020-09-23 12:16:18 -0400363endif
Kateryna Kostiuk2c078792022-10-12 14:54:18 -0400364endif
Edric Milarete94f9f72015-03-12 17:00:51 -0400365
366# x86 stuff
367ifeq ($(ARCH),i386)
368FFMPEGCONF += --arch=x86
369endif
370
371ifeq ($(ARCH),x86_64)
372FFMPEGCONF += --arch=x86_64
373endif
374
Romain Bertozzi3facadc2016-04-12 08:40:34 -0400375# ARM stuff
376ifeq ($(ARCH),arm)
377FFMPEGCONF += --arch=arm
Romain Bertozzi3facadc2016-04-12 08:40:34 -0400378ifdef HAVE_ARMV7A
379FFMPEGCONF += --cpu=cortex-a8
380endif
381ifdef HAVE_ARMV6
philippegorley7b0bf452017-08-04 10:17:22 -0400382FFMPEGCONF += --cpu=armv6 --disable-neon
Romain Bertozzi3facadc2016-04-12 08:40:34 -0400383endif
384endif
385
386# ARM64 stuff
387ifeq ($(ARCH),aarch64)
388FFMPEGCONF += --arch=aarch64
389endif
Adrien Béraud943bc852017-02-08 18:02:15 -0500390ifeq ($(ARCH),arm64)
391FFMPEGCONF += --arch=aarch64
392endif
Adrien Béraud5f335b32023-01-12 17:15:44 -0500393ifeq ($(ARCH),armv7a)
394FFMPEGCONF += --arch=arm --enable-neon --enable-armv6 --enable-vfpv3
395endif
Romain Bertozzi3facadc2016-04-12 08:40:34 -0400396
Edric Milarete94f9f72015-03-12 17:00:51 -0400397# Windows
398ifdef HAVE_WIN32
Eden Abitbol338be342019-07-15 18:21:39 -0400399DEPS_ffmpeg += ffnvcodec
400FFMPEGCONF += --target-os=mingw32 \
401 --enable-w32threads \
402 --disable-decoder=dca \
403 --enable-cuvid \
404 --enable-ffnvcodec \
405 --enable-nvdec \
406 --enable-nvenc \
407 --enable-hwaccel=h264_nvdec \
408 --enable-hwaccel=hevc_nvdec \
409 --enable-hwaccel=vp8_nvdec \
410 --enable-hwaccel=mjpeg_nvdec \
411 --enable-encoder=h264_nvenc \
412 --enable-encoder=hevc_nvenc
Edric Milarete94f9f72015-03-12 17:00:51 -0400413endif
414
Sébastien Blin6c433a02023-11-10 14:12:09 -0500415$(TARBALLS)/ffmpeg-$(FFMPEG_HASH).tar.xz:
Guillaume Roguez15c12e62016-09-14 09:51:44 -0400416 $(call download,$(FFMPEG_URL))
Edric Milarete94f9f72015-03-12 17:00:51 -0400417
Sébastien Blin6c433a02023-11-10 14:12:09 -0500418.sum-ffmpeg: ffmpeg-$(FFMPEG_HASH).tar.xz
Edric Milarete94f9f72015-03-12 17:00:51 -0400419
Sébastien Blin6c433a02023-11-10 14:12:09 -0500420ffmpeg: ffmpeg-$(FFMPEG_HASH).tar.xz
Edric Milarete94f9f72015-03-12 17:00:51 -0400421 rm -Rf $@ $@-$(FFMPEG_HASH)
422 mkdir -p $@-$(FFMPEG_HASH)
Maxim Cournoyer6d3b0c02021-02-15 10:26:34 -0500423 (cd $@-$(FFMPEG_HASH) && tar x $(if ${BATCH_MODE},,-v) --strip-components=1 -f $<)
philippegorley4036b772018-12-17 15:35:08 -0500424 $(APPLY) $(SRC)/ffmpeg/remove-mjpeg-log.patch
Pierre LESPAGNOL9dca5212019-06-28 11:04:16 -0400425 $(APPLY) $(SRC)/ffmpeg/change-RTCP-ratio.patch
Pierre Lespagnolfa6f4a82019-10-22 10:15:16 -0400426 $(APPLY) $(SRC)/ffmpeg/rtp_ext_abs_send_time.patch
Philip-Dylan Gleonec00770b02021-01-13 17:08:46 +0100427 $(APPLY) $(SRC)/ffmpeg/libopusdec-enable-FEC.patch
Philip-Dylan Gleonec1db76782021-02-15 17:44:03 +0100428 $(APPLY) $(SRC)/ffmpeg/libopusenc-reload-packet-loss-at-encode.patch
kkostiuk781014a2021-04-27 15:27:21 -0400429 $(APPLY) $(SRC)/ffmpeg/ios-disable-b-frames.patch
Philip-Dylan Gleonec1db76782021-02-15 17:44:03 +0100430 $(APPLY) $(SRC)/ffmpeg/screen-sharing-x11-fix.patch
Sébastien Blinc5c3afa2023-11-09 14:58:01 -0500431 $(APPLY) $(SRC)/ffmpeg/pipewiregrab-source-filter.patch
Edric Milarete94f9f72015-03-12 17:00:51 -0400432 $(UPDATE_AUTOCONFIG)
Edric Milarete94f9f72015-03-12 17:00:51 -0400433 $(MOVE)
434
Marcus Hoffmann04ee6142017-11-09 11:42:46 +0100435.ffmpeg: ffmpeg .sum-ffmpeg
Edric Milarete94f9f72015-03-12 17:00:51 -0400436 cd $< && $(HOSTVARS) ./configure \
Edric Milaret20d7b9b2016-06-07 13:00:19 -0400437 --extra-cflags="$(CFLAGS)" \
Edric Milarete94f9f72015-03-12 17:00:51 -0400438 --extra-ldflags="$(LDFLAGS)" $(FFMPEGCONF) \
Maxim Cournoyerd3bf0b32021-03-08 20:14:41 -0500439 --prefix="$(PREFIX)" --enable-static --disable-shared \
440 --pkg-config-flags="--static"
Edric Milarete94f9f72015-03-12 17:00:51 -0400441 cd $< && $(MAKE) install-libs install-headers
442 touch $@