vgmstream/ext_libs/extra/ffmpeg_options.txt
2023-01-29 23:01:14 +01:00

140 lines
5.3 KiB
Plaintext

# FFMPEG OPTIONS
# options used in scripts. for full list usew "sh ./configure --help", and "sh ./configure --list-(various)"
###############################################################################
# GENERAL CONFIG
# suffix to avoid clashing with other libs (ommit or overwrite if linking to system's FFmpeg)
--build-suffix=-vgmstream
# not very useful for vgmstream so could be disabled
#--disable-logging
# code licensing (defaults LGPLv2.1)
# enables various video-related code, and possibly some ASM optimization, hard to tell, may not be useful
# --enable-gpl
# --disable-version3
# thread would be unneeded for audio, but some FFmpeg code (libavutil/thread.h) seems to use them for mutex init
# pthreads may create a libpthread.dll dependency, w32threads seems ok, while no threads seem to work fine (uses static vars as flags)
--disable-pthreads
--disable-w32threads
--disable-os2threads
# config (only need shared libs = .dll/.so)
--disable-static
--enable-shared
# programs (ffplay, ffprobe, ffmpeg), docs (*pages)
--disable-programs
--disable-doc
# components (some aren't enabled anyway but force just in case they get autodetected)
--disable-avdevice
--disable-swresample
--disable-swscale
--disable-postproc
--disable-avfilter
--disable-network
# individual components (re-enabled below as needed): decoders, encoder, hwaccels, demuxers, muxers, parsers, protocols, bsfs, indevs, outdevs, filters
--disable-everything
# in theory this disables most of the values below, but will include them just in case
--disable-autodetect
# these should't be used, but seems to be autodetected by /configure so disable just in case
--disable-iconv
--disable-mediafoundation
--disable-schannel
--disable-sdl2
--disable-zlib
# all these should be implicit (video hwaccels), but same thing
--disable-swscale-alpha
--disable-amf
--disable-cuda
--disable-cuvid
--disable-d3d11va
--disable-dxva2
--disable-ffnvcodec
--disable-nvenc
--disable-nvdec
--disable-vdpau
--disable-vulkan
# this can't be disabled, for av_get_random_seed though shouldn't be needed (maybe indirectly by asf?)
# Windows XP doesn't support bcrypt though, see "ffmpeg-revert-bcrypt-random.patch" if XP support is really needed
# (--disable-random is available but seems to affect/disable a huge number of things)
# (--disable-bcrypt)
# swresample is for regular opus, probably may be disabled when using libopus
# (left in case it's needed in the future)
--enable-swresample
--enable-libopus
###############################################################################
# FORMATS
# use "sh ./configure --list-demuxers / --list-parser / --list-decoders" for the whole thing
# demuxers take data containers and splits into streams or frames (handles regular formats)
# - ac3,eac3,spdif: PS2/PS3 games
# - asf,xwma: Windows/X360 games
# - mov: iOS audio, iOS/Switch videos (M4A/MP4)
# - oma: PSP/PS3 demuxed videos
# - xmv: Xbox videos
# - ogg: common
# - flac: common (rare in games)
# - wav: common
# - aac: 3DS games, demuxed videos
# - mp3: common (for rare cases, shouldn't be used directly)
# - smacker,bink,binka: games with RAD Game Tools videos/audio
# - caf: iOS games
# - mpc,mpc8: Android games
# - tak,ape: extra for rips with compressed .wav
--enable-demuxer=ac3,eac3,spdif,asf,xwma,mov,oma,xmv,ogg,flac,wav,aac,mp3,smacker,bink,binka,caf,mpc,mpc8,tak,ape
# parsers take data streams and splits into frames (handles raw-ish formats)
# - ac3: raw AC3
# - mpegaudio: common
# - xma: X360 games
# - vorbis: common (for rare cases, shouldn't be used directly)
# - opus: Switch/PC games
--enable-parser=ac3,mpegaudio,xma,vorbis,opus
# decoders take frames and decodes (handles codecs)
# (swap libopus with opus if needed)
# - ac3,eac3: PS2/PS3 games
# - wmapro,wmav1,wmav2,xma1,xma2: Windows/X360 games
# - aac
# - atrac3,atrac3p: PSP/PS3 games
# - mp2float,mp3float: common
# - smackaud,binkaudio_dct,binkaudio_rdft: games with RAD Game Tools videos/audio
# - pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,pcm_s8,pcm_s8_planar: for .wav not detected properly in riff.c
# - flac: common (rare in games)
# - vorbis: common (for rare cases, shouldn't be used directly)
# - opus/libopus: Switch/PC games
# - mpc7,mpc8: Android games
# - alac,adpcm_ima_qt: iOS games
# - adpcm_ima_dk3,adpcm_ima_dk4: Saturn videos
# - tak,ape: extra for rips with compressed .wav
--enable-decoder=ac3,eac3,wmapro,wmav1,wmav2,xma1,xma2,aac,atrac3,atrac3p,mp2float,mp3float,smackaud,binkaudio_dct,binkaudio_rdft,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,pcm_s8,pcm_s8_planar,flac,vorbis,libopus,mpc7,mpc8,alac,adpcm_ima_qt,adpcm_ima_dk3,adpcm_ima_dk4,tak,ape
###############################################################################
# OS/TESTS
# Windows builds may need the following:
#--target-os=mingw32 --arch=x86 / --arch=x86_64 --extra-ldflags=-static-libgcc
# GCC options (probably not needed on Windows, PIC used for static libs to make shared libs also needs -Wl,-Bsymbolic)
#--enable-pic
#--extra-cflags=-fPIC
#--extra-cflags=-m32 / -m64
# if you want to test resulting config separate from the DLL, ffmpeg CLI to .wav can be enabled with:
#--enable-ffmpeg
#--enable-encoder=pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar
#--enable-muxer=wav
#--enable-protocol=data,file,subfile
#--enable-filter=aformat,ainterleave,aresample
#--enable-sdl2
#--extra-cflags=-g -DDEBUG