Arch Linux, like Gentoo, uses simplistic shell-like text files to jot down build instructions, via PKGBUILD. But Arch starts out with much more in their defaults in order to follow upstream; Gentoo wants you to build up to it yourself.
Suppose I want to do this: Start off with an Arch Linux-like USE flag roster, then subtract as I please.
I'll show you how it's done, that is, I'll compare:
| Arch Linux PKGBUILD | Gentoo ebuild |
| ./configure call arguments | myeconfargs declaration |
| makedepends/optdepends
declarations
Sometimes ./configure is subtractive, so stuff is included by default if unspecified. Then a lib may be in makedepends/optdepends. |
RDEPEND USE flags will trigger new dependencies; we'll see which is needed to match. |
to edit the USE flags of ffmpeg.
I'll also tell you what the hell these flags mean so you don't go ehrmagerdgentoo and disable subtle things for no good reason.
green : local USE flag
yellow : global USE flag or enabled by profile
red : I ignore it
| Support for... | Arch PKGBUILD | Gentoo USE flag |
|---|---|---|
| X11 | depends ⇗ on libxext | X |
| 32-bit (x86) libraries | idk lol | abi_x86_32 (pulled in by wine-proton) |
| ALSA (sound architecture) | depends ⇗ on alsa | alsa (idk) |
| AMD's Advanced Media Framework | --enable-amf ⇗, via aur/ffmpeg-full only | amf (I have Intel/Nvidia) |
| Adaptive Multi-Rate Audio, opencore | depends ⇗ on opencore-amr | amr (idk) |
| Adaptive Multi-Rate Audio encoding, vo-amrwbenc | depends ⇗ on vo-amrwbenc, via ffmpeg-full only | amrenc |
| Blu-ray filesystems reading support | --enable-libbluray ⇗ | libbluray (I probably won't use a bluray adapter) |
| stereo-to-binaural filter | --enable-libbs2b ⇗ | bs2b (idk) |
| Enable bzip2 compression support | depends ⇗ on bzip2 | bzip2 (idk what its pulled in by ngl) |
| Audio CDs reading | --enable-libcdio ⇗, via ffmpeg-full only | cdio |
| Audio fingerprinting | --enable-chromaprint, via ffmpeg-full only | chromaprint |
| libffmpeg.so for media playback in Chromium-based browsers like Opera and Vivaldi. | Not sure if Arch's av_stream patch ⇗ and Gentoo's av_stream/Makefile patch ⇗ are the same | chromium |
| Codec2 low bitrate speech codec support | --enable-libcodec2 ⇗, via ffmpeg-full only | codec2 |
| GPU-accelerated filters via NVIDIA PTX, compiled with llvm-core/clang | --enable-cuda-llvm ⇗ | cuda |
| AV1 decoding | --enable-libdav1d ⇗ | dav1d (idk) |
| Make some extra docs | --disable-htmlpages ⇗, in ffmpeg-full but not ffmpeg? idk | doc |
| libdrm hardware acceleration and KMS screencaps | --enable-libdrm ⇗ | drm |
| DVDs | --enable-libdvdnav --enable-libdvdread ⇗ | dvd (I probably won't ffmpeg right from a dvd adapter) |
| Use Fraunhofer AAC for AAC in addition to ffmpeg's own implementation. AAC is used in mp4, m4v, mkv, mov. | --enable-libfdk-aac ⇗, via ffmpeg-full only | fdk (idk) |
| flite text-to-speech filter | --enable-libflite ⇗, via ffmpeg-full only | flite |
| Configure/customize font access via fontconfig | --enable-fontconfig ⇗ | fontconfig |
| frei0r filters | --enable-frei0r ⇗ | frei0r (idk) |
| Bidi support for the drawtext filter | --enable-libfribidi ⇗ | fribidi |
| Use libgcrypt for rtmp(t)e support (not needed if using any of USE=gmp,librtmp,openssl), and for obtaining random bytes (not needed if USE=openssl) | --enable-libgcrypt ⇗, ffmpeg-full only | gcrypt |
| Game music format support via media-libs/game-music-emu | --enable-libgme ⇗, ffmpeg-full only | gme |
| GNU MP library | --enable-gmp ⇗ on | gmp |
| Use net-libs/gnutls for TLS/HTTPS support and other minor functions (has no effect if USE=openssl is set) | --enable-gnutls ⇗ | gnutls |
| Don't force LGPL | --enable-gpl ⇗ | gpl (enabled by ebuild) |
| GSM lossy speech compression codec | --enable-libgsm ⇗ | gsm |
| FireWire DV/HDV input devices | --enable-libiec61883 ⇗ | iec61883 (idk) |
| FireWire/iLink IEEE1394 support (dv, camera, ...) | depends ⇗ on libavc1394, libraw1394 | ieee1394 (idk) |
| JACK Audio Connection Kit | --enable-libjack ⇗ | jack (I don't think I use it, I just use pipewire. idrk what jack is ngl) |
| JPEG 2000 | --enable-libopenjpeg ⇗ | jpeg2k (idk) |
| JPEG XL aka JXL | --enable-libjxl ⇗ on | jpegxl |
| Enable H.265/HEVC encoding support via media-libs/kvazaar | makedepends ⇗ on | kvazaar |
| Enable the ability to support ladspa plugins | makedepends ⇗ on | ladspa |
| Add support for MP3 encoding using LAME | makedepends ⇗ on | lame |
| Enable ICC profile support via media-libs/lcms | makedepends ⇗ on | lcms |
| Enable AV1 de/encoding via media-libs/libaom (warning: this is the reference implementation and is slower than the alternatives) | makedepends ⇗ on | libaom |
| Enable ARIB text and caption decoding via media-libs/aribb24 | makedepends ⇗ on | libaribb24 |
| SRT/SSA/ASS (SubRip / SubStation Alpha) subtitle support | makedepends ⇗ on | libass |
| Add support for colored ASCII-art graphics | makedepends ⇗ on | libcaca |
| Enable internet Low Bitrate Codec de/encoding support via media-libs/libilbc | makedepends ⇗ on | libilbc |
| Enable Low Complexity Communication Codec de/encoding support via media-sound/liblc3 | makedepends ⇗ on | liblc3 |
| Enable use of GPU-accelerated filters from media-libs/libplacebo | makedepends ⇗ on | libplacebo |
| Enable Real Time Messaging Protocol support via media-video/rtmpdump in addition to FFmpeg's own implementation | makedepends ⇗ on | librtmp |
| Enable use of the audio resampler from media-libs/soxr | makedepends ⇗ on | libsoxr |
| Enable Optical Character Recognition (OCR) filter support via app-text/tesseract | makedepends ⇗ on | libtesseract |
| Enable use of filters through media-libs/lv2 | makedepends ⇗ on | lv2 |
| Support for LZMA compression algorithm | makedepends ⇗ on | lzma |
| Add libmodplug support for playing SoundTracker-style music files | makedepends ⇗ on | modplug |
| Add support for NVIDIA Encoder/Decoder (NVENC/NVDEC) API for hardware accelerated encoding and decoding on NVIDIA cards (requires x11-drivers/nvidia-drivers) | makedepends ⇗ on | nvenc |
| Add support for the Open Audio Library | makedepends ⇗ on | openal |
| Enable OpenCL support (computation on GPU) | makedepends ⇗ on | opencl |
| Add support for OpenGL (3D graphics) | makedepends ⇗ on | opengl |
| Enable H.264 encoding support via media-libs/openh264 | makedepends ⇗ on | openh264 |
| Enable MPTM tracked music files decoding support via media-libs/libopenmpt | makedepends ⇗ on | openmpt |
| Enable using dev-libs/openssl for TLS/HTTPS support and other minor functions (USE=gnutls has no effect if set) | makedepends ⇗ on | openssl |
| Enable Opus audio codec support | makedepends ⇗ on | opus |
| Enable libpostproc video post processing library support (should not disable this unless need to disable USE=gpl) | makedepends ⇗ on | postproc |
| Add sound server support via media-libs/libpulse (may be PulseAudio or PipeWire) | makedepends ⇗ on | pulseaudio |
| Enable QR encode generation support via media-gfx/qrencode | makedepends ⇗ on | qrcode |
| Enable Intel Quick Sync Video support via media-libs/libvpl | makedepends ⇗ on | qsv |
| Enable QR decoding support via media-libs/quirc | makedepends ⇗ on | quirc |
| Enable AMQP stream support via net-libs/rabbitmq-c | makedepends ⇗ on | rabbitmq |
| Enable AV1 encoding support via media-video/rav1e | makedepends ⇗ on | rav1e |
| Enable time-stretching and pitch-shifting audio filter support via media-libs/rubberband | makedepends ⇗ on | rubberband |
| Add support for SAMBA (Windows File and Printer sharing) | makedepends ⇗ on | samba |
| Enable use of the Simple Direct Layer library (required for the ffplay command) | makedepends ⇗ on | sdl |
| Enable support for various GPU-accelerated filters using Vulkan compiled with media-libs/shaderc | makedepends ⇗ on | shaderc |
| Enable Snappy compression support via app-arch/snappy (required for Vidvox Hap encoder support) | makedepends ⇗ on | snappy |
| Enable audio output support via media-sound/sndio | makedepends ⇗ on | sndio |
| Apply additional patches for efficient playback on some SoCs (e.g. ARM, RISC-V) | makedepends ⇗ on | soc |
| Add support for the speex audio codec (used for speech) | makedepends ⇗ on | speex |
| Enable Secure Reliable Transport (SRT) support via net-libs/srt | makedepends ⇗ on | srt |
| Enable SSH/SFTP support via net-libs/libssh | makedepends ⇗ on | ssh |
| Add support for SVG (Scalable Vector Graphics) | makedepends ⇗ on | svg |
| : Enable AV1 encoding support via media-libs/svt-av1 | makedepends ⇗ on | svt |
| Add support for the Theora Video Compression Codec | makedepends ⇗ on | theora |
| Enable drawtext filter support via media-libs/freetype and media-libs/harfbuzz | makedepends ⇗ on | truetype |
| Enable MP2 encoding support via media-sound/twolame in addition to FFmpeg's own implementation | makedepends ⇗ on | twolame |
| Enable support for video4linux (using linux-headers or userspace libv4l libraries) | makedepends ⇗ on | v4l |
| Enable Video Acceleration API for hardware decoding | makedepends ⇗ on | vaapi |
| Enable the Video Decode and Presentation API for Unix acceleration interface | makedepends ⇗ on | vdpau |
| : Verify upstream signatures on distfiles | makedepends ⇗ on | verify |
| Enable video stabilization filter support via media-libs/vidstab | makedepends ⇗ on | vidstab |
| Enable Netflix's perceptual video quality assessment filter support via media-libs/libvmaf | makedepends ⇗ on | vmaf |
| Add support for the OggVorbis audio codec | makedepends ⇗ on | vorbis |
| Enable VP8 and VP9 de/encoding support via media-libs/libvpx in addition to FFmpeg's own implementation (for decoding only) | (for webm encoding)makedepends ⇗ on | vpx |
| Add support for 3D graphics and computing via the Vulkan cross-platform API | makedepends ⇗ on | vulkan |
| Add support for the WebP image format | makedepends ⇗ on | webp |
| Enable h264 encoding using x264 | makedepends ⇗ on | x264 |
| Enable H.265/HEVC encoding support via media-libs/x265 | makedepends ⇗ on | x265 |
| Enable Dynamic Adaptive Streaming over HTTP (DASH) stream support using dev-libs/libxml2 | makedepends ⇗ on | xml |
| Add support for xvid.org's open-source mpeg-4 codec | makedepends ⇗ on | xvid |
| Enable ZMQ command receiver filter and streaming support via net-libs/zeromq | makedepends ⇗ on | zeromq |
| Enable zscale filter support using media-libs/zimg | makedepends ⇗ on | zimg |
| Add support for zlib compression | makedepends ⇗ on | zlib |
| Enable teletext decoding support via media-libs/zvbi | makedepends ⇗ on | zvbi |
/etc/portage/package.use/ffmpeg
media-video/ffmpeg cuda fontconfig gmp ladspa libaom libass bluray bs2b libdrm fribidi glslang gsm iec61883 jpegxl modplug mp3 opus libplacebo rav1e svg rubberband snappy soxr speex srt ssh svt-av1 theora libv4l v4l vorbis webp x264 x265 libxml2 xvid zimg nvdec nvenc opencl opengl vulkan sdl lame -bluray vpx
media-libs/libvpx abi_x86_32
I also do video editing
/etc/portage/package.use/kdenlive
media-libs/libsdl2 gles2
media-libs/mlt sdl frei0r ffmpeg qt6 xml
kde-frameworks/sonnet qml
dev-qt/qt5compat qml icu
media-libs/opencv contrib contribdnn qt6
dev-qt/qtbase libproxy icu #dafuq
kde-frameworks/kconfig qml
dev-qt/qtgui egl
sys-auth/polkit-qt qt6
kde-frameworks/prison qml
I rarely use OBS for screen recording, since it is heavy
/etc/portage/package.accept_keywords/screen-recording
media-video/obs-studio ~amd64
gui-apps/wf-recorder ~amd64
subtitles
/etc/portage/package.use/aegisub
dev-lang/luajit lua52compat
dev-libs/boost icu