-# Enable V4L2 plugin to probe devices at plugin load
-option('v4l2-probe', type : 'boolean', value : true,
- description : 'Probe v4l2 devices when the v4l2 plugin is loaded')
-option('libv4l2', type : 'boolean', value : true,
- description : 'Use libv4l2 for some obscure format conversions')
+# Feature options for plugins without external deps
+option('alpha', type : 'feature', value : 'auto')
+option('apetag', type : 'feature', value : 'auto')
+option('audiofx', type : 'feature', value : 'auto')
+option('audioparsers', type : 'feature', value : 'auto')
+option('auparse', type : 'feature', value : 'auto')
+option('autodetect', type : 'feature', value : 'auto')
+option('avi', type : 'feature', value : 'auto')
+option('cutter', type : 'feature', value : 'auto')
+option('debugutils', type : 'feature', value : 'auto')
+option('deinterlace', type : 'feature', value : 'auto')
+option('dtmf', type : 'feature', value : 'auto')
+option('effectv', type : 'feature', value : 'auto')
+option('equalizer', type : 'feature', value : 'auto')
+option('flv', type : 'feature', value : 'auto')
+option('flx', type : 'feature', value : 'auto')
+option('goom', type : 'feature', value : 'auto')
+option('goom2k1', type : 'feature', value : 'auto')
+option('icydemux', type : 'feature', value : 'auto')
+option('id3demux', type : 'feature', value : 'auto')
+option('imagefreeze', type : 'feature', value : 'auto')
+option('interleave', type : 'feature', value : 'auto')
+option('isomp4', type : 'feature', value : 'auto')
+option('law', type : 'feature', value : 'auto')
+option('level', type : 'feature', value : 'auto')
+option('matroska', type : 'feature', value : 'auto')
+option('monoscope', type : 'feature', value : 'auto')
+option('multifile', type : 'feature', value : 'auto')
+option('multipart', type : 'feature', value : 'auto')
+option('replaygain', type : 'feature', value : 'auto')
+option('rtp', type : 'feature', value : 'auto')
+option('rtpmanager', type : 'feature', value : 'auto')
+option('rtsp', type : 'feature', value : 'auto')
+option('shapewipe', type : 'feature', value : 'auto')
+option('smpte', type : 'feature', value : 'auto')
+option('spectrum', type : 'feature', value : 'auto')
+option('udp', type : 'feature', value : 'auto')
+option('videobox', type : 'feature', value : 'auto')
+option('videocrop', type : 'feature', value : 'auto')
+option('videofilter', type : 'feature', value : 'auto')
+option('videomixer', type : 'feature', value : 'auto')
+option('wavenc', type : 'feature', value : 'auto')
+option('wavparse', type : 'feature', value : 'auto')
+option('y4m', type : 'feature', value : 'auto')
+
+# Feature options for plugins with external deps
+option('aalib', type : 'feature', value : 'auto', description : 'aalib text console video sink plugin')
+option('bz2', type : 'feature', value : 'auto', description : 'libbz2 support in the matroska plugin')
+option('cairo', type : 'feature', value : 'auto', description : 'Cairo overlay plugin')
+option('directsound', type : 'feature', value : 'auto', description : 'Directsound audio source/sink plugin')
+option('dv', type : 'feature', value : 'auto', description : 'Digital video decoder and demuxer plugin')
+option('dv1394', type : 'feature', value : 'auto', description : 'Digital IEEE1394 interface video source plugin')
+option('flac', type : 'feature', value : 'auto', description : 'FLAC audio codec plugin')
+option('gdk-pixbuf', type : 'feature', value : 'auto', description : 'gdk-pixbuf image decoder, overlay, and sink plugin')
+option('gtk3', type : 'feature', value : 'auto', description : 'GTK+ video sink plugin')
+option('jack', type : 'feature', value : 'auto', description : 'JACK audio source/sink plugin')
+option('jpeg', type : 'feature', value : 'auto', description : 'JPEG image codec plugin')
+option('lame', type : 'feature', value : 'auto', description : 'LAME mp3 audio encoder plugin')
+option('libcaca', type : 'feature', value : 'auto', description : 'libcaca text console video sink plugin')
+option('mpg123', type : 'feature', value : 'auto', description : 'mpg123 mp3 audio decoder plugin')
+option('oss', type : 'feature', value : 'auto', description : 'OSS audio source/sink plugin')
+option('oss4', type : 'feature', value : 'auto', description : 'OSSv4 audio source/sink plugin')
+option('osxaudio', type : 'feature', value : 'auto', description : 'macOS/iOS CoreAudio source/sink plugin')
+option('osxvideo', type : 'feature', value : 'auto', description : 'macOS Cocoa video sink plugin')
+option('png', type : 'feature', value : 'auto', description : 'PNG image codec plugin')
+option('pulse', type : 'feature', value : 'auto', description : 'Pulseaudio audio source/sink plugin')
+option('qt5', type : 'feature', value : 'auto', description : 'Qt5 QML video sink plugin')
+option('shout2', type : 'feature', value : 'auto', description : 'Shout-casting network sink plugin based on libshout2')
+option('soup', type : 'feature', value : 'auto', description : 'libsoup HTTP client source/sink plugin')
+option('speex', type : 'feature', value : 'auto', description : 'Speex audio codec plugin')
+option('taglib', type : 'feature', value : 'auto', description : 'Tag-writing plugin based on taglib')
+option('twolame', type : 'feature', value : 'auto', description : 'twolame mp2 audio encoder plugin')
+option('vpx', type : 'feature', value : 'auto', description : 'VP8 and VP9 video codec plugin')
+option('waveform', type : 'feature', value : 'auto', description : 'Windows waveform audio sink plugin')
+option('wavpack', type : 'feature', value : 'auto', description : 'Wavpack audio codec plugin')
+option('x11', type : 'feature', value : 'auto', description : 'X11 ximagesrc plugin')
+
+# v4l2 plugin options
+option('v4l2', type : 'feature', value : 'auto', description : 'Build video4linux2 source/sink plugin')
+option('v4l2-probe', type : 'boolean', value : true, description : 'Probe v4l2 devices when the v4l2 plugin is loaded')
+option('v4l2-libv4l2', type : 'feature', value : 'auto', description : 'Use libv4l2 for some obscure format conversions')
+option('v4l2-gudev', type : 'feature', value : 'auto', description : 'Use libgudev for probing v4l2 devices')
+
+# Common feature options
+option('examples', type : 'feature', value : 'auto', yield : true)
+option('tests', type : 'feature', value : 'auto', yield : true)
+option('nls', type : 'feature', value : 'auto', yield: true, description : 'Enable native language support (translations)')
+option('orc', type : 'feature', value : 'auto', yield : true)
+option('gobject-cast-checks', type : 'feature', value : 'auto', yield : true,
+ description: 'Enable run-time GObject cast checks (auto = enabled for development, disabled for stable releases')
+option('glib-asserts', type : 'feature', value : 'enabled', yield : true,
+ description: 'Enable GLib assertion (auto = enabled for development, disabled for stable releases')
# Common options
-option('nls', type : 'boolean', value : true, yield: true,
- description : 'Enable native language support (translations)')
-option('orc', type : 'combo', choices : ['yes', 'no', 'auto'], value : 'auto')
option('package-name', type : 'string', yield : true,
description : 'package name to use in plugins')
option('package-origin', type : 'string', value : 'Unknown package origin', yield : true,