summaryrefslogtreecommitdiff
path: root/subprojects/packagefiles/ffmpeg
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2024-01-01 11:56:21 -0500
committerAndrew Opalach <andrew@akon.city> 2024-01-01 11:56:21 -0500
commit2c288fa1b6ecc26504717aa6b878dfe9fb5bca3e (patch)
treef49bd49fb83ba5ef17994eeb264c9bdfc0791a95 /subprojects/packagefiles/ffmpeg
parent130a0edc0405e53b45f8b2f8da0b94356480a644 (diff)
downloadcamu-2c288fa1b6ecc26504717aa6b878dfe9fb5bca3e.tar.gz
camu-2c288fa1b6ecc26504717aa6b878dfe9fb5bca3e.tar.bz2
camu-2c288fa1b6ecc26504717aa6b878dfe9fb5bca3e.zip
Add subprojects
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'subprojects/packagefiles/ffmpeg')
-rw-r--r--subprojects/packagefiles/ffmpeg/meson.build120
1 files changed, 120 insertions, 0 deletions
diff --git a/subprojects/packagefiles/ffmpeg/meson.build b/subprojects/packagefiles/ffmpeg/meson.build
new file mode 100644
index 0000000..1466086
--- /dev/null
+++ b/subprojects/packagefiles/ffmpeg/meson.build
@@ -0,0 +1,120 @@
+project('ffmpeg', 'c', version: '6.1', meson_version: '>=0.57.0')
+
+compiler = meson.get_compiler('c')
+
+cpu = target_machine.cpu_family()
+is_64bit = (cpu == 'x86_64' or cpu == 'aarch64')
+is_debug = get_option('buildtype').startswith('debug')
+is_windows = host_machine.system() == 'windows'
+is_msvc = compiler.get_id() == 'msvc' or compiler.get_id() == 'clang-cl'
+is_mingw = is_windows and not is_msvc
+
+extra_options = []
+
+if not is_debug
+ extra_options += ['--disable-debug']
+endif
+
+extra_options += ['--cc=' + compiler.cmd_array()[0]]
+
+if is_windows
+ if is_64bit
+ extra_options += ['--target-os=win64', '--arch=x86_64']
+ endif
+ if is_msvc
+ extra_options += ['--toolchain=msvc']
+ endif
+endif
+
+#'--extra-ldflags=-L/home/pizza/c/camu/build6/subprojects/libalabaster -l:libalabaster.a',
+#'--malloc-prefix=al_',
+
+decoders = 'flac,mp3,aac,opus,alac,mjpeg,jpeg2000,h264,hevc,vp9'
+#decoders += ',pcm_f32be,pcm_f32le,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_dvd,apng,mpegvideo,mpeg2video'
+#decoders += ',ass,srt'
+
+demuxers = 'flac,mp3,aac,wav,image2,mjpeg,image2pipe,image_jpeg_pipe,matroska,mov'
+#demuxers += ',mpegts,mpegtsraw,mpegps,mpegvideo'
+#demuxers += ',ass,srt'
+
+parsers = 'mjpeg,jpeg2000'
+#parsers += ',mpegaudio,mpegvideo,dvd_nav'
+
+if not is_windows or is_mingw
+ #extra_options += ['--enable-zlib', '--enable-libsoxr']
+ extra_options += ['--enable-zlib']
+ decoders += ',png'
+ demuxers += ',image_png_pipe'
+ parsers += ',png'
+endif
+
+bsfs = 'extract_extradata,mp3_header_decompress'
+
+ext_proj = import('unstable-external_project')
+
+proj = ext_proj.add_project('configure',
+ configure_options: [
+ '--prefix=@PREFIX@',
+ '--libdir=@PREFIX@@LIBDIR@',
+ '--incdir=@PREFIX@@INCLUDEDIR@',
+ '--enable-pic',
+ '--enable-static',
+ '--disable-shared',
+ '--disable-all',
+ '--disable-autodetect',
+ '--disable-everything',
+ '--disable-htmlpages',
+ '--disable-manpages',
+ '--disable-podpages',
+ '--disable-txtpages',
+ '--disable-vdpau',
+ '--disable-vaapi',
+ '--disable-bzlib',
+ '--disable-error-resilience',
+ '--disable-iconv',
+ '--disable-schannel',
+ '--disable-network',
+ '--disable-securetransport',
+ '--disable-sdl2',
+ '--disable-symver',
+ '--disable-faan',
+ '--disable-alsa',
+ '--disable-xlib',
+ '--disable-vulkan',
+ '--enable-runtime-cpudetect',
+ '--enable-asm',
+ '--enable-inline-asm',
+ '--enable-x86asm',
+ '--enable-avutil',
+ '--enable-avformat',
+ '--enable-avcodec',
+ '--enable-swresample',
+ '--enable-swscale',
+ '--enable-demuxer=' + demuxers,
+ '--enable-decoder=' + decoders,
+ '--enable-parser=' + parsers,
+ '--enable-bsf=' + bsfs,
+ extra_options,
+ ], verbose: true)
+
+inc = include_directories('.')
+
+if is_msvc
+ # TODO: FFmpeg patch to fix all libs coming out as .a.
+ avutil = proj.dependency('libavutil')
+ avformat = proj.dependency('libavformat')
+ avcodec = proj.dependency('libavcodec')
+ swresample = proj.dependency('libswresample')
+ swscale = proj.dependency('libswscale')
+else
+ avutil = proj.dependency('avutil')
+ avformat = proj.dependency('avformat')
+ avcodec = proj.dependency('avcodec')
+ swresample = proj.dependency('swresample')
+ swscale = proj.dependency('swscale')
+ if is_64bit and is_windows
+ lib_dir = meson.project_build_root() + '/distlib64'
+ else
+ lib_dir = meson.project_build_root() + '/dist/usr/local/lib64'
+ endif
+endif