summaryrefslogtreecommitdiff
path: root/subprojects/packagefiles/ffmpeg
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/packagefiles/ffmpeg')
-rw-r--r--subprojects/packagefiles/ffmpeg/meson.build100
-rw-r--r--subprojects/packagefiles/ffmpeg/msvc_build_conform.diff20
2 files changed, 85 insertions, 35 deletions
diff --git a/subprojects/packagefiles/ffmpeg/meson.build b/subprojects/packagefiles/ffmpeg/meson.build
index 0ecae9e..8bcce34 100644
--- a/subprojects/packagefiles/ffmpeg/meson.build
+++ b/subprojects/packagefiles/ffmpeg/meson.build
@@ -24,11 +24,14 @@ if is_minsize
extra_options += ['--enable-small']
endif
-extra_options += ['--cc=' + compiler.cmd_array()[0]]
extra_options += ['--arch=' + cpu]
+extra_options += ['--cc=' + compiler.cmd_array()[0]]
if meson.is_cross_build()
- extra_options += ['--nm=' + meson.get_external_property('nm', 'nm')]
+ if is_msvc
+ extra_options += ['--ld=' + compiler.get_linker_id()]
+ endif
extra_options += ['--ar=' + meson.get_external_property('ar', 'ar')]
+ extra_options += ['--nm=' + meson.get_external_property('nm', 'nm')]
endif
if cpu == 'x86_64' or cpu == 'x86'
@@ -52,32 +55,45 @@ endif
#'--extra-ldflags=-Lbuild/subprojects/libalabaster -l:libalabaster.a',
#'--malloc-prefix=al_',
-decoders = 'flac,mp3,mp3float,aac,opus,vorbis,alac,mjpeg,jpeg2000,gif,h264,hevc,av1,vp9,vp8'
-decoders += ',pcm_f32be,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_f32le,pcm_s24be,pcm_s24le,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar'
-decoders += ',dca'
-#decoders += ',pcm_dvd,mpegvideo,mpeg2video'
+decoders = 'flac,mp3,mp3float,aac,opus,vorbis,h264,hevc,av1,vp9'
+decoders += ',pcm_s32be,pcm_s32le,pcm_s24be,pcm_s24le,pcm_s16be,pcm_s16le'
+#decoders += ',pcm_f32be,pcm_f32le,pcm_s32le_planar,pcm_s16be_planar,pcm_s16le_planar'
+decoders += ',dca,eac3'
+decoders += ',pcm_dvd,mpegvideo,mpeg2video'
#decoders += ',ass,srt'
-demuxers = 'flac,mp3,aac,wav,image2,mjpeg,image2pipe,image_jpeg_pipe,gif,matroska,mov,avi'
-#demuxers += ',mpegts,mpegtsraw,mpegps,mpegvideo'
-#demuxers += ',ass,srt'
-
-parsers = 'aac,opus,mjpeg,jpeg2000,gif,h264,hevc,av1,vp9,vp8'
-parsers += ',dca'
-#parsers += ',mpegaudio,mpegvideo,dvd_nav'
+demuxers = ''
+parsers = ''
+if not get_option('sink-only')
+ demuxers += 'flac,mp3,aac,wav,matroska,mov,avi'
+ demuxers += ',pcm_s32be,pcm_s32le,pcm_s24be,pcm_s24le,pcm_s16be,pcm_s16le'
+ #demuxers += ',pcm_f32be,pcm_f32le,pcm_s32le_planar,pcm_s16be_planar,pcm_s16le_planar'
+ demuxers += ',eac3'
+ demuxers += ',mpegts,mpegtsraw,mpegps,mpegvideo'
+ #demuxers += ',ass,srt'
+ parsers += 'aac,opus,h264,hevc,av1,vp9'
+ parsers += ',dca'
+ parsers += ',mpegaudio,mpegvideo,dvd_nav'
+ extra_options += ['--enable-bzlib'] # matroska
+endif
extra_options += ['--enable-zlib']
-decoders += ',png,apng'
-demuxers += ',image_png_pipe'
-parsers += ',png'
+decoders += ',png,apng,mjpeg,jpeg2000,gif,'
+if not get_option('sink-only')
+ demuxers += ',image_png_pipe,image2,mjpeg,image2pipe,image_jpeg_pipe,gif'
+ parsers += ',png,mjpeg,jpeg2000,gif'
+endif
-bsfs = 'extract_extradata,mp3_header_decompress'
+bsfs = ''
+if not get_option('sink-only')
+ bsfs += 'extract_extradata,mp3_header_decompress'
+endif
hwaccels = ''
if get_option('codec-hwaccel').enabled()
if get_option('renderer-api') == 'vulkan'
extra_options += ['--enable-vulkan']
- hwaccels += 'h264_vulkan,hevc_vulkan,av1_vulkan'
+ hwaccels += 'h264_vulkan,hevc_vulkan,av1_vulkan,vp9_vulkan'
elif is_windows
extra_options += ['--enable-d3d11va']
hwaccels += 'h264_d3d11va,hevc_d3d11va,av1_d3d11va,vp9_d3d11va'
@@ -90,14 +106,39 @@ if get_option('codec-hwaccel').enabled()
elif is_linux
extra_options += ['--enable-vaapi']
endif
+else
+ extra_options += ['--disable-hwaccels']
+endif
+
+protocols = ''
+if not get_option('sink-only')
+ protocols += 'cache'
+endif
+
+if decoders != ''
+ extra_options += ['--enable-decoder=' + decoders]
+endif
+
+if demuxers != ''
+ extra_options += ['--enable-demuxer=' + demuxers]
+endif
+
+if parsers != ''
+ extra_options += ['--enable-parser=' + parsers]
+endif
+
+if bsfs != ''
+ extra_options += ['--enable-bsf=' + bsfs]
+endif
+
+if protocols != ''
+ extra_options += ['--enable-protocol=' + protocols]
endif
if hwaccels != ''
extra_options += ['--enable-hwaccel=' + hwaccels]
endif
-protocols = 'cache'
-
if is_linux or is_mingw
extra_options += ['--enable-libsoxr']
endif
@@ -122,17 +163,11 @@ proj = ext_proj.add_project('configure',
'--disable-manpages',
'--disable-podpages',
'--disable-txtpages',
- '--disable-bzlib',
- '--disable-error-resilience',
- '--disable-iconv',
+ '--disable-safe-bitstream-reader',
'--disable-schannel',
'--disable-network',
'--disable-securetransport',
- '--disable-sdl2',
- '--disable-symver',
- '--disable-faan',
- '--disable-alsa',
- '--disable-xlib',
+ #'--disable-iconv',
'--enable-gpl',
'--enable-version3',
'--disable-nonfree',
@@ -142,16 +177,11 @@ proj = ext_proj.add_project('configure',
'--enable-avutil',
'--enable-avformat',
'--enable-avcodec',
- '--enable-avdevice',
+ #'--enable-avdevice',
'--enable-swresample',
'--enable-swscale',
'--disable-indevs',
'--disable-outdevs',
- '--enable-demuxer=' + demuxers,
- '--enable-decoder=' + decoders,
- '--enable-parser=' + parsers,
- '--enable-bsf=' + bsfs,
- '--enable-protocol=' + protocols,
extra_options
],
cross_configure_options: ['--enable-cross-compile'],
@@ -160,7 +190,7 @@ proj = ext_proj.add_project('configure',
avutil = proj.dependency('avutil')
avformat = proj.dependency('avformat')
avcodec = proj.dependency('avcodec')
-avdevice = proj.dependency('avdevice')
+#avdevice = proj.dependency('avdevice')
swresample = proj.dependency('swresample')
swscale = proj.dependency('swscale')
ffmpeg_include = declare_dependency(include_directories: include_directories('.', 'build/'))
diff --git a/subprojects/packagefiles/ffmpeg/msvc_build_conform.diff b/subprojects/packagefiles/ffmpeg/msvc_build_conform.diff
new file mode 100644
index 0000000..3aff7e9
--- /dev/null
+++ b/subprojects/packagefiles/ffmpeg/msvc_build_conform.diff
@@ -0,0 +1,20 @@
+--- a/configure 2025-03-02 19:22:08.000000000 -0500
++++ b/configure 2025-05-17 18:43:08.854727216 -0400
+@@ -5184,7 +5184,7 @@
+ DEPCCFLAGS=$_flags
+ fi
+
+-if $ar 2>&1 | grep -q Microsoft; then
++if $ar 2>&1 | grep -q Microsoft || [ "$ar" == "llvm-lib" ]; then
+ arflags="-nologo"
+ ar_o='-out:$@'
+ elif $ar 2>&1 | grep -q "\[D\] "; then
+@@ -5878,6 +5878,8 @@
+ enabled x86_32 && check_ldflags -LARGEADDRESSAWARE
+ add_cppflags -DWIN32_LEAN_AND_MEAN
+ shlibdir_default="$bindir_default"
++ LIBPREF=""
++ LIBSUF=".lib"
+ SLIBPREF=""
+ SLIBSUF=".dll"
+ SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'