commit 9a54093

hovercats  ·  2024-08-30 09:34:56 +0000 UTC
parent 70fe167
import sets.media + deps from oasis
94 files changed,  +31451, -0
+26, -0
 1@@ -258,3 +258,29 @@
 2 [submodule "pkg/hotplugd/src"]
 3 	path = pkg/hotplugd/src
 4 	url = https://github.com/oasislinux/hotplugd.git
 5+[submodule "pkg/alsa-lib/src"]
 6+	path = pkg/alsa-lib/src
 7+	url = https://github.com/alsa-project/alsa-lib.git
 8+	ignore = all
 9+[submodule "pkg/mpv/src"]
10+	path = pkg/mpv/src
11+	url = https://github.com/mpv-player/mpv
12+	ignore = all
13+[submodule "pkg/ffmpeg/src"]
14+	path = pkg/ffmpeg/src
15+	url = https://git.ffmpeg.org/ffmpeg.git
16+	ignore = all
17+[submodule "pkg/libplacebo/src"]
18+	path = pkg/libplacebo/src
19+	url = https://code.videolan.org/videolan/libplacebo.git
20+[submodule "pkg/dav1d/src"]
21+	path = pkg/dav1d/src
22+	url = https://github.com/videolan/dav1d.git
23+	ignore = all
24+[submodule "pkg/libass/src"]
25+	path = pkg/libass/src
26+	url = https://github.com/libass/libass
27+	ignore = all
28+[submodule "pkg/fribidi/src"]
29+	path = pkg/fribidi/src
30+	url = https://github.com/fribidi/fribidi
+14, -0
 1@@ -0,0 +1,14 @@
 2+# alsa-lib
 3+
 4+## config.h
 5+Generated with
 6+
 7+	./configure \
 8+		--prefix= \
 9+		--disable-hwdep \
10+		--disable-ucm \
11+		--without-libdl
12+
13+## Updating
14+
15+Make sure to update the version in `alsa/version.h`.
+64, -0
 1@@ -0,0 +1,64 @@
 2+/**
 3+ * \file include/asoundlib.h
 4+ * \brief Application interface library for the ALSA driver
 5+ * \author Jaroslav Kysela <perex@perex.cz>
 6+ * \author Abramo Bagnara <abramo@alsa-project.org>
 7+ * \author Takashi Iwai <tiwai@suse.de>
 8+ * \date 1998-2001
 9+ *
10+ * Application interface library for the ALSA driver
11+ */
12+/*
13+ *   This library is free software; you can redistribute it and/or modify
14+ *   it under the terms of the GNU Lesser General Public License as
15+ *   published by the Free Software Foundation; either version 2.1 of
16+ *   the License, or (at your option) any later version.
17+ *
18+ *   This program is distributed in the hope that it will be useful,
19+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
20+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21+ *   GNU Lesser General Public License for more details.
22+ *
23+ *   You should have received a copy of the GNU Lesser General Public
24+ *   License along with this library; if not, write to the Free Software
25+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
26+ *
27+ */
28+
29+#ifndef __ASOUNDLIB_H
30+#define __ASOUNDLIB_H
31+
32+#include <unistd.h>
33+#include <stdio.h>
34+#include <stdlib.h>
35+#include <sys/types.h>
36+#include <string.h>
37+#include <fcntl.h>
38+#include <assert.h>
39+#include <poll.h>
40+#include <errno.h>
41+#include <stdarg.h>
42+#include <endian.h>
43+
44+#ifndef __GNUC__
45+#define __inline__ inline
46+#endif
47+
48+#include <alsa/asoundef.h>
49+#include <alsa/version.h>
50+#include <alsa/global.h>
51+#include <alsa/input.h>
52+#include <alsa/output.h>
53+#include <alsa/error.h>
54+#include <alsa/conf.h>
55+#include <alsa/pcm.h>
56+#include <alsa/rawmidi.h>
57+#include <alsa/timer.h>
58+#include <alsa/control.h>
59+#include <alsa/mixer.h>
60+#include <alsa/seq_event.h>
61+#include <alsa/seq.h>
62+#include <alsa/seqmid.h>
63+#include <alsa/seq_midi_event.h>
64+
65+#endif /* __ASOUNDLIB_H */
+14, -0
 1@@ -0,0 +1,14 @@
 2+/*
 3+ *  version.h
 4+ */
 5+
 6+#define SND_LIB_MAJOR		1 /**< major number of library version */
 7+#define SND_LIB_MINOR		2 /**< minor number of library version */
 8+#define SND_LIB_SUBMINOR	5 /**< subminor number of library version */
 9+#define SND_LIB_EXTRAVER	1000000 /**< extra version number, used mainly for betas */
10+/** library version */
11+#define SND_LIB_VER(maj, min, sub) (((maj)<<16)|((min)<<8)|(sub))
12+#define SND_LIB_VERSION SND_LIB_VER(SND_LIB_MAJOR, SND_LIB_MINOR, SND_LIB_SUBMINOR)
13+/** library version (string) */
14+#define SND_LIB_VERSION_STR	"1.2.5.1"
15+
+98, -0
 1@@ -0,0 +1,98 @@
 2+#define ALOAD_DEVICE_DIRECTORY "/dev/"
 3+#define ALSA_CONFIG_DIR "/share/alsa"
 4+/* #undef ALSA_DEBUG_ASSERT */
 5+#define ALSA_DEVICE_DIRECTORY "/dev/snd/"
 6+#define ALSA_PKGCONF_DIR "/lib/pkgconfig"
 7+#define ALSA_PLUGIN_DIR "/lib/alsa-lib"
 8+/* #undef BUILD_HWDEP */
 9+#define BUILD_MIXER "1"
10+#define BUILD_PCM "1"
11+#define BUILD_PCM_PLUGIN_ADPCM "1"
12+#define BUILD_PCM_PLUGIN_ALAW "1"
13+#define BUILD_PCM_PLUGIN_LFLOAT "1"
14+#define BUILD_PCM_PLUGIN_MMAP_EMUL "1"
15+#define BUILD_PCM_PLUGIN_MULAW "1"
16+#define BUILD_PCM_PLUGIN_RATE "1"
17+#define BUILD_PCM_PLUGIN_ROUTE "1"
18+#define BUILD_RAWMIDI "1"
19+#define BUILD_SEQ "1"
20+#define BUILD_TOPOLOGY "1"
21+/* #undef BUILD_UCM */
22+#define HAVE_ATTRIBUTE_SYMVER 1
23+#define HAVE_CLOCK_GETTIME 1
24+#define HAVE_DLFCN_H 1
25+#define HAVE_EACCESS 1
26+#define HAVE_ENDIAN_H 1
27+#define HAVE_INTTYPES_H 1
28+/* #undef HAVE_LFS */
29+/* #undef HAVE_LIBDL */
30+#define HAVE_LIBPTHREAD 1
31+/* #undef HAVE_LIBRESMGR */
32+#define HAVE_LIBRT 1
33+#define HAVE_MALLOC_H 1
34+#define HAVE_MEMORY_H 1
35+#define HAVE_MMX 1
36+#define HAVE_PTHREAD_MUTEX_RECURSIVE /**/
37+/* #undef HAVE_SOFT_FLOAT */
38+#define HAVE_STDINT_H 1
39+#define HAVE_STDLIB_H 1
40+#define HAVE_STRINGS_H 1
41+#define HAVE_STRING_H 1
42+/* #undef HAVE_SYS_ENDIAN_H */
43+#define HAVE_SYS_SHM_H 1
44+#define HAVE_SYS_STAT_H 1
45+#define HAVE_SYS_TYPES_H 1
46+#define HAVE_UNISTD_H 1
47+#define HAVE_USELOCALE 1
48+/* #undef HAVE_WORDEXP */
49+#ifdef HAVE__THREAD_LOCAL
50+# define HAVE___THREAD 1
51+# define __thread _Thread_local
52+#endif
53+/* #undef LOCKLESS_DMIX_DEFAULT */
54+#define LT_OBJDIR ".libs/"
55+/* #undef NDEBUG */
56+#define PACKAGE "alsa-lib"
57+#define PACKAGE_BUGREPORT ""
58+#define PACKAGE_NAME "alsa-lib"
59+#define PACKAGE_STRING "alsa-lib 1.2.11"
60+#define PACKAGE_TARNAME "alsa-lib"
61+#define PACKAGE_URL ""
62+#define PACKAGE_VERSION "1.2.11"
63+#define SND_MAX_CARDS 32
64+#define STDC_HEADERS 1
65+#define SUPPORT_ALOAD "1"
66+/* #undef SUPPORT_RESMGR */
67+#define THREAD_SAFE_API "1"
68+#define TIME_WITH_SYS_TIME 1
69+#define TMPDIR "/tmp"
70+#ifndef _ALL_SOURCE
71+# define _ALL_SOURCE 1
72+#endif
73+#ifndef _GNU_SOURCE
74+# define _GNU_SOURCE 1
75+#endif
76+#ifndef _POSIX_PTHREAD_SEMANTICS
77+# define _POSIX_PTHREAD_SEMANTICS 1
78+#endif
79+#ifndef _TANDEM_SOURCE
80+# define _TANDEM_SOURCE 1
81+#endif
82+#ifndef __EXTENSIONS__
83+# define __EXTENSIONS__ 1
84+#endif
85+#define VERSION "1.2.11"
86+#define VERSIONED_SYMBOLS /**/
87+#ifndef _DARWIN_USE_64_BIT_INODE
88+# define _DARWIN_USE_64_BIT_INODE 1
89+#endif
90+/* #undef _FILE_OFFSET_BITS */
91+/* #undef _LARGE_FILES */
92+/* #undef _MINIX */
93+/* #undef _POSIX_1_SOURCE */
94+/* #undef _POSIX_SOURCE */
95+#define __SYMBOL_PREFIX ""
96+/* #undef const */
97+#ifndef __cplusplus
98+/* #undef inline */
99+#endif
+2, -0
1@@ -0,0 +1,2 @@
2+&_snd_module_control_shm,
3+&_snd_module_control_ext,
+177, -0
  1@@ -0,0 +1,177 @@
  2+cflags{
  3+	'-std=gnu99', '-Wall', '-Wno-unused-const-variable', '-Wno-maybe-uninitialized',
  4+	'-D _GNU_SOURCE',
  5+	'-I $outdir',
  6+	'-I $dir',
  7+	'-I $dir/alsa',
  8+	'-I $srcdir/include',
  9+	'-isystem $builddir/pkg/linux-headers/include',
 10+}
 11+
 12+build('cat', '$outdir/config.h', {
 13+	'$builddir/probe/HAVE__THREAD_LOCAL',
 14+	'$dir/config.h',
 15+})
 16+
 17+pkg.hdrs = {
 18+	copy('$outdir/include/alsa', '$srcdir/include/alsa', {
 19+		'asoundef.h',
 20+		'conf.h',
 21+		'control.h',
 22+		'error.h',
 23+		'global.h',
 24+		'input.h',
 25+		'mixer.h',
 26+		'mixer_abst.h',
 27+		'output.h',
 28+		'pcm.h',
 29+		'pcm_old.h',
 30+		'pcm_plugin.h',
 31+		'pcm_rate.h',
 32+		'rawmidi.h',
 33+		'seq.h',
 34+		'seq_event.h',
 35+		'seq_midi_event.h',
 36+		'seqmid.h',
 37+		'timer.h',
 38+	}),
 39+	copy('$outdir/include/alsa', '$dir/alsa', {'asoundlib.h', 'version.h'}),
 40+}
 41+pkg.deps = {
 42+	'$outdir/config.h',
 43+	'pkg/linux-headers/headers',
 44+}
 45+
 46+cc('src/pcm/pcm.c')
 47+build('objcopy', '$outdir/src/pcm/pcm.nowarn.c.o', '$outdir/src/pcm/pcm.c.o', {
 48+	objcopyflags='-R .gnu.warning.snd_pcm_hwsync',
 49+})
 50+
 51+lib('libasound.a', [[src/(
 52+	conf.c confeval.c confmisc.c input.c output.c async.c error.c dlmisc.c socket.c shmarea.c userfile.c names.c
 53+	control/(
 54+		cards.c tlv.c eld.c namehint.c hcontrol.c
 55+		control.c control_hw.c control_empty.c
 56+		setup.c ctlparse.c
 57+		control_symbols.c
 58+		control_shm.c
 59+		control_ext.c
 60+	)
 61+	mixer/(bag.c mixer.c simple.c simple_none.c)
 62+	pcm/(
 63+		mask.c interval.c
 64+		pcm.nowarn.c.o pcm_params.c pcm_simple.c
 65+		pcm_hw.c pcm_misc.c pcm_mmap.c pcm_symbols.c
 66+		pcm_generic.c pcm_plugin.c
 67+		pcm_copy.c
 68+		pcm_linear.c
 69+		pcm_route.c
 70+		pcm_mulaw.c
 71+		pcm_alaw.c
 72+		pcm_adpcm.c
 73+		pcm_rate.c pcm_rate_linear.c
 74+		pcm_plug.c
 75+		pcm_multi.c
 76+		pcm_shm.c
 77+		pcm_file.c
 78+		pcm_null.c
 79+		pcm_empty.c
 80+		pcm_share.c
 81+		pcm_hooks.c
 82+		pcm_lfloat.c
 83+		pcm_dmix.c
 84+		pcm_dshare.c
 85+		pcm_dsnoop.c
 86+		pcm_direct.c
 87+		pcm_asym.c
 88+		pcm_iec958.c
 89+		pcm_softvol.c
 90+		pcm_mmap_emul.c
 91+	)
 92+	rawmidi/(
 93+		rawmidi.c rawmidi_hw.c rawmidi_symbols.c
 94+	)
 95+	timer/(
 96+		timer.c timer_hw.c timer_query.c timer_query_hw.c
 97+		timer_symbols.c
 98+	)
 99+)]])
100+
101+local conf = [[
102+	alsa.conf
103+	cards/(
104+		aliases.conf
105+		AACI.conf
106+		ATIIXP.conf
107+		ATIIXP-SPDMA.conf
108+		ATIIXP-MODEM.conf
109+		AU8810.conf
110+		AU8820.conf
111+		AU8830.conf
112+		Audigy.conf
113+		Audigy2.conf
114+		Aureon51.conf
115+		Aureon71.conf
116+		CA0106.conf
117+		CMI8338.conf
118+		CMI8338-SWIEC.conf
119+		CMI8738-MC6.conf
120+		CMI8738-MC8.conf
121+		CMI8788.conf
122+		CS46xx.conf
123+		Echo_Echo3G.conf
124+		EMU10K1.conf
125+		EMU10K1X.conf
126+		ENS1370.conf
127+		ENS1371.conf
128+		ES1968.conf
129+		FM801.conf
130+		FWSpeakers.conf
131+		FireWave.conf
132+		GUS.conf
133+		HDA-Intel.conf
134+		HdmiLpeAudio.conf
135+		ICE1712.conf
136+		ICE1724.conf
137+		ICH.conf
138+		ICH4.conf
139+		ICH-MODEM.conf
140+		Loopback.conf
141+		Maestro3.conf
142+		NFORCE.conf
143+		PC-Speaker.conf
144+		pistachio-card.conf
145+		PMac.conf
146+		PMacToonie.conf
147+		PS3.conf
148+		RME9636.conf
149+		RME9652.conf
150+		SI7018.conf
151+		SB-XFi.conf
152+		TRID4DWAVENX.conf
153+		USB-Audio.conf
154+		YMF744.conf
155+		vc4-hdmi.conf
156+		VIA686A.conf
157+		VIA8233.conf
158+		VIA8233A.conf
159+		VIA8237.conf
160+		VX222.conf
161+		VXPocket.conf
162+		VXPocket440.conf
163+	)
164+	ctl/default.conf
165+	pcm/(
166+		default.conf front.conf rear.conf center_lfe.conf side.conf
167+		surround21.conf surround40.conf surround41.conf
168+		surround50.conf surround51.conf
169+		surround71.conf iec958.conf hdmi.conf modem.conf
170+		dmix.conf dsnoop.conf
171+		dpl.conf
172+	)
173+]]
174+for f in iterpaths(conf) do
175+	file('share/alsa/'..f, '644', '$srcdir/src/conf/'..f)
176+end
177+
178+fetch 'git'
+21, -0
 1@@ -0,0 +1,21 @@
 2+From 9d8d34c6a318c90f3414de2d73bbe6652d5637f6 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Fri, 1 Jul 2016 20:09:02 -0700
 5+Subject: [PATCH] Add include/alsa symlink
 6+
 7+---
 8+ include/alsa | 1 +
 9+ 1 file changed, 1 insertion(+)
10+ create mode 120000 include/alsa
11+
12+diff --git a/include/alsa b/include/alsa
13+new file mode 120000
14+index 00000000..945c9b46
15+--- /dev/null
16++++ b/include/alsa
17+@@ -0,0 +1 @@
18++.
19+\ No newline at end of file
20+-- 
21+2.15.0
22+
+905, -0
  1@@ -0,0 +1,905 @@
  2+From c98863254a954696ee168a7a607b2fd60a8680ea Mon Sep 17 00:00:00 2001
  3+From: Michael Forney <mforney@mforney.org>
  4+Date: Wed, 3 Jul 2019 18:15:11 -0700
  5+Subject: [PATCH] Prevent empty top-level declarations
  6+
  7+These macros may be defined as a function definition or defined
  8+away. In both cases, the ';' after the macro invocation to be treated
  9+as an empty top-level declaration, which is not allowed in ISO C.
 10+---
 11+ include/alsa-symbols.h     |  8 ++++----
 12+ src/conf.c                 |  4 ++--
 13+ src/confmisc.c             | 32 ++++++++++++++++----------------
 14+ src/control/control.c      |  6 +++---
 15+ src/control/control_hw.c   |  2 +-
 16+ src/control/control_shm.c  |  2 +-
 17+ src/dlmisc.c               |  4 ++--
 18+ src/hwdep/hwdep_hw.c       |  2 +-
 19+ src/names.c                |  4 ++--
 20+ src/pcm/pcm.c              | 30 +++++++++++++++---------------
 21+ src/pcm/pcm_adpcm.c        |  2 +-
 22+ src/pcm/pcm_alaw.c         |  2 +-
 23+ src/pcm/pcm_asym.c         |  2 +-
 24+ src/pcm/pcm_copy.c         |  2 +-
 25+ src/pcm/pcm_dmix.c         |  2 +-
 26+ src/pcm/pcm_dshare.c       |  2 +-
 27+ src/pcm/pcm_dsnoop.c       |  2 +-
 28+ src/pcm/pcm_empty.c        |  2 +-
 29+ src/pcm/pcm_file.c         |  2 +-
 30+ src/pcm/pcm_hooks.c        |  4 ++--
 31+ src/pcm/pcm_hw.c           |  2 +-
 32+ src/pcm/pcm_iec958.c       |  2 +-
 33+ src/pcm/pcm_ladspa.c       |  2 +-
 34+ src/pcm/pcm_lfloat.c       |  2 +-
 35+ src/pcm/pcm_linear.c       |  2 +-
 36+ src/pcm/pcm_meter.c        |  2 +-
 37+ src/pcm/pcm_mmap_emul.c    |  2 +-
 38+ src/pcm/pcm_mulaw.c        |  2 +-
 39+ src/pcm/pcm_multi.c        |  2 +-
 40+ src/pcm/pcm_null.c         |  2 +-
 41+ src/pcm/pcm_plug.c         |  2 +-
 42+ src/pcm/pcm_rate.c         |  2 +-
 43+ src/pcm/pcm_route.c        |  2 +-
 44+ src/pcm/pcm_share.c        |  2 +-
 45+ src/pcm/pcm_shm.c          |  2 +-
 46+ src/pcm/pcm_softvol.c      |  2 +-
 47+ src/rawmidi/rawmidi_hw.c   |  2 +-
 48+ src/rawmidi/rawmidi_virt.c |  2 +-
 49+ src/seq/seq_hw.c           |  2 +-
 50+ src/timer/timer.c          | 10 +++++-----
 51+ src/timer/timer_hw.c       |  2 +-
 52+ src/timer/timer_query.c    |  6 +++---
 53+ src/timer/timer_query_hw.c |  2 +-
 54+ 43 files changed, 87 insertions(+), 87 deletions(-)
 55+
 56+diff --git a/include/alsa-symbols.h b/include/alsa-symbols.h
 57+index 2298cb50..be37f143 100644
 58+--- a/include/alsa-symbols.h
 59++++ b/include/alsa-symbols.h
 60+@@ -36,9 +36,9 @@
 61+ 	extern __typeof (real) real __attribute__((symver (#name "@@" #version)))
 62+ #else
 63+ #define symbol_version(real, name, version) \
 64+-	__asm__ (".symver " ASM_NAME(#real) "," ASM_NAME(#name) "@" #version)
 65++	__asm__ (".symver " ASM_NAME(#real) "," ASM_NAME(#name) "@" #version);
 66+ #define default_symbol_version(real, name, version) \
 67+-	__asm__ (".symver " ASM_NAME(#real) "," ASM_NAME(#name) "@@" #version)
 68++	__asm__ (".symver " ASM_NAME(#real) "," ASM_NAME(#name) "@@" #version);
 69+ #endif
 70+ 
 71+ #ifdef __clang__
 72+@@ -57,11 +57,11 @@
 73+ #if defined(__alpha__) || defined(__mips__)
 74+ #define use_default_symbol_version(real, name, version) \
 75+         __asm__ (".weak " ASM_NAME(#name)); \
 76+-        __asm__ (ASM_NAME(#name) " = " ASM_NAME(#real))
 77++        __asm__ (ASM_NAME(#name) " = " ASM_NAME(#real));
 78+ #else
 79+ #define use_default_symbol_version(real, name, version) \
 80+ 	__asm__ (".weak " ASM_NAME(#name)); \
 81+-	__asm__ (".set " ASM_NAME(#name) "," ASM_NAME(#real))
 82++	__asm__ (".set " ASM_NAME(#name) "," ASM_NAME(#real));
 83+ #endif
 84+ #endif
 85+ 
 86+diff --git a/src/conf.c b/src/conf.c
 87+index eca44c03..25ed58c0 100644
 88+--- a/src/conf.c
 89++++ b/src/conf.c
 90+@@ -4311,7 +4311,7 @@ int snd_config_hook_load(snd_config_t *root, snd_config_t *config, snd_config_t
 91+ 	return err;
 92+ }
 93+ #ifndef DOC_HIDDEN
 94+-SND_DLSYM_BUILD_VERSION(snd_config_hook_load, SND_CONFIG_DLSYM_VERSION_HOOK);
 95++SND_DLSYM_BUILD_VERSION(snd_config_hook_load, SND_CONFIG_DLSYM_VERSION_HOOK)
 96+ #endif
 97+ 
 98+ #ifndef DOC_HIDDEN
 99+@@ -4481,7 +4481,7 @@ __fin_err:
100+ 	return err;
101+ }
102+ #ifndef DOC_HIDDEN
103+-SND_DLSYM_BUILD_VERSION(snd_config_hook_load_for_all_cards, SND_CONFIG_DLSYM_VERSION_HOOK);
104++SND_DLSYM_BUILD_VERSION(snd_config_hook_load_for_all_cards, SND_CONFIG_DLSYM_VERSION_HOOK)
105+ #endif
106+ 
107+ /** 
108+diff --git a/src/confmisc.c b/src/confmisc.c
109+index 9b30d6c1..a819593d 100644
110+--- a/src/confmisc.c
111++++ b/src/confmisc.c
112+@@ -330,7 +330,7 @@ int snd_func_getenv(snd_config_t **dst, snd_config_t *root, snd_config_t *src,
113+ 	return err;
114+ }
115+ #ifndef DOC_HIDDEN
116+-SND_DLSYM_BUILD_VERSION(snd_func_getenv, SND_CONFIG_DLSYM_VERSION_EVALUATE);
117++SND_DLSYM_BUILD_VERSION(snd_func_getenv, SND_CONFIG_DLSYM_VERSION_EVALUATE)
118+ #endif
119+ 
120+ /**
121+@@ -383,7 +383,7 @@ int snd_func_igetenv(snd_config_t **dst, snd_config_t *root, snd_config_t *src,
122+ 	return 0;
123+ }
124+ #ifndef DOC_HIDDEN
125+-SND_DLSYM_BUILD_VERSION(snd_func_igetenv, SND_CONFIG_DLSYM_VERSION_EVALUATE);
126++SND_DLSYM_BUILD_VERSION(snd_func_igetenv, SND_CONFIG_DLSYM_VERSION_EVALUATE)
127+ #endif
128+ 		
129+ /**
130+@@ -474,7 +474,7 @@ int snd_func_concat(snd_config_t **dst, snd_config_t *root, snd_config_t *src,
131+ 	return err;
132+ }
133+ #ifndef DOC_HIDDEN
134+-SND_DLSYM_BUILD_VERSION(snd_func_concat, SND_CONFIG_DLSYM_VERSION_EVALUATE);
135++SND_DLSYM_BUILD_VERSION(snd_func_concat, SND_CONFIG_DLSYM_VERSION_EVALUATE)
136+ #endif
137+ 
138+ 
139+@@ -563,7 +563,7 @@ int snd_func_iadd(snd_config_t **dst, snd_config_t *root,
140+ 	return snd_func_iops(dst, root, src, private_data, 0);
141+ }
142+ #ifndef DOC_HIDDEN
143+-SND_DLSYM_BUILD_VERSION(snd_func_iadd, SND_CONFIG_DLSYM_VERSION_EVALUATE);
144++SND_DLSYM_BUILD_VERSION(snd_func_iadd, SND_CONFIG_DLSYM_VERSION_EVALUATE)
145+ #endif
146+ 
147+ /**
148+@@ -589,7 +589,7 @@ int snd_func_imul(snd_config_t **dst, snd_config_t *root,
149+ 	return snd_func_iops(dst, root, src, private_data, 1);
150+ }
151+ #ifndef DOC_HIDDEN
152+-SND_DLSYM_BUILD_VERSION(snd_func_imul, SND_CONFIG_DLSYM_VERSION_EVALUATE);
153++SND_DLSYM_BUILD_VERSION(snd_func_imul, SND_CONFIG_DLSYM_VERSION_EVALUATE)
154+ #endif
155+ 
156+ /**
157+@@ -620,7 +620,7 @@ int snd_func_datadir(snd_config_t **dst, snd_config_t *root ATTRIBUTE_UNUSED,
158+ 	return snd_config_imake_string(dst, id, snd_config_topdir());
159+ }
160+ #ifndef DOC_HIDDEN
161+-SND_DLSYM_BUILD_VERSION(snd_func_datadir, SND_CONFIG_DLSYM_VERSION_EVALUATE);
162++SND_DLSYM_BUILD_VERSION(snd_func_datadir, SND_CONFIG_DLSYM_VERSION_EVALUATE)
163+ #endif
164+ 
165+ static int open_ctl(long card, snd_ctl_t **ctl)
166+@@ -704,7 +704,7 @@ int snd_func_private_string(snd_config_t **dst, snd_config_t *root ATTRIBUTE_UNU
167+ 	return err;
168+ }
169+ #ifndef DOC_HIDDEN
170+-SND_DLSYM_BUILD_VERSION(snd_func_private_string, SND_CONFIG_DLSYM_VERSION_EVALUATE);
171++SND_DLSYM_BUILD_VERSION(snd_func_private_string, SND_CONFIG_DLSYM_VERSION_EVALUATE)
172+ #endif
173+ 
174+ /**
175+@@ -825,7 +825,7 @@ int snd_func_private_card_driver(snd_config_t **dst, snd_config_t *root ATTRIBUT
176+ 	return err;
177+ }
178+ #ifndef DOC_HIDDEN
179+-SND_DLSYM_BUILD_VERSION(snd_func_private_card_driver, SND_CONFIG_DLSYM_VERSION_EVALUATE);
180++SND_DLSYM_BUILD_VERSION(snd_func_private_card_driver, SND_CONFIG_DLSYM_VERSION_EVALUATE)
181+ #endif
182+ 
183+ static int parse_card(snd_config_t *root, snd_config_t *src,
184+@@ -889,7 +889,7 @@ int snd_func_card_inum(snd_config_t **dst, snd_config_t *root, snd_config_t *src
185+ 	return err;
186+ }
187+ #ifndef DOC_HIDDEN
188+-SND_DLSYM_BUILD_VERSION(snd_func_card_inum, SND_CONFIG_DLSYM_VERSION_EVALUATE);
189++SND_DLSYM_BUILD_VERSION(snd_func_card_inum, SND_CONFIG_DLSYM_VERSION_EVALUATE)
190+ #endif
191+ 
192+ /**
193+@@ -926,7 +926,7 @@ int snd_func_card_driver(snd_config_t **dst, snd_config_t *root, snd_config_t *s
194+ 	return err;
195+ }
196+ #ifndef DOC_HIDDEN
197+-SND_DLSYM_BUILD_VERSION(snd_func_card_driver, SND_CONFIG_DLSYM_VERSION_EVALUATE);
198++SND_DLSYM_BUILD_VERSION(snd_func_card_driver, SND_CONFIG_DLSYM_VERSION_EVALUATE)
199+ #endif
200+ 
201+ /**
202+@@ -977,7 +977,7 @@ int snd_func_card_id(snd_config_t **dst, snd_config_t *root, snd_config_t *src,
203+ 	return err;
204+ }
205+ #ifndef DOC_HIDDEN
206+-SND_DLSYM_BUILD_VERSION(snd_func_card_id, SND_CONFIG_DLSYM_VERSION_EVALUATE);
207++SND_DLSYM_BUILD_VERSION(snd_func_card_id, SND_CONFIG_DLSYM_VERSION_EVALUATE)
208+ #endif
209+ 
210+ /**
211+@@ -1028,7 +1028,7 @@ int snd_func_card_name(snd_config_t **dst, snd_config_t *root,
212+ 	return err;
213+ }
214+ #ifndef DOC_HIDDEN
215+-SND_DLSYM_BUILD_VERSION(snd_func_card_name, SND_CONFIG_DLSYM_VERSION_EVALUATE);
216++SND_DLSYM_BUILD_VERSION(snd_func_card_name, SND_CONFIG_DLSYM_VERSION_EVALUATE)
217+ #endif
218+ 
219+ #ifdef DOXYGEN
220+@@ -1122,7 +1122,7 @@ int snd_func_pcm_id(snd_config_t **dst, snd_config_t *root, snd_config_t *src, v
221+ 	return err;
222+ }
223+ #ifndef DOC_HIDDEN
224+-SND_DLSYM_BUILD_VERSION(snd_func_pcm_id, SND_CONFIG_DLSYM_VERSION_EVALUATE);
225++SND_DLSYM_BUILD_VERSION(snd_func_pcm_id, SND_CONFIG_DLSYM_VERSION_EVALUATE)
226+ #endif
227+ 
228+ /**
229+@@ -1235,7 +1235,7 @@ int snd_func_pcm_args_by_class(snd_config_t **dst, snd_config_t *root, snd_confi
230+ 	return err;
231+ }
232+ #ifndef DOC_HIDDEN
233+-SND_DLSYM_BUILD_VERSION(snd_func_pcm_args_by_class, SND_CONFIG_DLSYM_VERSION_EVALUATE);
234++SND_DLSYM_BUILD_VERSION(snd_func_pcm_args_by_class, SND_CONFIG_DLSYM_VERSION_EVALUATE)
235+ #endif
236+ 
237+ /**
238+@@ -1289,7 +1289,7 @@ int snd_func_private_pcm_subdevice(snd_config_t **dst, snd_config_t *root ATTRIB
239+ 	return err;
240+ }
241+ #ifndef DOC_HIDDEN
242+-SND_DLSYM_BUILD_VERSION(snd_func_private_pcm_subdevice, SND_CONFIG_DLSYM_VERSION_EVALUATE);
243++SND_DLSYM_BUILD_VERSION(snd_func_private_pcm_subdevice, SND_CONFIG_DLSYM_VERSION_EVALUATE)
244+ #endif
245+ 
246+ #endif /* BUILD_PCM */
247+@@ -1391,7 +1391,7 @@ int snd_func_refer(snd_config_t **dst, snd_config_t *root, snd_config_t *src,
248+ 	return err;
249+ }
250+ #ifndef DOC_HIDDEN
251+-SND_DLSYM_BUILD_VERSION(snd_func_refer, SND_CONFIG_DLSYM_VERSION_EVALUATE);
252++SND_DLSYM_BUILD_VERSION(snd_func_refer, SND_CONFIG_DLSYM_VERSION_EVALUATE)
253+ #endif
254+ 
255+ #ifndef DOC_HIDDEN
256+diff --git a/src/control/control.c b/src/control/control.c
257+index d77ab24c..4c2ae7f5 100644
258+--- a/src/control/control.c
259++++ b/src/control/control.c
260+@@ -2738,7 +2738,7 @@ int snd_ctl_elem_info_is_indirect(const snd_ctl_elem_info_t *obj)
261+ 	assert(obj);
262+ 	return 0;
263+ }
264+-link_warning(snd_ctl_elem_info_is_indirect, "Warning: snd_ctl_elem_info_is_indirect is deprecated, do not use it");
265++link_warning(snd_ctl_elem_info_is_indirect, "Warning: snd_ctl_elem_info_is_indirect is deprecated, do not use it")
266+ 
267+ /**
268+  * \brief Get owner of a locked element
269+@@ -2895,7 +2895,7 @@ int snd_ctl_elem_info_get_dimensions(const snd_ctl_elem_info_t *obj)
270+ 	return -EINVAL;
271+ #endif
272+ }
273+-use_default_symbol_version(__snd_ctl_elem_info_get_dimensions, snd_ctl_elem_info_get_dimensions, ALSA_0.9.3);
274++use_default_symbol_version(__snd_ctl_elem_info_get_dimensions, snd_ctl_elem_info_get_dimensions, ALSA_0.9.3)
275+ 
276+ /**
277+  * \brief Get specified of dimension width for given element
278+@@ -2921,7 +2921,7 @@ int snd_ctl_elem_info_get_dimension(const snd_ctl_elem_info_t *obj, unsigned int
279+ 	return -EINVAL;
280+ #endif /* deprecated */
281+ }
282+-use_default_symbol_version(__snd_ctl_elem_info_get_dimension, snd_ctl_elem_info_get_dimension, ALSA_0.9.3);
283++use_default_symbol_version(__snd_ctl_elem_info_get_dimension, snd_ctl_elem_info_get_dimension, ALSA_0.9.3)
284+ 
285+ /**
286+  * \brief Set width to a specified dimension level of given element information.
287+diff --git a/src/control/control_hw.c b/src/control/control_hw.c
288+index a353767d..beba09bf 100644
289+--- a/src/control/control_hw.c
290++++ b/src/control/control_hw.c
291+@@ -547,5 +547,5 @@ int _snd_ctl_hw_open(snd_ctl_t **handlep, char *name, snd_config_t *root ATTRIBU
292+ 	return snd_ctl_hw_open(handlep, name, card, mode);
293+ }
294+ #ifndef DOC_HIDDEN
295+-SND_DLSYM_BUILD_VERSION(_snd_ctl_hw_open, SND_CONTROL_DLSYM_VERSION);
296++SND_DLSYM_BUILD_VERSION(_snd_ctl_hw_open, SND_CONTROL_DLSYM_VERSION)
297+ #endif
298+diff --git a/src/control/control_shm.c b/src/control/control_shm.c
299+index 3d1555ee..135dd805 100644
300+--- a/src/control/control_shm.c
301++++ b/src/control/control_shm.c
302+@@ -619,4 +619,4 @@ int _snd_ctl_shm_open(snd_ctl_t **handlep, char *name, snd_config_t *root, snd_c
303+ 	snd_config_delete(sconfig);
304+ 	return err;
305+ }
306+-SND_DLSYM_BUILD_VERSION(_snd_ctl_shm_open, SND_CONTROL_DLSYM_VERSION);
307++SND_DLSYM_BUILD_VERSION(_snd_ctl_shm_open, SND_CONTROL_DLSYM_VERSION)
308+diff --git a/src/dlmisc.c b/src/dlmisc.c
309+index d7aff456..96784197 100644
310+--- a/src/dlmisc.c
311++++ b/src/dlmisc.c
312+@@ -171,8 +171,8 @@ EXPORT_SYMBOL void *INTERNAL(snd_dlopen_old)(const char *name, int mode)
313+ #endif
314+ 
315+ #ifndef DOC_HIDDEN
316+-use_symbol_version(__snd_dlopen_old, snd_dlopen, ALSA_0.9);
317+-use_default_symbol_version(__snd_dlopen, snd_dlopen, ALSA_1.1.6);
318++use_symbol_version(__snd_dlopen_old, snd_dlopen, ALSA_0.9)
319++use_default_symbol_version(__snd_dlopen, snd_dlopen, ALSA_1.1.6)
320+ #endif /* DOC_HIDDEN */
321+ 
322+ /**
323+diff --git a/src/hwdep/hwdep_hw.c b/src/hwdep/hwdep_hw.c
324+index 0f28f23b..195c6107 100644
325+--- a/src/hwdep/hwdep_hw.c
326++++ b/src/hwdep/hwdep_hw.c
327+@@ -179,4 +179,4 @@ int _snd_hwdep_hw_open(snd_hwdep_t **hwdep, char *name,
328+ 		return -EINVAL;
329+ 	return snd_hwdep_hw_open(hwdep, name, card, device, mode);
330+ }
331+-SND_DLSYM_BUILD_VERSION(_snd_hwdep_hw_open, SND_HWDEP_DLSYM_VERSION);
332++SND_DLSYM_BUILD_VERSION(_snd_hwdep_hw_open, SND_HWDEP_DLSYM_VERSION)
333+diff --git a/src/names.c b/src/names.c
334+index 922ef781..8e2f029f 100644
335+--- a/src/names.c
336++++ b/src/names.c
337+@@ -44,7 +44,7 @@ int snd_names_list(const char *iface ATTRIBUTE_UNUSED,
338+ {
339+ 	return -ENXIO;
340+ }
341+-link_warning(snd_names_list, "Warning: snd_names_list is deprecated, use snd_device_name_hint");
342++link_warning(snd_names_list, "Warning: snd_names_list is deprecated, use snd_device_name_hint")
343+ 
344+ /**
345+  * \brief This function is unimplemented.
346+@@ -53,4 +53,4 @@ link_warning(snd_names_list, "Warning: snd_names_list is deprecated, use snd_dev
347+ void snd_names_list_free(snd_devname_t *list ATTRIBUTE_UNUSED)
348+ {
349+ }
350+-link_warning(snd_names_list_free, "Warning: snd_names_list_free is deprecated, use snd_device_name_free_hint");
351++link_warning(snd_names_list_free, "Warning: snd_names_list_free is deprecated, use snd_device_name_free_hint")
352+diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c
353+index ab3bbda7..18b1246e 100644
354+--- a/src/pcm/pcm.c
355++++ b/src/pcm/pcm.c
356+@@ -1544,7 +1544,7 @@ snd_pcm_sframes_t snd_pcm_forward(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
357+ 	snd_pcm_unlock(pcm->fast_op_arg);
358+ 	return result;
359+ }
360+-use_default_symbol_version(__snd_pcm_forward, snd_pcm_forward, ALSA_0.9.0rc8);
361++use_default_symbol_version(__snd_pcm_forward, snd_pcm_forward, ALSA_0.9.0rc8)
362+ 
363+ /**
364+  * \brief Write interleaved frames to a PCM
365+@@ -2256,7 +2256,7 @@ const char *snd_pcm_start_mode_name(snd_pcm_start_t mode)
366+ }
367+ 
368+ #ifndef DOC_HIDDEN
369+-link_warning(snd_pcm_start_mode_name, "Warning: start_mode is deprecated, consider to use start_threshold");
370++link_warning(snd_pcm_start_mode_name, "Warning: start_mode is deprecated, consider to use start_threshold")
371+ #endif
372+ 
373+ /**
374+@@ -2272,7 +2272,7 @@ const char *snd_pcm_xrun_mode_name(snd_pcm_xrun_t mode)
375+ }
376+ 
377+ #ifndef DOC_HIDDEN
378+-link_warning(snd_pcm_xrun_mode_name, "Warning: xrun_mode is deprecated, consider to use stop_threshold");
379++link_warning(snd_pcm_xrun_mode_name, "Warning: xrun_mode is deprecated, consider to use stop_threshold")
380+ #endif
381+ 
382+ /**
383+@@ -2326,7 +2326,7 @@ const char *snd_pcm_type_name(snd_pcm_type_t type)
384+ 		return NULL;
385+ 	return snd_pcm_type_names[type];
386+ }
387+-use_default_symbol_version(__snd_pcm_type_name, snd_pcm_type_name, ALSA_0.9.0);
388++use_default_symbol_version(__snd_pcm_type_name, snd_pcm_type_name, ALSA_0.9.0)
389+ 
390+ /**
391+  * \brief Dump current hardware setup for PCM
392+@@ -6466,7 +6466,7 @@ int snd_pcm_sw_params_set_start_mode(snd_pcm_t *pcm, snd_pcm_sw_params_t *params
393+ }
394+ 
395+ #ifndef DOC_HIDDEN
396+-link_warning(snd_pcm_sw_params_set_start_mode, "Warning: start_mode is deprecated, consider to use start_threshold");
397++link_warning(snd_pcm_sw_params_set_start_mode, "Warning: start_mode is deprecated, consider to use start_threshold")
398+ #endif
399+ 
400+ /**
401+@@ -6482,7 +6482,7 @@ snd_pcm_start_t snd_pcm_sw_params_get_start_mode(const snd_pcm_sw_params_t *para
402+ }
403+ 
404+ #ifndef DOC_HIDDEN
405+-link_warning(snd_pcm_sw_params_get_start_mode, "Warning: start_mode is deprecated, consider to use start_threshold");
406++link_warning(snd_pcm_sw_params_get_start_mode, "Warning: start_mode is deprecated, consider to use start_threshold")
407+ #endif
408+ 
409+ /**
410+@@ -6514,7 +6514,7 @@ int snd_pcm_sw_params_set_xrun_mode(snd_pcm_t *pcm, snd_pcm_sw_params_t *params,
411+ }
412+ 
413+ #ifndef DOC_HIDDEN
414+-link_warning(snd_pcm_sw_params_set_xrun_mode, "Warning: xrun_mode is deprecated, consider to use stop_threshold");
415++link_warning(snd_pcm_sw_params_set_xrun_mode, "Warning: xrun_mode is deprecated, consider to use stop_threshold")
416+ #endif
417+ 
418+ /**
419+@@ -6530,7 +6530,7 @@ snd_pcm_xrun_t snd_pcm_sw_params_get_xrun_mode(const snd_pcm_sw_params_t *params
420+ }
421+ 
422+ #ifndef DOC_HIDDEN
423+-link_warning(snd_pcm_sw_params_get_xrun_mode, "Warning: xrun_mode is deprecated, consider to use stop_threshold");
424++link_warning(snd_pcm_sw_params_get_xrun_mode, "Warning: xrun_mode is deprecated, consider to use stop_threshold")
425+ #endif
426+ 
427+ /**
428+@@ -7030,7 +7030,7 @@ void snd_pcm_status_get_trigger_htstamp(const snd_pcm_status_t *obj, snd_htimest
429+ 	assert(obj && ptr);
430+ 	*ptr = obj->trigger_tstamp;
431+ }
432+-use_default_symbol_version(__snd_pcm_status_get_trigger_htstamp, snd_pcm_status_get_trigger_htstamp, ALSA_0.9.0rc8);
433++use_default_symbol_version(__snd_pcm_status_get_trigger_htstamp, snd_pcm_status_get_trigger_htstamp, ALSA_0.9.0rc8)
434+ 
435+ /** 
436+  * \brief Get "now" timestamp from a PCM status container
437+@@ -7058,7 +7058,7 @@ void snd_pcm_status_get_htstamp(const snd_pcm_status_t *obj, snd_htimestamp_t *p
438+ 	assert(obj && ptr);
439+ 	*ptr = obj->tstamp;
440+ }
441+-use_default_symbol_version(__snd_pcm_status_get_htstamp, snd_pcm_status_get_htstamp, ALSA_0.9.0rc8);
442++use_default_symbol_version(__snd_pcm_status_get_htstamp, snd_pcm_status_get_htstamp, ALSA_0.9.0rc8)
443+ 
444+ /** 
445+  * \brief Get "now" hi-res audio timestamp from a PCM status container
446+@@ -7752,8 +7752,8 @@ snd_pcm_uframes_t _snd_pcm_boundary(snd_pcm_t *pcm)
447+ }
448+ 
449+ #ifndef DOC_HIDDEN
450+-link_warning(_snd_pcm_mmap_hw_ptr, "Warning: _snd_pcm_mmap_hw_ptr() is deprecated, consider to not use this function");
451+-link_warning(_snd_pcm_boundary, "Warning: _snd_pcm_boundary() is deprecated, consider to use snd_pcm_sw_params_current()");
452++link_warning(_snd_pcm_mmap_hw_ptr, "Warning: _snd_pcm_mmap_hw_ptr() is deprecated, consider to not use this function")
453++link_warning(_snd_pcm_boundary, "Warning: _snd_pcm_boundary() is deprecated, consider to use snd_pcm_sw_params_current()")
454+ #endif
455+ 
456+ static const char *const names[SND_PCM_HW_PARAM_LAST_INTERVAL + 1] = {
457+@@ -8018,13 +8018,13 @@ void snd_pcm_unlink_appl_ptr(snd_pcm_t *pcm, snd_pcm_t *slave)
458+ #ifdef USE_VERSIONED_SYMBOLS
459+ 
460+ #define OBSOLETE1(name, what, new) \
461+-  default_symbol_version(__##name, name, new); \
462+-  symbol_version(__old_##name, name, what);
463++  default_symbol_version(__##name, name, new) \
464++  symbol_version(__old_##name, name, what)
465+ 
466+ #else
467+ 
468+ #define OBSOLETE1(name, what, new) \
469+-  use_default_symbol_version(__##name, name, new);
470++  use_default_symbol_version(__##name, name, new)
471+ 
472+ #endif /* USE_VERSIONED_SYMBOLS */
473+ 
474+diff --git a/src/pcm/pcm_adpcm.c b/src/pcm/pcm_adpcm.c
475+index efd41451..fd9b9e8e 100644
476+--- a/src/pcm/pcm_adpcm.c
477++++ b/src/pcm/pcm_adpcm.c
478+@@ -677,5 +677,5 @@ int _snd_pcm_adpcm_open(snd_pcm_t **pcmp, const char *name,
479+ 	return err;
480+ }
481+ #ifndef DOC_HIDDEN
482+-SND_DLSYM_BUILD_VERSION(_snd_pcm_adpcm_open, SND_PCM_DLSYM_VERSION);
483++SND_DLSYM_BUILD_VERSION(_snd_pcm_adpcm_open, SND_PCM_DLSYM_VERSION)
484+ #endif
485+diff --git a/src/pcm/pcm_alaw.c b/src/pcm/pcm_alaw.c
486+index 715b04c7..0a889183 100644
487+--- a/src/pcm/pcm_alaw.c
488++++ b/src/pcm/pcm_alaw.c
489+@@ -552,5 +552,5 @@ int _snd_pcm_alaw_open(snd_pcm_t **pcmp, const char *name,
490+ 	return err;
491+ }
492+ #ifndef DOC_HIDDEN
493+-SND_DLSYM_BUILD_VERSION(_snd_pcm_alaw_open, SND_PCM_DLSYM_VERSION);
494++SND_DLSYM_BUILD_VERSION(_snd_pcm_alaw_open, SND_PCM_DLSYM_VERSION)
495+ #endif
496+diff --git a/src/pcm/pcm_asym.c b/src/pcm/pcm_asym.c
497+index 9c32b1b9..740a85fe 100644
498+--- a/src/pcm/pcm_asym.c
499++++ b/src/pcm/pcm_asym.c
500+@@ -115,5 +115,5 @@ int _snd_pcm_asym_open(snd_pcm_t **pcmp, const char *name ATTRIBUTE_UNUSED,
501+ 	return err;
502+ }
503+ #ifndef DOC_HIDDEN
504+-SND_DLSYM_BUILD_VERSION(_snd_pcm_asym_open, SND_PCM_DLSYM_VERSION);
505++SND_DLSYM_BUILD_VERSION(_snd_pcm_asym_open, SND_PCM_DLSYM_VERSION)
506+ #endif
507+diff --git a/src/pcm/pcm_copy.c b/src/pcm/pcm_copy.c
508+index 1bf745d2..461bc36e 100644
509+--- a/src/pcm/pcm_copy.c
510++++ b/src/pcm/pcm_copy.c
511+@@ -298,5 +298,5 @@ int _snd_pcm_copy_open(snd_pcm_t **pcmp, const char *name,
512+ 	return err;
513+ }
514+ #ifndef DOC_HIDDEN
515+-SND_DLSYM_BUILD_VERSION(_snd_pcm_copy_open, SND_PCM_DLSYM_VERSION);
516++SND_DLSYM_BUILD_VERSION(_snd_pcm_copy_open, SND_PCM_DLSYM_VERSION)
517+ #endif
518+diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c
519+index 55cae3e7..46d4f53e 100644
520+--- a/src/pcm/pcm_dmix.c
521++++ b/src/pcm/pcm_dmix.c
522+@@ -1339,5 +1339,5 @@ int _snd_pcm_dmix_open(snd_pcm_t **pcmp, const char *name,
523+ 	return err;
524+ }
525+ #ifndef DOC_HIDDEN
526+-SND_DLSYM_BUILD_VERSION(_snd_pcm_dmix_open, SND_PCM_DLSYM_VERSION);
527++SND_DLSYM_BUILD_VERSION(_snd_pcm_dmix_open, SND_PCM_DLSYM_VERSION)
528+ #endif
529+diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c
530+index c0329098..e2986d46 100644
531+--- a/src/pcm/pcm_dshare.c
532++++ b/src/pcm/pcm_dshare.c
533+@@ -968,5 +968,5 @@ int _snd_pcm_dshare_open(snd_pcm_t **pcmp, const char *name,
534+ 	return err;
535+ }
536+ #ifndef DOC_HIDDEN
537+-SND_DLSYM_BUILD_VERSION(_snd_pcm_dshare_open, SND_PCM_DLSYM_VERSION);
538++SND_DLSYM_BUILD_VERSION(_snd_pcm_dshare_open, SND_PCM_DLSYM_VERSION)
539+ #endif
540+diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c
541+index bf67c68a..6eb6f66b 100644
542+--- a/src/pcm/pcm_dsnoop.c
543++++ b/src/pcm/pcm_dsnoop.c
544+@@ -820,5 +820,5 @@ int _snd_pcm_dsnoop_open(snd_pcm_t **pcmp, const char *name,
545+ 	return err;
546+ }
547+ #ifndef DOC_HIDDEN
548+-SND_DLSYM_BUILD_VERSION(_snd_pcm_dsnoop_open, SND_PCM_DLSYM_VERSION);
549++SND_DLSYM_BUILD_VERSION(_snd_pcm_dsnoop_open, SND_PCM_DLSYM_VERSION)
550+ #endif
551+diff --git a/src/pcm/pcm_empty.c b/src/pcm/pcm_empty.c
552+index 7cbd349f..c53b922b 100644
553+--- a/src/pcm/pcm_empty.c
554++++ b/src/pcm/pcm_empty.c
555+@@ -111,5 +111,5 @@ int _snd_pcm_empty_open(snd_pcm_t **pcmp, const char *name ATTRIBUTE_UNUSED,
556+ 	return err;
557+ }
558+ #ifndef DOC_HIDDEN
559+-SND_DLSYM_BUILD_VERSION(_snd_pcm_empty_open, SND_PCM_DLSYM_VERSION);
560++SND_DLSYM_BUILD_VERSION(_snd_pcm_empty_open, SND_PCM_DLSYM_VERSION)
561+ #endif
562+diff --git a/src/pcm/pcm_file.c b/src/pcm/pcm_file.c
563+index 90b3f3f5..cd4c9b05 100644
564+--- a/src/pcm/pcm_file.c
565++++ b/src/pcm/pcm_file.c
566+@@ -1140,5 +1140,5 @@ int _snd_pcm_file_open(snd_pcm_t **pcmp, const char *name,
567+ 	return err;
568+ }
569+ #ifndef DOC_HIDDEN
570+-SND_DLSYM_BUILD_VERSION(_snd_pcm_file_open, SND_PCM_DLSYM_VERSION);
571++SND_DLSYM_BUILD_VERSION(_snd_pcm_file_open, SND_PCM_DLSYM_VERSION)
572+ #endif
573+diff --git a/src/pcm/pcm_hooks.c b/src/pcm/pcm_hooks.c
574+index 4416d363..ed88dd29 100644
575+--- a/src/pcm/pcm_hooks.c
576++++ b/src/pcm/pcm_hooks.c
577+@@ -549,7 +549,7 @@ int _snd_pcm_hooks_open(snd_pcm_t **pcmp, const char *name,
578+ 	return 0;
579+ }
580+ #ifndef DOC_HIDDEN
581+-SND_DLSYM_BUILD_VERSION(_snd_pcm_hooks_open, SND_PCM_DLSYM_VERSION);
582++SND_DLSYM_BUILD_VERSION(_snd_pcm_hooks_open, SND_PCM_DLSYM_VERSION)
583+ #endif
584+ 
585+ /**
586+@@ -724,5 +724,5 @@ int _snd_pcm_hook_ctl_elems_install(snd_pcm_t *pcm, snd_config_t *conf)
587+ 	return err;
588+ }
589+ #ifndef DOC_HIDDEN
590+-SND_DLSYM_BUILD_VERSION(_snd_pcm_hook_ctl_elems_install, SND_PCM_DLSYM_VERSION);
591++SND_DLSYM_BUILD_VERSION(_snd_pcm_hook_ctl_elems_install, SND_PCM_DLSYM_VERSION)
592+ #endif
593+diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c
594+index bd3ecfc9..6e2fd971 100644
595+--- a/src/pcm/pcm_hw.c
596++++ b/src/pcm/pcm_hw.c
597+@@ -2070,7 +2070,7 @@ fail:
598+ }
599+ 
600+ #ifndef DOC_HIDDEN
601+-SND_DLSYM_BUILD_VERSION(_snd_pcm_hw_open, SND_PCM_DLSYM_VERSION);
602++SND_DLSYM_BUILD_VERSION(_snd_pcm_hw_open, SND_PCM_DLSYM_VERSION)
603+ #endif
604+ 
605+ /*
606+diff --git a/src/pcm/pcm_iec958.c b/src/pcm/pcm_iec958.c
607+index 7b8459fb..1afe7393 100644
608+--- a/src/pcm/pcm_iec958.c
609++++ b/src/pcm/pcm_iec958.c
610+@@ -813,5 +813,5 @@ int _snd_pcm_iec958_open(snd_pcm_t **pcmp, const char *name,
611+ 	return err;
612+ }
613+ #ifndef DOC_HIDDEN
614+-SND_DLSYM_BUILD_VERSION(_snd_pcm_iec958_open, SND_PCM_DLSYM_VERSION);
615++SND_DLSYM_BUILD_VERSION(_snd_pcm_iec958_open, SND_PCM_DLSYM_VERSION)
616+ #endif
617+diff --git a/src/pcm/pcm_ladspa.c b/src/pcm/pcm_ladspa.c
618+index 56ee138f..3ea7f70b 100644
619+--- a/src/pcm/pcm_ladspa.c
620++++ b/src/pcm/pcm_ladspa.c
621+@@ -1804,5 +1804,5 @@ int _snd_pcm_ladspa_open(snd_pcm_t **pcmp, const char *name,
622+ 	return err;
623+ }
624+ #ifndef DOC_HIDDEN
625+-SND_DLSYM_BUILD_VERSION(_snd_pcm_ladspa_open, SND_PCM_DLSYM_VERSION);
626++SND_DLSYM_BUILD_VERSION(_snd_pcm_ladspa_open, SND_PCM_DLSYM_VERSION)
627+ #endif
628+diff --git a/src/pcm/pcm_lfloat.c b/src/pcm/pcm_lfloat.c
629+index d9aa136d..7785e4b9 100644
630+--- a/src/pcm/pcm_lfloat.c
631++++ b/src/pcm/pcm_lfloat.c
632+@@ -510,7 +510,7 @@ int _snd_pcm_lfloat_open(snd_pcm_t **pcmp, const char *name,
633+ 	return err;
634+ }
635+ #ifndef DOC_HIDDEN
636+-SND_DLSYM_BUILD_VERSION(_snd_pcm_lfloat_open, SND_PCM_DLSYM_VERSION);
637++SND_DLSYM_BUILD_VERSION(_snd_pcm_lfloat_open, SND_PCM_DLSYM_VERSION)
638+ #endif
639+ 
640+ #else /* BUGGY_GCC */
641+diff --git a/src/pcm/pcm_linear.c b/src/pcm/pcm_linear.c
642+index 81edccaa..c95d1b95 100644
643+--- a/src/pcm/pcm_linear.c
644++++ b/src/pcm/pcm_linear.c
645+@@ -552,5 +552,5 @@ int _snd_pcm_linear_open(snd_pcm_t **pcmp, const char *name,
646+ 	return err;
647+ }
648+ #ifndef DOC_HIDDEN
649+-SND_DLSYM_BUILD_VERSION(_snd_pcm_linear_open, SND_PCM_DLSYM_VERSION);
650++SND_DLSYM_BUILD_VERSION(_snd_pcm_linear_open, SND_PCM_DLSYM_VERSION)
651+ #endif
652+diff --git a/src/pcm/pcm_meter.c b/src/pcm/pcm_meter.c
653+index 68c369de..947ef0f1 100644
654+--- a/src/pcm/pcm_meter.c
655++++ b/src/pcm/pcm_meter.c
656+@@ -835,7 +835,7 @@ int _snd_pcm_meter_open(snd_pcm_t **pcmp, const char *name,
657+ 	}
658+ 	return 0;
659+ }
660+-SND_DLSYM_BUILD_VERSION(_snd_pcm_meter_open, SND_PCM_DLSYM_VERSION);
661++SND_DLSYM_BUILD_VERSION(_snd_pcm_meter_open, SND_PCM_DLSYM_VERSION)
662+ 
663+ #endif
664+ 
665+diff --git a/src/pcm/pcm_mmap_emul.c b/src/pcm/pcm_mmap_emul.c
666+index 009cebb3..0011ccf4 100644
667+--- a/src/pcm/pcm_mmap_emul.c
668++++ b/src/pcm/pcm_mmap_emul.c
669+@@ -510,5 +510,5 @@ int _snd_pcm_mmap_emul_open(snd_pcm_t **pcmp, const char *name,
670+ }
671+ 
672+ #ifndef DOC_HIDDEN
673+-SND_DLSYM_BUILD_VERSION(_snd_pcm_mmap_emul_open, SND_PCM_DLSYM_VERSION);
674++SND_DLSYM_BUILD_VERSION(_snd_pcm_mmap_emul_open, SND_PCM_DLSYM_VERSION)
675+ #endif
676+diff --git a/src/pcm/pcm_mulaw.c b/src/pcm/pcm_mulaw.c
677+index 177a61bb..587fa54e 100644
678+--- a/src/pcm/pcm_mulaw.c
679++++ b/src/pcm/pcm_mulaw.c
680+@@ -565,5 +565,5 @@ int _snd_pcm_mulaw_open(snd_pcm_t **pcmp, const char *name,
681+ 	return err;
682+ }
683+ #ifndef DOC_HIDDEN
684+-SND_DLSYM_BUILD_VERSION(_snd_pcm_mulaw_open, SND_PCM_DLSYM_VERSION);
685++SND_DLSYM_BUILD_VERSION(_snd_pcm_mulaw_open, SND_PCM_DLSYM_VERSION)
686+ #endif
687+diff --git a/src/pcm/pcm_multi.c b/src/pcm/pcm_multi.c
688+index 74e1e3f1..7320f46f 100644
689+--- a/src/pcm/pcm_multi.c
690++++ b/src/pcm/pcm_multi.c
691+@@ -1458,5 +1458,5 @@ _free:
692+ 	return err;
693+ }
694+ #ifndef DOC_HIDDEN
695+-SND_DLSYM_BUILD_VERSION(_snd_pcm_multi_open, SND_PCM_DLSYM_VERSION);
696++SND_DLSYM_BUILD_VERSION(_snd_pcm_multi_open, SND_PCM_DLSYM_VERSION)
697+ #endif
698+diff --git a/src/pcm/pcm_null.c b/src/pcm/pcm_null.c
699+index f7b096bc..ad72d067 100644
700+--- a/src/pcm/pcm_null.c
701++++ b/src/pcm/pcm_null.c
702+@@ -501,5 +501,5 @@ int _snd_pcm_null_open(snd_pcm_t **pcmp, const char *name,
703+ 	return 0;
704+ }
705+ #ifndef DOC_HIDDEN
706+-SND_DLSYM_BUILD_VERSION(_snd_pcm_null_open, SND_PCM_DLSYM_VERSION);
707++SND_DLSYM_BUILD_VERSION(_snd_pcm_null_open, SND_PCM_DLSYM_VERSION)
708+ #endif
709+diff --git a/src/pcm/pcm_plug.c b/src/pcm/pcm_plug.c
710+index e5a3a189..86a29920 100644
711+--- a/src/pcm/pcm_plug.c
712++++ b/src/pcm/pcm_plug.c
713+@@ -1344,5 +1344,5 @@ int _snd_pcm_plug_open(snd_pcm_t **pcmp, const char *name,
714+ 	return err;
715+ }
716+ #ifndef DOC_HIDDEN
717+-SND_DLSYM_BUILD_VERSION(_snd_pcm_plug_open, SND_PCM_DLSYM_VERSION);
718++SND_DLSYM_BUILD_VERSION(_snd_pcm_plug_open, SND_PCM_DLSYM_VERSION)
719+ #endif
720+diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c
721+index ef6b8006..5f0cc774 100644
722+--- a/src/pcm/pcm_rate.c
723++++ b/src/pcm/pcm_rate.c
724+@@ -1728,5 +1728,5 @@ int _snd_pcm_rate_open(snd_pcm_t **pcmp, const char *name,
725+ 	return err;
726+ }
727+ #ifndef DOC_HIDDEN
728+-SND_DLSYM_BUILD_VERSION(_snd_pcm_rate_open, SND_PCM_DLSYM_VERSION);
729++SND_DLSYM_BUILD_VERSION(_snd_pcm_rate_open, SND_PCM_DLSYM_VERSION)
730+ #endif
731+diff --git a/src/pcm/pcm_route.c b/src/pcm/pcm_route.c
732+index affb929f..737c8fa4 100644
733+--- a/src/pcm/pcm_route.c
734++++ b/src/pcm/pcm_route.c
735+@@ -1430,5 +1430,5 @@ int _snd_pcm_route_open(snd_pcm_t **pcmp, const char *name,
736+ 	return err;
737+ }
738+ #ifndef DOC_HIDDEN
739+-SND_DLSYM_BUILD_VERSION(_snd_pcm_route_open, SND_PCM_DLSYM_VERSION);
740++SND_DLSYM_BUILD_VERSION(_snd_pcm_route_open, SND_PCM_DLSYM_VERSION)
741+ #endif
742+diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c
743+index 0699fc87..ca0a6690 100644
744+--- a/src/pcm/pcm_share.c
745++++ b/src/pcm/pcm_share.c
746+@@ -1730,5 +1730,5 @@ _free:
747+ 	return err;
748+ }
749+ #ifndef DOC_HIDDEN
750+-SND_DLSYM_BUILD_VERSION(_snd_pcm_share_open, SND_PCM_DLSYM_VERSION);
751++SND_DLSYM_BUILD_VERSION(_snd_pcm_share_open, SND_PCM_DLSYM_VERSION)
752+ #endif
753+diff --git a/src/pcm/pcm_shm.c b/src/pcm/pcm_shm.c
754+index d9596547..2804cc67 100644
755+--- a/src/pcm/pcm_shm.c
756++++ b/src/pcm/pcm_shm.c
757+@@ -904,5 +904,5 @@ int _snd_pcm_shm_open(snd_pcm_t **pcmp, const char *name,
758+ 	return err;
759+ }
760+ #ifndef DOC_HIDDEN
761+-SND_DLSYM_BUILD_VERSION(_snd_pcm_shm_open, SND_PCM_DLSYM_VERSION);
762++SND_DLSYM_BUILD_VERSION(_snd_pcm_shm_open, SND_PCM_DLSYM_VERSION)
763+ #endif
764+diff --git a/src/pcm/pcm_softvol.c b/src/pcm/pcm_softvol.c
765+index 38c63679..3eaeceda 100644
766+--- a/src/pcm/pcm_softvol.c
767++++ b/src/pcm/pcm_softvol.c
768+@@ -1269,5 +1269,5 @@ int _snd_pcm_softvol_open(snd_pcm_t **pcmp, const char *name,
769+ 	return err;
770+ }
771+ #ifndef DOC_HIDDEN
772+-SND_DLSYM_BUILD_VERSION(_snd_pcm_softvol_open, SND_PCM_DLSYM_VERSION);
773++SND_DLSYM_BUILD_VERSION(_snd_pcm_softvol_open, SND_PCM_DLSYM_VERSION)
774+ #endif
775+diff --git a/src/rawmidi/rawmidi_hw.c b/src/rawmidi/rawmidi_hw.c
776+index 3b1d941e..83f1090f 100644
777+--- a/src/rawmidi/rawmidi_hw.c
778++++ b/src/rawmidi/rawmidi_hw.c
779+@@ -511,4 +511,4 @@ int _snd_rawmidi_hw_open(snd_rawmidi_t **inputp, snd_rawmidi_t **outputp,
780+ 		return -EINVAL;
781+ 	return snd_rawmidi_hw_open(inputp, outputp, name, card, device, subdevice, mode);
782+ }
783+-SND_DLSYM_BUILD_VERSION(_snd_rawmidi_hw_open, SND_RAWMIDI_DLSYM_VERSION);
784++SND_DLSYM_BUILD_VERSION(_snd_rawmidi_hw_open, SND_RAWMIDI_DLSYM_VERSION)
785+diff --git a/src/rawmidi/rawmidi_virt.c b/src/rawmidi/rawmidi_virt.c
786+index 04c485d3..5bae8ea0 100644
787+--- a/src/rawmidi/rawmidi_virt.c
788++++ b/src/rawmidi/rawmidi_virt.c
789+@@ -466,5 +466,5 @@ int _snd_rawmidi_virtual_open(snd_rawmidi_t **inputp, snd_rawmidi_t **outputp,
790+ }
791+ 
792+ #ifndef DOC_HIDDEN
793+-SND_DLSYM_BUILD_VERSION(_snd_rawmidi_virtual_open, SND_RAWMIDI_DLSYM_VERSION);
794++SND_DLSYM_BUILD_VERSION(_snd_rawmidi_virtual_open, SND_RAWMIDI_DLSYM_VERSION)
795+ #endif
796+diff --git a/src/seq/seq_hw.c b/src/seq/seq_hw.c
797+index eeaf26e1..d3229d72 100644
798+--- a/src/seq/seq_hw.c
799++++ b/src/seq/seq_hw.c
800+@@ -630,4 +630,4 @@ int _snd_seq_hw_open(snd_seq_t **handlep, char *name,
801+ 	}
802+ 	return snd_seq_hw_open(handlep, name, streams, mode);
803+ }
804+-SND_DLSYM_BUILD_VERSION(_snd_seq_hw_open, SND_SEQ_DLSYM_VERSION);
805++SND_DLSYM_BUILD_VERSION(_snd_seq_hw_open, SND_SEQ_DLSYM_VERSION)
806+diff --git a/src/timer/timer.c b/src/timer/timer.c
807+index 0f8491b8..a139356b 100644
808+--- a/src/timer/timer.c
809++++ b/src/timer/timer.c
810+@@ -649,7 +649,7 @@ int snd_timer_params_set_exclusive(snd_timer_params_t * params, int exclusive)
811+ 		params->flags &= ~SNDRV_TIMER_PSFLG_EXCLUSIVE;
812+ 	return 0;
813+ }
814+-use_default_symbol_version(__snd_timer_params_set_exclusive, snd_timer_params_set_exclusive, ALSA_0.9.0);
815++use_default_symbol_version(__snd_timer_params_set_exclusive, snd_timer_params_set_exclusive, ALSA_0.9.0)
816+ 
817+ /**
818+  * \brief determine if timer has exclusive flag
819+@@ -665,7 +665,7 @@ int snd_timer_params_get_exclusive(snd_timer_params_t * params)
820+ 	assert(params);
821+ 	return params->flags & SNDRV_TIMER_PSFLG_EXCLUSIVE ? 1 : 0;
822+ }
823+-use_default_symbol_version(__snd_timer_params_get_exclusive, snd_timer_params_get_exclusive, ALSA_0.9.0);
824++use_default_symbol_version(__snd_timer_params_get_exclusive, snd_timer_params_get_exclusive, ALSA_0.9.0)
825+ 
826+ /**
827+  * \brief set timer early event
828+@@ -751,7 +751,7 @@ void snd_timer_params_set_filter(snd_timer_params_t * params, unsigned int filte
829+ 	assert(params);
830+ 	params->filter = filter;
831+ }
832+-use_default_symbol_version(__snd_timer_params_set_filter, snd_timer_params_set_filter, ALSA_0.9.0);
833++use_default_symbol_version(__snd_timer_params_set_filter, snd_timer_params_set_filter, ALSA_0.9.0)
834+ 
835+ /**
836+  * \brief get timer event filter
837+@@ -767,7 +767,7 @@ unsigned int snd_timer_params_get_filter(snd_timer_params_t * params)
838+ 	assert(params);
839+ 	return params->filter;
840+ }
841+-use_default_symbol_version(__snd_timer_params_get_filter, snd_timer_params_get_filter, ALSA_0.9.0);
842++use_default_symbol_version(__snd_timer_params_get_filter, snd_timer_params_get_filter, ALSA_0.9.0)
843+ 
844+ /**
845+  * \brief set parameters for timer handle
846+@@ -960,5 +960,5 @@ long snd_timer_info_get_ticks(snd_timer_info_t * info)
847+ 	return 1;
848+ }
849+ #ifndef DOC_HIDDEN
850+-link_warning(snd_timer_info_get_ticks, "Warning: snd_timer_info_get_ticks is deprecated");
851++link_warning(snd_timer_info_get_ticks, "Warning: snd_timer_info_get_ticks is deprecated")
852+ #endif
853+diff --git a/src/timer/timer_hw.c b/src/timer/timer_hw.c
854+index fe4e40bb..884e6139 100644
855+--- a/src/timer/timer_hw.c
856++++ b/src/timer/timer_hw.c
857+@@ -332,4 +332,4 @@ int _snd_timer_hw_open(snd_timer_t **timer, char *name,
858+ 	}
859+ 	return snd_timer_hw_open(timer, name, dev_class, dev_sclass, card, device, subdevice, mode);
860+ }
861+-SND_DLSYM_BUILD_VERSION(_snd_timer_hw_open, SND_TIMER_DLSYM_VERSION);
862++SND_DLSYM_BUILD_VERSION(_snd_timer_hw_open, SND_TIMER_DLSYM_VERSION)
863+diff --git a/src/timer/timer_query.c b/src/timer/timer_query.c
864+index 084ff61a..83543522 100644
865+--- a/src/timer/timer_query.c
866++++ b/src/timer/timer_query.c
867+@@ -393,7 +393,7 @@ int snd_timer_query_info(snd_timer_query_t *timer, snd_timer_ginfo_t *info)
868+   	assert(info);
869+ 	return timer->ops->info(timer, info);
870+ }
871+-use_default_symbol_version(__snd_timer_query_info, snd_timer_query_info, ALSA_0.9.0);
872++use_default_symbol_version(__snd_timer_query_info, snd_timer_query_info, ALSA_0.9.0)
873+ 
874+ /**
875+  * \brief set the timer global parameters
876+@@ -411,7 +411,7 @@ int snd_timer_query_params(snd_timer_query_t *timer, snd_timer_gparams_t *params
877+   	assert(params);
878+ 	return timer->ops->params(timer, params);
879+ }
880+-use_default_symbol_version(__snd_timer_query_params, snd_timer_query_params, ALSA_0.9.0);
881++use_default_symbol_version(__snd_timer_query_params, snd_timer_query_params, ALSA_0.9.0)
882+ 
883+ /**
884+  * \brief get the timer global status
885+@@ -429,7 +429,7 @@ int snd_timer_query_status(snd_timer_query_t *timer, snd_timer_gstatus_t *status
886+   	assert(status);
887+ 	return timer->ops->status(timer, status);
888+ }
889+-use_default_symbol_version(__snd_timer_query_status, snd_timer_query_status, ALSA_0.9.0);
890++use_default_symbol_version(__snd_timer_query_status, snd_timer_query_status, ALSA_0.9.0)
891+ 
892+ /**
893+  * \brief get size of the snd_timer_id_t structure in bytes
894+diff --git a/src/timer/timer_query_hw.c b/src/timer/timer_query_hw.c
895+index d8bac6e7..8c464fc3 100644
896+--- a/src/timer/timer_query_hw.c
897++++ b/src/timer/timer_query_hw.c
898+@@ -135,4 +135,4 @@ int _snd_timer_query_hw_open(snd_timer_query_t **timer, char *name,
899+ 	}
900+ 	return snd_timer_query_hw_open(timer, name, mode);
901+ }
902+-SND_DLSYM_BUILD_VERSION(_snd_timer_query_hw_open, SND_TIMER_QUERY_DLSYM_VERSION);
903++SND_DLSYM_BUILD_VERSION(_snd_timer_query_hw_open, SND_TIMER_QUERY_DLSYM_VERSION)
904+-- 
905+2.44.0
906+
+25, -0
 1@@ -0,0 +1,25 @@
 2+From 613de00de55805f1c27b40ad14aae8cc2b81f7eb Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Wed, 3 Jul 2019 18:27:09 -0700
 5+Subject: [PATCH] Don't use inline asm on non-GNU compilers
 6+
 7+---
 8+ include/local.h | 2 +-
 9+ 1 file changed, 1 insertion(+), 1 deletion(-)
10+
11+diff --git a/include/local.h b/include/local.h
12+index 512e4455..a314468b 100644
13+--- a/include/local.h
14++++ b/include/local.h
15+@@ -290,7 +290,7 @@ extern snd_lib_error_handler_t snd_err_msg;
16+ 
17+ #define ASM_NAME(name) __SYMBOL_PREFIX name
18+ 
19+-#ifdef HAVE_GNU_LD
20++#if defined(HAVE_GNU_LD) && defined(__GNUC__)
21+ # ifdef HAVE_ELF
22+ 
23+ /* We want the .gnu.warning.SYMBOL section to be unallocated.  */
24+-- 
25+2.44.0
26+
+1713, -0
   1@@ -0,0 +1,1713 @@
   2+From 33cc8c8e77a2282c11601a8a1e14fb2e856af0dc Mon Sep 17 00:00:00 2001
   3+From: Michael Forney <mforney@mforney.org>
   4+Date: Fri, 31 May 2019 17:47:08 -0700
   5+Subject: [PATCH] Use switch statements instead of labels as values
   6+
   7+---
   8+ src/pcm/pcm_adpcm.c       |  20 +-
   9+ src/pcm/pcm_alaw.c        |  20 +-
  10+ src/pcm/pcm_iec958.c      |  22 +-
  11+ src/pcm/pcm_lfloat.c      |  42 +-
  12+ src/pcm/pcm_linear.c      |  22 +-
  13+ src/pcm/pcm_mulaw.c       |  20 +-
  14+ src/pcm/pcm_rate_linear.c |  42 +-
  15+ src/pcm/pcm_route.c       | 163 +++----
  16+ src/pcm/plugin_ops.h      | 937 ++++++++++++++------------------------
  17+ 9 files changed, 412 insertions(+), 876 deletions(-)
  18+
  19+diff --git a/src/pcm/pcm_adpcm.c b/src/pcm/pcm_adpcm.c
  20+index fd9b9e8e..d4546cd0 100644
  21+--- a/src/pcm/pcm_adpcm.c
  22++++ b/src/pcm/pcm_adpcm.c
  23+@@ -220,10 +220,6 @@ void snd_pcm_adpcm_decode(const snd_pcm_channel_area_t *dst_areas,
  24+ 			  unsigned int putidx,
  25+ 			  snd_pcm_adpcm_state_t *states)
  26+ {
  27+-#define PUT16_LABELS
  28+-#include "plugin_ops.h"
  29+-#undef PUT16_LABELS
  30+-	void *put = put16_labels[putidx];
  31+ 	unsigned int channel;
  32+ 	for (channel = 0; channel < channels; ++channel, ++states) {
  33+ 		const char *src;
  34+@@ -249,11 +245,7 @@ void snd_pcm_adpcm_decode(const snd_pcm_channel_area_t *dst_areas,
  35+ 			else
  36+ 				v = (*src >> 4) & 0x0f;
  37+ 			sample = adpcm_decoder(v, states);
  38+-			goto *put;
  39+-#define PUT16_END after
  40+-#include "plugin_ops.h"
  41+-#undef PUT16_END
  42+-		after:
  43++			put16(dst, sample, putidx);
  44+ 			src += src_step;
  45+ 			srcbit += srcbit_step;
  46+ 			if (srcbit == 8) {
  47+@@ -273,10 +265,6 @@ void snd_pcm_adpcm_encode(const snd_pcm_channel_area_t *dst_areas,
  48+ 			  unsigned int getidx,
  49+ 			  snd_pcm_adpcm_state_t *states)
  50+ {
  51+-#define GET16_LABELS
  52+-#include "plugin_ops.h"
  53+-#undef GET16_LABELS
  54+-	void *get = get16_labels[getidx];
  55+ 	unsigned int channel;
  56+ 	int16_t sample = 0;
  57+ 	for (channel = 0; channel < channels; ++channel, ++states) {
  58+@@ -297,11 +285,7 @@ void snd_pcm_adpcm_encode(const snd_pcm_channel_area_t *dst_areas,
  59+ 		frames1 = frames;
  60+ 		while (frames1-- > 0) {
  61+ 			int v;
  62+-			goto *get;
  63+-#define GET16_END after
  64+-#include "plugin_ops.h"
  65+-#undef GET16_END
  66+-		after:
  67++			sample = get16(src, getidx);
  68+ 			v = adpcm_encoder(sample, states);
  69+ 			if (dstbit)
  70+ 				*dst = (*dst & 0xf0) | v;
  71+diff --git a/src/pcm/pcm_alaw.c b/src/pcm/pcm_alaw.c
  72+index 0a889183..f24e6351 100644
  73+--- a/src/pcm/pcm_alaw.c
  74++++ b/src/pcm/pcm_alaw.c
  75+@@ -148,10 +148,6 @@ void snd_pcm_alaw_decode(const snd_pcm_channel_area_t *dst_areas,
  76+ 			 unsigned int channels, snd_pcm_uframes_t frames,
  77+ 			 unsigned int putidx)
  78+ {
  79+-#define PUT16_LABELS
  80+-#include "plugin_ops.h"
  81+-#undef PUT16_LABELS
  82+-	void *put = put16_labels[putidx];
  83+ 	unsigned int channel;
  84+ 	for (channel = 0; channel < channels; ++channel) {
  85+ 		const unsigned char *src;
  86+@@ -167,11 +163,7 @@ void snd_pcm_alaw_decode(const snd_pcm_channel_area_t *dst_areas,
  87+ 		frames1 = frames;
  88+ 		while (frames1-- > 0) {
  89+ 			int16_t sample = alaw_to_s16(*src);
  90+-			goto *put;
  91+-#define PUT16_END after
  92+-#include "plugin_ops.h"
  93+-#undef PUT16_END
  94+-		after:
  95++			put16(dst, sample, putidx);
  96+ 			src += src_step;
  97+ 			dst += dst_step;
  98+ 		}
  99+@@ -185,10 +177,6 @@ void snd_pcm_alaw_encode(const snd_pcm_channel_area_t *dst_areas,
 100+ 			 unsigned int channels, snd_pcm_uframes_t frames,
 101+ 			 unsigned int getidx)
 102+ {
 103+-#define GET16_LABELS
 104+-#include "plugin_ops.h"
 105+-#undef GET16_LABELS
 106+-	void *get = get16_labels[getidx];
 107+ 	unsigned int channel;
 108+ 	int16_t sample = 0;
 109+ 	for (channel = 0; channel < channels; ++channel) {
 110+@@ -204,11 +192,7 @@ void snd_pcm_alaw_encode(const snd_pcm_channel_area_t *dst_areas,
 111+ 		dst_step = snd_pcm_channel_area_step(dst_area);
 112+ 		frames1 = frames;
 113+ 		while (frames1-- > 0) {
 114+-			goto *get;
 115+-#define GET16_END after
 116+-#include "plugin_ops.h"
 117+-#undef GET16_END
 118+-		after:
 119++			sample = get16(src, getidx);
 120+ 			*dst = s16_to_alaw(sample);
 121+ 			src += src_step;
 122+ 			dst += dst_step;
 123+diff --git a/src/pcm/pcm_iec958.c b/src/pcm/pcm_iec958.c
 124+index 1afe7393..8f1cd9e9 100644
 125+--- a/src/pcm/pcm_iec958.c
 126++++ b/src/pcm/pcm_iec958.c
 127+@@ -149,11 +149,8 @@ static void snd_pcm_iec958_decode(snd_pcm_iec958_t *iec,
 128+ 				  snd_pcm_uframes_t src_offset,
 129+ 				  unsigned int channels, snd_pcm_uframes_t frames)
 130+ {
 131+-#define PUT32_LABELS
 132+-#include "plugin_ops.h"
 133+-#undef PUT32_LABELS
 134+-	void *put = put32_labels[iec->getput_idx];
 135+ 	unsigned int channel;
 136++	unsigned int idx = iec->getput_idx;
 137+ 	for (channel = 0; channel < channels; ++channel) {
 138+ 		const uint32_t *src;
 139+ 		char *dst;
 140+@@ -168,11 +165,7 @@ static void snd_pcm_iec958_decode(snd_pcm_iec958_t *iec,
 141+ 		frames1 = frames;
 142+ 		while (frames1-- > 0) {
 143+ 			int32_t sample = iec958_to_s32(iec, *src);
 144+-			goto *put;
 145+-#define PUT32_END after
 146+-#include "plugin_ops.h"
 147+-#undef PUT32_END
 148+-		after:
 149++			put32(dst, sample, idx);
 150+ 			src += src_step;
 151+ 			dst += dst_step;
 152+ 		}
 153+@@ -186,10 +179,6 @@ static void snd_pcm_iec958_encode(snd_pcm_iec958_t *iec,
 154+ 				  snd_pcm_uframes_t src_offset,
 155+ 				  unsigned int channels, snd_pcm_uframes_t frames)
 156+ {
 157+-#define GET32_LABELS
 158+-#include "plugin_ops.h"
 159+-#undef GET32_LABELS
 160+-	void *get = get32_labels[iec->getput_idx];
 161+ 	unsigned int channel;
 162+ 	int32_t sample = 0;
 163+ 	int counter = iec->counter;
 164+@@ -197,6 +186,7 @@ static void snd_pcm_iec958_encode(snd_pcm_iec958_t *iec,
 165+ 			    (iec->status[0] & IEC958_AES0_NONAUDIO) &&
 166+ 			    (channels == 8);
 167+ 	int counter_step = single_stream ? ((channels + 1) >> 1) : 1;
 168++	unsigned int idx = iec->getput_idx;
 169+ 	for (channel = 0; channel < channels; ++channel) {
 170+ 		const char *src;
 171+ 		uint32_t *dst;
 172+@@ -216,11 +206,7 @@ static void snd_pcm_iec958_encode(snd_pcm_iec958_t *iec,
 173+ 			iec->counter = counter;
 174+ 
 175+ 		while (frames1-- > 0) {
 176+-			goto *get;
 177+-#define GET32_END after
 178+-#include "plugin_ops.h"
 179+-#undef GET32_END
 180+-		after:
 181++			sample = get32(src, idx);
 182+ 			sample = iec958_subframe(iec, sample, channel);
 183+ 			// fprintf(stderr, "%d:%08x\n", frames1, sample);
 184+ 			*dst = sample;
 185+diff --git a/src/pcm/pcm_lfloat.c b/src/pcm/pcm_lfloat.c
 186+index 7785e4b9..c2e07a57 100644
 187+--- a/src/pcm/pcm_lfloat.c
 188++++ b/src/pcm/pcm_lfloat.c
 189+@@ -97,13 +97,6 @@ void snd_pcm_lfloat_convert_integer_float(const snd_pcm_channel_area_t *dst_area
 190+ 					  unsigned int channels, snd_pcm_uframes_t frames,
 191+ 					  unsigned int get32idx, unsigned int put32floatidx)
 192+ {
 193+-#define GET32_LABELS
 194+-#define PUT32F_LABELS
 195+-#include "plugin_ops.h"
 196+-#undef PUT32F_LABELS
 197+-#undef GET32_LABELS
 198+-	void *get32 = get32_labels[get32idx];
 199+-	void *put32float = put32float_labels[put32floatidx];
 200+ 	unsigned int channel;
 201+ 	for (channel = 0; channel < channels; ++channel) {
 202+ 		const char *src;
 203+@@ -111,8 +104,6 @@ void snd_pcm_lfloat_convert_integer_float(const snd_pcm_channel_area_t *dst_area
 204+ 		int src_step, dst_step;
 205+ 		snd_pcm_uframes_t frames1;
 206+ 		int32_t sample = 0;
 207+-		snd_tmp_float_t tmp_float;
 208+-		snd_tmp_double_t tmp_double;
 209+ 		const snd_pcm_channel_area_t *src_area = &src_areas[channel];
 210+ 		const snd_pcm_channel_area_t *dst_area = &dst_areas[channel];
 211+ 		src = snd_pcm_channel_area_addr(src_area, src_offset);
 212+@@ -121,16 +112,8 @@ void snd_pcm_lfloat_convert_integer_float(const snd_pcm_channel_area_t *dst_area
 213+ 		dst_step = snd_pcm_channel_area_step(dst_area);
 214+ 		frames1 = frames;
 215+ 		while (frames1-- > 0) {
 216+-			goto *get32;
 217+-#define GET32_END sample_loaded
 218+-#include "plugin_ops.h"
 219+-#undef GET32_END
 220+-		sample_loaded:
 221+-			goto *put32float;
 222+-#define PUT32F_END sample_put
 223+-#include "plugin_ops.h"
 224+-#undef PUT32F_END
 225+-		sample_put:
 226++			sample = get32(src, get32idx);
 227++			put32float(dst, sample, put32floatidx);
 228+ 			src += src_step;
 229+ 			dst += dst_step;
 230+ 		}
 231+@@ -142,13 +125,6 @@ void snd_pcm_lfloat_convert_float_integer(const snd_pcm_channel_area_t *dst_area
 232+ 					  unsigned int channels, snd_pcm_uframes_t frames,
 233+ 					  unsigned int put32idx, unsigned int get32floatidx)
 234+ {
 235+-#define PUT32_LABELS
 236+-#define GET32F_LABELS
 237+-#include "plugin_ops.h"
 238+-#undef GET32F_LABELS
 239+-#undef PUT32_LABELS
 240+-	void *put32 = put32_labels[put32idx];
 241+-	void *get32float = get32float_labels[get32floatidx];
 242+ 	unsigned int channel;
 243+ 	for (channel = 0; channel < channels; ++channel) {
 244+ 		const char *src;
 245+@@ -156,8 +132,6 @@ void snd_pcm_lfloat_convert_float_integer(const snd_pcm_channel_area_t *dst_area
 246+ 		int src_step, dst_step;
 247+ 		snd_pcm_uframes_t frames1;
 248+ 		int32_t sample = 0;
 249+-		snd_tmp_float_t tmp_float;
 250+-		snd_tmp_double_t tmp_double;
 251+ 		const snd_pcm_channel_area_t *src_area = &src_areas[channel];
 252+ 		const snd_pcm_channel_area_t *dst_area = &dst_areas[channel];
 253+ 		src = snd_pcm_channel_area_addr(src_area, src_offset);
 254+@@ -166,16 +140,8 @@ void snd_pcm_lfloat_convert_float_integer(const snd_pcm_channel_area_t *dst_area
 255+ 		dst_step = snd_pcm_channel_area_step(dst_area);
 256+ 		frames1 = frames;
 257+ 		while (frames1-- > 0) {
 258+-			goto *get32float;
 259+-#define GET32F_END sample_loaded
 260+-#include "plugin_ops.h"
 261+-#undef GET32F_END
 262+-		sample_loaded:
 263+-			goto *put32;
 264+-#define PUT32_END sample_put
 265+-#include "plugin_ops.h"
 266+-#undef PUT32_END
 267+-		sample_put:
 268++			sample = get32float(src, get32floatidx);
 269++			put32(dst, sample, put32idx);
 270+ 			src += src_step;
 271+ 			dst += dst_step;
 272+ 		}
 273+diff --git a/src/pcm/pcm_linear.c b/src/pcm/pcm_linear.c
 274+index c95d1b95..bc8c7aa8 100644
 275+--- a/src/pcm/pcm_linear.c
 276++++ b/src/pcm/pcm_linear.c
 277+@@ -148,10 +148,6 @@ void snd_pcm_linear_convert(const snd_pcm_channel_area_t *dst_areas, snd_pcm_ufr
 278+ 			    unsigned int channels, snd_pcm_uframes_t frames,
 279+ 			    unsigned int convidx)
 280+ {
 281+-#define CONV_LABELS
 282+-#include "plugin_ops.h"
 283+-#undef CONV_LABELS
 284+-	void *conv = conv_labels[convidx];
 285+ 	unsigned int channel;
 286+ 	for (channel = 0; channel < channels; ++channel) {
 287+ 		const char *src;
 288+@@ -166,11 +162,7 @@ void snd_pcm_linear_convert(const snd_pcm_channel_area_t *dst_areas, snd_pcm_ufr
 289+ 		dst_step = snd_pcm_channel_area_step(dst_area);
 290+ 		frames1 = frames;
 291+ 		while (frames1-- > 0) {
 292+-			goto *conv;
 293+-#define CONV_END after
 294+-#include "plugin_ops.h"
 295+-#undef CONV_END
 296+-		after:
 297++			conv(dst, src, convidx);
 298+ 			src += src_step;
 299+ 			dst += dst_step;
 300+ 		}
 301+@@ -182,11 +174,6 @@ void snd_pcm_linear_getput(const snd_pcm_channel_area_t *dst_areas, snd_pcm_ufra
 302+ 			   unsigned int channels, snd_pcm_uframes_t frames,
 303+ 			   unsigned int get_idx, unsigned int put_idx)
 304+ {
 305+-#define CONV24_LABELS
 306+-#include "plugin_ops.h"
 307+-#undef CONV24_LABELS
 308+-	void *get = get32_labels[get_idx];
 309+-	void *put = put32_labels[put_idx];
 310+ 	unsigned int channel;
 311+ 	uint32_t sample = 0;
 312+ 	for (channel = 0; channel < channels; ++channel) {
 313+@@ -202,11 +189,8 @@ void snd_pcm_linear_getput(const snd_pcm_channel_area_t *dst_areas, snd_pcm_ufra
 314+ 		dst_step = snd_pcm_channel_area_step(dst_area);
 315+ 		frames1 = frames;
 316+ 		while (frames1-- > 0) {
 317+-			goto *get;
 318+-#define CONV24_END after
 319+-#include "plugin_ops.h"
 320+-#undef CONV24_END
 321+-		after:
 322++			sample = get32(src, get_idx);
 323++			put32(dst, sample, put_idx);
 324+ 			src += src_step;
 325+ 			dst += dst_step;
 326+ 		}
 327+diff --git a/src/pcm/pcm_mulaw.c b/src/pcm/pcm_mulaw.c
 328+index 587fa54e..97dae154 100644
 329+--- a/src/pcm/pcm_mulaw.c
 330++++ b/src/pcm/pcm_mulaw.c
 331+@@ -164,10 +164,6 @@ void snd_pcm_mulaw_decode(const snd_pcm_channel_area_t *dst_areas,
 332+ 			  unsigned int channels, snd_pcm_uframes_t frames,
 333+ 			  unsigned int putidx)
 334+ {
 335+-#define PUT16_LABELS
 336+-#include "plugin_ops.h"
 337+-#undef PUT16_LABELS
 338+-	void *put = put16_labels[putidx];
 339+ 	unsigned int channel;
 340+ 	for (channel = 0; channel < channels; ++channel) {
 341+ 		const unsigned char *src;
 342+@@ -183,11 +179,7 @@ void snd_pcm_mulaw_decode(const snd_pcm_channel_area_t *dst_areas,
 343+ 		frames1 = frames;
 344+ 		while (frames1-- > 0) {
 345+ 			int16_t sample = ulaw_to_s16(*src);
 346+-			goto *put;
 347+-#define PUT16_END after
 348+-#include "plugin_ops.h"
 349+-#undef PUT16_END
 350+-		after:
 351++			put16(dst, sample, putidx);
 352+ 			src += src_step;
 353+ 			dst += dst_step;
 354+ 		}
 355+@@ -201,10 +193,6 @@ void snd_pcm_mulaw_encode(const snd_pcm_channel_area_t *dst_areas,
 356+ 			  unsigned int channels, snd_pcm_uframes_t frames,
 357+ 			  unsigned int getidx)
 358+ {
 359+-#define GET16_LABELS
 360+-#include "plugin_ops.h"
 361+-#undef GET16_LABELS
 362+-	void *get = get16_labels[getidx];
 363+ 	unsigned int channel;
 364+ 	int16_t sample = 0;
 365+ 	for (channel = 0; channel < channels; ++channel) {
 366+@@ -220,11 +208,7 @@ void snd_pcm_mulaw_encode(const snd_pcm_channel_area_t *dst_areas,
 367+ 		dst_step = snd_pcm_channel_area_step(dst_area);
 368+ 		frames1 = frames;
 369+ 		while (frames1-- > 0) {
 370+-			goto *get;
 371+-#define GET16_END after
 372+-#include "plugin_ops.h"
 373+-#undef GET16_END
 374+-		after:
 375++			sample = get16(src, getidx);
 376+ 			*dst = s16_to_ulaw(sample);
 377+ 			src += src_step;
 378+ 			dst += dst_step;
 379+diff --git a/src/pcm/pcm_rate_linear.c b/src/pcm/pcm_rate_linear.c
 380+index 35a4d8ea..366fdad7 100644
 381+--- a/src/pcm/pcm_rate_linear.c
 382++++ b/src/pcm/pcm_rate_linear.c
 383+@@ -70,19 +70,13 @@ static void linear_expand(struct rate_linear *rate,
 384+ 			  const snd_pcm_channel_area_t *src_areas,
 385+ 			  snd_pcm_uframes_t src_offset, unsigned int src_frames)
 386+ {
 387+-#define GET16_LABELS
 388+-#define PUT16_LABELS
 389+-#include "plugin_ops.h"
 390+-#undef GET16_LABELS
 391+-#undef PUT16_LABELS
 392+-	void *get = get16_labels[rate->get_idx];
 393+-	void *put = put16_labels[rate->put_idx];
 394+ 	unsigned int get_threshold = rate->pitch;
 395+ 	unsigned int channel;
 396+ 	unsigned int src_frames1;
 397+ 	unsigned int dst_frames1;
 398+ 	int16_t sample = 0;
 399+ 	unsigned int pos;
 400++	unsigned int get_idx = rate->get_idx, put_idx = rate->get_idx;
 401+ 	
 402+ 	for (channel = 0; channel < rate->channels; ++channel) {
 403+ 		const snd_pcm_channel_area_t *src_area = &src_areas[channel];
 404+@@ -106,22 +100,14 @@ static void linear_expand(struct rate_linear *rate,
 405+ 				pos -= get_threshold;
 406+ 				old_sample = new_sample;
 407+ 				if (src_frames1 < src_frames) {
 408+-					goto *get;
 409+-#define GET16_END after_get
 410+-#include "plugin_ops.h"
 411+-#undef GET16_END
 412+-				after_get:
 413++					sample = get16(src, get_idx);
 414+ 					new_sample = sample;
 415+ 				}
 416+ 			}
 417+ 			new_weight = (pos << (16 - rate->pitch_shift)) / (get_threshold >> rate->pitch_shift);
 418+ 			old_weight = 0x10000 - new_weight;
 419+ 			sample = (old_sample * old_weight + new_sample * new_weight) >> 16;
 420+-			goto *put;
 421+-#define PUT16_END after_put
 422+-#include "plugin_ops.h"
 423+-#undef PUT16_END
 424+-		after_put:
 425++			put16(dst, sample, put_idx);
 426+ 			dst += dst_step;
 427+ 			dst_frames1++;
 428+ 			pos += LINEAR_DIV;
 429+@@ -192,19 +178,13 @@ static void linear_shrink(struct rate_linear *rate,
 430+ 			  const snd_pcm_channel_area_t *src_areas,
 431+ 			  snd_pcm_uframes_t src_offset, unsigned int src_frames)
 432+ {
 433+-#define GET16_LABELS
 434+-#define PUT16_LABELS
 435+-#include "plugin_ops.h"
 436+-#undef GET16_LABELS
 437+-#undef PUT16_LABELS
 438+-	void *get = get16_labels[rate->get_idx];
 439+-	void *put = put16_labels[rate->put_idx];
 440+ 	unsigned int get_increment = rate->pitch;
 441+ 	unsigned int channel;
 442+ 	unsigned int src_frames1;
 443+ 	unsigned int dst_frames1;
 444+ 	int16_t sample = 0;
 445+ 	unsigned int pos;
 446++	unsigned int get_idx = rate->get_idx, put_idx = rate->get_idx;
 447+ 
 448+ 	for (channel = 0; channel < rate->channels; ++channel) {
 449+ 		const snd_pcm_channel_area_t *src_area = &src_areas[channel];
 450+@@ -223,13 +203,7 @@ static void linear_shrink(struct rate_linear *rate,
 451+ 		src_frames1 = 0;
 452+ 		dst_frames1 = 0;
 453+ 		while (src_frames1 < src_frames) {
 454+-			
 455+-			goto *get;
 456+-#define GET16_END after_get
 457+-#include "plugin_ops.h"
 458+-#undef GET16_END
 459+-		after_get:
 460+-			new_sample = sample;
 461++			new_sample = get16(src, get_idx);
 462+ 			src += src_step;
 463+ 			src_frames1++;
 464+ 			pos += get_increment;
 465+@@ -238,11 +212,7 @@ static void linear_shrink(struct rate_linear *rate,
 466+ 				old_weight = (pos << (32 - LINEAR_DIV_SHIFT)) / (get_increment >> (LINEAR_DIV_SHIFT - 16));
 467+ 				new_weight = 0x10000 - old_weight;
 468+ 				sample = (old_sample * old_weight + new_sample * new_weight) >> 16;
 469+-				goto *put;
 470+-#define PUT16_END after_put
 471+-#include "plugin_ops.h"
 472+-#undef PUT16_END
 473+-			after_put:
 474++				put16(dst, sample, put_idx);
 475+ 				dst += dst_step;
 476+ 				dst_frames1++;
 477+ 				if (CHECK_SANITY(dst_frames1 > dst_frames)) {
 478+diff --git a/src/pcm/pcm_route.c b/src/pcm/pcm_route.c
 479+index 737c8fa4..f9ba16a1 100644
 480+--- a/src/pcm/pcm_route.c
 481++++ b/src/pcm/pcm_route.c
 482+@@ -131,10 +131,6 @@ static void snd_pcm_route_convert1_one(const snd_pcm_channel_area_t *dst_area,
 483+ 				       const snd_pcm_route_ttable_dst_t* ttable,
 484+ 				       const snd_pcm_route_params_t *params)
 485+ {
 486+-#define CONV_LABELS
 487+-#include "plugin_ops.h"
 488+-#undef CONV_LABELS
 489+-	void *conv;
 490+ 	const snd_pcm_channel_area_t *src_area = 0;
 491+ 	unsigned int srcidx;
 492+ 	const char *src;
 493+@@ -156,17 +152,12 @@ static void snd_pcm_route_convert1_one(const snd_pcm_channel_area_t *dst_area,
 494+ 		return;
 495+ 	}
 496+ 	
 497+-	conv = conv_labels[params->conv_idx];
 498+ 	src = snd_pcm_channel_area_addr(src_area, src_offset);
 499+ 	dst = snd_pcm_channel_area_addr(dst_area, dst_offset);
 500+ 	src_step = snd_pcm_channel_area_step(src_area);
 501+ 	dst_step = snd_pcm_channel_area_step(dst_area);
 502+ 	while (frames-- > 0) {
 503+-		goto *conv;
 504+-#define CONV_END after
 505+-#include "plugin_ops.h"
 506+-#undef CONV_END
 507+-	after:
 508++		conv(dst, src, params->conv_idx);
 509+ 		src += src_step;
 510+ 		dst += dst_step;
 511+ 	}
 512+@@ -181,16 +172,13 @@ static void snd_pcm_route_convert1_one_getput(const snd_pcm_channel_area_t *dst_
 513+ 					      const snd_pcm_route_ttable_dst_t* ttable,
 514+ 					      const snd_pcm_route_params_t *params)
 515+ {
 516+-#define CONV24_LABELS
 517+-#include "plugin_ops.h"
 518+-#undef CONV24_LABELS
 519+-	void *get, *put;
 520+ 	const snd_pcm_channel_area_t *src_area = 0;
 521+ 	unsigned int srcidx;
 522+ 	const char *src;
 523+ 	char *dst;
 524+ 	int src_step, dst_step;
 525+ 	uint32_t sample = 0;
 526++	unsigned int get_idx = params->get_idx, put_idx = params->put_idx;
 527+ 	for (srcidx = 0; srcidx < ttable->nsrcs && srcidx < src_channels; ++srcidx) {
 528+ 		unsigned int channel = ttable->srcs[srcidx].channel;
 529+ 		if (channel >= src_channels)
 530+@@ -207,18 +195,13 @@ static void snd_pcm_route_convert1_one_getput(const snd_pcm_channel_area_t *dst_
 531+ 		return;
 532+ 	}
 533+ 	
 534+-	get = get32_labels[params->get_idx];
 535+-	put = put32_labels[params->put_idx];
 536+ 	src = snd_pcm_channel_area_addr(src_area, src_offset);
 537+ 	dst = snd_pcm_channel_area_addr(dst_area, dst_offset);
 538+ 	src_step = snd_pcm_channel_area_step(src_area);
 539+ 	dst_step = snd_pcm_channel_area_step(dst_area);
 540+ 	while (frames-- > 0) {
 541+-		goto *get;
 542+-#define CONV24_END after
 543+-#include "plugin_ops.h"
 544+-#undef CONV24_END
 545+-	after:
 546++		sample = get32(src, get_idx);
 547++		put32(dst, sample, put_idx);
 548+ 		src += src_step;
 549+ 		dst += dst_step;
 550+ 	}
 551+@@ -233,34 +216,6 @@ static void snd_pcm_route_convert1_many(const snd_pcm_channel_area_t *dst_area,
 552+ 					const snd_pcm_route_ttable_dst_t* ttable,
 553+ 					const snd_pcm_route_params_t *params)
 554+ {
 555+-#define GET32_LABELS
 556+-#define PUT32_LABELS
 557+-#include "plugin_ops.h"
 558+-#undef GET32_LABELS
 559+-#undef PUT32_LABELS
 560+-	static void *const zero_labels[2] = {
 561+-		&&zero_int64,
 562+-#if SND_PCM_PLUGIN_ROUTE_FLOAT
 563+-		&&zero_float
 564+-#endif
 565+-	};
 566+-	/* sum_type att */
 567+-	static void *const add_labels[2 * 2] = {
 568+-		&&add_int64_noatt, &&add_int64_att,
 569+-#if SND_PCM_PLUGIN_ROUTE_FLOAT
 570+-		&&add_float_noatt, &&add_float_att
 571+-#endif
 572+-	};
 573+-	/* sum_type att */
 574+-	static void *const norm_labels[2 * 2] = {
 575+-		&&norm_int64_noatt,
 576+-		&&norm_int64_att,
 577+-#if SND_PCM_PLUGIN_ROUTE_FLOAT
 578+-		&&norm_float,
 579+-		&&norm_float,
 580+-#endif
 581+-	};
 582+-	void *zero, *get32, *add, *norm, *put32;
 583+ 	int nsrcs = ttable->nsrcs;
 584+ 	char *dst;
 585+ 	int dst_step;
 586+@@ -269,6 +224,7 @@ static void snd_pcm_route_convert1_many(const snd_pcm_channel_area_t *dst_area,
 587+ 	snd_pcm_route_ttable_src_t src_tt[nsrcs];
 588+ 	int32_t sample = 0;
 589+ 	int srcidx, srcidx1 = 0;
 590++	unsigned get_idx = params->get_idx, put_idx = params->put_idx;
 591+ 	for (srcidx = 0; srcidx < nsrcs && (unsigned)srcidx < src_channels; ++srcidx) {
 592+ 		const snd_pcm_channel_area_t *src_area;
 593+ 		unsigned int channel = ttable->srcs[srcidx].channel;
 594+@@ -301,11 +257,6 @@ static void snd_pcm_route_convert1_many(const snd_pcm_channel_area_t *dst_area,
 595+ 		return;
 596+ 	}
 597+ 
 598+-	zero = zero_labels[params->sum_idx];
 599+-	get32 = get32_labels[params->get_idx];
 600+-	add = add_labels[params->sum_idx * 2 + ttable->att];
 601+-	norm = norm_labels[params->sum_idx * 2 + ttable->att];
 602+-	put32 = put32_labels[params->put_idx];
 603+ 	dst = snd_pcm_channel_area_addr(dst_area, dst_offset);
 604+ 	dst_step = snd_pcm_channel_area_step(dst_area);
 605+ 
 606+@@ -314,83 +265,71 @@ static void snd_pcm_route_convert1_many(const snd_pcm_channel_area_t *dst_area,
 607+ 		sum_t sum;
 608+ 
 609+ 		/* Zero sum */
 610+-		goto *zero;
 611+-	zero_int64: 
 612+-		sum.as_sint64 = 0;
 613+-		goto zero_end;
 614++		switch (params->sum_idx) {
 615++		case 0: sum.as_sint64 = 0; break;
 616+ #if SND_PCM_PLUGIN_ROUTE_FLOAT
 617+-	zero_float:
 618+-		sum.as_float = 0.0;
 619+-		goto zero_end;
 620++		case 1: sum.as_float = 0.0; break;
 621+ #endif
 622+-	zero_end:
 623++		}
 624+ 		for (srcidx = 0; srcidx < nsrcs; ++srcidx) {
 625+ 			const char *src = srcs[srcidx];
 626+ 			
 627+ 			/* Get sample */
 628+-			goto *get32;
 629+-#define GET32_END after_get
 630+-#include "plugin_ops.h"
 631+-#undef GET32_END
 632+-		after_get:
 633++			sample = get32(src, get_idx);
 634+ 
 635+ 			/* Sum */
 636+-			goto *add;
 637+-		add_int64_att:
 638+-			sum.as_sint64 += (int64_t) sample * ttp->as_int;
 639+-			goto after_sum;
 640+-		add_int64_noatt:
 641+-			if (ttp->as_int)
 642+-				sum.as_sint64 += sample;
 643+-			goto after_sum;
 644++			switch (params->sum_idx * 2 + ttable->att) {
 645++			case 0:
 646++				if (ttp->as_int)
 647++					sum.as_sint64 += sample;
 648++				break;
 649++			case 1:
 650++				sum.as_sint64 += (int64_t) sample * ttp->as_int;
 651++				break;
 652+ #if SND_PCM_PLUGIN_ROUTE_FLOAT
 653+-		add_float_att:
 654+-			sum.as_float += sample * ttp->as_float;
 655+-			goto after_sum;
 656+-		add_float_noatt:
 657+-			if (ttp->as_int)
 658+-				sum.as_float += sample;
 659+-			goto after_sum;
 660++			case 2:
 661++				if (ttp->as_int)
 662++					sum.as_float += sample;
 663++				break;
 664++			case 3:
 665++				sum.as_float += sample * ttp->as_float;
 666++				break;
 667+ #endif
 668+-		after_sum:
 669++			}
 670+ 			srcs[srcidx] += src_steps[srcidx];
 671+ 			ttp++;
 672+ 		}
 673+ 		
 674+ 		/* Normalization */
 675+-		goto *norm;
 676+-	norm_int64_att:
 677+-		div(sum.as_sint64);
 678+-		/* fallthru */
 679+-	norm_int64_noatt:
 680+-		if (sum.as_sint64 > (int64_t)0x7fffffff)
 681+-			sample = 0x7fffffff;	/* maximum positive value */
 682+-		else if (sum.as_sint64 < -(int64_t)0x80000000)
 683+-			sample = 0x80000000;	/* maximum negative value */
 684+-		else
 685+-			sample = sum.as_sint64;
 686+-		goto after_norm;
 687+-
 688++		switch (params->sum_idx * 2 + ttable->att) {
 689++		case 1:
 690++			div(sum.as_sint64);
 691++			/* fallthru */
 692++		case 0:
 693++			if (sum.as_sint64 > (int64_t)0x7fffffff)
 694++				sample = 0x7fffffff;	/* maximum positive value */
 695++			else if (sum.as_sint64 < -(int64_t)0x80000000)
 696++				sample = 0x80000000;	/* maximum negative value */
 697++			else
 698++				sample = sum.as_sint64;
 699++			break;
 700+ #if SND_PCM_PLUGIN_ROUTE_FLOAT
 701+-	norm_float:
 702+-		sum.as_float = rint(sum.as_float);
 703+-		if (sum.as_float > (int64_t)0x7fffffff)
 704+-			sample = 0x7fffffff;	/* maximum positive value */
 705+-		else if (sum.as_float < -(int64_t)0x80000000)
 706+-			sample = 0x80000000;	/* maximum negative value */
 707+-		else
 708+-			sample = sum.as_float;
 709+-		goto after_norm;
 710++		case 2:
 711++		case 3:
 712++			sum.as_float = rint(sum.as_float);
 713++			if (sum.as_float > (int64_t)0x7fffffff)
 714++				sample = 0x7fffffff;	/* maximum positive value */
 715++			else if (sum.as_float < -(int64_t)0x80000000)
 716++				sample = 0x80000000;	/* maximum negative value */
 717++			else
 718++				sample = sum.as_float;
 719++			break;
 720+ #endif
 721+-	after_norm:
 722++		}
 723+ 		
 724+ 		/* Put sample */
 725+-		goto *put32;
 726+-#define PUT32_END after_put32
 727+-#include "plugin_ops.h"
 728+-#undef PUT32_END
 729+-	after_put32:
 730+-		
 731++		put32(dst, sample, put_idx);
 732++
 733+ 		dst += dst_step;
 734+ 	}
 735+ }
 736+diff --git a/src/pcm/plugin_ops.h b/src/pcm/plugin_ops.h
 737+index 6392073c..5c89a24f 100644
 738+--- a/src/pcm/plugin_ops.h
 739++++ b/src/pcm/plugin_ops.h
 740+@@ -19,6 +19,11 @@
 741+  *
 742+  */
 743+ 
 744++#include <assert.h>
 745++#include <math.h>
 746++#include <stdint.h>
 747++#include <byteswap.h>
 748++
 749+ #ifndef SX_INLINES
 750+ #define SX_INLINES
 751+ static inline uint32_t sx20(uint32_t x)
 752+@@ -92,626 +97,360 @@ static inline uint32_t sx24s(uint32_t x)
 753+ #define _put_triple_s(ptr,val) _put_triple_le(ptr,val)
 754+ #endif
 755+ 
 756+-#ifdef CONV_LABELS
 757+-/* src_wid src_endswap sign_toggle dst_wid dst_endswap */
 758+-static void *const conv_labels[4 * 2 * 2 * 4 * 2] = {
 759+-	&&conv_xxx1_xxx1,	 /*  8h ->  8h */
 760+-	&&conv_xxx1_xxx1,	 /*  8h ->  8s */
 761+-	&&conv_xxx1_xx10,	 /*  8h -> 16h */
 762+-	&&conv_xxx1_xx01,	 /*  8h -> 16s */
 763+-	&&conv_xxx1_x100,	 /*  8h -> 24h */
 764+-	&&conv_xxx1_001x,	 /*  8h -> 24s */
 765+-	&&conv_xxx1_1000,	 /*  8h -> 32h */
 766+-	&&conv_xxx1_0001,	 /*  8h -> 32s */
 767+-	&&conv_xxx1_xxx9,	 /*  8h ^>  8h */
 768+-	&&conv_xxx1_xxx9,	 /*  8h ^>  8s */
 769+-	&&conv_xxx1_xx90,	 /*  8h ^> 16h */
 770+-	&&conv_xxx1_xx09,	 /*  8h ^> 16s */
 771+-	&&conv_xxx1_x900,	 /*  8h ^> 24h */
 772+-	&&conv_xxx1_009x,	 /*  8h ^> 24s */
 773+-	&&conv_xxx1_9000,	 /*  8h ^> 32h */
 774+-	&&conv_xxx1_0009,	 /*  8h ^> 32s */
 775+-	&&conv_xxx1_xxx1,	 /*  8s ->  8h */
 776+-	&&conv_xxx1_xxx1,	 /*  8s ->  8s */
 777+-	&&conv_xxx1_xx10,	 /*  8s -> 16h */
 778+-	&&conv_xxx1_xx01,	 /*  8s -> 16s */
 779+-	&&conv_xxx1_x100,	 /*  8s -> 24h */
 780+-	&&conv_xxx1_001x,	 /*  8s -> 24s */
 781+-	&&conv_xxx1_1000,	 /*  8s -> 32h */
 782+-	&&conv_xxx1_0001,	 /*  8s -> 32s */
 783+-	&&conv_xxx1_xxx9,	 /*  8s ^>  8h */
 784+-	&&conv_xxx1_xxx9,	 /*  8s ^>  8s */
 785+-	&&conv_xxx1_xx90,	 /*  8s ^> 16h */
 786+-	&&conv_xxx1_xx09,	 /*  8s ^> 16s */
 787+-	&&conv_xxx1_x900,	 /*  8s ^> 24h */
 788+-	&&conv_xxx1_009x,	 /*  8s ^> 24s */
 789+-	&&conv_xxx1_9000,	 /*  8s ^> 32h */
 790+-	&&conv_xxx1_0009,	 /*  8s ^> 32s */
 791+-	&&conv_xx12_xxx1,	 /* 16h ->  8h */
 792+-	&&conv_xx12_xxx1,	 /* 16h ->  8s */
 793+-	&&conv_xx12_xx12,	 /* 16h -> 16h */
 794+-	&&conv_xx12_xx21,	 /* 16h -> 16s */
 795+-	&&conv_xx12_x120,	 /* 16h -> 24h */
 796+-	&&conv_xx12_021x,	 /* 16h -> 24s */
 797+-	&&conv_xx12_1200,	 /* 16h -> 32h */
 798+-	&&conv_xx12_0021,	 /* 16h -> 32s */
 799+-	&&conv_xx12_xxx9,	 /* 16h ^>  8h */
 800+-	&&conv_xx12_xxx9,	 /* 16h ^>  8s */
 801+-	&&conv_xx12_xx92,	 /* 16h ^> 16h */
 802+-	&&conv_xx12_xx29,	 /* 16h ^> 16s */
 803+-	&&conv_xx12_x920,	 /* 16h ^> 24h */
 804+-	&&conv_xx12_029x,	 /* 16h ^> 24s */
 805+-	&&conv_xx12_9200,	 /* 16h ^> 32h */
 806+-	&&conv_xx12_0029,	 /* 16h ^> 32s */
 807+-	&&conv_xx12_xxx2,	 /* 16s ->  8h */
 808+-	&&conv_xx12_xxx2,	 /* 16s ->  8s */
 809+-	&&conv_xx12_xx21,	 /* 16s -> 16h */
 810+-	&&conv_xx12_xx12,	 /* 16s -> 16s */
 811+-	&&conv_xx12_x210,	 /* 16s -> 24h */
 812+-	&&conv_xx12_012x,	 /* 16s -> 24s */
 813+-	&&conv_xx12_2100,	 /* 16s -> 32h */
 814+-	&&conv_xx12_0012,	 /* 16s -> 32s */
 815+-	&&conv_xx12_xxxA,	 /* 16s ^>  8h */
 816+-	&&conv_xx12_xxxA,	 /* 16s ^>  8s */
 817+-	&&conv_xx12_xxA1,	 /* 16s ^> 16h */
 818+-	&&conv_xx12_xx1A,	 /* 16s ^> 16s */
 819+-	&&conv_xx12_xA10,	 /* 16s ^> 24h */
 820+-	&&conv_xx12_01Ax,	 /* 16s ^> 24s */
 821+-	&&conv_xx12_A100,	 /* 16s ^> 32h */
 822+-	&&conv_xx12_001A,	 /* 16s ^> 32s */
 823+-	&&conv_x123_xxx1,	 /* 24h ->  8h */
 824+-	&&conv_x123_xxx1,	 /* 24h ->  8s */
 825+-	&&conv_x123_xx12,	 /* 24h -> 16h */
 826+-	&&conv_x123_xx21,	 /* 24h -> 16s */
 827+-	&&conv_x123_x123,	 /* 24h -> 24h */
 828+-	&&conv_x123_321x,	 /* 24h -> 24s */
 829+-	&&conv_x123_1230,	 /* 24h -> 32h */
 830+-	&&conv_x123_0321,	 /* 24h -> 32s */
 831+-	&&conv_x123_xxx9,	 /* 24h ^>  8h */
 832+-	&&conv_x123_xxx9,	 /* 24h ^>  8s */
 833+-	&&conv_x123_xx92,	 /* 24h ^> 16h */
 834+-	&&conv_x123_xx29,	 /* 24h ^> 16s */
 835+-	&&conv_x123_x923,	 /* 24h ^> 24h */
 836+-	&&conv_x123_329x,	 /* 24h ^> 24s */
 837+-	&&conv_x123_9230,	 /* 24h ^> 32h */
 838+-	&&conv_x123_0329,	 /* 24h ^> 32s */
 839+-	&&conv_123x_xxx3,	 /* 24s ->  8h */
 840+-	&&conv_123x_xxx3,	 /* 24s ->  8s */
 841+-	&&conv_123x_xx32,	 /* 24s -> 16h */
 842+-	&&conv_123x_xx23,	 /* 24s -> 16s */
 843+-	&&conv_123x_x321,	 /* 24s -> 24h */
 844+-	&&conv_123x_123x,	 /* 24s -> 24s */
 845+-	&&conv_123x_3210,	 /* 24s -> 32h */
 846+-	&&conv_123x_0123,	 /* 24s -> 32s */
 847+-	&&conv_123x_xxxB,	 /* 24s ^>  8h */
 848+-	&&conv_123x_xxxB,	 /* 24s ^>  8s */
 849+-	&&conv_123x_xxB2,	 /* 24s ^> 16h */
 850+-	&&conv_123x_xx2B,	 /* 24s ^> 16s */
 851+-	&&conv_123x_xB21,	 /* 24s ^> 24h */
 852+-	&&conv_123x_12Bx,	 /* 24s ^> 24s */
 853+-	&&conv_123x_B210,	 /* 24s ^> 32h */
 854+-	&&conv_123x_012B,	 /* 24s ^> 32s */
 855+-	&&conv_1234_xxx1,	 /* 32h ->  8h */
 856+-	&&conv_1234_xxx1,	 /* 32h ->  8s */
 857+-	&&conv_1234_xx12,	 /* 32h -> 16h */
 858+-	&&conv_1234_xx21,	 /* 32h -> 16s */
 859+-	&&conv_1234_x123,	 /* 32h -> 24h */
 860+-	&&conv_1234_321x,	 /* 32h -> 24s */
 861+-	&&conv_1234_1234,	 /* 32h -> 32h */
 862+-	&&conv_1234_4321,	 /* 32h -> 32s */
 863+-	&&conv_1234_xxx9,	 /* 32h ^>  8h */
 864+-	&&conv_1234_xxx9,	 /* 32h ^>  8s */
 865+-	&&conv_1234_xx92,	 /* 32h ^> 16h */
 866+-	&&conv_1234_xx29,	 /* 32h ^> 16s */
 867+-	&&conv_1234_x923,	 /* 32h ^> 24h */
 868+-	&&conv_1234_329x,	 /* 32h ^> 24s */
 869+-	&&conv_1234_9234,	 /* 32h ^> 32h */
 870+-	&&conv_1234_4329,	 /* 32h ^> 32s */
 871+-	&&conv_1234_xxx4,	 /* 32s ->  8h */
 872+-	&&conv_1234_xxx4,	 /* 32s ->  8s */
 873+-	&&conv_1234_xx43,	 /* 32s -> 16h */
 874+-	&&conv_1234_xx34,	 /* 32s -> 16s */
 875+-	&&conv_1234_x432,	 /* 32s -> 24h */
 876+-	&&conv_1234_234x,	 /* 32s -> 24s */
 877+-	&&conv_1234_4321,	 /* 32s -> 32h */
 878+-	&&conv_1234_1234,	 /* 32s -> 32s */
 879+-	&&conv_1234_xxxC,	 /* 32s ^>  8h */
 880+-	&&conv_1234_xxxC,	 /* 32s ^>  8s */
 881+-	&&conv_1234_xxC3,	 /* 32s ^> 16h */
 882+-	&&conv_1234_xx3C,	 /* 32s ^> 16s */
 883+-	&&conv_1234_xC32,	 /* 32s ^> 24h */
 884+-	&&conv_1234_23Cx,	 /* 32s ^> 24s */
 885+-	&&conv_1234_C321,	 /* 32s ^> 32h */
 886+-	&&conv_1234_123C,	 /* 32s ^> 32s */
 887+-};
 888+-#endif
 889+-
 890+-#ifdef CONV_END
 891+-while(0) {
 892+-conv_xxx1_xxx1: as_u8(dst) = as_u8c(src); goto CONV_END;
 893+-conv_xxx1_xx10: as_u16(dst) = (uint16_t)as_u8c(src) << 8; goto CONV_END;
 894+-conv_xxx1_xx01: as_u16(dst) = (uint16_t)as_u8c(src); goto CONV_END;
 895+-conv_xxx1_x100: as_u32(dst) = sx24((uint32_t)as_u8c(src) << 16); goto CONV_END;
 896+-conv_xxx1_001x: as_u32(dst) = sx24s((uint32_t)as_u8c(src) << 8); goto CONV_END;
 897+-conv_xxx1_1000: as_u32(dst) = (uint32_t)as_u8c(src) << 24; goto CONV_END;
 898+-conv_xxx1_0001: as_u32(dst) = (uint32_t)as_u8c(src); goto CONV_END;
 899+-conv_xxx1_xxx9: as_u8(dst) = as_u8c(src) ^ 0x80; goto CONV_END;
 900+-conv_xxx1_xx90: as_u16(dst) = (uint16_t)(as_u8c(src) ^ 0x80) << 8; goto CONV_END;
 901+-conv_xxx1_xx09: as_u16(dst) = (uint16_t)(as_u8c(src) ^ 0x80); goto CONV_END;
 902+-conv_xxx1_x900: as_u32(dst) = sx24((uint32_t)(as_u8c(src) ^ 0x80) << 16); goto CONV_END;
 903+-conv_xxx1_009x: as_u32(dst) = sx24s((uint32_t)(as_u8c(src) ^ 0x80) << 8); goto CONV_END;
 904+-conv_xxx1_9000: as_u32(dst) = (uint32_t)(as_u8c(src) ^ 0x80) << 24; goto CONV_END;
 905+-conv_xxx1_0009: as_u32(dst) = (uint32_t)(as_u8c(src) ^ 0x80); goto CONV_END;
 906+-conv_xx12_xxx1: as_u8(dst) = as_u16c(src) >> 8; goto CONV_END;
 907+-conv_xx12_xx12: as_u16(dst) = as_u16c(src); goto CONV_END;
 908+-conv_xx12_xx21: as_u16(dst) = bswap_16(as_u16c(src)); goto CONV_END;
 909+-conv_xx12_x120: as_u32(dst) = sx24((uint32_t)as_u16c(src) << 8); goto CONV_END;
 910+-conv_xx12_021x: as_u32(dst) = sx24s((uint32_t)bswap_16(as_u16c(src)) << 8); goto CONV_END;
 911+-conv_xx12_1200: as_u32(dst) = (uint32_t)as_u16c(src) << 16; goto CONV_END;
 912+-conv_xx12_0021: as_u32(dst) = (uint32_t)bswap_16(as_u16c(src)); goto CONV_END;
 913+-conv_xx12_xxx9: as_u8(dst) = (as_u16c(src) >> 8) ^ 0x80; goto CONV_END;
 914+-conv_xx12_xx92: as_u16(dst) = as_u16c(src) ^ 0x8000; goto CONV_END;
 915+-conv_xx12_xx29: as_u16(dst) = bswap_16(as_u16c(src)) ^ 0x80; goto CONV_END;
 916+-conv_xx12_x920: as_u32(dst) = sx24((uint32_t)(as_u16c(src) ^ 0x8000) << 8); goto CONV_END;
 917+-conv_xx12_029x: as_u32(dst) = sx24s((uint32_t)(bswap_16(as_u16c(src)) ^ 0x80) << 8); goto CONV_END;
 918+-conv_xx12_9200: as_u32(dst) = (uint32_t)(as_u16c(src) ^ 0x8000) << 16; goto CONV_END;
 919+-conv_xx12_0029: as_u32(dst) = (uint32_t)(bswap_16(as_u16c(src)) ^ 0x80); goto CONV_END;
 920+-conv_xx12_xxx2: as_u8(dst) = as_u16c(src) & 0xff; goto CONV_END;
 921+-conv_xx12_x210: as_u32(dst) = sx24((uint32_t)bswap_16(as_u16c(src)) << 8); goto CONV_END;
 922+-conv_xx12_012x: as_u32(dst) = sx24s((uint32_t)as_u16c(src) << 8); goto CONV_END;
 923+-conv_xx12_2100: as_u32(dst) = (uint32_t)bswap_16(as_u16c(src)) << 16; goto CONV_END;
 924+-conv_xx12_0012: as_u32(dst) = (uint32_t)as_u16c(src); goto CONV_END; 
 925+-conv_xx12_xxxA: as_u8(dst) = (as_u16c(src) ^ 0x80) & 0xff; goto CONV_END;
 926+-conv_xx12_xxA1: as_u16(dst) = bswap_16(as_u16c(src) ^ 0x80); goto CONV_END;
 927+-conv_xx12_xx1A: as_u16(dst) = as_u16c(src) ^ 0x80; goto CONV_END;
 928+-conv_xx12_xA10: as_u32(dst) = sx24((uint32_t)bswap_16(as_u16c(src) ^ 0x80) << 8); goto CONV_END;
 929+-conv_xx12_01Ax: as_u32(dst) = sx24s((uint32_t)(as_u16c(src) ^ 0x80) << 8); goto CONV_END;
 930+-conv_xx12_A100: as_u32(dst) = (uint32_t)bswap_16(as_u16c(src) ^ 0x80) << 16; goto CONV_END;
 931+-conv_xx12_001A: as_u32(dst) = (uint32_t)(as_u16c(src) ^ 0x80); goto CONV_END;
 932+-conv_x123_xxx1: as_u8(dst) = as_u32c(src) >> 16; goto CONV_END;
 933+-conv_x123_xx12: as_u16(dst) = as_u32c(src) >> 8; goto CONV_END;
 934+-conv_x123_xx21: as_u16(dst) = bswap_16(as_u32c(src) >> 8); goto CONV_END;
 935+-conv_x123_x123: as_u32(dst) = sx24(as_u32c(src)); goto CONV_END;
 936+-conv_x123_321x: as_u32(dst) = sx24s(bswap_32(as_u32c(src))); goto CONV_END;
 937+-conv_x123_1230: as_u32(dst) = as_u32c(src) << 8; goto CONV_END;
 938+-conv_x123_0321: as_u32(dst) = bswap_32(as_u32c(src)) >> 8; goto CONV_END;
 939+-conv_x123_xxx9: as_u8(dst) = (as_u32c(src) >> 16) ^ 0x80; goto CONV_END;
 940+-conv_x123_xx92: as_u16(dst) = (as_u32c(src) >> 8) ^ 0x8000; goto CONV_END;
 941+-conv_x123_xx29: as_u16(dst) = bswap_16(as_u32c(src) >> 8) ^ 0x80; goto CONV_END;
 942+-conv_x123_x923: as_u32(dst) = sx24(as_u32c(src) ^ 0x800000); goto CONV_END;
 943+-conv_x123_329x: as_u32(dst) = sx24s(bswap_32(as_u32c(src)) ^ 0x8000); goto CONV_END;
 944+-conv_x123_9230: as_u32(dst) = (as_u32c(src) ^ 0x800000) << 8; goto CONV_END;
 945+-conv_x123_0329: as_u32(dst) = (bswap_32(as_u32c(src)) >> 8) ^ 0x80; goto CONV_END;
 946+-conv_123x_xxx3: as_u8(dst) = (as_u32c(src) >> 8) & 0xff; goto CONV_END;
 947+-conv_123x_xx32: as_u16(dst) = bswap_16(as_u32c(src) >> 8); goto CONV_END;
 948+-conv_123x_xx23: as_u16(dst) = (as_u32c(src) >> 8) & 0xffff; goto CONV_END;
 949+-conv_123x_x321: as_u32(dst) = sx24(bswap_32(as_u32c(src))); goto CONV_END;
 950+-conv_123x_123x: as_u32(dst) = sx24s(as_u32c(src)); goto CONV_END;
 951+-conv_123x_3210: as_u32(dst) = bswap_32(as_u32c(src)) << 8; goto CONV_END;
 952+-conv_123x_0123: as_u32(dst) = as_u32c(src) >> 8; goto CONV_END;
 953+-conv_123x_xxxB: as_u8(dst) = ((as_u32c(src) >> 8) & 0xff) ^ 0x80; goto CONV_END;
 954+-conv_123x_xxB2: as_u16(dst) = bswap_16((as_u32c(src) >> 8) ^ 0x80); goto CONV_END;
 955+-conv_123x_xx2B: as_u16(dst) = ((as_u32c(src) >> 8) & 0xffff) ^ 0x80; goto CONV_END;
 956+-conv_123x_xB21: as_u32(dst) = sx24(bswap_32(as_u32c(src)) ^ 0x800000); goto CONV_END;
 957+-conv_123x_12Bx: as_u32(dst) = sx24s(as_u32c(src) ^ 0x8000); goto CONV_END;
 958+-conv_123x_B210: as_u32(dst) = bswap_32(as_u32c(src) ^ 0x8000) << 8; goto CONV_END;
 959+-conv_123x_012B: as_u32(dst) = (as_u32c(src) >> 8) ^ 0x80; goto CONV_END;
 960+-conv_1234_xxx1: as_u8(dst) = as_u32c(src) >> 24; goto CONV_END;
 961+-conv_1234_xx12: as_u16(dst) = as_u32c(src) >> 16; goto CONV_END;
 962+-conv_1234_xx21: as_u16(dst) = bswap_16(as_u32c(src) >> 16); goto CONV_END;
 963+-conv_1234_x123: as_u32(dst) = sx24(as_u32c(src) >> 8); goto CONV_END;
 964+-conv_1234_321x: as_u32(dst) = sx24s(bswap_32(as_u32c(src)) << 8); goto CONV_END;
 965+-conv_1234_1234: as_u32(dst) = as_u32c(src); goto CONV_END;
 966+-conv_1234_4321: as_u32(dst) = bswap_32(as_u32c(src)); goto CONV_END;
 967+-conv_1234_xxx9: as_u8(dst) = (as_u32c(src) >> 24) ^ 0x80; goto CONV_END;
 968+-conv_1234_xx92: as_u16(dst) = (as_u32c(src) >> 16) ^ 0x8000; goto CONV_END;
 969+-conv_1234_xx29: as_u16(dst) = bswap_16(as_u32c(src) >> 16) ^ 0x80; goto CONV_END;
 970+-conv_1234_x923: as_u32(dst) = sx24((as_u32c(src) >> 8) ^ 0x800000); goto CONV_END;
 971+-conv_1234_329x: as_u32(dst) = sx24s((bswap_32(as_u32c(src)) ^ 0x80) << 8); goto CONV_END;
 972+-conv_1234_9234: as_u32(dst) = as_u32c(src) ^ 0x80000000; goto CONV_END;
 973+-conv_1234_4329: as_u32(dst) = bswap_32(as_u32c(src)) ^ 0x80; goto CONV_END;
 974+-conv_1234_xxx4: as_u8(dst) = as_u32c(src) & 0xff; goto CONV_END;
 975+-conv_1234_xx43: as_u16(dst) = bswap_16(as_u32c(src)); goto CONV_END;
 976+-conv_1234_xx34: as_u16(dst) = as_u32c(src) & 0xffff; goto CONV_END;
 977+-conv_1234_x432: as_u32(dst) = sx24(bswap_32(as_u32c(src)) >> 8); goto CONV_END;
 978+-conv_1234_234x: as_u32(dst) = sx24s(as_u32c(src) << 8); goto CONV_END;
 979+-conv_1234_xxxC: as_u8(dst) = (as_u32c(src) & 0xff) ^ 0x80; goto CONV_END;
 980+-conv_1234_xxC3: as_u16(dst) = bswap_16(as_u32c(src) ^ 0x80); goto CONV_END;
 981+-conv_1234_xx3C: as_u16(dst) = (as_u32c(src) & 0xffff) ^ 0x80; goto CONV_END;
 982+-conv_1234_xC32: as_u32(dst) = sx24((bswap_32(as_u32c(src)) >> 8) ^ 0x800000); goto CONV_END;
 983+-conv_1234_23Cx: as_u32(dst) = sx24s((as_u32c(src) ^ 0x80) << 8); goto CONV_END;
 984+-conv_1234_C321: as_u32(dst) = bswap_32(as_u32c(src) ^ 0x80); goto CONV_END;
 985+-conv_1234_123C: as_u32(dst) = as_u32c(src) ^ 0x80; goto CONV_END;
 986++static inline void conv(char *dst, const char *src, unsigned int idx) {
 987++	switch (idx) {
 988++	case   0: /*  8h ->  8h */
 989++	case   1: /*  8h ->  8s */
 990++	case  16: /*  8s ->  8h */
 991++	case  17: /*  8s ->  8s */ as_u8(dst) = as_u8c(src); break;
 992++	case   2: /*  8h -> 16h */
 993++	case  18: /*  8s -> 16h */ as_u16(dst) = (uint16_t)as_u8c(src) << 8; break;
 994++	case   3: /*  8h -> 16s */
 995++	case  19: /*  8s -> 16s */ as_u16(dst) = (uint16_t)as_u8c(src); break;
 996++	case   4: /*  8h -> 24h */
 997++	case  20: /*  8s -> 24h */ as_u32(dst) = sx24((uint32_t)as_u8c(src) << 16); break;
 998++	case   5: /*  8h -> 24s */
 999++	case  21: /*  8s -> 24s */ as_u32(dst) = sx24s((uint32_t)as_u8c(src) << 8); break;
1000++	case   6: /*  8h -> 32h */
1001++	case  22: /*  8s -> 32h */ as_u32(dst) = (uint32_t)as_u8c(src) << 24; break;
1002++	case   7: /*  8h -> 32s */
1003++	case  23: /*  8s -> 32s */ as_u32(dst) = (uint32_t)as_u8c(src); break;
1004++	case   8: /*  8h ^>  8h */
1005++	case   9: /*  8h ^>  8s */
1006++	case  24: /*  8s ^>  8h */
1007++	case  25: /*  8s ^>  8s */ as_u8(dst) = as_u8c(src) ^ 0x80; break;
1008++	case  10: /*  8h ^> 16h */
1009++	case  26: /*  8s ^> 16h */ as_u16(dst) = (uint16_t)(as_u8c(src) ^ 0x80) << 8; break;
1010++	case  11: /*  8h ^> 16s */
1011++	case  27: /*  8s ^> 16s */ as_u16(dst) = (uint16_t)(as_u8c(src) ^ 0x80); break;
1012++	case  12: /*  8h ^> 24h */
1013++	case  28: /*  8s ^> 24h */ as_u32(dst) = sx24((uint32_t)(as_u8c(src) ^ 0x80) << 16); break;
1014++	case  13: /*  8h ^> 24s */
1015++	case  29: /*  8s ^> 24s */ as_u32(dst) = sx24s((uint32_t)(as_u8c(src) ^ 0x80) << 8); break;
1016++	case  14: /*  8h ^> 32h */
1017++	case  30: /*  8s ^> 32h */ as_u32(dst) = (uint32_t)(as_u8c(src) ^ 0x80) << 24; break;
1018++	case  15: /*  8h ^> 32s */
1019++	case  31: /*  8s ^> 32s */ as_u32(dst) = (uint32_t)(as_u8c(src) ^ 0x80); break;
1020++	case  32: /* 16h ->  8h */
1021++	case  33: /* 16h ->  8s */ as_u8(dst) = as_u16c(src) >> 8; break;
1022++	case  34: /* 16h -> 16h */ as_u16(dst) = as_u16c(src); break;
1023++	case  35: /* 16h -> 16s */ as_u16(dst) = bswap_16(as_u16c(src)); break;
1024++	case  36: /* 16h -> 24h */ as_u32(dst) = sx24((uint32_t)as_u16c(src) << 8); break;
1025++	case  37: /* 16h -> 24s */ as_u32(dst) = sx24s((uint32_t)bswap_16(as_u16c(src)) << 8); break;
1026++	case  38: /* 16h -> 32h */ as_u32(dst) = (uint32_t)as_u16c(src) << 16; break;
1027++	case  39: /* 16h -> 32s */ as_u32(dst) = (uint32_t)bswap_16(as_u16c(src)); break;
1028++	case  40: /* 16h ^>  8h */
1029++	case  41: /* 16h ^>  8s */ as_u8(dst) = (as_u16c(src) >> 8) ^ 0x80; break;
1030++	case  42: /* 16h ^> 16h */
1031++	case  51: /* 16s -> 16s */ as_u16(dst) = as_u16c(src) ^ 0x8000; break;
1032++	case  43: /* 16h ^> 16s */
1033++	case  50: /* 16s -> 16h */ as_u16(dst) = bswap_16(as_u16c(src)) ^ 0x80; break;
1034++	case  44: /* 16h ^> 24h */ as_u32(dst) = sx24((uint32_t)(as_u16c(src) ^ 0x8000) << 8); break;
1035++	case  45: /* 16h ^> 24s */ as_u32(dst) = sx24s((uint32_t)(bswap_16(as_u16c(src)) ^ 0x80) << 8); break;
1036++	case  46: /* 16h ^> 32h */ as_u32(dst) = (uint32_t)(as_u16c(src) ^ 0x8000) << 16; break;
1037++	case  47: /* 16h ^> 32s */ as_u32(dst) = (uint32_t)(bswap_16(as_u16c(src)) ^ 0x80); break;
1038++	case  48: /* 16s ->  8h */
1039++	case  49: /* 16s ->  8s */ as_u8(dst) = as_u16c(src) & 0xff; break;
1040++	case  52: /* 16s -> 24h */ as_u32(dst) = sx24((uint32_t)bswap_16(as_u16c(src)) << 8); break;
1041++	case  53: /* 16s -> 24s */ as_u32(dst) = sx24s((uint32_t)as_u16c(src) << 8); break;
1042++	case  54: /* 16s -> 32h */ as_u32(dst) = (uint32_t)bswap_16(as_u16c(src)) << 16; break;
1043++	case  55: /* 16s -> 32s */ as_u32(dst) = (uint32_t)as_u16c(src); break;
1044++	case  56: /* 16s ^>  8h */
1045++	case  57: /* 16s ^>  8s */ as_u8(dst) = (as_u16c(src) ^ 0x80) & 0xff; break;
1046++	case  58: /* 16s ^> 16h */ as_u16(dst) = bswap_16(as_u16c(src) ^ 0x80); break;
1047++	case  59: /* 16s ^> 16s */ as_u16(dst) = as_u16c(src) ^ 0x80; break;
1048++	case  60: /* 16s ^> 24h */ as_u32(dst) = sx24((uint32_t)bswap_16(as_u16c(src) ^ 0x80) << 8); break;
1049++	case  61: /* 16s ^> 24s */ as_u32(dst) = sx24s((uint32_t)(as_u16c(src) ^ 0x80) << 8); break;
1050++	case  62: /* 16s ^> 32h */ as_u32(dst) = (uint32_t)bswap_16(as_u16c(src) ^ 0x80) << 16; break;
1051++	case  63: /* 16s ^> 32s */ as_u32(dst) = (uint32_t)(as_u16c(src) ^ 0x80); break;
1052++	case  64: /* 24h ->  8h */
1053++	case  65: /* 24h ->  8s */ as_u8(dst) = as_u32c(src) >> 16; break;
1054++	case  66: /* 24h -> 16h */ as_u16(dst) = as_u32c(src) >> 8; break;
1055++	case  67: /* 24h -> 16s */ as_u16(dst) = bswap_16(as_u32c(src) >> 8); break;
1056++	case  68: /* 24h -> 24h */ as_u32(dst) = sx24(as_u32c(src)); break;
1057++	case  69: /* 24h -> 24s */ as_u32(dst) = sx24s(bswap_32(as_u32c(src))); break;
1058++	case  70: /* 24h -> 32h */ as_u32(dst) = as_u32c(src) << 8; break;
1059++	case  71: /* 24h -> 32s */ as_u32(dst) = bswap_32(as_u32c(src)) >> 8; break;
1060++	case  72: /* 24h ^>  8h */
1061++	case  73: /* 24h ^>  8s */ as_u8(dst) = (as_u32c(src) >> 16) ^ 0x80; break;
1062++	case  74: /* 24h ^> 16h */ as_u16(dst) = (as_u32c(src) >> 8) ^ 0x8000; break;
1063++	case  75: /* 24h ^> 16s */ as_u16(dst) = bswap_16(as_u32c(src) >> 8) ^ 0x80; break;
1064++	case  76: /* 24h ^> 24h */ as_u32(dst) = sx24(as_u32c(src) ^ 0x800000); break;
1065++	case  77: /* 24h ^> 24s */ as_u32(dst) = sx24s(bswap_32(as_u32c(src)) ^ 0x8000); break;
1066++	case  78: /* 24h ^> 32h */ as_u32(dst) = (as_u32c(src) ^ 0x800000) << 8; break;
1067++	case  79: /* 24h ^> 32s */ as_u32(dst) = (bswap_32(as_u32c(src)) >> 8) ^ 0x80; break;
1068++	case  80: /* 24s ->  8h */
1069++	case  81: /* 24s ->  8s */ as_u8(dst) = (as_u32c(src) >> 8) & 0xff; break;
1070++	case  82: /* 24s -> 16h */ as_u16(dst) = bswap_16(as_u32c(src) >> 8); break;
1071++	case  83: /* 24s -> 16s */ as_u16(dst) = (as_u32c(src) >> 8) & 0xffff; break;
1072++	case  84: /* 24s -> 24h */ as_u32(dst) = sx24(bswap_32(as_u32c(src))); break;
1073++	case  85: /* 24s -> 24s */ as_u32(dst) = sx24s(as_u32c(src)); break;
1074++	case  86: /* 24s -> 32h */ as_u32(dst) = bswap_32(as_u32c(src)) << 8; break;
1075++	case  87: /* 24s -> 32s */ as_u32(dst) = as_u32c(src) >> 8; break;
1076++	case  88: /* 24s ^>  8h */
1077++	case  89: /* 24s ^>  8s */ as_u8(dst) = ((as_u32c(src) >> 8) & 0xff) ^ 0x80; break;
1078++	case  90: /* 24s ^> 16h */ as_u16(dst) = bswap_16((as_u32c(src) >> 8) ^ 0x80); break;
1079++	case  91: /* 24s ^> 16s */ as_u16(dst) = ((as_u32c(src) >> 8) & 0xffff) ^ 0x80; break;
1080++	case  92: /* 24s ^> 24h */ as_u32(dst) = sx24(bswap_32(as_u32c(src)) ^ 0x800000); break;
1081++	case  93: /* 24s ^> 24s */ as_u32(dst) = sx24s(as_u32c(src) ^ 0x8000); break;
1082++	case  94: /* 24s ^> 32h */ as_u32(dst) = bswap_32(as_u32c(src) ^ 0x8000) << 8; break;
1083++	case  95: /* 24s ^> 32s */ as_u32(dst) = (as_u32c(src) >> 8) ^ 0x80; break;
1084++	case  96: /* 32h ->  8h */
1085++	case  97: /* 32h ->  8s */ as_u8(dst) = as_u32c(src) >> 24; break;
1086++	case  98: /* 32h -> 16h */ as_u16(dst) = as_u32c(src) >> 16; break;
1087++	case  99: /* 32h -> 16s */ as_u16(dst) = bswap_16(as_u32c(src) >> 16); break;
1088++	case 100: /* 32h -> 24h */ as_u32(dst) = sx24(as_u32c(src) >> 8); break;
1089++	case 101: /* 32h -> 24s */ as_u32(dst) = sx24s(bswap_32(as_u32c(src)) << 8); break;
1090++	case 102: /* 32h -> 32h */
1091++	case 119: /* 32s -> 32s */ as_u32(dst) = as_u32c(src); break;
1092++	case 103: /* 32h -> 32s */
1093++	case 118: /* 32s -> 32h */ as_u32(dst) = bswap_32(as_u32c(src)); break;
1094++	case 104: /* 32h ^>  8h */
1095++	case 105: /* 32h ^>  8s */ as_u8(dst) = (as_u32c(src) >> 24) ^ 0x80; break;
1096++	case 106: /* 32h ^> 16h */ as_u16(dst) = (as_u32c(src) >> 16) ^ 0x8000; break;
1097++	case 107: /* 32h ^> 16s */ as_u16(dst) = bswap_16(as_u32c(src) >> 16) ^ 0x80; break;
1098++	case 108: /* 32h ^> 24h */ as_u32(dst) = sx24((as_u32c(src) >> 8) ^ 0x800000); break;
1099++	case 109: /* 32h ^> 24s */ as_u32(dst) = sx24s((bswap_32(as_u32c(src)) ^ 0x80) << 8); break;
1100++	case 110: /* 32h ^> 32h */ as_u32(dst) = as_u32c(src) ^ 0x80000000; break;
1101++	case 111: /* 32h ^> 32s */ as_u32(dst) = bswap_32(as_u32c(src)) ^ 0x80; break;
1102++	case 112: /* 32s ->  8h */
1103++	case 113: /* 32s ->  8s */ as_u8(dst) = as_u32c(src) & 0xff; break;
1104++	case 114: /* 32s -> 16h */ as_u16(dst) = bswap_16(as_u32c(src)); break;
1105++	case 115: /* 32s -> 16s */ as_u16(dst) = as_u32c(src) & 0xffff; break;
1106++	case 116: /* 32s -> 24h */ as_u32(dst) = sx24(bswap_32(as_u32c(src)) >> 8); break;
1107++	case 117: /* 32s -> 24s */ as_u32(dst) = sx24s(as_u32c(src) << 8); break;
1108++	case 120: /* 32s ^>  8h */
1109++	case 121: /* 32s ^>  8s */ as_u8(dst) = (as_u32c(src) & 0xff) ^ 0x80; break;
1110++	case 122: /* 32s ^> 16h */ as_u16(dst) = bswap_16(as_u32c(src) ^ 0x80); break;
1111++	case 123: /* 32s ^> 16s */ as_u16(dst) = (as_u32c(src) & 0xffff) ^ 0x80; break;
1112++	case 124: /* 32s ^> 24h */ as_u32(dst) = sx24((bswap_32(as_u32c(src)) >> 8) ^ 0x800000); break;
1113++	case 125: /* 32s ^> 24s */ as_u32(dst) = sx24s((as_u32c(src) ^ 0x80) << 8); break;
1114++	case 126: /* 32s ^> 32h */ as_u32(dst) = bswap_32(as_u32c(src) ^ 0x80); break;
1115++	case 127: /* 32s ^> 32s */ as_u32(dst) = as_u32c(src) ^ 0x80; break;
1116++	default: assert(0);
1117++	}
1118+ }
1119+-#endif
1120+ 
1121+-#ifdef GET16_LABELS
1122+-/* src_wid src_endswap sign_toggle */
1123+-static void *const get16_labels[5 * 2 * 2 + 4 * 3] = {
1124+-	&&get16_1_10,	 /*  8h -> 16h */
1125+-	&&get16_1_90,	 /*  8h ^> 16h */
1126+-	&&get16_1_10,	 /*  8s -> 16h */
1127+-	&&get16_1_90,	 /*  8s ^> 16h */
1128+-	&&get16_12_12,	 /* 16h -> 16h */
1129+-	&&get16_12_92,	 /* 16h ^> 16h */
1130+-	&&get16_12_21,	 /* 16s -> 16h */
1131+-	&&get16_12_A1,	 /* 16s ^> 16h */
1132++static inline uint16_t get16(const char *src, unsigned int idx) {
1133++	switch(idx) {
1134++	case  0: /*  8h -> 16h */
1135++	case  2: /*  8s -> 16h */ return (uint16_t)as_u8c(src) << 8;
1136++	case  1: /*  8h ^> 16h */
1137++	case  3: /*  8s ^> 16h */ return (uint16_t)(as_u8c(src) ^ 0x80) << 8;
1138++	case  4: /* 16h -> 16h */ return as_u16c(src);
1139++	case  5: /* 16h ^> 16h */ return as_u16c(src) ^ 0x8000;
1140++	case  6: /* 16s -> 16h */ return bswap_16(as_u16c(src));
1141++	case  7: /* 16s ^> 16h */ return bswap_16(as_u16c(src) ^ 0x80);
1142+ 	/* 4 byte formats */
1143+-	&&get16_0123_12, /* 24h -> 16h */
1144+-	&&get16_0123_92, /* 24h ^> 16h */
1145+-	&&get16_1230_32, /* 24s -> 16h */
1146+-	&&get16_1230_B2, /* 24s ^> 16h */
1147+-	&&get16_1234_12, /* 32h -> 16h */
1148+-	&&get16_1234_92, /* 32h ^> 16h */
1149+-	&&get16_1234_43, /* 32s -> 16h */
1150+-	&&get16_1234_C3, /* 32s ^> 16h */
1151+-	&&get16_0123_12_20, /* 20h -> 16h */
1152+-	&&get16_0123_92_20, /* 20h ^> 16h */
1153+-	&&get16_1230_32_20, /* 20s -> 16h */
1154+-	&&get16_1230_B2_20, /* 20s ^> 16h */
1155++	case  8: /* 24h -> 16h */ return as_u32c(src) >> 8;
1156++	case  9: /* 24h ^> 16h */ return (as_u32c(src) >> 8) ^ 0x8000;
1157++	case 10: /* 24s -> 16h */ return bswap_16(as_u32c(src) >> 8);
1158++	case 11: /* 24s ^> 16h */ return bswap_16((as_u32c(src) >> 8) ^ 0x80);
1159++	case 12: /* 32h -> 16h */ return as_u32c(src) >> 16;
1160++	case 13: /* 32h ^> 16h */ return (as_u32c(src) >> 16) ^ 0x8000;
1161++	case 14: /* 32s -> 16h */ return bswap_16(as_u32c(src));
1162++	case 15: /* 32s ^> 16h */ return bswap_16(as_u32c(src) ^ 0x80);
1163++	case 16: /* 20h -> 16h */ return as_u32c(src) >> 4;
1164++	case 17: /* 20h ^> 16h */ return (as_u32c(src) >> 4) ^ 0x8000;
1165++	case 18: /* 20s -> 16h */ return bswap_32(as_u32c(src)) >> 4;
1166++	case 19: /* 20s ^> 16h */ return (bswap_32(as_u32c(src)) >> 4) ^ 0x8000;
1167+ 	/* 3bytes format */
1168+-	&&get16_123_12,	 /* 24h -> 16h */
1169+-	&&get16_123_92,	 /* 24h ^> 16h */
1170+-	&&get16_123_32,	 /* 24s -> 16h */
1171+-	&&get16_123_B2,	 /* 24s ^> 16h */
1172+-	&&get16_123_12_20,	 /* 20h -> 16h */
1173+-	&&get16_123_92_20,	 /* 20h ^> 16h */
1174+-	&&get16_123_32_20,	 /* 20s -> 16h */
1175+-	&&get16_123_B2_20,	 /* 20s ^> 16h */
1176+-	&&get16_123_12_18,	 /* 18h -> 16h */
1177+-	&&get16_123_92_18,	 /* 18h ^> 16h */
1178+-	&&get16_123_32_18,	 /* 18s -> 16h */
1179+-	&&get16_123_B2_18,	 /* 18s ^> 16h */
1180+-};
1181+-#endif
1182+-
1183+-#ifdef GET16_END
1184+-while(0) {
1185+-get16_1_10: sample = (uint16_t)as_u8c(src) << 8; goto GET16_END;
1186+-get16_1_90: sample = (uint16_t)(as_u8c(src) ^ 0x80) << 8; goto GET16_END;
1187+-get16_12_12: sample = as_u16c(src); goto GET16_END;
1188+-get16_12_92: sample = as_u16c(src) ^ 0x8000; goto GET16_END;
1189+-get16_12_21: sample = bswap_16(as_u16c(src)); goto GET16_END;
1190+-get16_12_A1: sample = bswap_16(as_u16c(src) ^ 0x80); goto GET16_END;
1191+-get16_0123_12: sample = as_u32c(src) >> 8; goto GET16_END;
1192+-get16_0123_92: sample = (as_u32c(src) >> 8) ^ 0x8000; goto GET16_END;
1193+-get16_1230_32: sample = bswap_16(as_u32c(src) >> 8); goto GET16_END;
1194+-get16_1230_B2: sample = bswap_16((as_u32c(src) >> 8) ^ 0x80); goto GET16_END;
1195+-get16_1234_12: sample = as_u32c(src) >> 16; goto GET16_END;
1196+-get16_1234_92: sample = (as_u32c(src) >> 16) ^ 0x8000; goto GET16_END;
1197+-get16_1234_43: sample = bswap_16(as_u32c(src)); goto GET16_END;
1198+-get16_1234_C3: sample = bswap_16(as_u32c(src) ^ 0x80); goto GET16_END;
1199+-get16_0123_12_20: sample = as_u32c(src) >> 4; goto GET16_END;
1200+-get16_0123_92_20: sample = (as_u32c(src) >> 4) ^ 0x8000; goto GET16_END;
1201+-get16_1230_32_20: sample = bswap_32(as_u32c(src)) >> 4; goto GET16_END;
1202+-get16_1230_B2_20: sample = (bswap_32(as_u32c(src)) >> 4) ^ 0x8000; goto GET16_END;
1203+-get16_123_12: sample = _get_triple(src) >> 8; goto GET16_END;
1204+-get16_123_92: sample = (_get_triple(src) >> 8) ^ 0x8000; goto GET16_END;
1205+-get16_123_32: sample = _get_triple_s(src) >> 8; goto GET16_END;
1206+-get16_123_B2: sample = (_get_triple_s(src) >> 8) ^ 0x8000; goto GET16_END;
1207+-get16_123_12_20: sample = _get_triple(src) >> 4; goto GET16_END;
1208+-get16_123_92_20: sample = (_get_triple(src) >> 4) ^ 0x8000; goto GET16_END;
1209+-get16_123_32_20: sample = _get_triple_s(src) >> 4; goto GET16_END;
1210+-get16_123_B2_20: sample = (_get_triple_s(src) >> 4) ^ 0x8000; goto GET16_END;
1211+-get16_123_12_18: sample = _get_triple(src) >> 2; goto GET16_END;
1212+-get16_123_92_18: sample = (_get_triple(src) >> 2) ^ 0x8000; goto GET16_END;
1213+-get16_123_32_18: sample = _get_triple_s(src) >> 2; goto GET16_END;
1214+-get16_123_B2_18: sample = (_get_triple_s(src) >> 2) ^ 0x8000; goto GET16_END;
1215++	case 20: /* 24h -> 16h */ return _get_triple(src) >> 8;
1216++	case 21: /* 24h ^> 16h */ return (_get_triple(src) >> 8) ^ 0x8000;
1217++	case 22: /* 24s -> 16h */ return _get_triple_s(src) >> 8;
1218++	case 23: /* 24s ^> 16h */ return (_get_triple_s(src) >> 8) ^ 0x8000;
1219++	case 24: /* 20h -> 16h */ return _get_triple(src) >> 4;
1220++	case 25: /* 20h ^> 16h */ return (_get_triple(src) >> 4) ^ 0x8000;
1221++	case 26: /* 20s -> 16h */ return _get_triple_s(src) >> 4;
1222++	case 27: /* 20s ^> 16h */ return (_get_triple_s(src) >> 4) ^ 0x8000;
1223++	case 28: /* 18h -> 16h */ return _get_triple(src) >> 2;
1224++	case 29: /* 18h ^> 16h */ return (_get_triple(src) >> 2) ^ 0x8000;
1225++	case 30: /* 18s -> 16h */ return _get_triple_s(src) >> 2;
1226++	case 31: /* 18s ^> 16h */ return (_get_triple_s(src) >> 2) ^ 0x8000;
1227++	default: assert(0);
1228++	}
1229+ }
1230+-#endif
1231+ 
1232+-#ifdef PUT16_LABELS
1233+-/* dst_wid dst_endswap sign_toggle */
1234+-static void *const put16_labels[5 * 2 * 2 + 4 * 3] = {
1235+-	&&put16_12_1,		 /* 16h ->  8h */
1236+-	&&put16_12_9,		 /* 16h ^>  8h */
1237+-	&&put16_12_1,		 /* 16h ->  8s */
1238+-	&&put16_12_9,		 /* 16h ^>  8s */
1239+-	&&put16_12_12,		 /* 16h -> 16h */
1240+-	&&put16_12_92,		 /* 16h ^> 16h */
1241+-	&&put16_12_21,		 /* 16h -> 16s */
1242+-	&&put16_12_29,		 /* 16h ^> 16s */
1243++static inline void put16(char *dst, int16_t sample, unsigned int idx)
1244++{
1245++	switch (idx) {
1246++	case  0: /* 16h ->  8h */
1247++	case  2: /* 16h ->  8s */ as_u8(dst) = sample >> 8; break;
1248++	case  1: /* 16h ^>  8h */
1249++	case  3: /* 16h ^>  8s */ as_u8(dst) = (sample >> 8) ^ 0x80; break;
1250++	case  4: /* 16h -> 16h */ as_u16(dst) = sample; break;
1251++	case  5: /* 16h ^> 16h */ as_u16(dst) = sample ^ 0x8000; break;
1252++	case  6: /* 16h -> 16s */ as_u16(dst) = bswap_16(sample); break;
1253++	case  7: /* 16h ^> 16s */ as_u16(dst) = bswap_16(sample) ^ 0x80; break;
1254+ 	/* 4 byte formats */
1255+-	&&put16_12_0120,	 /* 16h -> 24h */
1256+-	&&put16_12_0920,	 /* 16h ^> 24h */
1257+-	&&put16_12_0210,	 /* 16h -> 24s */
1258+-	&&put16_12_0290,	 /* 16h ^> 24s */
1259+-	&&put16_12_1200,	 /* 16h -> 32h */
1260+-	&&put16_12_9200,	 /* 16h ^> 32h */
1261+-	&&put16_12_0021,	 /* 16h -> 32s */
1262+-	&&put16_12_0029,	 /* 16h ^> 32s */
1263+-	&&put16_12_0120_20,	 /* 16h -> 20h */
1264+-	&&put16_12_0920_20,	 /* 16h ^> 20h */
1265+-	&&put16_12_0210_20,	 /* 16h -> 20s */
1266+-	&&put16_12_0290_20,	 /* 16h ^> 20s */
1267++	case  8: /* 16h -> 24h */ as_u32(dst) = sx24((uint32_t)sample << 8); break;
1268++	case  9: /* 16h ^> 24h */ as_u32(dst) = sx24((uint32_t)(sample ^ 0x8000) << 8); break;
1269++	case 10: /* 16h -> 24s */ as_u32(dst) = sx24s((uint32_t)bswap_16(sample) << 8); break;
1270++	case 11: /* 16h ^> 24s */ as_u32(dst) = sx24s((uint32_t)(bswap_16(sample) ^ 0x80) << 8); break;
1271++	case 12: /* 16h -> 32h */ as_u32(dst) = (uint32_t)sample << 16; break;
1272++	case 13: /* 16h ^> 32h */ as_u32(dst) = (uint32_t)(sample ^ 0x8000) << 16; break;
1273++	case 14: /* 16h -> 32s */ as_u32(dst) = (uint32_t)bswap_16(sample); break;
1274++	case 15: /* 16h ^> 32s */ as_u32(dst) = (uint32_t)bswap_16(sample) ^ 0x80; break;
1275++	case 16: /* 16h -> 20h */ as_u32(dst) = sx20((uint32_t)sample << 4); break;
1276++	case 17: /* 16h ^> 20h */ as_u32(dst) = sx20((uint32_t)(sample ^ 0x8000) << 4); break;
1277++	case 18: /* 16h -> 20s */ as_u32(dst) = bswap_32(sx20((uint32_t)sample << 4)); break;
1278++	case 19: /* 16h ^> 20s */ as_u32(dst) = bswap_32(sx20((uint32_t)(sample ^ 0x8000) << 4)); break;
1279+ 	/* 3bytes format */
1280+-	&&put16_12_120,		 /* 16h -> 24h */
1281+-	&&put16_12_920,		 /* 16h ^> 24h */
1282+-	&&put16_12_021,		 /* 16h -> 24s */
1283+-	&&put16_12_029,		 /* 16h ^> 24s */
1284+-	&&put16_12_120_20,	 /* 16h -> 20h */
1285+-	&&put16_12_920_20,	 /* 16h ^> 20h */
1286+-	&&put16_12_021_20,	 /* 16h -> 20s */
1287+-	&&put16_12_029_20,	 /* 16h ^> 20s */
1288+-	&&put16_12_120_18,	 /* 16h -> 18h */
1289+-	&&put16_12_920_18,	 /* 16h ^> 18h */
1290+-	&&put16_12_021_18,	 /* 16h -> 18s */
1291+-	&&put16_12_029_18,	 /* 16h ^> 18s */
1292+-};
1293+-#endif
1294+-
1295+-#ifdef PUT16_END
1296+-while (0) {
1297+-put16_12_1: as_u8(dst) = sample >> 8; goto PUT16_END;
1298+-put16_12_9: as_u8(dst) = (sample >> 8) ^ 0x80; goto PUT16_END;
1299+-put16_12_12: as_u16(dst) = sample; goto PUT16_END;
1300+-put16_12_92: as_u16(dst) = sample ^ 0x8000; goto PUT16_END;
1301+-put16_12_21: as_u16(dst) = bswap_16(sample); goto PUT16_END;
1302+-put16_12_29: as_u16(dst) = bswap_16(sample) ^ 0x80; goto PUT16_END;
1303+-put16_12_0120: as_u32(dst) = sx24((uint32_t)sample << 8); goto PUT16_END;
1304+-put16_12_0920: as_u32(dst) = sx24((uint32_t)(sample ^ 0x8000) << 8); goto PUT16_END;
1305+-put16_12_0210: as_u32(dst) = sx24s((uint32_t)bswap_16(sample) << 8); goto PUT16_END;
1306+-put16_12_0290: as_u32(dst) = sx24s((uint32_t)(bswap_16(sample) ^ 0x80) << 8); goto PUT16_END;
1307+-put16_12_1200: as_u32(dst) = (uint32_t)sample << 16; goto PUT16_END;
1308+-put16_12_9200: as_u32(dst) = (uint32_t)(sample ^ 0x8000) << 16; goto PUT16_END;
1309+-put16_12_0021: as_u32(dst) = (uint32_t)bswap_16(sample); goto PUT16_END;
1310+-put16_12_0029: as_u32(dst) = (uint32_t)bswap_16(sample) ^ 0x80; goto PUT16_END;
1311+-put16_12_0120_20: as_u32(dst) = sx20((uint32_t)sample << 4); goto PUT16_END;
1312+-put16_12_0920_20: as_u32(dst) = sx20((uint32_t)(sample ^ 0x8000) << 4); goto PUT16_END;
1313+-put16_12_0210_20: as_u32(dst) = bswap_32(sx20((uint32_t)sample << 4)); goto PUT16_END;
1314+-put16_12_0290_20: as_u32(dst) = bswap_32(sx20((uint32_t)(sample ^ 0x8000) << 4)); goto PUT16_END;
1315+-put16_12_120: _put_triple(dst, (uint32_t)sample << 8); goto PUT16_END;
1316+-put16_12_920: _put_triple(dst, (uint32_t)(sample ^ 0x8000) << 8); goto PUT16_END;
1317+-put16_12_021: _put_triple_s(dst, (uint32_t)sample << 8); goto PUT16_END;
1318+-put16_12_029: _put_triple_s(dst, (uint32_t)(sample ^ 0x8000) << 8); goto PUT16_END;
1319+-put16_12_120_20: _put_triple(dst, (uint32_t)sample << 4); goto PUT16_END;
1320+-put16_12_920_20: _put_triple(dst, (uint32_t)(sample ^ 0x8000) << 4); goto PUT16_END;
1321+-put16_12_021_20: _put_triple_s(dst, (uint32_t)sample << 4); goto PUT16_END;
1322+-put16_12_029_20: _put_triple_s(dst, (uint32_t)(sample ^ 0x8000) << 4); goto PUT16_END;
1323+-put16_12_120_18: _put_triple(dst, (uint32_t)sample << 2); goto PUT16_END;
1324+-put16_12_920_18: _put_triple(dst, (uint32_t)(sample ^ 0x8000) << 2); goto PUT16_END;
1325+-put16_12_021_18: _put_triple_s(dst, (uint32_t)sample << 2); goto PUT16_END;
1326+-put16_12_029_18: _put_triple_s(dst, (uint32_t)(sample ^ 0x8000) << 2); goto PUT16_END;
1327++	case 20: /* 16h -> 24h */ _put_triple(dst, (uint32_t)sample << 8); break;
1328++	case 21: /* 16h ^> 24h */ _put_triple(dst, (uint32_t)(sample ^ 0x8000) << 8); break;
1329++	case 22: /* 16h -> 24s */ _put_triple_s(dst, (uint32_t)sample << 8); break;
1330++	case 23: /* 16h ^> 24s */ _put_triple_s(dst, (uint32_t)(sample ^ 0x8000) << 8); break;
1331++	case 24: /* 16h -> 20h */ _put_triple(dst, (uint32_t)sample << 4); break;
1332++	case 25: /* 16h ^> 20h */ _put_triple(dst, (uint32_t)(sample ^ 0x8000) << 4); break;
1333++	case 26: /* 16h -> 20s */ _put_triple_s(dst, (uint32_t)sample << 4); break;
1334++	case 27: /* 16h ^> 20s */ _put_triple_s(dst, (uint32_t)(sample ^ 0x8000) << 4); break;
1335++	case 28: /* 16h -> 18h */ _put_triple(dst, (uint32_t)sample << 2); break;
1336++	case 29: /* 16h ^> 18h */ _put_triple(dst, (uint32_t)(sample ^ 0x8000) << 2); break;
1337++	case 30: /* 16h -> 18s */ _put_triple_s(dst, (uint32_t)sample << 2); break;
1338++	case 31: /* 16h ^> 18s */ _put_triple_s(dst, (uint32_t)(sample ^ 0x8000) << 2); break;
1339++	default: assert(0);
1340++	}
1341+ }
1342+-#endif
1343+-
1344+-#ifdef CONV24_LABELS
1345+-#define GET32_LABELS
1346+-#define PUT32_LABELS
1347+-#endif
1348+ 
1349+-#ifdef GET32_LABELS
1350+-/* src_wid src_endswap sign_toggle */
1351+-static void *const get32_labels[5 * 2 * 2 + 4 * 3] = {
1352+-	&&get32_1_1000,	 	 /*  8h -> 32h */
1353+-	&&get32_1_9000,	 	 /*  8h ^> 32h */
1354+-	&&get32_1_1000,		 /*  8s -> 32h */
1355+-	&&get32_1_9000,		 /*  8s ^> 32h */
1356+-	&&get32_12_1200,	 /* 16h -> 32h */
1357+-	&&get32_12_9200,	 /* 16h ^> 32h */
1358+-	&&get32_12_2100,	 /* 16s -> 32h */
1359+-	&&get32_12_A100,	 /* 16s ^> 32h */
1360++static inline int32_t get32(const char *src, unsigned int idx)
1361++{
1362++	switch (idx) {
1363++	case  0: /*  8h -> 32h */
1364++	case  2: /*  8s -> 32h */ return (uint32_t)as_u8c(src) << 24;
1365++	case  1: /*  8h ^> 32h */
1366++	case  3: /*  8s ^> 32h */ return (uint32_t)(as_u8c(src) ^ 0x80) << 24;
1367++	case  4: /* 16h -> 32h */ return (uint32_t)as_u16c(src) << 16;
1368++	case  5: /* 16h ^> 32h */ return (uint32_t)(as_u16c(src) ^ 0x8000) << 16;
1369++	case  6: /* 16s -> 32h */ return (uint32_t)bswap_16(as_u16c(src)) << 16;
1370++	case  7: /* 16s ^> 32h */ return (uint32_t)bswap_16(as_u16c(src) ^ 0x80) << 16;
1371+ 	/* 4 byte formats */
1372+-	&&get32_0123_1230,	 /* 24h -> 32h */
1373+-	&&get32_0123_9230,	 /* 24h ^> 32h */
1374+-	&&get32_1230_3210,	 /* 24s -> 32h */
1375+-	&&get32_1230_B210,	 /* 24s ^> 32h */
1376+-	&&get32_1234_1234,	 /* 32h -> 32h */
1377+-	&&get32_1234_9234,	 /* 32h ^> 32h */
1378+-	&&get32_1234_4321,	 /* 32s -> 32h */
1379+-	&&get32_1234_C321,	 /* 32s ^> 32h */
1380+-	&&get32_0123_1230_20,	 /* 20h -> 32h */
1381+-	&&get32_0123_9230_20,	 /* 20h ^> 32h */
1382+-	&&get32_1230_3210_20,	 /* 20s -> 32h */
1383+-	&&get32_1230_B210_20,	 /* 20s ^> 32h */
1384++	case  8: /* 24h -> 32h */ return as_u32c(src) << 8;
1385++	case  9: /* 24h ^> 32h */ return (as_u32c(src) << 8) ^ 0x80000000;
1386++	case 10: /* 24s -> 32h */ return bswap_32(as_u32c(src) >> 8);
1387++	case 11: /* 24s ^> 32h */ return bswap_32((as_u32c(src) >> 8) ^ 0x80);
1388++	case 12: /* 32h -> 32h */ return as_u32c(src);
1389++	case 13: /* 32h ^> 32h */ return as_u32c(src) ^ 0x80000000;
1390++	case 14: /* 32s -> 32h */ return bswap_32(as_u32c(src));
1391++	case 15: /* 32s ^> 32h */ return bswap_32(as_u32c(src) ^ 0x80);
1392++	case 16: /* 20h -> 32h */ return as_u32c(src) << 12;
1393++	case 17: /* 20h ^> 32h */ return (as_u32c(src) << 12) ^ 0x80000000;
1394++	case 18: /* 20s -> 32h */ return bswap_32(as_u32c(src)) << 12;
1395++	case 19: /* 20s ^> 32h */ return (bswap_32(as_u32c(src)) << 12) ^ 0x80000000;
1396+ 	/* 3bytes format */
1397+-	&&get32_123_1230,	 /* 24h -> 32h */
1398+-	&&get32_123_9230,	 /* 24h ^> 32h */
1399+-	&&get32_123_3210,	 /* 24s -> 32h */
1400+-	&&get32_123_B210,	 /* 24s ^> 32h */
1401+-	&&get32_123_1230_20,	 /* 20h -> 32h */
1402+-	&&get32_123_9230_20,	 /* 20h ^> 32h */
1403+-	&&get32_123_3210_20,	 /* 20s -> 32h */
1404+-	&&get32_123_B210_20,	 /* 20s ^> 32h */
1405+-	&&get32_123_1230_18,	 /* 18h -> 32h */
1406+-	&&get32_123_9230_18,	 /* 18h ^> 32h */
1407+-	&&get32_123_3210_18,	 /* 18s -> 32h */
1408+-	&&get32_123_B210_18,	 /* 18s ^> 32h */
1409+-};
1410+-#endif
1411+-
1412+-#ifdef CONV24_END
1413+-#define GET32_END __conv24_get
1414+-#endif
1415+-
1416+-#ifdef GET32_END
1417+-while (0) {
1418+-get32_1_1000: sample = (uint32_t)as_u8c(src) << 24; goto GET32_END;
1419+-get32_1_9000: sample = (uint32_t)(as_u8c(src) ^ 0x80) << 24; goto GET32_END;
1420+-get32_12_1200: sample = (uint32_t)as_u16c(src) << 16; goto GET32_END;
1421+-get32_12_9200: sample = (uint32_t)(as_u16c(src) ^ 0x8000) << 16; goto GET32_END;
1422+-get32_12_2100: sample = (uint32_t)bswap_16(as_u16c(src)) << 16; goto GET32_END;
1423+-get32_12_A100: sample = (uint32_t)bswap_16(as_u16c(src) ^ 0x80) << 16; goto GET32_END;
1424+-get32_0123_1230: sample = as_u32c(src) << 8; goto GET32_END;
1425+-get32_0123_9230: sample = (as_u32c(src) << 8) ^ 0x80000000; goto GET32_END;
1426+-get32_1230_3210: sample = bswap_32(as_u32c(src) >> 8); goto GET32_END;
1427+-get32_1230_B210: sample = bswap_32((as_u32c(src) >> 8) ^ 0x80); goto GET32_END;
1428+-get32_1234_1234: sample = as_u32c(src); goto GET32_END;
1429+-get32_1234_9234: sample = as_u32c(src) ^ 0x80000000; goto GET32_END;
1430+-get32_1234_4321: sample = bswap_32(as_u32c(src)); goto GET32_END;
1431+-get32_1234_C321: sample = bswap_32(as_u32c(src) ^ 0x80); goto GET32_END;
1432+-get32_0123_1230_20: sample = as_u32c(src) << 12; goto GET32_END;
1433+-get32_0123_9230_20: sample = (as_u32c(src) << 12) ^ 0x80000000; goto GET32_END;
1434+-get32_1230_3210_20: sample = bswap_32(as_u32c(src)) << 12; goto GET32_END;
1435+-get32_1230_B210_20: sample = (bswap_32(as_u32c(src)) << 12) ^ 0x80000000; goto GET32_END;
1436+-get32_123_1230: sample = _get_triple(src) << 8; goto GET32_END;
1437+-get32_123_9230: sample = (_get_triple(src) << 8) ^ 0x80000000; goto GET32_END;
1438+-get32_123_3210: sample = _get_triple_s(src) << 8; goto GET32_END;
1439+-get32_123_B210: sample = (_get_triple_s(src) << 8) ^ 0x80000000; goto GET32_END;
1440+-get32_123_1230_20: sample = _get_triple(src) << 12; goto GET32_END;
1441+-get32_123_9230_20: sample = (_get_triple(src) << 12) ^ 0x80000000; goto GET32_END;
1442+-get32_123_3210_20: sample = _get_triple_s(src) << 12; goto GET32_END;
1443+-get32_123_B210_20: sample = (_get_triple_s(src) << 12) ^ 0x80000000; goto GET32_END;
1444+-get32_123_1230_18: sample = _get_triple(src) << 14; goto GET32_END;
1445+-get32_123_9230_18: sample = (_get_triple(src) << 14) ^ 0x80000000; goto GET32_END;
1446+-get32_123_3210_18: sample = _get_triple_s(src) << 14; goto GET32_END;
1447+-get32_123_B210_18: sample = (_get_triple_s(src) << 14) ^ 0x80000000; goto GET32_END;
1448++	case 20: /* 24h -> 32h */ return _get_triple(src) << 8;
1449++	case 21: /* 24h ^> 32h */ return (_get_triple(src) << 8) ^ 0x80000000;
1450++	case 22: /* 24s -> 32h */ return _get_triple_s(src) << 8;
1451++	case 23: /* 24s ^> 32h */ return (_get_triple_s(src) << 8) ^ 0x80000000;
1452++	case 24: /* 20h -> 32h */ return _get_triple(src) << 12;
1453++	case 25: /* 20h ^> 32h */ return (_get_triple(src) << 12) ^ 0x80000000;
1454++	case 26: /* 20s -> 32h */ return _get_triple_s(src) << 12;
1455++	case 27: /* 20s ^> 32h */ return (_get_triple_s(src) << 12) ^ 0x80000000;
1456++	case 28: /* 18h -> 32h */ return _get_triple(src) << 14;
1457++	case 29: /* 18h ^> 32h */ return (_get_triple(src) << 14) ^ 0x80000000;
1458++	case 30: /* 18s -> 32h */ return _get_triple_s(src) << 14;
1459++	case 31: /* 18s ^> 32h */ return (_get_triple_s(src) << 14) ^ 0x80000000;
1460++	default: assert(0);
1461++	}
1462+ }
1463+-#endif
1464+ 
1465+-#ifdef CONV24_END
1466+-__conv24_get: goto *put;
1467+-#define PUT32_END CONV24_END
1468+-#endif
1469+-
1470+-#ifdef PUT32_LABELS
1471+-/* dst_wid dst_endswap sign_toggle */
1472+-static void *const put32_labels[5 * 2 * 2 + 4 * 3] = {
1473+-	&&put32_1234_1,	 	 /* 32h ->  8h */
1474+-	&&put32_1234_9,	 	 /* 32h ^>  8h */
1475+-	&&put32_1234_1,	 	 /* 32h ->  8s */
1476+-	&&put32_1234_9,	 	 /* 32h ^>  8s */
1477+-	&&put32_1234_12,	 /* 32h -> 16h */
1478+-	&&put32_1234_92,	 /* 32h ^> 16h */
1479+-	&&put32_1234_21,	 /* 32h -> 16s */
1480+-	&&put32_1234_29,	 /* 32h ^> 16s */
1481++static inline void put32(char *dst, int32_t sample, unsigned int idx)
1482++{
1483++	switch (idx) {
1484++	case  0: /* 32h ->  8h */
1485++	case  2: /* 32h ->  8s */ as_u8(dst) = sample >> 24; break;
1486++	case  1: /* 32h ^>  8h */
1487++	case  3: /* 32h ^>  8s */ as_u8(dst) = (sample >> 24) ^ 0x80; break;
1488++	case  4: /* 32h -> 16h */ as_u16(dst) = sample >> 16; break;
1489++	case  5: /* 32h ^> 16h */ as_u16(dst) = (sample >> 16) ^ 0x8000; break;
1490++	case  6: /* 32h -> 16s */ as_u16(dst) = bswap_16(sample >> 16); break;
1491++	case  7: /* 32h ^> 16s */ as_u16(dst) = bswap_16(sample >> 16) ^ 0x80; break;
1492+ 	/* 4 byte formats */
1493+-	&&put32_1234_0123,	 /* 32h -> 24h */
1494+-	&&put32_1234_0923,	 /* 32h ^> 24h */
1495+-	&&put32_1234_3210,	 /* 32h -> 24s */
1496+-	&&put32_1234_3290,	 /* 32h ^> 24s */
1497+-	&&put32_1234_1234,	 /* 32h -> 32h */
1498+-	&&put32_1234_9234,	 /* 32h ^> 32h */
1499+-	&&put32_1234_4321,	 /* 32h -> 32s */
1500+-	&&put32_1234_4329,	 /* 32h ^> 32s */
1501+-	&&put32_1234_0123_20,	 /* 32h -> 20h */
1502+-	&&put32_1234_0923_20,	 /* 32h ^> 20h */
1503+-	&&put32_1234_3210_20,	 /* 32h -> 20s */
1504+-	&&put32_1234_3290_20,	 /* 32h ^> 20s */
1505++	case  8: /* 32h -> 24h */ as_u32(dst) = sx24(sample >> 8); break;
1506++	case  9: /* 32h ^> 24h */ as_u32(dst) = sx24((sample >> 8) ^ 0x800000); break;
1507++	case 10: /* 32h -> 24s */ as_u32(dst) = sx24s(bswap_32(sample) << 8); break;
1508++	case 11: /* 32h ^> 24s */ as_u32(dst) = sx24s((bswap_32(sample) ^ 0x80) << 8); break;
1509++	case 12: /* 32h -> 32h */ as_u32(dst) = sample; break;
1510++	case 13: /* 32h ^> 32h */ as_u32(dst) = sample ^ 0x80000000; break;
1511++	case 14: /* 32h -> 32s */ as_u32(dst) = bswap_32(sample); break;
1512++	case 15: /* 32h ^> 32s */ as_u32(dst) = bswap_32(sample) ^ 0x80; break;
1513++	case 16: /* 32h -> 20h */ as_u32(dst) = sx20(sample >> 12); break;
1514++	case 17: /* 32h ^> 20h */ as_u32(dst) = sx20((sample ^ 0x80000000) >> 12); break;
1515++	case 18: /* 32h -> 20s */ as_u32(dst) = bswap_32(sx20(sample >> 12)); break;
1516++	case 19: /* 32h ^> 20s */ as_u32(dst) = bswap_32(sx20((sample ^ 0x80000000) >> 12)); break;
1517+ 	/* 3bytes format */
1518+-	&&put32_1234_123,	 /* 32h -> 24h */
1519+-	&&put32_1234_923,	 /* 32h ^> 24h */
1520+-	&&put32_1234_321,	 /* 32h -> 24s */
1521+-	&&put32_1234_329,	 /* 32h ^> 24s */
1522+-	&&put32_1234_123_20,	 /* 32h -> 20h */
1523+-	&&put32_1234_923_20,	 /* 32h ^> 20h */
1524+-	&&put32_1234_321_20,	 /* 32h -> 20s */
1525+-	&&put32_1234_329_20,	 /* 32h ^> 20s */
1526+-	&&put32_1234_123_18,	 /* 32h -> 18h */
1527+-	&&put32_1234_923_18,	 /* 32h ^> 18h */
1528+-	&&put32_1234_321_18,	 /* 32h -> 18s */
1529+-	&&put32_1234_329_18,	 /* 32h ^> 18s */
1530+-};
1531+-#endif
1532+-
1533+-#ifdef CONV24_LABELS
1534+-#undef GET32_LABELS
1535+-#undef PUT32_LABELS
1536+-#endif
1537+-
1538+-#ifdef PUT32_END
1539+-while (0) {
1540+-put32_1234_1: as_u8(dst) = sample >> 24; goto PUT32_END;
1541+-put32_1234_9: as_u8(dst) = (sample >> 24) ^ 0x80; goto PUT32_END;
1542+-put32_1234_12: as_u16(dst) = sample >> 16; goto PUT32_END;
1543+-put32_1234_92: as_u16(dst) = (sample >> 16) ^ 0x8000; goto PUT32_END;
1544+-put32_1234_21: as_u16(dst) = bswap_16(sample >> 16); goto PUT32_END;
1545+-put32_1234_29: as_u16(dst) = bswap_16(sample >> 16) ^ 0x80; goto PUT32_END;
1546+-put32_1234_0123: as_u32(dst) = sx24(sample >> 8); goto PUT32_END;
1547+-put32_1234_0923: as_u32(dst) = sx24((sample >> 8) ^ 0x800000); goto PUT32_END;
1548+-put32_1234_3210: as_u32(dst) = sx24s(bswap_32(sample) << 8); goto PUT32_END;
1549+-put32_1234_3290: as_u32(dst) = sx24s((bswap_32(sample) ^ 0x80) << 8); goto PUT32_END;
1550+-put32_1234_1234: as_u32(dst) = sample; goto PUT32_END;
1551+-put32_1234_9234: as_u32(dst) = sample ^ 0x80000000; goto PUT32_END;
1552+-put32_1234_4321: as_u32(dst) = bswap_32(sample); goto PUT32_END;
1553+-put32_1234_4329: as_u32(dst) = bswap_32(sample) ^ 0x80; goto PUT32_END;
1554+-put32_1234_0123_20: as_u32(dst) = sx20(sample >> 12); goto PUT32_END;
1555+-put32_1234_0923_20: as_u32(dst) = sx20((sample ^ 0x80000000) >> 12); goto PUT32_END;
1556+-put32_1234_3210_20: as_u32(dst) = bswap_32(sx20(sample >> 12)); goto PUT32_END;
1557+-put32_1234_3290_20: as_u32(dst) = bswap_32(sx20((sample ^ 0x80000000) >> 12)); goto PUT32_END;
1558+-put32_1234_123: _put_triple(dst, sample >> 8); goto PUT32_END;
1559+-put32_1234_923: _put_triple(dst, (sample ^ 0x80000000) >> 8); goto PUT32_END;
1560+-put32_1234_321: _put_triple_s(dst, sample >> 8); goto PUT32_END;
1561+-put32_1234_329: _put_triple_s(dst, (sample ^ 0x80000000) >> 8); goto PUT32_END;
1562+-put32_1234_123_20: _put_triple(dst, sample >> 12); goto PUT32_END;
1563+-put32_1234_923_20: _put_triple(dst, (sample ^ 0x80000000) >> 12); goto PUT32_END;
1564+-put32_1234_321_20: _put_triple_s(dst, sample >> 12); goto PUT32_END;
1565+-put32_1234_329_20: _put_triple_s(dst, (sample ^ 0x80000000) >> 12); goto PUT32_END;
1566+-put32_1234_123_18: _put_triple(dst, sample >> 14); goto PUT32_END;
1567+-put32_1234_923_18: _put_triple(dst, (sample ^ 0x80000000) >> 14); goto PUT32_END;
1568+-put32_1234_321_18: _put_triple_s(dst, sample >> 14); goto PUT32_END;
1569+-put32_1234_329_18: _put_triple_s(dst, (sample ^ 0x80000000) >> 14); goto PUT32_END;
1570++	case 20: /* 32h -> 24h */ _put_triple(dst, sample >> 8); break;
1571++	case 21: /* 32h ^> 24h */ _put_triple(dst, (sample ^ 0x80000000) >> 8); break;
1572++	case 22: /* 32h -> 24s */ _put_triple_s(dst, sample >> 8); break;
1573++	case 23: /* 32h ^> 24s */ _put_triple_s(dst, (sample ^ 0x80000000) >> 8); break;
1574++	case 24: /* 32h -> 20h */ _put_triple(dst, sample >> 12); break;
1575++	case 25: /* 32h ^> 20h */ _put_triple(dst, (sample ^ 0x80000000) >> 12); break;
1576++	case 26: /* 32h -> 20s */ _put_triple_s(dst, sample >> 12); break;
1577++	case 27: /* 32h ^> 20s */ _put_triple_s(dst, (sample ^ 0x80000000) >> 12); break;
1578++	case 28: /* 32h -> 18h */ _put_triple(dst, sample >> 14); break;
1579++	case 29: /* 32h ^> 18h */ _put_triple(dst, (sample ^ 0x80000000) >> 14); break;
1580++	case 30: /* 32h -> 18s */ _put_triple_s(dst, sample >> 14); break;
1581++	case 31: /* 32h ^> 18s */ _put_triple_s(dst, (sample ^ 0x80000000) >> 14); break;
1582++	default: assert(0);
1583++	}
1584+ }
1585+-#endif
1586+-
1587+-#ifdef CONV24_END
1588+-#undef GET32_END
1589+-#undef PUT32_END
1590+-#endif
1591+ 
1592+-#ifdef PUT32F_LABELS
1593+-/* type (0 = float, 1 = float64), endswap */
1594+-static void *const put32float_labels[2 * 2] = {
1595+-	&&put32f_1234_1234F,	/* 32h -> (float)h */
1596+-	&&put32f_1234_4321F,	/* 32h -> (float)s */
1597+-	&&put32f_1234_1234D,	/* 32h -> (float64)h */
1598+-	&&put32f_1234_4321D,	/* 32h -> (float64)s */
1599+-};
1600+-#endif
1601++static inline void put32float(char *dst, int32_t sample, unsigned int idx)
1602++{
1603++	snd_tmp_float_t tmp_float;
1604++	snd_tmp_double_t tmp_double;
1605+ 
1606+-#ifdef PUT32F_END
1607+-put32f_1234_1234F: as_float(dst) = (float_t)((int32_t)sample) / (float_t)0x80000000UL; goto PUT32F_END;
1608+-put32f_1234_4321F: tmp_float.f = (float_t)((int32_t)sample) / (float_t)0x80000000UL;
1609+-		   as_u32(dst) = bswap_32(tmp_float.i); goto PUT32F_END;
1610+-put32f_1234_1234D: as_double(dst) = (double_t)((int32_t)sample) / (double_t)0x80000000UL; goto PUT32F_END;
1611+-put32f_1234_4321D: tmp_double.d = (double_t)((int32_t)sample) / (double_t)0x80000000UL;
1612+-		   as_u64(dst) = bswap_64(tmp_double.l); goto PUT32F_END;
1613+-#endif
1614++	switch (idx) {
1615++	case 0: /* 32h -> (float)h */
1616++		as_float(dst) = (float_t)((int32_t)sample) / (float_t)0x80000000UL; break;
1617++	case 1: /* 32h -> (float)s */
1618++		tmp_float.f = (float_t)((int32_t)sample) / (float_t)0x80000000UL;
1619++		as_u32(dst) = bswap_32(tmp_float.i); break;
1620++	case 2: /* 32h -> (float64)h */
1621++		as_double(dst) = (double_t)((int32_t)sample) / (double_t)0x80000000UL; break;
1622++	case 3: /* 32h -> (float64)s */
1623++		tmp_double.d = (double_t)((int32_t)sample) / (double_t)0x80000000UL;
1624++		as_u64(dst) = bswap_64(tmp_double.l); break;
1625++	default: assert(0);
1626++	}
1627++}
1628+ 
1629+-#ifdef GET32F_LABELS
1630+-/* type (0 = float, 1 = float64), endswap */
1631+-static void *const get32float_labels[2 * 2] = {
1632+-	&&get32f_1234F_1234,	/* (float)h -> 32h */
1633+-	&&get32f_4321F_1234,	/* (float)s -> 32h */
1634+-	&&get32f_1234D_1234,	/* (float64)h -> 32h */
1635+-	&&get32f_4321D_1234,	/* (float64)s -> 32h */
1636+-};
1637+-#endif
1638++static inline int32_t get32float(const char *src, unsigned int idx)
1639++{
1640++	snd_tmp_float_t tmp_float;
1641++	snd_tmp_double_t tmp_double;
1642+ 
1643+-#ifdef GET32F_END
1644+-get32f_1234F_1234: tmp_float.f = as_floatc(src);
1645+-		   if (tmp_float.f >= 1.0)
1646+-		   	sample = 0x7fffffff;
1647+-		   else if (tmp_float.f <= -1.0)
1648+-		   	sample = 0x80000000;
1649+-		   else
1650+-		   	sample = (int32_t)(tmp_float.f * (float_t)0x80000000UL);
1651+-		   goto GET32F_END;
1652+-get32f_4321F_1234: tmp_float.i = bswap_32(as_u32c(src));
1653+-		   if (tmp_float.f >= 1.0)
1654+-		   	sample = 0x7fffffff;
1655+-		   else if (tmp_float.f <= -1.0)
1656+-		   	sample = 0x80000000;
1657+-		   else
1658+-		   	sample = (int32_t)(tmp_float.f * (float_t)0x80000000UL);
1659+-		   goto GET32F_END;
1660+-get32f_1234D_1234: tmp_double.d = as_doublec(src);
1661+-		   if (tmp_double.d >= 1.0)
1662+-		   	sample = 0x7fffffff;
1663+-		   else if (tmp_double.d <= -1.0)
1664+-		   	sample = 0x80000000;
1665+-		   else
1666+-		   	sample = (int32_t)(tmp_double.d * (double_t)0x80000000UL);
1667+-		   goto GET32F_END;
1668+-get32f_4321D_1234: tmp_double.l = bswap_64(as_u64c(src));
1669+-		   if (tmp_double.d >= 1.0)
1670+-		   	sample = 0x7fffffff;
1671+-		   else if (tmp_double.d <= -1.0)
1672+-		   	sample = 0x80000000;
1673+-		   else
1674+-		   	sample = (int32_t)(tmp_double.d * (double_t)0x80000000UL);
1675+-		   goto GET32F_END;
1676+-#endif
1677++	switch (idx) {
1678++	case 0: /* (float)h -> 32h */
1679++		tmp_float.f = as_floatc(src);
1680++		if (tmp_float.f >= 1.0)
1681++			return 0x7fffffff;
1682++		if (tmp_float.f <= -1.0)
1683++			return 0x80000000;
1684++		return (int32_t)(tmp_float.f * (float_t)0x80000000UL);
1685++	case 1: /* (float)s -> 32h */
1686++		tmp_float.i = bswap_32(as_u32c(src));
1687++		if (tmp_float.f >= 1.0)
1688++			return 0x7fffffff;
1689++		if (tmp_float.f <= -1.0)
1690++			return 0x80000000;
1691++		return (int32_t)(tmp_float.f * (float_t)0x80000000UL);
1692++	case 2: /* (float64)h -> 32h */
1693++		tmp_double.d = as_doublec(src);
1694++		if (tmp_double.d >= 1.0)
1695++			return 0x7fffffff;
1696++		if (tmp_double.d <= -1.0)
1697++			return 0x80000000;
1698++		return (int32_t)(tmp_double.d * (double_t)0x80000000UL);
1699++	case 3: /* (float64)s -> 32h */
1700++		tmp_double.l = bswap_64(as_u64c(src));
1701++		if (tmp_double.d >= 1.0)
1702++			return 0x7fffffff;
1703++		if (tmp_double.d <= -1.0)
1704++			return 0x80000000;
1705++		return (int32_t)(tmp_double.d * (double_t)0x80000000UL);
1706++	default: assert(0);
1707++	}
1708++}
1709+ 
1710+ #undef as_u8
1711+ #undef as_u16
1712+-- 
1713+2.44.0
1714+
+121, -0
  1@@ -0,0 +1,121 @@
  2+From c8871d039815024fb1aba7a10942815bdb062d4d Mon Sep 17 00:00:00 2001
  3+From: Michael Forney <mforney@mforney.org>
  4+Date: Sun, 27 Jun 2021 01:17:55 -0700
  5+Subject: [PATCH] Fix build with --disable-ucm
  6+
  7+A recent change introduced a dependency on ucm to several of the
  8+other components, but this was not made conditional on whether
  9+BUILD_UCM is enabled.
 10+
 11+Signed-off-by: Michael Forney <mforney@mforney.org>
 12+---
 13+ src/control/control.c | 5 ++++-
 14+ src/pcm/pcm.c         | 5 ++++-
 15+ src/rawmidi/rawmidi.c | 5 ++++-
 16+ src/seq/seq.c         | 5 ++++-
 17+ src/timer/timer.c     | 5 ++++-
 18+ 5 files changed, 20 insertions(+), 5 deletions(-)
 19+
 20+diff --git a/src/control/control.c b/src/control/control.c
 21+index 4c2ae7f5..29eff715 100644
 22+--- a/src/control/control.c
 23++++ b/src/control/control.c
 24+@@ -1611,11 +1611,14 @@ int snd_ctl_open(snd_ctl_t **ctlp, const char *name, int mode)
 25+ 	int err;
 26+ 
 27+ 	assert(ctlp && name);
 28++#ifdef BUILD_UCM
 29+ 	if (_snd_is_ucm_device(name)) {
 30+ 		name = uc_mgr_alibcfg_by_device(&top, name);
 31+ 		if (name == NULL)
 32+ 			return -ENODEV;
 33+-	} else {
 34++	} else
 35++#endif
 36++	{
 37+ 		err = snd_config_update_ref(&top);
 38+ 		if (err < 0)
 39+ 			return err;
 40+diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c
 41+index 18b1246e..23b27697 100644
 42+--- a/src/pcm/pcm.c
 43++++ b/src/pcm/pcm.c
 44+@@ -2747,11 +2747,14 @@ int snd_pcm_open(snd_pcm_t **pcmp, const char *name,
 45+ 	int err;
 46+ 
 47+ 	assert(pcmp && name);
 48++#ifdef BUILD_UCM
 49+ 	if (_snd_is_ucm_device(name)) {
 50+ 		name = uc_mgr_alibcfg_by_device(&top, name);
 51+ 		if (name == NULL)
 52+ 			return -ENODEV;
 53+-	} else {
 54++	} else
 55++#endif
 56++	{
 57+ 		err = snd_config_update_ref(&top);
 58+ 		if (err < 0)
 59+ 			return err;
 60+diff --git a/src/rawmidi/rawmidi.c b/src/rawmidi/rawmidi.c
 61+index c4b45fa2..bb09e58d 100644
 62+--- a/src/rawmidi/rawmidi.c
 63++++ b/src/rawmidi/rawmidi.c
 64+@@ -316,11 +316,14 @@ int snd_rawmidi_open(snd_rawmidi_t **inputp, snd_rawmidi_t **outputp,
 65+ 	int err;
 66+ 
 67+ 	assert((inputp || outputp) && name);
 68++#ifdef BUILD_UCM
 69+ 	if (_snd_is_ucm_device(name)) {
 70+ 		name = uc_mgr_alibcfg_by_device(&top, name);
 71+ 		if (name == NULL)
 72+ 			return -ENODEV;
 73+-	} else {
 74++	} else
 75++#endif
 76++	{
 77+ 		err = snd_config_update_ref(&top);
 78+ 		if (err < 0)
 79+ 			return err;
 80+diff --git a/src/seq/seq.c b/src/seq/seq.c
 81+index 5eac4848..71b2624f 100644
 82+--- a/src/seq/seq.c
 83++++ b/src/seq/seq.c
 84+@@ -978,11 +978,14 @@ int snd_seq_open(snd_seq_t **seqp, const char *name,
 85+ 	int err;
 86+ 
 87+ 	assert(seqp && name);
 88++#if BUILD_UCM
 89+ 	if (_snd_is_ucm_device(name)) {
 90+ 		name = uc_mgr_alibcfg_by_device(&top, name);
 91+ 		if (name == NULL)
 92+ 			return -ENODEV;
 93+-	} else {
 94++	} else
 95++#endif
 96++	{
 97+ 		err = snd_config_update_ref(&top);
 98+ 		if (err < 0)
 99+ 			return err;
100+diff --git a/src/timer/timer.c b/src/timer/timer.c
101+index a139356b..1922981a 100644
102+--- a/src/timer/timer.c
103++++ b/src/timer/timer.c
104+@@ -205,11 +205,14 @@ int snd_timer_open(snd_timer_t **timer, const char *name, int mode)
105+ 	int err;
106+ 
107+ 	assert(timer && name);
108++#ifdef BUILD_UCM
109+ 	if (_snd_is_ucm_device(name)) {
110+ 		name = uc_mgr_alibcfg_by_device(&top, name);
111+ 		if (name == NULL)
112+ 			return -ENODEV;
113+-	} else {
114++	} else
115++#endif
116++	{
117+ 		err = snd_config_update_ref(&top);
118+ 		if (err < 0)
119+ 			return err;
120+-- 
121+2.44.0
122+
+50, -0
 1@@ -0,0 +1,50 @@
 2+From 0cbb9f6afb0e9274ccdf8b3390c45afd6576b540 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Sat, 16 Mar 2024 18:08:08 -0700
 5+Subject: [PATCH] Fix uninitialized variable access
 6+
 7+---
 8+ src/pcm/pcm.c | 6 ++++--
 9+ 1 file changed, 4 insertions(+), 2 deletions(-)
10+
11+diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c
12+index 23b27697..14d868a8 100644
13+--- a/src/pcm/pcm.c
14++++ b/src/pcm/pcm.c
15+@@ -5321,7 +5321,7 @@ EXPORT_SYMBOL int INTERNAL(snd_pcm_hw_params_get_period_size_min)(const snd_pcm_
16+ int snd_pcm_hw_params_get_period_size_min(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir)
17+ #endif
18+ {
19+-	unsigned int _val = *val;
20++	unsigned int _val;
21+ 	int err = snd_pcm_hw_param_get_min(params, SND_PCM_HW_PARAM_PERIOD_SIZE, &_val, dir);
22+ 	if (err >= 0)
23+ 		*val = _val;
24+@@ -5343,7 +5343,7 @@ EXPORT_SYMBOL int INTERNAL(snd_pcm_hw_params_get_period_size_max)(const snd_pcm_
25+ int snd_pcm_hw_params_get_period_size_max(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir)
26+ #endif
27+ {
28+-	unsigned int _val = *val;
29++	unsigned int _val;
30+ 	int err = snd_pcm_hw_param_get_max(params, SND_PCM_HW_PARAM_PERIOD_SIZE, &_val, dir);
31+ 	if (err >= 0)
32+ 		*val = _val;
33+@@ -6277,6 +6277,7 @@ EXPORT_SYMBOL int INTERNAL(snd_pcm_hw_params_set_tick_time_first)(snd_pcm_t *pcm
34+ int snd_pcm_hw_params_set_tick_time_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir)
35+ #endif
36+ {
37++	*val = 0;
38+ 	return 0;
39+ }
40+ 
41+@@ -6296,6 +6297,7 @@ EXPORT_SYMBOL int INTERNAL(snd_pcm_hw_params_set_tick_time_last)(snd_pcm_t *pcm
42+ int snd_pcm_hw_params_set_tick_time_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir)
43+ #endif
44+ {
45++	*val = 0;
46+ 	return 0;
47+ }
48+ 
49+-- 
50+2.44.0
51+
+85, -0
 1@@ -0,0 +1,85 @@
 2+From 4a4b059a25abbcbfeb8593cdeb3098c2bd19011a Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Sat, 16 Mar 2024 20:02:10 -0700
 5+Subject: [PATCH] Prevent unused definitions in some configurations
 6+
 7+---
 8+ src/dlmisc.c       | 12 ++++++------
 9+ src/pcm/pcm_rate.c |  2 ++
10+ 2 files changed, 8 insertions(+), 6 deletions(-)
11+
12+diff --git a/src/dlmisc.c b/src/dlmisc.c
13+index 96784197..a1ab77c2 100644
14+--- a/src/dlmisc.c
15++++ b/src/dlmisc.c
16+@@ -196,6 +196,8 @@ int snd_dlclose(void *handle)
17+ #endif
18+ }
19+ 
20++#ifdef HAVE_LIBDL
21++#ifdef VERSIONED_SYMBOLS
22+ /**
23+  * \brief Verifies a dynamically loaded symbol.
24+  * \param handle Library handle, similar to \c dlsym.
25+@@ -208,7 +210,6 @@ int snd_dlclose(void *handle)
26+  */
27+ static int snd_dlsym_verify(void *handle, const char *name, const char *version)
28+ {
29+-#ifdef HAVE_LIBDL
30+ 	int res;
31+ 	char *vname;
32+ 	
33+@@ -225,10 +226,9 @@ static int snd_dlsym_verify(void *handle, const char *name, const char *version)
34+ 	if (res < 0)
35+ 		SNDERR("unable to verify version for symbol %s", name);
36+ 	return res;
37+-#else
38+-	return 0;
39+-#endif
40+ }
41++#endif
42++#endif
43+ 
44+ /**
45+  * \brief Resolves a symbol from a dynamic library - ALSA wrapper for \c dlsym.
46+@@ -245,8 +245,6 @@ static int snd_dlsym_verify(void *handle, const char *name, const char *version)
47+  */
48+ void *snd_dlsym(void *handle, const char *name, const char *version)
49+ {
50+-	int err;
51+-
52+ #ifndef PIC
53+ 	if (handle == &snd_dlsym_start) {
54+ 		/* it's the funny part: */
55+@@ -262,6 +260,8 @@ void *snd_dlsym(void *handle, const char *name, const char *version)
56+ #endif
57+ #ifdef HAVE_LIBDL
58+ #ifdef VERSIONED_SYMBOLS
59++	int err;
60++
61+ 	if (version) {
62+ 		err = snd_dlsym_verify(handle, name, version);
63+ 		if (err < 0)
64+diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c
65+index 5f0cc774..509b1b14 100644
66+--- a/src/pcm/pcm_rate.c
67++++ b/src/pcm/pcm_rate.c
68+@@ -1453,6 +1453,7 @@ static int rate_open_func(snd_pcm_rate_t *rate, const char *type, const snd_conf
69+ }
70+ #endif
71+ 
72++#ifdef PIC
73+ /*
74+  * If the conf is an array of alternatives then the id of
75+  * the first element will be "0" (or maybe NULL). Otherwise assume it is
76+@@ -1477,6 +1478,7 @@ static int is_string_array(const snd_config_t *conf)
77+ 
78+ 	return 1;
79+ }
80++#endif
81+ 
82+ /**
83+  * \brief Creates a new rate PCM
84+-- 
85+2.44.0
86+
+23, -0
 1@@ -0,0 +1,23 @@
 2+&_snd_module_pcm_copy,
 3+&_snd_module_pcm_linear,
 4+&_snd_module_pcm_route,
 5+&_snd_module_pcm_mulaw,
 6+&_snd_module_pcm_alaw,
 7+&_snd_module_pcm_adpcm,
 8+&_snd_module_pcm_rate,
 9+&_snd_module_pcm_plug,
10+&_snd_module_pcm_multi,
11+&_snd_module_pcm_shm,
12+&_snd_module_pcm_file,
13+&_snd_module_pcm_null,
14+&_snd_module_pcm_empty,
15+&_snd_module_pcm_share,
16+&_snd_module_pcm_hooks,
17+&_snd_module_pcm_lfloat,
18+&_snd_module_pcm_dmix,
19+&_snd_module_pcm_dshare,
20+&_snd_module_pcm_dsnoop,
21+&_snd_module_pcm_asym,
22+&_snd_module_pcm_iec958,
23+&_snd_module_pcm_softvol,
24+&_snd_module_pcm_mmap_emul,
+1, -0
1@@ -0,0 +1 @@
2+Subproject commit 7e3a3c2b0a092d0f568ba3c98365030dd91cc877
+1, -0
1@@ -0,0 +1 @@
2+1.2.11 r1
+19, -0
 1@@ -0,0 +1,19 @@
 2+#define ARCH_AARCH64 0
 3+#define ARCH_ARM 0
 4+#define ARCH_PPC64LE 0
 5+#ifdef __x86_64__
 6+#define ARCH_X86 1
 7+#define ARCH_X86_32 0
 8+#define ARCH_X86_64 1
 9+#endif
10+#define CONFIG_16BPC 1
11+#define CONFIG_8BPC 1
12+#define CONFIG_LOG 1
13+#define ENDIANNESS_BIG 0
14+#define HAVE_ASM 1
15+#define HAVE_AVX512ICL 1
16+#define HAVE_CLOCK_GETTIME 1
17+#define HAVE_DLSYM 1
18+#define HAVE_POSIX_MEMALIGN 1
19+#define HAVE_UNISTD_H 1
20+#define STACK_ALIGNMENT 32
+157, -0
  1@@ -0,0 +1,157 @@
  2+cflags{
  3+	'-Wall', '-Wno-maybe-uninitialized',
  4+	'-D _XOPEN_SOURCE=700',
  5+	'-I $srcdir',
  6+	'-I $srcdir/include',
  7+	'-I $srcdir/tools',
  8+	'-I $outdir',
  9+	'-I $outdir/include/dav1d',
 10+	'-I $dir',
 11+}
 12+nasmflags{
 13+	'-i $srcdir/src/',
 14+	'-i $outdir/',
 15+	'-f elf64',
 16+}
 17+
 18+pkg.hdrs = {
 19+	copy('$outdir/include/dav1d', '$srcdir/include/dav1d', {
 20+		'common.h',
 21+		'data.h',
 22+		'dav1d.h',
 23+		'headers.h',
 24+		'picture.h',
 25+	}),
 26+	'$outdir/include/dav1d/version.h',
 27+}
 28+pkg.deps = {
 29+	'$gendir/headers',
 30+	'$outdir/cli_config.h',
 31+	'$outdir/vcs_version.h',
 32+	'$outdir/config.asm',
 33+}
 34+
 35+build('sed', '$outdir/include/dav1d/version.h', '$srcdir/include/dav1d/version.h.in', {
 36+	expr={
 37+		'-e s,@DAV1D_API_VERSION_MAJOR@,5,',
 38+		'-e s,@DAV1D_API_VERSION_MINOR@,0,',
 39+		'-e s,@DAV1D_API_VERSION_PATCH@,0,',
 40+	},
 41+})
 42+build('awk', '$outdir/vcs_version.h', '$dir/ver', {
 43+	expr=[['{printf "#define DAV1D_VERSION \"%s\"\n", $$1}']],
 44+})
 45+build('awk', '$outdir/config.asm', '$dir/config.h', {
 46+	expr=[['$$1 == "#define" {print "%define " substr($$0, length("#define ") + 1)} END {print "%define private_prefix dav1d"}']],
 47+})
 48+build('touch', '$outdir/cli_config.h')
 49+
 50+local srcs = paths[[
 51+	src/(
 52+		cdf.c
 53+		cpu.c
 54+		data.c
 55+		decode.c
 56+		dequant_tables.c
 57+		getbits.c
 58+		intra_edge.c
 59+		itx_1d.c
 60+		lf_mask.c
 61+		log.c
 62+		mem.c
 63+		msac.c
 64+		obu.c
 65+		picture.c
 66+		qm.c
 67+		ref.c
 68+		refmvs.c
 69+		scan.c
 70+		tables.c
 71+		warpmv.c
 72+		wedge.c
 73+
 74+		lib.c
 75+		thread_task.c
 76+
 77+		@x86_64 x86/(
 78+			cpu.c msac_init.c refmvs_init.c
 79+			cpuid.asm msac.asm refmvs.asm cdef_avx2.asm itx_avx2.asm
 80+			looprestoration_avx2.asm cdef_sse.asm itx_sse.asm
 81+
 82+			cdef_avx512.asm
 83+			mc_avx512.asm
 84+			mc_avx2.asm
 85+			film_grain_avx2.asm
 86+			ipred_avx2.asm
 87+			loopfilter_avx2.asm
 88+			film_grain_sse.asm
 89+			ipred_sse.asm
 90+			loopfilter_sse.asm
 91+			looprestoration_sse.asm
 92+			mc_sse.asm
 93+
 94+			cdef16_avx2.asm
 95+			film_grain16_avx2.asm
 96+			ipred16_avx2.asm
 97+			itx16_avx2.asm
 98+			loopfilter16_avx2.asm
 99+			looprestoration16_avx2.asm
100+			mc16_avx2.asm
101+			cdef16_sse.asm
102+			film_grain16_sse.asm
103+			ipred16_sse.asm
104+			itx16_sse.asm
105+			loopfilter16_sse.asm
106+			looprestoration16_sse.asm
107+			mc16_sse.asm
108+		)
109+	)
110+]]
111+
112+local tmpl = paths[[
113+	cdef_apply_tmpl.c
114+	cdef_tmpl.c
115+	fg_apply_tmpl.c
116+	film_grain_tmpl.c
117+	ipred_prepare_tmpl.c
118+	ipred_tmpl.c
119+	itx_tmpl.c
120+	lf_apply_tmpl.c
121+	loopfilter_tmpl.c
122+	looprestoration_tmpl.c
123+	lr_apply_tmpl.c
124+	mc_tmpl.c
125+	recon_tmpl.c
126+
127+	@x86_64 x86/(
128+		cdef_init_tmpl.c
129+		film_grain_init_tmpl.c
130+		ipred_init_tmpl.c
131+		itx_init_tmpl.c
132+		loopfilter_init_tmpl.c
133+		looprestoration_init_tmpl.c
134+		mc_init_tmpl.c
135+	)
136+]]
137+for _, bit in ipairs{'8', '16'} do
138+	for _, src in ipairs(tmpl) do
139+		local obj = ('$outdir/%s/%s.o'):format(bit, src)
140+		build('cc', obj, {'$srcdir/src/'..src, '||', '$gendir/deps'}, {cflags='$cflags -D BITDEPTH='..bit})
141+		table.insert(srcs, obj)
142+	end
143+end
144+
145+lib('libdav1d.a', srcs)
146+
147+exe('dav1d', [[
148+	tools/(
149+		dav1d.c
150+		dav1d_cli_parse.c
151+		input/(input.c annexb.c ivf.c section5.c)
152+		output/(md5.c null.c output.c y4m2.c yuv.c)
153+	)
154+	libdav1d.a
155+]])
156+file('bin/dav1d', '755', '$outdir/dav1d')
157+
158+fetch 'git'
+64, -0
 1@@ -0,0 +1,64 @@
 2+From 881ceef5adda6f1cc5f5a9a15ae74b068bf85dd4 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Fri, 30 Apr 2021 18:45:18 -0700
 5+Subject: [PATCH] Add portable fallback for ctz, clz, and clzll
 6+
 7+---
 8+ include/common/attributes.h | 27 +++++++++++++++++++++++++--
 9+ 1 file changed, 25 insertions(+), 2 deletions(-)
10+
11+diff --git a/include/common/attributes.h b/include/common/attributes.h
12+index 4ccc421..72d5202 100644
13+--- a/include/common/attributes.h
14++++ b/include/common/attributes.h
15+@@ -32,6 +32,7 @@
16+ 
17+ #include <stddef.h>
18+ #include <assert.h>
19++#include <strings.h>
20+ 
21+ #ifndef __has_attribute
22+ #define __has_attribute(x) 0
23+@@ -156,7 +157,7 @@ static inline int clzll(const unsigned long long mask) {
24+         return clz((unsigned)mask) + 32;
25+ }
26+ #endif /* _WIN64 */
27+-#else /* !_MSC_VER */
28++#elif defined(__GNUC__)
29+ static inline int ctz(const unsigned int mask) {
30+     return __builtin_ctz(mask);
31+ }
32+@@ -168,7 +169,29 @@ static inline int clz(const unsigned int mask) {
33+ static inline int clzll(const unsigned long long mask) {
34+     return __builtin_clzll(mask);
35+ }
36+-#endif /* !_MSC_VER */
37++#else /* __GNUC__ */
38++static inline int ctz(const unsigned int mask) {
39++    return ffs(mask) - 1;
40++}
41++
42++static inline int clz(unsigned int mask) {
43++    mask >>= 1;
44++    mask |= mask >> 1;
45++    mask |= mask >> 2;
46++    mask |= mask >> 4;
47++    mask |= mask >> 8;
48++    mask |= mask >> 16;
49++    mask++;
50++    return 32 - ffs(mask);
51++}
52++
53++static inline int clzll(unsigned long long mask) {
54++    if (mask >> 32)
55++        return clz((unsigned)(mask >> 32));
56++    else
57++        return clz((unsigned)mask) + 32;
58++}
59++#endif /* !_MSC_VER && !__GNUC__ */
60+ 
61+ #ifndef static_assert
62+ #define CHECK_OFFSET(type, field, name) \
63+-- 
64+2.32.0
65+
+255, -0
  1@@ -0,0 +1,255 @@
  2+From 152e1ab7151fe8461ba4243a9d6bdea0edda7690 Mon Sep 17 00:00:00 2001
  3+From: Michael Forney <mforney@mforney.org>
  4+Date: Fri, 30 Apr 2021 18:56:27 -0700
  5+Subject: [PATCH] Remove invalid ';' at top-level
  6+
  7+This is not allowed in the ISO C grammar.
  8+---
  9+ src/cdef_tmpl.c                     |   6 +-
 10+ src/film_grain_tmpl.c               |  12 ++--
 11+ src/looprestoration.h               |   4 +-
 12+ src/mc_tmpl.c                       |   6 +-
 13+ src/x86/looprestoration_init_tmpl.c |  16 ++---
 14+ src/x86/mc_init_tmpl.c              | 106 ++++++++++++++--------------
 15+ 6 files changed, 75 insertions(+), 75 deletions(-)
 16+
 17+diff --git a/src/cdef_tmpl.c b/src/cdef_tmpl.c
 18+index 91ac45b..7ad3cb0 100644
 19+--- a/src/cdef_tmpl.c
 20++++ b/src/cdef_tmpl.c
 21+@@ -222,9 +222,9 @@ static void cdef_filter_block_##w##x##h##_c(pixel *const dst, \
 22+                         dir, damping, w, h, edges HIGHBD_TAIL_SUFFIX); \
 23+ }
 24+ 
 25+-cdef_fn(4, 4);
 26+-cdef_fn(4, 8);
 27+-cdef_fn(8, 8);
 28++cdef_fn(4, 4)
 29++cdef_fn(4, 8)
 30++cdef_fn(8, 8)
 31+ 
 32+ static int cdef_find_dir_c(const pixel *img, const ptrdiff_t stride,
 33+                            unsigned *const var HIGHBD_DECL_SUFFIX)
 34+diff --git a/src/film_grain_tmpl.c b/src/film_grain_tmpl.c
 35+index 0c6a17c..0ee4e53 100644
 36+--- a/src/film_grain_tmpl.c
 37++++ b/src/film_grain_tmpl.c
 38+@@ -149,9 +149,9 @@ static decl_generate_grain_uv_fn(generate_grain_uv_##nm##_c) { \
 39+     generate_grain_uv_c(buf, buf_y, data, uv, ss_x, ss_y HIGHBD_TAIL_SUFFIX); \
 40+ }
 41+ 
 42+-gnuv_ss_fn(420, 1, 1);
 43+-gnuv_ss_fn(422, 1, 0);
 44+-gnuv_ss_fn(444, 0, 0);
 45++gnuv_ss_fn(420, 1, 1)
 46++gnuv_ss_fn(422, 1, 0)
 47++gnuv_ss_fn(444, 0, 0)
 48+ 
 49+ // samples from the correct block of a grain LUT, while taking into account the
 50+ // offsets provided by the offsets cache
 51+@@ -408,9 +408,9 @@ static decl_fguv_32x32xn_fn(fguv_32x32xn_##nm##_c) { \
 52+                    HIGHBD_TAIL_SUFFIX); \
 53+ }
 54+ 
 55+-fguv_ss_fn(420, 1, 1);
 56+-fguv_ss_fn(422, 1, 0);
 57+-fguv_ss_fn(444, 0, 0);
 58++fguv_ss_fn(420, 1, 1)
 59++fguv_ss_fn(422, 1, 0)
 60++fguv_ss_fn(444, 0, 0)
 61+ 
 62+ COLD void bitfn(dav1d_film_grain_dsp_init)(Dav1dFilmGrainDSPContext *const c) {
 63+     c->generate_grain_y = generate_grain_y_c;
 64+diff --git a/src/looprestoration.h b/src/looprestoration.h
 65+index a0a917f..3626aa4 100644
 66+--- a/src/looprestoration.h
 67++++ b/src/looprestoration.h
 68+@@ -66,8 +66,8 @@ void (name)(pixel *dst, ptrdiff_t dst_stride, \
 69+             const_left_pixel_row left, \
 70+             const pixel *lpf, ptrdiff_t lpf_stride, \
 71+             int w, int h, const LooprestorationParams *params, \
 72+-            enum LrEdgeFlags edges HIGHBD_DECL_SUFFIX)
 73+-typedef decl_lr_filter_fn(*looprestorationfilter_fn);
 74++            enum LrEdgeFlags edges HIGHBD_DECL_SUFFIX);
 75++typedef decl_lr_filter_fn(*looprestorationfilter_fn)
 76+ 
 77+ typedef struct Dav1dLoopRestorationDSPContext {
 78+     looprestorationfilter_fn wiener[2]; /* 7-tap, 5-tap */
 79+diff --git a/src/mc_tmpl.c b/src/mc_tmpl.c
 80+index f8d3e3b..374db4c 100644
 81+--- a/src/mc_tmpl.c
 82++++ b/src/mc_tmpl.c
 83+@@ -735,9 +735,9 @@ static void w_mask_##ssn##_c(pixel *const dst, const ptrdiff_t dst_stride, \
 84+              HIGHBD_TAIL_SUFFIX); \
 85+ }
 86+ 
 87+-w_mask_fns(444, 0, 0);
 88+-w_mask_fns(422, 1, 0);
 89+-w_mask_fns(420, 1, 1);
 90++w_mask_fns(444, 0, 0)
 91++w_mask_fns(422, 1, 0)
 92++w_mask_fns(420, 1, 1)
 93+ 
 94+ #undef w_mask_fns
 95+ 
 96+diff --git a/src/x86/looprestoration_init_tmpl.c b/src/x86/looprestoration_init_tmpl.c
 97+index ae64cc8..c92b7cc 100644
 98+--- a/src/x86/looprestoration_init_tmpl.c
 99++++ b/src/x86/looprestoration_init_tmpl.c
100+@@ -31,19 +31,19 @@
101+ #include "common/intops.h"
102+ 
103+ #define decl_wiener_filter_fns(ext) \
104+-decl_lr_filter_fn(BF(dav1d_wiener_filter7, ext)); \
105++decl_lr_filter_fn(BF(dav1d_wiener_filter7, ext)) \
106+ decl_lr_filter_fn(BF(dav1d_wiener_filter5, ext))
107+ 
108+ #define decl_sgr_filter_fns(ext) \
109+-decl_lr_filter_fn(BF(dav1d_sgr_filter_5x5, ext)); \
110+-decl_lr_filter_fn(BF(dav1d_sgr_filter_3x3, ext)); \
111++decl_lr_filter_fn(BF(dav1d_sgr_filter_5x5, ext)) \
112++decl_lr_filter_fn(BF(dav1d_sgr_filter_3x3, ext)) \
113+ decl_lr_filter_fn(BF(dav1d_sgr_filter_mix, ext))
114+ 
115+-decl_wiener_filter_fns(sse2);
116+-decl_wiener_filter_fns(ssse3);
117+-decl_wiener_filter_fns(avx2);
118+-decl_sgr_filter_fns(ssse3);
119+-decl_sgr_filter_fns(avx2);
120++decl_wiener_filter_fns(sse2)
121++decl_wiener_filter_fns(ssse3)
122++decl_wiener_filter_fns(avx2)
123++decl_sgr_filter_fns(ssse3)
124++decl_sgr_filter_fns(avx2)
125+ 
126+ COLD void bitfn(dav1d_loop_restoration_dsp_init_x86)(Dav1dLoopRestorationDSPContext *const c,
127+                                                      const int bpc)
128+diff --git a/src/x86/mc_init_tmpl.c b/src/x86/mc_init_tmpl.c
129+index 3991004..0bd6188 100644
130+--- a/src/x86/mc_init_tmpl.c
131++++ b/src/x86/mc_init_tmpl.c
132+@@ -42,68 +42,68 @@
133+ #define init_mct_scaled_fn(type, name, suffix) \
134+     c->mct_scaled[type] = BF(dav1d_prep_##name, suffix)
135+ 
136+-decl_fn(mc, dav1d_put_8tap_regular);
137+-decl_fn(mc, dav1d_put_8tap_regular_smooth);
138+-decl_fn(mc, dav1d_put_8tap_regular_sharp);
139+-decl_fn(mc, dav1d_put_8tap_smooth);
140+-decl_fn(mc, dav1d_put_8tap_smooth_regular);
141+-decl_fn(mc, dav1d_put_8tap_smooth_sharp);
142+-decl_fn(mc, dav1d_put_8tap_sharp);
143+-decl_fn(mc, dav1d_put_8tap_sharp_regular);
144+-decl_fn(mc, dav1d_put_8tap_sharp_smooth);
145+-decl_fn(mc, dav1d_put_bilin);
146++decl_fn(mc, dav1d_put_8tap_regular)
147++decl_fn(mc, dav1d_put_8tap_regular_smooth)
148++decl_fn(mc, dav1d_put_8tap_regular_sharp)
149++decl_fn(mc, dav1d_put_8tap_smooth)
150++decl_fn(mc, dav1d_put_8tap_smooth_regular)
151++decl_fn(mc, dav1d_put_8tap_smooth_sharp)
152++decl_fn(mc, dav1d_put_8tap_sharp)
153++decl_fn(mc, dav1d_put_8tap_sharp_regular)
154++decl_fn(mc, dav1d_put_8tap_sharp_smooth)
155++decl_fn(mc, dav1d_put_bilin)
156+ 
157+-decl_fn(mct, dav1d_prep_8tap_regular);
158+-decl_fn(mct, dav1d_prep_8tap_regular_smooth);
159+-decl_fn(mct, dav1d_prep_8tap_regular_sharp);
160+-decl_fn(mct, dav1d_prep_8tap_smooth);
161+-decl_fn(mct, dav1d_prep_8tap_smooth_regular);
162+-decl_fn(mct, dav1d_prep_8tap_smooth_sharp);
163+-decl_fn(mct, dav1d_prep_8tap_sharp);
164+-decl_fn(mct, dav1d_prep_8tap_sharp_regular);
165+-decl_fn(mct, dav1d_prep_8tap_sharp_smooth);
166+-decl_fn(mct, dav1d_prep_bilin);
167++decl_fn(mct, dav1d_prep_8tap_regular)
168++decl_fn(mct, dav1d_prep_8tap_regular_smooth)
169++decl_fn(mct, dav1d_prep_8tap_regular_sharp)
170++decl_fn(mct, dav1d_prep_8tap_smooth)
171++decl_fn(mct, dav1d_prep_8tap_smooth_regular)
172++decl_fn(mct, dav1d_prep_8tap_smooth_sharp)
173++decl_fn(mct, dav1d_prep_8tap_sharp)
174++decl_fn(mct, dav1d_prep_8tap_sharp_regular)
175++decl_fn(mct, dav1d_prep_8tap_sharp_smooth)
176++decl_fn(mct, dav1d_prep_bilin)
177+ 
178+-decl_fn(mc_scaled, dav1d_put_8tap_scaled_regular);
179+-decl_fn(mc_scaled, dav1d_put_8tap_scaled_regular_smooth);
180+-decl_fn(mc_scaled, dav1d_put_8tap_scaled_regular_sharp);
181+-decl_fn(mc_scaled, dav1d_put_8tap_scaled_smooth);
182+-decl_fn(mc_scaled, dav1d_put_8tap_scaled_smooth_regular);
183+-decl_fn(mc_scaled, dav1d_put_8tap_scaled_smooth_sharp);
184+-decl_fn(mc_scaled, dav1d_put_8tap_scaled_sharp);
185+-decl_fn(mc_scaled, dav1d_put_8tap_scaled_sharp_regular);
186+-decl_fn(mc_scaled, dav1d_put_8tap_scaled_sharp_smooth);
187+-decl_fn(mc_scaled, dav1d_put_bilin_scaled);
188++decl_fn(mc_scaled, dav1d_put_8tap_scaled_regular)
189++decl_fn(mc_scaled, dav1d_put_8tap_scaled_regular_smooth)
190++decl_fn(mc_scaled, dav1d_put_8tap_scaled_regular_sharp)
191++decl_fn(mc_scaled, dav1d_put_8tap_scaled_smooth)
192++decl_fn(mc_scaled, dav1d_put_8tap_scaled_smooth_regular)
193++decl_fn(mc_scaled, dav1d_put_8tap_scaled_smooth_sharp)
194++decl_fn(mc_scaled, dav1d_put_8tap_scaled_sharp)
195++decl_fn(mc_scaled, dav1d_put_8tap_scaled_sharp_regular)
196++decl_fn(mc_scaled, dav1d_put_8tap_scaled_sharp_smooth)
197++decl_fn(mc_scaled, dav1d_put_bilin_scaled)
198+ 
199+-decl_fn(mct_scaled, dav1d_prep_8tap_scaled_regular);
200+-decl_fn(mct_scaled, dav1d_prep_8tap_scaled_regular_smooth);
201+-decl_fn(mct_scaled, dav1d_prep_8tap_scaled_regular_sharp);
202+-decl_fn(mct_scaled, dav1d_prep_8tap_scaled_smooth);
203+-decl_fn(mct_scaled, dav1d_prep_8tap_scaled_smooth_regular);
204+-decl_fn(mct_scaled, dav1d_prep_8tap_scaled_smooth_sharp);
205+-decl_fn(mct_scaled, dav1d_prep_8tap_scaled_sharp);
206+-decl_fn(mct_scaled, dav1d_prep_8tap_scaled_sharp_regular);
207+-decl_fn(mct_scaled, dav1d_prep_8tap_scaled_sharp_smooth);
208+-decl_fn(mct_scaled, dav1d_prep_bilin_scaled);
209++decl_fn(mct_scaled, dav1d_prep_8tap_scaled_regular)
210++decl_fn(mct_scaled, dav1d_prep_8tap_scaled_regular_smooth)
211++decl_fn(mct_scaled, dav1d_prep_8tap_scaled_regular_sharp)
212++decl_fn(mct_scaled, dav1d_prep_8tap_scaled_smooth)
213++decl_fn(mct_scaled, dav1d_prep_8tap_scaled_smooth_regular)
214++decl_fn(mct_scaled, dav1d_prep_8tap_scaled_smooth_sharp)
215++decl_fn(mct_scaled, dav1d_prep_8tap_scaled_sharp)
216++decl_fn(mct_scaled, dav1d_prep_8tap_scaled_sharp_regular)
217++decl_fn(mct_scaled, dav1d_prep_8tap_scaled_sharp_smooth)
218++decl_fn(mct_scaled, dav1d_prep_bilin_scaled)
219+ 
220+-decl_fn(avg, dav1d_avg);
221+-decl_fn(w_avg, dav1d_w_avg);
222+-decl_fn(mask, dav1d_mask);
223+-decl_fn(w_mask, dav1d_w_mask_420);
224+-decl_fn(w_mask, dav1d_w_mask_422);
225+-decl_fn(w_mask, dav1d_w_mask_444);
226+-decl_fn(blend, dav1d_blend);
227+-decl_fn(blend_dir, dav1d_blend_v);
228+-decl_fn(blend_dir, dav1d_blend_h);
229++decl_fn(avg, dav1d_avg)
230++decl_fn(w_avg, dav1d_w_avg)
231++decl_fn(mask, dav1d_mask)
232++decl_fn(w_mask, dav1d_w_mask_420)
233++decl_fn(w_mask, dav1d_w_mask_422)
234++decl_fn(w_mask, dav1d_w_mask_444)
235++decl_fn(blend, dav1d_blend)
236++decl_fn(blend_dir, dav1d_blend_v)
237++decl_fn(blend_dir, dav1d_blend_h)
238+ 
239+-decl_fn(warp8x8, dav1d_warp_affine_8x8);
240++decl_fn(warp8x8, dav1d_warp_affine_8x8)
241+ decl_warp8x8_fn(BF(dav1d_warp_affine_8x8, sse4));
242+-decl_fn(warp8x8t, dav1d_warp_affine_8x8t);
243++decl_fn(warp8x8t, dav1d_warp_affine_8x8t)
244+ decl_warp8x8t_fn(BF(dav1d_warp_affine_8x8t, sse4));
245+ 
246+-decl_fn(emu_edge, dav1d_emu_edge);
247++decl_fn(emu_edge, dav1d_emu_edge)
248+ 
249+-decl_fn(resize, dav1d_resize);
250++decl_fn(resize, dav1d_resize)
251+ 
252+ COLD void bitfn(dav1d_mc_dsp_init_x86)(Dav1dMCDSPContext *const c) {
253+     const unsigned flags = dav1d_get_cpu_flags();
254+-- 
255+2.32.0
256+
+1, -0
1@@ -0,0 +1 @@
2+Subproject commit 7b433e077298d0f4faf8da6d6eb5774e29bffa54
+1, -0
1@@ -0,0 +1 @@
2+0.9.2 r0
+1, -0
1@@ -0,0 +1 @@
2+/lib.ninja
+16, -0
 1@@ -0,0 +1,16 @@
 2+/^#define/ {
 3+	cfg[$2] = $3
 4+}
 5+
 6+function printvar(var) {
 7+	print "#define AV_" var " " cfg[var]
 8+}
 9+
10+END {
11+	print "/* generated by avconfig.awk */"
12+	print "#ifndef AVUTIL_AVCONFIG_H"
13+	print "#define AVUTIL_AVCONFIG_H"
14+	printvar("HAVE_BIGENDIAN")
15+	printvar("HAVE_FAST_UNALIGNED")
16+	print "#endif /* AVUTIL_AVCONFIG_H */"
17+}
+14, -0
 1@@ -0,0 +1,14 @@
 2+#ifndef FFMPEG_CONFIG_H
 3+#define FFMPEG_CONFIG_H
 4+#define FFMPEG_CONFIGURATION ""
 5+#define FFMPEG_LICENSE "LGPL version 2.1 or later"
 6+#define CONFIG_THIS_YEAR 2024
 7+#define FFMPEG_DATADIR "/share/ffmpeg"
 8+#define AVCONV_DATADIR "/share/ffmpeg"
 9+#define CC_IDENT "gcc"
10+#define OS_NAME linux
11+#define EXTERN_PREFIX ""
12+#define EXTERN_ASM
13+#define BUILDSUF ""
14+#define SLIBSUF ".so"
15+#define SWS_MAX_FILTER_SIZE 256
+1, -0
1@@ -0,0 +1 @@
2+#endif /* FFMPEG_CONFIG_H */
+767, -0
  1@@ -0,0 +1,767 @@
  2+/* probe */
  3+#ifndef HAVE_INLINE_ASM
  4+# define HAVE_INLINE_ASM 0
  5+#endif
  6+#ifndef HAVE_MMINTRIN_H
  7+# define HAVE_MMINTRIN_H 0
  8+#endif
  9+#ifndef PIC
 10+# define PIC 0
 11+#endif
 12+
 13+#define ARCH_AARCH64 0
 14+#define ARCH_ALPHA 0
 15+#define ARCH_ARM 0
 16+#define ARCH_AVR32 0
 17+#define ARCH_AVR32_AP 0
 18+#define ARCH_AVR32_UC 0
 19+#define ARCH_BFIN 0
 20+#define ARCH_IA64 0
 21+#define ARCH_LOONGARCH 0
 22+#define ARCH_LOONGARCH32 0
 23+#define ARCH_LOONGARCH64 0
 24+#define ARCH_M68K 0
 25+#define ARCH_MIPS 0
 26+#define ARCH_MIPS64 0
 27+#define ARCH_PARISC 0
 28+#define ARCH_PPC 0
 29+#define ARCH_PPC64 0
 30+#define ARCH_RISCV 0
 31+#define ARCH_S390 0
 32+#define ARCH_SH4 0
 33+#define ARCH_SPARC 0
 34+#define ARCH_SPARC64 0
 35+#define ARCH_TILEGX 0
 36+#define ARCH_TILEPRO 0
 37+#define ARCH_X86 1
 38+#define ARCH_X86_32 0
 39+#define ARCH_X86_64 1
 40+#define HAVE_ARMV5TE 0
 41+#define HAVE_ARMV6 0
 42+#define HAVE_ARMV6T2 0
 43+#define HAVE_ARMV8 0
 44+#define HAVE_DOTPROD 0
 45+#define HAVE_I8MM 0
 46+#define HAVE_NEON 0
 47+#define HAVE_VFP 0
 48+#define HAVE_VFPV3 0
 49+#define HAVE_SETEND 0
 50+#define HAVE_ALTIVEC 0
 51+#define HAVE_DCBZL 0
 52+#define HAVE_LDBRX 0
 53+#define HAVE_POWER8 0
 54+#define HAVE_PPC4XX 0
 55+#define HAVE_VSX 0
 56+#define HAVE_RV 0
 57+#define HAVE_RVV 0
 58+#define HAVE_AESNI 1
 59+#define HAVE_AMD3DNOW 1
 60+#define HAVE_AMD3DNOWEXT 1
 61+#define HAVE_AVX 1
 62+#define HAVE_AVX2 1
 63+#define HAVE_AVX512 1
 64+#define HAVE_AVX512ICL 1
 65+#define HAVE_FMA3 1
 66+#define HAVE_FMA4 1
 67+#define HAVE_MMX 1
 68+#define HAVE_MMXEXT 1
 69+#define HAVE_SSE 1
 70+#define HAVE_SSE2 1
 71+#define HAVE_SSE3 1
 72+#define HAVE_SSE4 1
 73+#define HAVE_SSE42 1
 74+#define HAVE_SSSE3 1
 75+#define HAVE_XOP 1
 76+#define HAVE_I686 1
 77+#define HAVE_MIPSFPU 0
 78+#define HAVE_MIPS32R2 0
 79+#define HAVE_MIPS32R5 0
 80+#define HAVE_MIPS64R2 0
 81+#define HAVE_MIPS32R6 0
 82+#define HAVE_MIPS64R6 0
 83+#define HAVE_MIPSDSP 0
 84+#define HAVE_MIPSDSPR2 0
 85+#define HAVE_MSA 0
 86+#define HAVE_LOONGSON2 1
 87+#define HAVE_LOONGSON3 1
 88+#define HAVE_MMI 0
 89+#define HAVE_LSX 0
 90+#define HAVE_LASX 0
 91+#define HAVE_ARMV5TE_EXTERNAL 0
 92+#define HAVE_ARMV6_EXTERNAL 0
 93+#define HAVE_ARMV6T2_EXTERNAL 0
 94+#define HAVE_ARMV8_EXTERNAL 0
 95+#define HAVE_DOTPROD_EXTERNAL 0
 96+#define HAVE_I8MM_EXTERNAL 0
 97+#define HAVE_NEON_EXTERNAL 0
 98+#define HAVE_VFP_EXTERNAL 0
 99+#define HAVE_VFPV3_EXTERNAL 0
100+#define HAVE_SETEND_EXTERNAL 0
101+#define HAVE_ALTIVEC_EXTERNAL 0
102+#define HAVE_DCBZL_EXTERNAL 0
103+#define HAVE_LDBRX_EXTERNAL 0
104+#define HAVE_POWER8_EXTERNAL 0
105+#define HAVE_PPC4XX_EXTERNAL 0
106+#define HAVE_VSX_EXTERNAL 0
107+#define HAVE_RV_EXTERNAL 0
108+#define HAVE_RVV_EXTERNAL 0
109+#define HAVE_AESNI_EXTERNAL 1
110+#define HAVE_AMD3DNOW_EXTERNAL 1
111+#define HAVE_AMD3DNOWEXT_EXTERNAL 1
112+#define HAVE_AVX_EXTERNAL 1
113+#define HAVE_AVX2_EXTERNAL 1
114+#define HAVE_AVX512_EXTERNAL 1
115+#define HAVE_AVX512ICL_EXTERNAL 1
116+#define HAVE_FMA3_EXTERNAL 1
117+#define HAVE_FMA4_EXTERNAL 1
118+#define HAVE_MMX_EXTERNAL 1
119+#define HAVE_MMXEXT_EXTERNAL 1
120+#define HAVE_SSE_EXTERNAL 1
121+#define HAVE_SSE2_EXTERNAL 1
122+#define HAVE_SSE3_EXTERNAL 1
123+#define HAVE_SSE4_EXTERNAL 1
124+#define HAVE_SSE42_EXTERNAL 1
125+#define HAVE_SSSE3_EXTERNAL 1
126+#define HAVE_XOP_EXTERNAL 1
127+#define HAVE_I686_EXTERNAL 0
128+#define HAVE_MIPSFPU_EXTERNAL 0
129+#define HAVE_MIPS32R2_EXTERNAL 0
130+#define HAVE_MIPS32R5_EXTERNAL 0
131+#define HAVE_MIPS64R2_EXTERNAL 0
132+#define HAVE_MIPS32R6_EXTERNAL 0
133+#define HAVE_MIPS64R6_EXTERNAL 0
134+#define HAVE_MIPSDSP_EXTERNAL 0
135+#define HAVE_MIPSDSPR2_EXTERNAL 0
136+#define HAVE_MSA_EXTERNAL 0
137+#define HAVE_LOONGSON2_EXTERNAL 0
138+#define HAVE_LOONGSON3_EXTERNAL 0
139+#define HAVE_MMI_EXTERNAL 0
140+#define HAVE_LSX_EXTERNAL 0
141+#define HAVE_LASX_EXTERNAL 0
142+#define HAVE_ARMV5TE_INLINE 0
143+#define HAVE_ARMV6_INLINE 0
144+#define HAVE_ARMV6T2_INLINE 0
145+#define HAVE_ARMV8_INLINE 0
146+#define HAVE_DOTPROD_INLINE 0
147+#define HAVE_I8MM_INLINE 0
148+#define HAVE_NEON_INLINE 0
149+#define HAVE_VFP_INLINE 0
150+#define HAVE_VFPV3_INLINE 0
151+#define HAVE_SETEND_INLINE 0
152+#define HAVE_ALTIVEC_INLINE 0
153+#define HAVE_DCBZL_INLINE 0
154+#define HAVE_LDBRX_INLINE 0
155+#define HAVE_POWER8_INLINE 0
156+#define HAVE_PPC4XX_INLINE 0
157+#define HAVE_VSX_INLINE 0
158+#define HAVE_RV_INLINE 0
159+#define HAVE_RVV_INLINE 0
160+#define HAVE_AESNI_INLINE HAVE_INLINE_ASM
161+#define HAVE_AMD3DNOW_INLINE HAVE_INLINE_ASM
162+#define HAVE_AMD3DNOWEXT_INLINE HAVE_INLINE_ASM
163+#define HAVE_AVX_INLINE HAVE_INLINE_ASM
164+#define HAVE_AVX2_INLINE HAVE_INLINE_ASM
165+#define HAVE_AVX512_INLINE HAVE_INLINE_ASM
166+#define HAVE_AVX512ICL_INLINE HAVE_INLINE_ASM
167+#define HAVE_FMA3_INLINE HAVE_INLINE_ASM
168+#define HAVE_FMA4_INLINE HAVE_INLINE_ASM
169+#define HAVE_MMX_INLINE HAVE_INLINE_ASM
170+#define HAVE_MMXEXT_INLINE HAVE_INLINE_ASM
171+#define HAVE_SSE_INLINE HAVE_INLINE_ASM
172+#define HAVE_SSE2_INLINE HAVE_INLINE_ASM
173+#define HAVE_SSE3_INLINE HAVE_INLINE_ASM
174+#define HAVE_SSE4_INLINE HAVE_INLINE_ASM
175+#define HAVE_SSE42_INLINE HAVE_INLINE_ASM
176+#define HAVE_SSSE3_INLINE HAVE_INLINE_ASM
177+#define HAVE_XOP_INLINE HAVE_INLINE_ASM
178+#define HAVE_I686_INLINE 0
179+#define HAVE_MIPSFPU_INLINE 0
180+#define HAVE_MIPS32R2_INLINE 0
181+#define HAVE_MIPS32R5_INLINE 0
182+#define HAVE_MIPS64R2_INLINE 0
183+#define HAVE_MIPS32R6_INLINE 0
184+#define HAVE_MIPS64R6_INLINE 0
185+#define HAVE_MIPSDSP_INLINE 0
186+#define HAVE_MIPSDSPR2_INLINE 0
187+#define HAVE_MSA_INLINE 0
188+#define HAVE_LOONGSON2_INLINE 0
189+#define HAVE_LOONGSON3_INLINE 0
190+#define HAVE_MMI_INLINE 0
191+#define HAVE_LSX_INLINE 0
192+#define HAVE_LASX_INLINE 0
193+#define HAVE_ALIGNED_STACK 1
194+#define HAVE_FAST_64BIT 1
195+#define HAVE_FAST_CLZ 1
196+#define HAVE_FAST_CMOV 1
197+#define HAVE_FAST_FLOAT16 0
198+#define HAVE_LOCAL_ALIGNED 1
199+#define HAVE_SIMD_ALIGN_16 1
200+#define HAVE_SIMD_ALIGN_32 1
201+#define HAVE_SIMD_ALIGN_64 1
202+#define HAVE_ATOMIC_CAS_PTR 0
203+#define HAVE_MACHINE_RW_BARRIER 0
204+#define HAVE_MEMORYBARRIER 0
205+#define HAVE_MM_EMPTY HAVE_MMINTRIN_H
206+#define HAVE_RDTSC 0
207+#define HAVE_SEM_TIMEDWAIT 1
208+#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
209+/* probe HAVE_INLINE_ASM */
210+#define HAVE_SYMVER 1
211+#define HAVE_X86ASM 1
212+#define HAVE_BIGENDIAN 0
213+#define HAVE_FAST_UNALIGNED 1
214+#define HAVE_ARPA_INET_H 1
215+#define HAVE_ASM_TYPES_H 1
216+#define HAVE_CDIO_PARANOIA_H 0
217+#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
218+#define HAVE_CUDA_H 0
219+#define HAVE_DISPATCH_DISPATCH_H 0
220+#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
221+#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
222+#define HAVE_DEV_IC_BT8XX_H 0
223+#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
224+#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
225+#define HAVE_DIRECT_H 0
226+#define HAVE_DIRENT_H 1
227+#define HAVE_DXGIDEBUG_H 0
228+#define HAVE_DXVA_H 0
229+#define HAVE_ES2_GL_H 0
230+#define HAVE_GSM_H 0
231+#define HAVE_IO_H 0
232+#define HAVE_LINUX_DMA_BUF_H 1
233+#define HAVE_LINUX_PERF_EVENT_H 1
234+#define HAVE_MACHINE_IOCTL_BT848_H 0
235+#define HAVE_MACHINE_IOCTL_METEOR_H 0
236+#define HAVE_MALLOC_H 1
237+#define HAVE_OPENCV2_CORE_CORE_C_H 0
238+#define HAVE_OPENGL_GL3_H 0
239+#define HAVE_POLL_H 1
240+#define HAVE_PTHREAD_NP_H 0
241+#define HAVE_SYS_PARAM_H 1
242+#define HAVE_SYS_RESOURCE_H 1
243+#define HAVE_SYS_SELECT_H 1
244+#define HAVE_SYS_SOUNDCARD_H 1
245+#define HAVE_SYS_TIME_H 1
246+#define HAVE_SYS_UN_H 1
247+#define HAVE_SYS_VIDEOIO_H 0
248+#define HAVE_TERMIOS_H 1
249+#define HAVE_UDPLITE_H 0
250+#define HAVE_UNISTD_H 1
251+#define HAVE_VALGRIND_VALGRIND_H 0
252+#define HAVE_WINDOWS_H 0
253+#define HAVE_WINSOCK2_H 0
254+#define HAVE_INTRINSICS_NEON 0
255+#define HAVE_ATANF 1
256+#define HAVE_ATAN2F 1
257+#define HAVE_CBRT 1
258+#define HAVE_CBRTF 1
259+#define HAVE_COPYSIGN 1
260+#define HAVE_COSF 1
261+#define HAVE_ERF 1
262+#define HAVE_EXP2 1
263+#define HAVE_EXP2F 1
264+#define HAVE_EXPF 1
265+#define HAVE_HYPOT 1
266+#define HAVE_ISFINITE 1
267+#define HAVE_ISINF 1
268+#define HAVE_ISNAN 1
269+#define HAVE_LDEXPF 1
270+#define HAVE_LLRINT 1
271+#define HAVE_LLRINTF 1
272+#define HAVE_LOG2 1
273+#define HAVE_LOG2F 1
274+#define HAVE_LOG10F 1
275+#define HAVE_LRINT 1
276+#define HAVE_LRINTF 1
277+#define HAVE_POWF 1
278+#define HAVE_RINT 1
279+#define HAVE_ROUND 1
280+#define HAVE_ROUNDF 1
281+#define HAVE_SINF 1
282+#define HAVE_TRUNC 1
283+#define HAVE_TRUNCF 1
284+#define HAVE_DOS_PATHS 0
285+#define HAVE_LIBC_MSVCRT 0
286+#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
287+#define HAVE_SECTION_DATA_REL_RO 1
288+#define HAVE_THREADS 1
289+#define HAVE_UWP 0
290+#define HAVE_WINRT 0
291+#define HAVE_ACCESS 1
292+#define HAVE_ALIGNED_MALLOC 0
293+#define HAVE_ARC4RANDOM_BUF 0
294+#define HAVE_CLOCK_GETTIME 1
295+#define HAVE_CLOSESOCKET 0
296+#define HAVE_COMMANDLINETOARGVW 0
297+#define HAVE_FCNTL 1
298+#define HAVE_GETADDRINFO 1
299+#define HAVE_GETAUXVAL 1
300+#define HAVE_GETENV 1
301+#define HAVE_GETHRTIME 0
302+#define HAVE_GETOPT 1
303+#define HAVE_GETMODULEHANDLE 0
304+#define HAVE_GETPROCESSAFFINITYMASK 0
305+#define HAVE_GETPROCESSMEMORYINFO 0
306+#define HAVE_GETPROCESSTIMES 0
307+#define HAVE_GETRUSAGE 1
308+#define HAVE_GETSTDHANDLE 0
309+#define HAVE_GETSYSTEMTIMEASFILETIME 0
310+#define HAVE_GETTIMEOFDAY 1
311+#define HAVE_GLOB 1
312+#define HAVE_GLXGETPROCADDRESS 0
313+#define HAVE_GMTIME_R 1
314+#define HAVE_INET_ATON 1
315+#define HAVE_ISATTY 1
316+#define HAVE_KBHIT 0
317+#define HAVE_LOCALTIME_R 1
318+#define HAVE_LSTAT 1
319+#define HAVE_LZO1X_999_COMPRESS 0
320+#define HAVE_MACH_ABSOLUTE_TIME 0
321+#define HAVE_MAPVIEWOFFILE 0
322+#define HAVE_MEMALIGN 1
323+#define HAVE_MKSTEMP 1
324+#define HAVE_MMAP 1
325+#define HAVE_MPROTECT 1
326+#define HAVE_NANOSLEEP 1
327+#define HAVE_PEEKNAMEDPIPE 0
328+#define HAVE_POSIX_MEMALIGN 1
329+#define HAVE_PRCTL 1
330+#define HAVE_PTHREAD_CANCEL 1
331+#define HAVE_PTHREAD_SET_NAME_NP 0
332+#define HAVE_PTHREAD_SETNAME_NP 0
333+#define HAVE_SCHED_GETAFFINITY 1
334+#define HAVE_SECITEMIMPORT 0
335+#define HAVE_SETCONSOLETEXTATTRIBUTE 0
336+#define HAVE_SETCONSOLECTRLHANDLER 0
337+#define HAVE_SETDLLDIRECTORY 0
338+#define HAVE_SETMODE 0
339+#define HAVE_SETRLIMIT 1
340+#define HAVE_SLEEP 0
341+#define HAVE_STRERROR_R 1
342+#define HAVE_SYSCONF 1
343+#define HAVE_SYSCTL 0
344+#define HAVE_SYSCTLBYNAME 0
345+#define HAVE_USLEEP 1
346+#define HAVE_UTGETOSTYPEFROMSTRING 0
347+#define HAVE_VIRTUALALLOC 0
348+#define HAVE_WGLGETPROCADDRESS 0
349+#define HAVE_BCRYPT 0
350+#define HAVE_VAAPI_DRM 0
351+#define HAVE_VAAPI_X11 0
352+#define HAVE_VAAPI_WIN32 0
353+#define HAVE_VDPAU_X11 0
354+#define HAVE_PTHREADS 1
355+#define HAVE_OS2THREADS 0
356+#define HAVE_W32THREADS 0
357+#define HAVE_AS_ARCH_DIRECTIVE 0
358+#define HAVE_AS_ARCHEXT_DOTPROD_DIRECTIVE 0
359+#define HAVE_AS_ARCHEXT_I8MM_DIRECTIVE 0
360+#define HAVE_AS_DN_DIRECTIVE 0
361+#define HAVE_AS_FPU_DIRECTIVE 0
362+#define HAVE_AS_FUNC 0
363+#define HAVE_AS_OBJECT_ARCH 0
364+#define HAVE_ASM_MOD_Q 0
365+#define HAVE_BLOCKS_EXTENSION 0
366+#define HAVE_EBP_AVAILABLE HAVE_INLINE_ASM
367+#define HAVE_EBX_AVAILABLE HAVE_INLINE_ASM
368+#define HAVE_GNU_AS 0
369+#define HAVE_GNU_WINDRES 0
370+#define HAVE_IBM_ASM 0
371+#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 1
372+#define HAVE_INLINE_ASM_LABELS 1
373+#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
374+#define HAVE_PRAGMA_DEPRECATED 0
375+#define HAVE_RSYNC_CONTIMEOUT 0
376+#define HAVE_SYMVER_ASM_LABEL 0
377+#define HAVE_SYMVER_GNU_ASM 1
378+#define HAVE_VFP_ARGS 0
379+#define HAVE_XFORM_ASM 0
380+#define HAVE_XMM_CLOBBERS 1
381+#define HAVE_DPI_AWARENESS_CONTEXT 0
382+#define HAVE_IDXGIOUTPUT5 0
383+#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
384+#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
385+#define HAVE_KCMVIDEOCODECTYPE_VP9 0
386+#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
387+#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
388+#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
389+#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
390+#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
391+#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
392+#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
393+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
394+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
395+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
396+#define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
397+#define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
398+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
399+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
400+#define HAVE_SOCKLEN_T 1
401+#define HAVE_STRUCT_ADDRINFO 1
402+#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
403+#define HAVE_STRUCT_IP_MREQ_SOURCE 1
404+#define HAVE_STRUCT_IPV6_MREQ 1
405+#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 1
406+#define HAVE_STRUCT_POLLFD 1
407+#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
408+#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
409+#define HAVE_STRUCT_SOCKADDR_IN6 1
410+#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
411+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
412+#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
413+#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
414+#define HAVE_GZIP 0
415+#define HAVE_LIBDRM_GETFB2 0
416+#define HAVE_MAKEINFO 0
417+#define HAVE_MAKEINFO_HTML 0
418+#define HAVE_OPENCL_D3D11 0
419+#define HAVE_OPENCL_DRM_ARM 0
420+#define HAVE_OPENCL_DRM_BEIGNET 0
421+#define HAVE_OPENCL_DXVA2 0
422+#define HAVE_OPENCL_VAAPI_BEIGNET 0
423+#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
424+#define HAVE_OPENCL_VIDEOTOOLBOX 0
425+#define HAVE_PERL 1
426+#define HAVE_POD2MAN 1
427+#define HAVE_TEXI2HTML 0
428+#define HAVE_XMLLINT 0
429+#define HAVE_ZLIB_GZIP 0
430+#define HAVE_OPENVINO2 0
431+#define CONFIG_DOC 0
432+#define CONFIG_HTMLPAGES 0
433+#define CONFIG_MANPAGES 0
434+#define CONFIG_PODPAGES 0
435+#define CONFIG_TXTPAGES 0
436+#define CONFIG_AVIO_HTTP_SERVE_FILES_EXAMPLE 0
437+#define CONFIG_AVIO_LIST_DIR_EXAMPLE 0
438+#define CONFIG_AVIO_READ_CALLBACK_EXAMPLE 0
439+#define CONFIG_DECODE_AUDIO_EXAMPLE 0
440+#define CONFIG_DECODE_FILTER_AUDIO_EXAMPLE 0
441+#define CONFIG_DECODE_FILTER_VIDEO_EXAMPLE 0
442+#define CONFIG_DECODE_VIDEO_EXAMPLE 0
443+#define CONFIG_DEMUX_DECODE_EXAMPLE 0
444+#define CONFIG_ENCODE_AUDIO_EXAMPLE 0
445+#define CONFIG_ENCODE_VIDEO_EXAMPLE 0
446+#define CONFIG_EXTRACT_MVS_EXAMPLE 0
447+#define CONFIG_FILTER_AUDIO_EXAMPLE 0
448+#define CONFIG_HW_DECODE_EXAMPLE 0
449+#define CONFIG_MUX_EXAMPLE 0
450+#define CONFIG_QSV_DECODE_EXAMPLE 0
451+#define CONFIG_REMUX_EXAMPLE 0
452+#define CONFIG_RESAMPLE_AUDIO_EXAMPLE 0
453+#define CONFIG_SCALE_VIDEO_EXAMPLE 0
454+#define CONFIG_SHOW_METADATA_EXAMPLE 0
455+#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
456+#define CONFIG_TRANSCODE_EXAMPLE 0
457+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
458+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
459+#define CONFIG_QSV_TRANSCODE_EXAMPLE 0
460+#define CONFIG_AVISYNTH 0
461+#define CONFIG_FREI0R 0
462+#define CONFIG_LIBCDIO 0
463+#define CONFIG_LIBDAVS2 0
464+#define CONFIG_LIBDVDNAV 0
465+#define CONFIG_LIBDVDREAD 0
466+#define CONFIG_LIBRUBBERBAND 0
467+#define CONFIG_LIBVIDSTAB 0
468+#define CONFIG_LIBX264 0
469+#define CONFIG_LIBX265 0
470+#define CONFIG_LIBXAVS 0
471+#define CONFIG_LIBXAVS2 0
472+#define CONFIG_LIBXVID 0
473+#define CONFIG_DECKLINK 0
474+#define CONFIG_LIBFDK_AAC 0
475+#define CONFIG_LIBTLS 1
476+#define CONFIG_GMP 0
477+#define CONFIG_LIBARIBB24 0
478+#define CONFIG_LIBLENSFUN 0
479+#define CONFIG_LIBOPENCORE_AMRNB 0
480+#define CONFIG_LIBOPENCORE_AMRWB 0
481+#define CONFIG_LIBVO_AMRWBENC 0
482+#define CONFIG_MBEDTLS 0
483+#define CONFIG_RKMPP 0
484+#define CONFIG_LIBSMBCLIENT 0
485+#define CONFIG_CHROMAPRINT 0
486+#define CONFIG_GCRYPT 0
487+#define CONFIG_GNUTLS 0
488+#define CONFIG_JNI 0
489+#define CONFIG_LADSPA 0
490+#define CONFIG_LCMS2 0
491+#define CONFIG_LIBAOM 0
492+#define CONFIG_LIBARIBCAPTION 0
493+#define CONFIG_LIBASS 0
494+#define CONFIG_LIBBLURAY 0
495+#define CONFIG_LIBBS2B 0
496+#define CONFIG_LIBCACA 0
497+#define CONFIG_LIBCELT 0
498+#define CONFIG_LIBCODEC2 0
499+#define CONFIG_LIBDAV1D 1
500+#define CONFIG_LIBDC1394 0
501+#define CONFIG_LIBFLITE 0
502+#define CONFIG_LIBFONTCONFIG 0
503+#define CONFIG_LIBFREETYPE 0
504+#define CONFIG_LIBFRIBIDI 0
505+#define CONFIG_LIBHARFBUZZ 0
506+#define CONFIG_LIBGLSLANG 0
507+#define CONFIG_LIBGME 0
508+#define CONFIG_LIBGSM 0
509+#define CONFIG_LIBIEC61883 0
510+#define CONFIG_LIBILBC 0
511+#define CONFIG_LIBJACK 0
512+#define CONFIG_LIBJXL 0
513+#define CONFIG_LIBKLVANC 0
514+#define CONFIG_LIBKVAZAAR 0
515+#define CONFIG_LIBMODPLUG 0
516+#define CONFIG_LIBMP3LAME 0
517+#define CONFIG_LIBMYSOFA 0
518+#define CONFIG_LIBOPENCV 0
519+#define CONFIG_LIBOPENH264 0
520+#define CONFIG_LIBOPENJPEG 0
521+#define CONFIG_LIBOPENMPT 0
522+#define CONFIG_LIBOPENVINO 0
523+#define CONFIG_LIBOPUS 1
524+#define CONFIG_LIBPLACEBO 0
525+#define CONFIG_LIBPULSE 0
526+#define CONFIG_LIBQRENCODE 0
527+#define CONFIG_LIBQUIRC 0
528+#define CONFIG_LIBRABBITMQ 0
529+#define CONFIG_LIBRAV1E 0
530+#define CONFIG_LIBRIST 0
531+#define CONFIG_LIBRSVG 0
532+#define CONFIG_LIBRTMP 0
533+#define CONFIG_LIBSHADERC 0
534+#define CONFIG_LIBSHINE 0
535+#define CONFIG_LIBSMBCLIENT 0
536+#define CONFIG_LIBSNAPPY 0
537+#define CONFIG_LIBSOXR 0
538+#define CONFIG_LIBSPEEX 0
539+#define CONFIG_LIBSRT 0
540+#define CONFIG_LIBSSH 0
541+#define CONFIG_LIBSVTAV1 0
542+#define CONFIG_LIBTENSORFLOW 0
543+#define CONFIG_LIBTESSERACT 0
544+#define CONFIG_LIBTHEORA 0
545+#define CONFIG_LIBTORCH 0
546+#define CONFIG_LIBTWOLAME 0
547+#define CONFIG_LIBUAVS3D 0
548+#define CONFIG_LIBV4L2 0
549+#define CONFIG_LIBVMAF 0
550+#define CONFIG_LIBVORBIS 0
551+#define CONFIG_LIBVPX 0
552+#define CONFIG_LIBWEBP 0
553+#define CONFIG_LIBXEVD 0
554+#define CONFIG_LIBXEVE 0
555+#define CONFIG_LIBXML2 0
556+#define CONFIG_LIBZIMG 0
557+#define CONFIG_LIBZMQ 0
558+#define CONFIG_LIBZVBI 0
559+#define CONFIG_LV2 0
560+#define CONFIG_MEDIACODEC 0
561+#define CONFIG_OPENAL 0
562+#define CONFIG_OPENGL 0
563+#define CONFIG_OPENSSL 0
564+#define CONFIG_POCKETSPHINX 0
565+#define CONFIG_VAPOURSYNTH 0
566+#define CONFIG_ALSA 1
567+#define CONFIG_APPKIT 0
568+#define CONFIG_AVFOUNDATION 0
569+#define CONFIG_BZLIB 0
570+#define CONFIG_COREIMAGE 0
571+#define CONFIG_ICONV 0
572+#define CONFIG_LIBXCB 0
573+#define CONFIG_LIBXCB_SHM 0
574+#define CONFIG_LIBXCB_SHAPE 0
575+#define CONFIG_LIBXCB_XFIXES 0
576+#define CONFIG_LZMA 0
577+#define CONFIG_MEDIAFOUNDATION 0
578+#define CONFIG_METAL 0
579+#define CONFIG_SCHANNEL 0
580+#define CONFIG_SDL2 0
581+#define CONFIG_SECURETRANSPORT 0
582+#define CONFIG_SNDIO 0
583+#define CONFIG_XLIB 0
584+#define CONFIG_ZLIB 1
585+#define CONFIG_CUDA_NVCC 0
586+#define CONFIG_CUDA_SDK 0
587+#define CONFIG_LIBNPP 0
588+#define CONFIG_LIBMFX 0
589+#define CONFIG_LIBVPL 0
590+#define CONFIG_MMAL 0
591+#define CONFIG_OMX 0
592+#define CONFIG_OPENCL 0
593+#define CONFIG_AMF 0
594+#define CONFIG_AUDIOTOOLBOX 0
595+#define CONFIG_CUDA 0
596+#define CONFIG_CUDA_LLVM 0
597+#define CONFIG_CUVID 0
598+#define CONFIG_D3D11VA 0
599+#define CONFIG_D3D12VA 0
600+#define CONFIG_DXVA2 0
601+#define CONFIG_FFNVCODEC 0
602+#define CONFIG_LIBDRM 0
603+#define CONFIG_NVDEC 0
604+#define CONFIG_NVENC 0
605+#define CONFIG_VAAPI 0
606+#define CONFIG_VDPAU 0
607+#define CONFIG_VIDEOTOOLBOX 0
608+#define CONFIG_VULKAN 0
609+#define CONFIG_V4L2_M2M 0
610+#define CONFIG_FTRAPV 0
611+#define CONFIG_GRAY 0
612+#define CONFIG_HARDCODED_TABLES 0
613+#define CONFIG_OMX_RPI 0
614+#define CONFIG_RUNTIME_CPUDETECT 1
615+#define CONFIG_SAFE_BITSTREAM_READER 0
616+#define CONFIG_SHARED 0
617+#define CONFIG_SMALL 0
618+#define CONFIG_STATIC 1
619+#define CONFIG_SWSCALE_ALPHA 0
620+#define CONFIG_GPL 0
621+#define CONFIG_NONFREE 0
622+#define CONFIG_VERSION3 0
623+#define CONFIG_AVDEVICE 1
624+#define CONFIG_AVFILTER 1
625+#define CONFIG_SWSCALE 1
626+#define CONFIG_POSTPROC 0
627+#define CONFIG_AVFORMAT 1
628+#define CONFIG_AVCODEC 1
629+#define CONFIG_SWRESAMPLE 1
630+#define CONFIG_AVUTIL 1
631+#define CONFIG_FFPLAY 0
632+#define CONFIG_FFPROBE 0
633+#define CONFIG_FFMPEG 0
634+#define CONFIG_DWT 0
635+#define CONFIG_ERROR_RESILIENCE 1
636+#define CONFIG_FAAN 0
637+#define CONFIG_FAST_UNALIGNED 0
638+#define CONFIG_LSP 0
639+#define CONFIG_PIXELUTILS 0
640+#define CONFIG_NETWORK 1
641+#define CONFIG_AUTODETECT 0
642+#define CONFIG_FONTCONFIG 0
643+#define CONFIG_LARGE_TESTS 0
644+#define CONFIG_LINUX_PERF 0
645+#define CONFIG_MACOS_KPERF 0
646+#define CONFIG_MEMORY_POISONING 0
647+#define CONFIG_NEON_CLOBBER_TEST 0
648+#define CONFIG_OSSFUZZ 0
649+#define CONFIG_PIC PIC
650+#define CONFIG_PTX_COMPRESSION 0
651+#define CONFIG_THUMB 0
652+#define CONFIG_VALGRIND_BACKTRACE 0
653+#define CONFIG_XMM_CLOBBER_TEST 0
654+#define CONFIG_BSFS 0
655+#define CONFIG_DECODERS 1
656+#define CONFIG_ENCODERS 1
657+#define CONFIG_HWACCELS 0
658+#define CONFIG_PARSERS 1
659+#define CONFIG_INDEVS 0
660+#define CONFIG_OUTDEVS 0
661+#define CONFIG_FILTERS 0
662+#define CONFIG_DEMUXERS 1
663+#define CONFIG_MUXERS 0
664+#define CONFIG_PROTOCOLS 0
665+#define CONFIG_AANDCTTABLES 0
666+#define CONFIG_AC3DSP 1
667+#define CONFIG_ADTS_HEADER 1
668+#define CONFIG_ATSC_A53 1
669+#define CONFIG_AUDIO_FRAME_QUEUE 1
670+#define CONFIG_AUDIODSP 0
671+#define CONFIG_BLOCKDSP 1
672+#define CONFIG_BSWAPDSP 1
673+#define CONFIG_CABAC 1
674+#define CONFIG_CBS 1
675+#define CONFIG_CBS_AV1 1
676+#define CONFIG_CBS_H264 0
677+#define CONFIG_CBS_H265 0
678+#define CONFIG_CBS_H266 0
679+#define CONFIG_CBS_JPEG 0
680+#define CONFIG_CBS_MPEG2 0
681+#define CONFIG_CBS_VP8 0
682+#define CONFIG_CBS_VP9 0
683+#define CONFIG_DEFLATE_WRAPPER 1
684+#define CONFIG_DIRAC_PARSE 0
685+#define CONFIG_DNN 0
686+#define CONFIG_DOVI_RPU 1
687+#define CONFIG_DVPROFILE 0
688+#define CONFIG_EVCPARSE 0
689+#define CONFIG_EXIF 1
690+#define CONFIG_FAANDCT 0
691+#define CONFIG_FAANIDCT 0
692+#define CONFIG_FDCTDSP 0
693+#define CONFIG_FMTCONVERT 1
694+#define CONFIG_FRAME_THREAD_ENCODER 1
695+#define CONFIG_G722DSP 0
696+#define CONFIG_GOLOMB 1
697+#define CONFIG_GPLV3 0
698+#define CONFIG_H263DSP 1
699+#define CONFIG_H264CHROMA 1
700+#define CONFIG_H264DSP 1
701+#define CONFIG_H264PARSE 1
702+#define CONFIG_H264PRED 1
703+#define CONFIG_H264QPEL 1
704+#define CONFIG_H264_SEI 1
705+#define CONFIG_HEVCPARSE 1
706+#define CONFIG_HEVC_SEI 1
707+#define CONFIG_HPELDSP 1
708+#define CONFIG_HUFFMAN 0
709+#define CONFIG_HUFFYUVDSP 0
710+#define CONFIG_HUFFYUVENCDSP 0
711+#define CONFIG_IAMFDEC 1
712+#define CONFIG_IAMFENC 1
713+#define CONFIG_IDCTDSP 1
714+#define CONFIG_IIRFILTER 0
715+#define CONFIG_INFLATE_WRAPPER 1
716+#define CONFIG_INTRAX8 1
717+#define CONFIG_ISO_MEDIA 1
718+#define CONFIG_IVIDSP 0
719+#define CONFIG_JPEGTABLES 1
720+#define CONFIG_LGPLV3 0
721+#define CONFIG_LIBX262 0
722+#define CONFIG_LIBX264_HDR10 0
723+#define CONFIG_LLAUDDSP 0
724+#define CONFIG_LLVIDDSP 0
725+#define CONFIG_LLVIDENCDSP 1
726+#define CONFIG_LPC 0
727+#define CONFIG_LZF 0
728+#define CONFIG_ME_CMP 1
729+#define CONFIG_MPEG_ER 1
730+#define CONFIG_MPEGAUDIO 1
731+#define CONFIG_MPEGAUDIODSP 1
732+#define CONFIG_MPEGAUDIOHEADER 1
733+#define CONFIG_MPEG4AUDIO 1
734+#define CONFIG_MPEGVIDEO 1
735+#define CONFIG_MPEGVIDEODEC 1
736+#define CONFIG_MPEGVIDEOENC 0
737+#define CONFIG_MSMPEG4DEC 0
738+#define CONFIG_MSMPEG4ENC 0
739+#define CONFIG_MSS34DSP 0
740+#define CONFIG_PIXBLOCKDSP 0
741+#define CONFIG_QPELDSP 1
742+#define CONFIG_QSV 0
743+#define CONFIG_QSVDEC 0
744+#define CONFIG_QSVENC 0
745+#define CONFIG_QSVVPP 0
746+#define CONFIG_RANGECODER 0
747+#define CONFIG_RIFFDEC 1
748+#define CONFIG_RIFFENC 1
749+#define CONFIG_RTPDEC 0
750+#define CONFIG_RTPENC_CHAIN 1
751+#define CONFIG_RV34DSP 0
752+#define CONFIG_SCENE_SAD 0
753+#define CONFIG_SINEWIN 1
754+#define CONFIG_SNAPPY 0
755+#define CONFIG_SRTP 0
756+#define CONFIG_STARTCODE 1
757+#define CONFIG_TEXTUREDSP 0
758+#define CONFIG_TEXTUREDSPENC 0
759+#define CONFIG_TPELDSP 0
760+#define CONFIG_VAAPI_1 0
761+#define CONFIG_VAAPI_ENCODE 0
762+#define CONFIG_VC1DSP 1
763+#define CONFIG_VIDEODSP 1
764+#define CONFIG_VP3DSP 0
765+#define CONFIG_VP56DSP 0
766+#define CONFIG_VP8DSP 0
767+#define CONFIG_WMA_FREQS 1
768+#define CONFIG_WMV2DSP 1
+2, -0
1@@ -0,0 +1,2 @@
2+# This file is intentionally empty. It exists for scripts/sources.mk so that the
3+# Makefiles have something to include.
+2210, -0
   1@@ -0,0 +1,2210 @@
   2+#ifndef FFMPEG_CONFIG_COMPONENTS_H
   3+#define FFMPEG_CONFIG_COMPONENTS_H
   4+#define CONFIG_AAC_ADTSTOASC_BSF 1
   5+#define CONFIG_AV1_FRAME_MERGE_BSF 0
   6+#define CONFIG_AV1_FRAME_SPLIT_BSF 0
   7+#define CONFIG_AV1_METADATA_BSF 0
   8+#define CONFIG_CHOMP_BSF 0
   9+#define CONFIG_DUMP_EXTRADATA_BSF 0
  10+#define CONFIG_DCA_CORE_BSF 0
  11+#define CONFIG_DTS2PTS_BSF 0
  12+#define CONFIG_DV_ERROR_MARKER_BSF 0
  13+#define CONFIG_EAC3_CORE_BSF 0
  14+#define CONFIG_EXTRACT_EXTRADATA_BSF 1
  15+#define CONFIG_FILTER_UNITS_BSF 0
  16+#define CONFIG_H264_METADATA_BSF 0
  17+#define CONFIG_H264_MP4TOANNEXB_BSF 0
  18+#define CONFIG_H264_REDUNDANT_PPS_BSF 0
  19+#define CONFIG_HAPQA_EXTRACT_BSF 0
  20+#define CONFIG_HEVC_METADATA_BSF 0
  21+#define CONFIG_HEVC_MP4TOANNEXB_BSF 0
  22+#define CONFIG_IMX_DUMP_HEADER_BSF 0
  23+#define CONFIG_MEDIA100_TO_MJPEGB_BSF 0
  24+#define CONFIG_MJPEG2JPEG_BSF 0
  25+#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
  26+#define CONFIG_MPEG2_METADATA_BSF 0
  27+#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
  28+#define CONFIG_MOV2TEXTSUB_BSF 0
  29+#define CONFIG_NOISE_BSF 0
  30+#define CONFIG_NULL_BSF 1
  31+#define CONFIG_OPUS_METADATA_BSF 0
  32+#define CONFIG_PCM_RECHUNK_BSF 0
  33+#define CONFIG_PGS_FRAME_MERGE_BSF 1
  34+#define CONFIG_PRORES_METADATA_BSF 0
  35+#define CONFIG_REMOVE_EXTRADATA_BSF 0
  36+#define CONFIG_SETTS_BSF 0
  37+#define CONFIG_SHOWINFO_BSF 0
  38+#define CONFIG_TEXT2MOVSUB_BSF 0
  39+#define CONFIG_TRACE_HEADERS_BSF 0
  40+#define CONFIG_TRUEHD_CORE_BSF 0
  41+#define CONFIG_VP9_METADATA_BSF 0
  42+#define CONFIG_VP9_RAW_REORDER_BSF 0
  43+#define CONFIG_VP9_SUPERFRAME_BSF 0
  44+#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 1
  45+#define CONFIG_VVC_METADATA_BSF 0
  46+#define CONFIG_VVC_MP4TOANNEXB_BSF 0
  47+#define CONFIG_EVC_FRAME_MERGE_BSF 0
  48+#define CONFIG_AASC_DECODER 0
  49+#define CONFIG_AIC_DECODER 0
  50+#define CONFIG_ALIAS_PIX_DECODER 0
  51+#define CONFIG_AGM_DECODER 0
  52+#define CONFIG_AMV_DECODER 0
  53+#define CONFIG_ANM_DECODER 0
  54+#define CONFIG_ANSI_DECODER 0
  55+#define CONFIG_APNG_DECODER 0
  56+#define CONFIG_ARBC_DECODER 0
  57+#define CONFIG_ARGO_DECODER 0
  58+#define CONFIG_ASV1_DECODER 0
  59+#define CONFIG_ASV2_DECODER 0
  60+#define CONFIG_AURA_DECODER 0
  61+#define CONFIG_AURA2_DECODER 0
  62+#define CONFIG_AVRP_DECODER 0
  63+#define CONFIG_AVRN_DECODER 0
  64+#define CONFIG_AVS_DECODER 0
  65+#define CONFIG_AVUI_DECODER 0
  66+#define CONFIG_BETHSOFTVID_DECODER 0
  67+#define CONFIG_BFI_DECODER 0
  68+#define CONFIG_BINK_DECODER 0
  69+#define CONFIG_BITPACKED_DECODER 0
  70+#define CONFIG_BMP_DECODER 0
  71+#define CONFIG_BMV_VIDEO_DECODER 0
  72+#define CONFIG_BRENDER_PIX_DECODER 0
  73+#define CONFIG_C93_DECODER 0
  74+#define CONFIG_CAVS_DECODER 0
  75+#define CONFIG_CDGRAPHICS_DECODER 0
  76+#define CONFIG_CDTOONS_DECODER 0
  77+#define CONFIG_CDXL_DECODER 0
  78+#define CONFIG_CFHD_DECODER 0
  79+#define CONFIG_CINEPAK_DECODER 0
  80+#define CONFIG_CLEARVIDEO_DECODER 0
  81+#define CONFIG_CLJR_DECODER 0
  82+#define CONFIG_CLLC_DECODER 0
  83+#define CONFIG_COMFORTNOISE_DECODER 0
  84+#define CONFIG_CPIA_DECODER 0
  85+#define CONFIG_CRI_DECODER 0
  86+#define CONFIG_CSCD_DECODER 0
  87+#define CONFIG_CYUV_DECODER 0
  88+#define CONFIG_DDS_DECODER 0
  89+#define CONFIG_DFA_DECODER 0
  90+#define CONFIG_DIRAC_DECODER 0
  91+#define CONFIG_DNXHD_DECODER 0
  92+#define CONFIG_DPX_DECODER 0
  93+#define CONFIG_DSICINVIDEO_DECODER 0
  94+#define CONFIG_DVAUDIO_DECODER 0
  95+#define CONFIG_DVVIDEO_DECODER 0
  96+#define CONFIG_DXA_DECODER 0
  97+#define CONFIG_DXTORY_DECODER 0
  98+#define CONFIG_DXV_DECODER 0
  99+#define CONFIG_EACMV_DECODER 0
 100+#define CONFIG_EAMAD_DECODER 0
 101+#define CONFIG_EATGQ_DECODER 0
 102+#define CONFIG_EATGV_DECODER 0
 103+#define CONFIG_EATQI_DECODER 0
 104+#define CONFIG_EIGHTBPS_DECODER 0
 105+#define CONFIG_EIGHTSVX_EXP_DECODER 0
 106+#define CONFIG_EIGHTSVX_FIB_DECODER 0
 107+#define CONFIG_ESCAPE124_DECODER 0
 108+#define CONFIG_ESCAPE130_DECODER 0
 109+#define CONFIG_EXR_DECODER 0
 110+#define CONFIG_FFV1_DECODER 0
 111+#define CONFIG_FFVHUFF_DECODER 0
 112+#define CONFIG_FIC_DECODER 0
 113+#define CONFIG_FITS_DECODER 0
 114+#define CONFIG_FLASHSV_DECODER 0
 115+#define CONFIG_FLASHSV2_DECODER 0
 116+#define CONFIG_FLIC_DECODER 0
 117+#define CONFIG_FLV_DECODER 1
 118+#define CONFIG_FMVC_DECODER 0
 119+#define CONFIG_FOURXM_DECODER 0
 120+#define CONFIG_FRAPS_DECODER 0
 121+#define CONFIG_FRWU_DECODER 0
 122+#define CONFIG_G2M_DECODER 0
 123+#define CONFIG_GDV_DECODER 0
 124+#define CONFIG_GEM_DECODER 0
 125+#define CONFIG_GIF_DECODER 1
 126+#define CONFIG_H261_DECODER 0
 127+#define CONFIG_H263_DECODER 1
 128+#define CONFIG_H263I_DECODER 0
 129+#define CONFIG_H263P_DECODER 0
 130+#define CONFIG_H263_V4L2M2M_DECODER 0
 131+#define CONFIG_H264_DECODER 1
 132+#define CONFIG_H264_V4L2M2M_DECODER 0
 133+#define CONFIG_H264_MEDIACODEC_DECODER 0
 134+#define CONFIG_H264_MMAL_DECODER 0
 135+#define CONFIG_H264_QSV_DECODER 0
 136+#define CONFIG_H264_RKMPP_DECODER 0
 137+#define CONFIG_HAP_DECODER 0
 138+#define CONFIG_HEVC_DECODER 1
 139+#define CONFIG_HEVC_QSV_DECODER 0
 140+#define CONFIG_HEVC_RKMPP_DECODER 0
 141+#define CONFIG_HEVC_V4L2M2M_DECODER 0
 142+#define CONFIG_HNM4_VIDEO_DECODER 0
 143+#define CONFIG_HQ_HQA_DECODER 0
 144+#define CONFIG_HQX_DECODER 0
 145+#define CONFIG_HUFFYUV_DECODER 0
 146+#define CONFIG_HYMT_DECODER 0
 147+#define CONFIG_IDCIN_DECODER 0
 148+#define CONFIG_IFF_ILBM_DECODER 0
 149+#define CONFIG_IMM4_DECODER 0
 150+#define CONFIG_IMM5_DECODER 0
 151+#define CONFIG_INDEO2_DECODER 0
 152+#define CONFIG_INDEO3_DECODER 0
 153+#define CONFIG_INDEO4_DECODER 0
 154+#define CONFIG_INDEO5_DECODER 0
 155+#define CONFIG_INTERPLAY_VIDEO_DECODER 0
 156+#define CONFIG_IPU_DECODER 0
 157+#define CONFIG_JPEG2000_DECODER 0
 158+#define CONFIG_JPEGLS_DECODER 0
 159+#define CONFIG_JV_DECODER 0
 160+#define CONFIG_KGV1_DECODER 0
 161+#define CONFIG_KMVC_DECODER 0
 162+#define CONFIG_LAGARITH_DECODER 0
 163+#define CONFIG_LEAD_DECODER 0
 164+#define CONFIG_LOCO_DECODER 0
 165+#define CONFIG_LSCR_DECODER 0
 166+#define CONFIG_M101_DECODER 0
 167+#define CONFIG_MAGICYUV_DECODER 0
 168+#define CONFIG_MDEC_DECODER 0
 169+#define CONFIG_MEDIA100_DECODER 0
 170+#define CONFIG_MIMIC_DECODER 0
 171+#define CONFIG_MJPEG_DECODER 1
 172+#define CONFIG_MJPEGB_DECODER 0
 173+#define CONFIG_MMVIDEO_DECODER 0
 174+#define CONFIG_MOBICLIP_DECODER 0
 175+#define CONFIG_MOTIONPIXELS_DECODER 0
 176+#define CONFIG_MPEG1VIDEO_DECODER 1
 177+#define CONFIG_MPEG2VIDEO_DECODER 1
 178+#define CONFIG_MPEG4_DECODER 1
 179+#define CONFIG_MPEG4_V4L2M2M_DECODER 0
 180+#define CONFIG_MPEG4_MMAL_DECODER 0
 181+#define CONFIG_MPEGVIDEO_DECODER 1
 182+#define CONFIG_MPEG1_V4L2M2M_DECODER 0
 183+#define CONFIG_MPEG2_MMAL_DECODER 0
 184+#define CONFIG_MPEG2_V4L2M2M_DECODER 0
 185+#define CONFIG_MPEG2_QSV_DECODER 0
 186+#define CONFIG_MPEG2_MEDIACODEC_DECODER 0
 187+#define CONFIG_MSA1_DECODER 0
 188+#define CONFIG_MSCC_DECODER 0
 189+#define CONFIG_MSMPEG4V1_DECODER 0
 190+#define CONFIG_MSMPEG4V2_DECODER 0
 191+#define CONFIG_MSMPEG4V3_DECODER 0
 192+#define CONFIG_MSP2_DECODER 0
 193+#define CONFIG_MSRLE_DECODER 0
 194+#define CONFIG_MSS1_DECODER 0
 195+#define CONFIG_MSS2_DECODER 0
 196+#define CONFIG_MSVIDEO1_DECODER 0
 197+#define CONFIG_MSZH_DECODER 0
 198+#define CONFIG_MTS2_DECODER 0
 199+#define CONFIG_MV30_DECODER 0
 200+#define CONFIG_MVC1_DECODER 0
 201+#define CONFIG_MVC2_DECODER 0
 202+#define CONFIG_MVDV_DECODER 0
 203+#define CONFIG_MVHA_DECODER 0
 204+#define CONFIG_MWSC_DECODER 0
 205+#define CONFIG_MXPEG_DECODER 0
 206+#define CONFIG_NOTCHLC_DECODER 0
 207+#define CONFIG_NUV_DECODER 0
 208+#define CONFIG_PAF_VIDEO_DECODER 0
 209+#define CONFIG_PAM_DECODER 0
 210+#define CONFIG_PBM_DECODER 0
 211+#define CONFIG_PCX_DECODER 0
 212+#define CONFIG_PDV_DECODER 0
 213+#define CONFIG_PFM_DECODER 0
 214+#define CONFIG_PGM_DECODER 0
 215+#define CONFIG_PGMYUV_DECODER 0
 216+#define CONFIG_PGX_DECODER 0
 217+#define CONFIG_PHM_DECODER 0
 218+#define CONFIG_PHOTOCD_DECODER 0
 219+#define CONFIG_PICTOR_DECODER 0
 220+#define CONFIG_PIXLET_DECODER 0
 221+#define CONFIG_PNG_DECODER 1
 222+#define CONFIG_PPM_DECODER 0
 223+#define CONFIG_PRORES_DECODER 0
 224+#define CONFIG_PROSUMER_DECODER 0
 225+#define CONFIG_PSD_DECODER 0
 226+#define CONFIG_PTX_DECODER 0
 227+#define CONFIG_QDRAW_DECODER 0
 228+#define CONFIG_QOI_DECODER 0
 229+#define CONFIG_QPEG_DECODER 0
 230+#define CONFIG_QTRLE_DECODER 0
 231+#define CONFIG_R10K_DECODER 0
 232+#define CONFIG_R210_DECODER 0
 233+#define CONFIG_RASC_DECODER 0
 234+#define CONFIG_RAWVIDEO_DECODER 1
 235+#define CONFIG_RKA_DECODER 0
 236+#define CONFIG_RL2_DECODER 0
 237+#define CONFIG_ROQ_DECODER 0
 238+#define CONFIG_RPZA_DECODER 0
 239+#define CONFIG_RSCC_DECODER 0
 240+#define CONFIG_RTV1_DECODER 0
 241+#define CONFIG_RV10_DECODER 0
 242+#define CONFIG_RV20_DECODER 0
 243+#define CONFIG_RV30_DECODER 0
 244+#define CONFIG_RV40_DECODER 0
 245+#define CONFIG_S302M_DECODER 0
 246+#define CONFIG_SANM_DECODER 0
 247+#define CONFIG_SCPR_DECODER 0
 248+#define CONFIG_SCREENPRESSO_DECODER 0
 249+#define CONFIG_SGA_DECODER 0
 250+#define CONFIG_SGI_DECODER 0
 251+#define CONFIG_SGIRLE_DECODER 0
 252+#define CONFIG_SHEERVIDEO_DECODER 0
 253+#define CONFIG_SIMBIOSIS_IMX_DECODER 0
 254+#define CONFIG_SMACKER_DECODER 0
 255+#define CONFIG_SMC_DECODER 0
 256+#define CONFIG_SMVJPEG_DECODER 0
 257+#define CONFIG_SNOW_DECODER 0
 258+#define CONFIG_SP5X_DECODER 0
 259+#define CONFIG_SPEEDHQ_DECODER 0
 260+#define CONFIG_SPEEX_DECODER 0
 261+#define CONFIG_SRGC_DECODER 0
 262+#define CONFIG_SUNRAST_DECODER 0
 263+#define CONFIG_SVQ1_DECODER 0
 264+#define CONFIG_SVQ3_DECODER 0
 265+#define CONFIG_TARGA_DECODER 0
 266+#define CONFIG_TARGA_Y216_DECODER 0
 267+#define CONFIG_TDSC_DECODER 0
 268+#define CONFIG_THEORA_DECODER 0
 269+#define CONFIG_THP_DECODER 0
 270+#define CONFIG_TIERTEXSEQVIDEO_DECODER 0
 271+#define CONFIG_TIFF_DECODER 0
 272+#define CONFIG_TMV_DECODER 0
 273+#define CONFIG_TRUEMOTION1_DECODER 0
 274+#define CONFIG_TRUEMOTION2_DECODER 0
 275+#define CONFIG_TRUEMOTION2RT_DECODER 0
 276+#define CONFIG_TSCC_DECODER 0
 277+#define CONFIG_TSCC2_DECODER 0
 278+#define CONFIG_TXD_DECODER 0
 279+#define CONFIG_ULTI_DECODER 0
 280+#define CONFIG_UTVIDEO_DECODER 0
 281+#define CONFIG_V210_DECODER 0
 282+#define CONFIG_V210X_DECODER 0
 283+#define CONFIG_V308_DECODER 0
 284+#define CONFIG_V408_DECODER 0
 285+#define CONFIG_V410_DECODER 0
 286+#define CONFIG_VB_DECODER 0
 287+#define CONFIG_VBN_DECODER 0
 288+#define CONFIG_VBLE_DECODER 0
 289+#define CONFIG_VC1_DECODER 1
 290+#define CONFIG_VC1IMAGE_DECODER 0
 291+#define CONFIG_VC1_MMAL_DECODER 0
 292+#define CONFIG_VC1_QSV_DECODER 0
 293+#define CONFIG_VC1_V4L2M2M_DECODER 0
 294+#define CONFIG_VCR1_DECODER 0
 295+#define CONFIG_VMDVIDEO_DECODER 0
 296+#define CONFIG_VMIX_DECODER 0
 297+#define CONFIG_VMNC_DECODER 0
 298+#define CONFIG_VP3_DECODER 0
 299+#define CONFIG_VP4_DECODER 0
 300+#define CONFIG_VP5_DECODER 0
 301+#define CONFIG_VP6_DECODER 0
 302+#define CONFIG_VP6A_DECODER 0
 303+#define CONFIG_VP6F_DECODER 0
 304+#define CONFIG_VP7_DECODER 0
 305+#define CONFIG_VP8_DECODER 0
 306+#define CONFIG_VP8_RKMPP_DECODER 0
 307+#define CONFIG_VP8_V4L2M2M_DECODER 0
 308+#define CONFIG_VP9_DECODER 1
 309+#define CONFIG_VP9_RKMPP_DECODER 0
 310+#define CONFIG_VP9_V4L2M2M_DECODER 0
 311+#define CONFIG_VQA_DECODER 0
 312+#define CONFIG_VQC_DECODER 0
 313+#define CONFIG_VVC_DECODER 0
 314+#define CONFIG_WBMP_DECODER 0
 315+#define CONFIG_WEBP_DECODER 0
 316+#define CONFIG_WCMV_DECODER 0
 317+#define CONFIG_WRAPPED_AVFRAME_DECODER 0
 318+#define CONFIG_WMV1_DECODER 0
 319+#define CONFIG_WMV2_DECODER 0
 320+#define CONFIG_WMV3_DECODER 1
 321+#define CONFIG_WMV3IMAGE_DECODER 0
 322+#define CONFIG_WNV1_DECODER 0
 323+#define CONFIG_XAN_WC3_DECODER 0
 324+#define CONFIG_XAN_WC4_DECODER 0
 325+#define CONFIG_XBM_DECODER 0
 326+#define CONFIG_XFACE_DECODER 0
 327+#define CONFIG_XL_DECODER 0
 328+#define CONFIG_XPM_DECODER 0
 329+#define CONFIG_XWD_DECODER 0
 330+#define CONFIG_Y41P_DECODER 0
 331+#define CONFIG_YLC_DECODER 0
 332+#define CONFIG_YOP_DECODER 0
 333+#define CONFIG_YUV4_DECODER 0
 334+#define CONFIG_ZERO12V_DECODER 0
 335+#define CONFIG_ZEROCODEC_DECODER 0
 336+#define CONFIG_ZLIB_DECODER 0
 337+#define CONFIG_ZMBV_DECODER 0
 338+#define CONFIG_AAC_DECODER 1
 339+#define CONFIG_AAC_FIXED_DECODER 0
 340+#define CONFIG_AAC_LATM_DECODER 0
 341+#define CONFIG_AC3_DECODER 1
 342+#define CONFIG_AC3_FIXED_DECODER 0
 343+#define CONFIG_ACELP_KELVIN_DECODER 0
 344+#define CONFIG_ALAC_DECODER 0
 345+#define CONFIG_ALS_DECODER 0
 346+#define CONFIG_AMRNB_DECODER 0
 347+#define CONFIG_AMRWB_DECODER 0
 348+#define CONFIG_APAC_DECODER 0
 349+#define CONFIG_APE_DECODER 0
 350+#define CONFIG_APTX_DECODER 0
 351+#define CONFIG_APTX_HD_DECODER 0
 352+#define CONFIG_ATRAC1_DECODER 0
 353+#define CONFIG_ATRAC3_DECODER 0
 354+#define CONFIG_ATRAC3AL_DECODER 0
 355+#define CONFIG_ATRAC3P_DECODER 0
 356+#define CONFIG_ATRAC3PAL_DECODER 0
 357+#define CONFIG_ATRAC9_DECODER 0
 358+#define CONFIG_BINKAUDIO_DCT_DECODER 0
 359+#define CONFIG_BINKAUDIO_RDFT_DECODER 0
 360+#define CONFIG_BMV_AUDIO_DECODER 0
 361+#define CONFIG_BONK_DECODER 0
 362+#define CONFIG_COOK_DECODER 0
 363+#define CONFIG_DCA_DECODER 1
 364+#define CONFIG_DFPWM_DECODER 0
 365+#define CONFIG_DOLBY_E_DECODER 0
 366+#define CONFIG_DSD_LSBF_DECODER 0
 367+#define CONFIG_DSD_MSBF_DECODER 0
 368+#define CONFIG_DSD_LSBF_PLANAR_DECODER 0
 369+#define CONFIG_DSD_MSBF_PLANAR_DECODER 0
 370+#define CONFIG_DSICINAUDIO_DECODER 0
 371+#define CONFIG_DSS_SP_DECODER 0
 372+#define CONFIG_DST_DECODER 0
 373+#define CONFIG_EAC3_DECODER 1
 374+#define CONFIG_EVRC_DECODER 0
 375+#define CONFIG_FASTAUDIO_DECODER 0
 376+#define CONFIG_FFWAVESYNTH_DECODER 0
 377+#define CONFIG_FLAC_DECODER 1
 378+#define CONFIG_FTR_DECODER 0
 379+#define CONFIG_G723_1_DECODER 0
 380+#define CONFIG_G729_DECODER 0
 381+#define CONFIG_GSM_DECODER 0
 382+#define CONFIG_GSM_MS_DECODER 0
 383+#define CONFIG_HCA_DECODER 0
 384+#define CONFIG_HCOM_DECODER 0
 385+#define CONFIG_HDR_DECODER 0
 386+#define CONFIG_IAC_DECODER 0
 387+#define CONFIG_ILBC_DECODER 0
 388+#define CONFIG_IMC_DECODER 0
 389+#define CONFIG_INTERPLAY_ACM_DECODER 0
 390+#define CONFIG_MACE3_DECODER 0
 391+#define CONFIG_MACE6_DECODER 0
 392+#define CONFIG_METASOUND_DECODER 0
 393+#define CONFIG_MISC4_DECODER 0
 394+#define CONFIG_MLP_DECODER 0
 395+#define CONFIG_MP1_DECODER 0
 396+#define CONFIG_MP1FLOAT_DECODER 0
 397+#define CONFIG_MP2_DECODER 0
 398+#define CONFIG_MP2FLOAT_DECODER 0
 399+#define CONFIG_MP3FLOAT_DECODER 0
 400+#define CONFIG_MP3_DECODER 1
 401+#define CONFIG_MP3ADUFLOAT_DECODER 0
 402+#define CONFIG_MP3ADU_DECODER 0
 403+#define CONFIG_MP3ON4FLOAT_DECODER 0
 404+#define CONFIG_MP3ON4_DECODER 0
 405+#define CONFIG_MPC7_DECODER 0
 406+#define CONFIG_MPC8_DECODER 0
 407+#define CONFIG_MSNSIREN_DECODER 0
 408+#define CONFIG_NELLYMOSER_DECODER 0
 409+#define CONFIG_ON2AVC_DECODER 0
 410+#define CONFIG_OPUS_DECODER 0
 411+#define CONFIG_OSQ_DECODER 0
 412+#define CONFIG_PAF_AUDIO_DECODER 0
 413+#define CONFIG_QCELP_DECODER 0
 414+#define CONFIG_QDM2_DECODER 0
 415+#define CONFIG_QDMC_DECODER 0
 416+#define CONFIG_QOA_DECODER 0
 417+#define CONFIG_RA_144_DECODER 0
 418+#define CONFIG_RA_288_DECODER 0
 419+#define CONFIG_RALF_DECODER 0
 420+#define CONFIG_SBC_DECODER 0
 421+#define CONFIG_SHORTEN_DECODER 0
 422+#define CONFIG_SIPR_DECODER 0
 423+#define CONFIG_SIREN_DECODER 0
 424+#define CONFIG_SMACKAUD_DECODER 0
 425+#define CONFIG_SONIC_DECODER 0
 426+#define CONFIG_TAK_DECODER 0
 427+#define CONFIG_TRUEHD_DECODER 0
 428+#define CONFIG_TRUESPEECH_DECODER 0
 429+#define CONFIG_TTA_DECODER 0
 430+#define CONFIG_TWINVQ_DECODER 0
 431+#define CONFIG_VMDAUDIO_DECODER 0
 432+#define CONFIG_VORBIS_DECODER 1
 433+#define CONFIG_WAVARC_DECODER 0
 434+#define CONFIG_WAVPACK_DECODER 0
 435+#define CONFIG_WMALOSSLESS_DECODER 0
 436+#define CONFIG_WMAPRO_DECODER 0
 437+#define CONFIG_WMAV1_DECODER 0
 438+#define CONFIG_WMAV2_DECODER 1
 439+#define CONFIG_WMAVOICE_DECODER 0
 440+#define CONFIG_WS_SND1_DECODER 0
 441+#define CONFIG_XMA1_DECODER 0
 442+#define CONFIG_XMA2_DECODER 0
 443+#define CONFIG_PCM_ALAW_DECODER 0
 444+#define CONFIG_PCM_BLURAY_DECODER 0
 445+#define CONFIG_PCM_DVD_DECODER 0
 446+#define CONFIG_PCM_F16LE_DECODER 0
 447+#define CONFIG_PCM_F24LE_DECODER 0
 448+#define CONFIG_PCM_F32BE_DECODER 0
 449+#define CONFIG_PCM_F32LE_DECODER 0
 450+#define CONFIG_PCM_F64BE_DECODER 0
 451+#define CONFIG_PCM_F64LE_DECODER 0
 452+#define CONFIG_PCM_LXF_DECODER 0
 453+#define CONFIG_PCM_MULAW_DECODER 0
 454+#define CONFIG_PCM_S8_DECODER 0
 455+#define CONFIG_PCM_S8_PLANAR_DECODER 0
 456+#define CONFIG_PCM_S16BE_DECODER 0
 457+#define CONFIG_PCM_S16BE_PLANAR_DECODER 0
 458+#define CONFIG_PCM_S16LE_DECODER 0
 459+#define CONFIG_PCM_S16LE_PLANAR_DECODER 0
 460+#define CONFIG_PCM_S24BE_DECODER 0
 461+#define CONFIG_PCM_S24DAUD_DECODER 0
 462+#define CONFIG_PCM_S24LE_DECODER 1
 463+#define CONFIG_PCM_S24LE_PLANAR_DECODER 0
 464+#define CONFIG_PCM_S32BE_DECODER 0
 465+#define CONFIG_PCM_S32LE_DECODER 0
 466+#define CONFIG_PCM_S32LE_PLANAR_DECODER 0
 467+#define CONFIG_PCM_S64BE_DECODER 0
 468+#define CONFIG_PCM_S64LE_DECODER 0
 469+#define CONFIG_PCM_SGA_DECODER 0
 470+#define CONFIG_PCM_U8_DECODER 0
 471+#define CONFIG_PCM_U16BE_DECODER 0
 472+#define CONFIG_PCM_U16LE_DECODER 0
 473+#define CONFIG_PCM_U24BE_DECODER 0
 474+#define CONFIG_PCM_U24LE_DECODER 0
 475+#define CONFIG_PCM_U32BE_DECODER 0
 476+#define CONFIG_PCM_U32LE_DECODER 0
 477+#define CONFIG_PCM_VIDC_DECODER 0
 478+#define CONFIG_CBD2_DPCM_DECODER 0
 479+#define CONFIG_DERF_DPCM_DECODER 0
 480+#define CONFIG_GREMLIN_DPCM_DECODER 0
 481+#define CONFIG_INTERPLAY_DPCM_DECODER 0
 482+#define CONFIG_ROQ_DPCM_DECODER 0
 483+#define CONFIG_SDX2_DPCM_DECODER 0
 484+#define CONFIG_SOL_DPCM_DECODER 0
 485+#define CONFIG_XAN_DPCM_DECODER 0
 486+#define CONFIG_WADY_DPCM_DECODER 0
 487+#define CONFIG_ADPCM_4XM_DECODER 0
 488+#define CONFIG_ADPCM_ADX_DECODER 0
 489+#define CONFIG_ADPCM_AFC_DECODER 0
 490+#define CONFIG_ADPCM_AGM_DECODER 0
 491+#define CONFIG_ADPCM_AICA_DECODER 0
 492+#define CONFIG_ADPCM_ARGO_DECODER 0
 493+#define CONFIG_ADPCM_CT_DECODER 0
 494+#define CONFIG_ADPCM_DTK_DECODER 0
 495+#define CONFIG_ADPCM_EA_DECODER 0
 496+#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
 497+#define CONFIG_ADPCM_EA_R1_DECODER 0
 498+#define CONFIG_ADPCM_EA_R2_DECODER 0
 499+#define CONFIG_ADPCM_EA_R3_DECODER 0
 500+#define CONFIG_ADPCM_EA_XAS_DECODER 0
 501+#define CONFIG_ADPCM_G722_DECODER 0
 502+#define CONFIG_ADPCM_G726_DECODER 0
 503+#define CONFIG_ADPCM_G726LE_DECODER 0
 504+#define CONFIG_ADPCM_IMA_ACORN_DECODER 0
 505+#define CONFIG_ADPCM_IMA_AMV_DECODER 0
 506+#define CONFIG_ADPCM_IMA_ALP_DECODER 0
 507+#define CONFIG_ADPCM_IMA_APC_DECODER 0
 508+#define CONFIG_ADPCM_IMA_APM_DECODER 0
 509+#define CONFIG_ADPCM_IMA_CUNNING_DECODER 0
 510+#define CONFIG_ADPCM_IMA_DAT4_DECODER 0
 511+#define CONFIG_ADPCM_IMA_DK3_DECODER 0
 512+#define CONFIG_ADPCM_IMA_DK4_DECODER 0
 513+#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
 514+#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
 515+#define CONFIG_ADPCM_IMA_ISS_DECODER 0
 516+#define CONFIG_ADPCM_IMA_MOFLEX_DECODER 0
 517+#define CONFIG_ADPCM_IMA_MTF_DECODER 0
 518+#define CONFIG_ADPCM_IMA_OKI_DECODER 0
 519+#define CONFIG_ADPCM_IMA_QT_DECODER 0
 520+#define CONFIG_ADPCM_IMA_RAD_DECODER 0
 521+#define CONFIG_ADPCM_IMA_SSI_DECODER 0
 522+#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
 523+#define CONFIG_ADPCM_IMA_WAV_DECODER 0
 524+#define CONFIG_ADPCM_IMA_WS_DECODER 0
 525+#define CONFIG_ADPCM_MS_DECODER 0
 526+#define CONFIG_ADPCM_MTAF_DECODER 0
 527+#define CONFIG_ADPCM_PSX_DECODER 0
 528+#define CONFIG_ADPCM_SBPRO_2_DECODER 0
 529+#define CONFIG_ADPCM_SBPRO_3_DECODER 0
 530+#define CONFIG_ADPCM_SBPRO_4_DECODER 0
 531+#define CONFIG_ADPCM_SWF_DECODER 1
 532+#define CONFIG_ADPCM_THP_DECODER 0
 533+#define CONFIG_ADPCM_THP_LE_DECODER 0
 534+#define CONFIG_ADPCM_VIMA_DECODER 0
 535+#define CONFIG_ADPCM_XA_DECODER 0
 536+#define CONFIG_ADPCM_XMD_DECODER 0
 537+#define CONFIG_ADPCM_YAMAHA_DECODER 0
 538+#define CONFIG_ADPCM_ZORK_DECODER 0
 539+#define CONFIG_SSA_DECODER 0
 540+#define CONFIG_ASS_DECODER 0
 541+#define CONFIG_CCAPTION_DECODER 0
 542+#define CONFIG_DVBSUB_DECODER 0
 543+#define CONFIG_DVDSUB_DECODER 0
 544+#define CONFIG_JACOSUB_DECODER 0
 545+#define CONFIG_MICRODVD_DECODER 0
 546+#define CONFIG_MOVTEXT_DECODER 0
 547+#define CONFIG_MPL2_DECODER 0
 548+#define CONFIG_PGSSUB_DECODER 1
 549+#define CONFIG_PJS_DECODER 0
 550+#define CONFIG_REALTEXT_DECODER 0
 551+#define CONFIG_SAMI_DECODER 0
 552+#define CONFIG_SRT_DECODER 0
 553+#define CONFIG_STL_DECODER 0
 554+#define CONFIG_SUBRIP_DECODER 1
 555+#define CONFIG_SUBVIEWER_DECODER 0
 556+#define CONFIG_SUBVIEWER1_DECODER 0
 557+#define CONFIG_TEXT_DECODER 0
 558+#define CONFIG_VPLAYER_DECODER 0
 559+#define CONFIG_WEBVTT_DECODER 0
 560+#define CONFIG_XSUB_DECODER 0
 561+#define CONFIG_AAC_AT_DECODER 0
 562+#define CONFIG_AC3_AT_DECODER 0
 563+#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
 564+#define CONFIG_ALAC_AT_DECODER 0
 565+#define CONFIG_AMR_NB_AT_DECODER 0
 566+#define CONFIG_EAC3_AT_DECODER 0
 567+#define CONFIG_GSM_MS_AT_DECODER 0
 568+#define CONFIG_ILBC_AT_DECODER 0
 569+#define CONFIG_MP1_AT_DECODER 0
 570+#define CONFIG_MP2_AT_DECODER 0
 571+#define CONFIG_MP3_AT_DECODER 0
 572+#define CONFIG_PCM_ALAW_AT_DECODER 0
 573+#define CONFIG_PCM_MULAW_AT_DECODER 0
 574+#define CONFIG_QDMC_AT_DECODER 0
 575+#define CONFIG_QDM2_AT_DECODER 0
 576+#define CONFIG_LIBARIBCAPTION_DECODER 0
 577+#define CONFIG_LIBARIBB24_DECODER 0
 578+#define CONFIG_LIBCELT_DECODER 0
 579+#define CONFIG_LIBCODEC2_DECODER 0
 580+#define CONFIG_LIBDAV1D_DECODER 1
 581+#define CONFIG_LIBDAVS2_DECODER 0
 582+#define CONFIG_LIBFDK_AAC_DECODER 0
 583+#define CONFIG_LIBGSM_DECODER 0
 584+#define CONFIG_LIBGSM_MS_DECODER 0
 585+#define CONFIG_LIBILBC_DECODER 0
 586+#define CONFIG_LIBJXL_DECODER 0
 587+#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
 588+#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
 589+#define CONFIG_LIBOPUS_DECODER 1
 590+#define CONFIG_LIBRSVG_DECODER 0
 591+#define CONFIG_LIBSPEEX_DECODER 0
 592+#define CONFIG_LIBUAVS3D_DECODER 0
 593+#define CONFIG_LIBVORBIS_DECODER 0
 594+#define CONFIG_LIBVPX_VP8_DECODER 0
 595+#define CONFIG_LIBVPX_VP9_DECODER 0
 596+#define CONFIG_LIBXEVD_DECODER 0
 597+#define CONFIG_LIBZVBI_TELETEXT_DECODER 0
 598+#define CONFIG_BINTEXT_DECODER 0
 599+#define CONFIG_XBIN_DECODER 0
 600+#define CONFIG_IDF_DECODER 0
 601+#define CONFIG_LIBAOM_AV1_DECODER 0
 602+#define CONFIG_AV1_DECODER 0
 603+#define CONFIG_AV1_CUVID_DECODER 0
 604+#define CONFIG_AV1_MEDIACODEC_DECODER 0
 605+#define CONFIG_AV1_QSV_DECODER 0
 606+#define CONFIG_LIBOPENH264_DECODER 0
 607+#define CONFIG_H264_CUVID_DECODER 0
 608+#define CONFIG_HEVC_CUVID_DECODER 0
 609+#define CONFIG_HEVC_MEDIACODEC_DECODER 0
 610+#define CONFIG_MJPEG_CUVID_DECODER 0
 611+#define CONFIG_MJPEG_QSV_DECODER 0
 612+#define CONFIG_MPEG1_CUVID_DECODER 0
 613+#define CONFIG_MPEG2_CUVID_DECODER 0
 614+#define CONFIG_MPEG4_CUVID_DECODER 0
 615+#define CONFIG_MPEG4_MEDIACODEC_DECODER 0
 616+#define CONFIG_VC1_CUVID_DECODER 0
 617+#define CONFIG_VP8_CUVID_DECODER 0
 618+#define CONFIG_VP8_MEDIACODEC_DECODER 0
 619+#define CONFIG_VP8_QSV_DECODER 0
 620+#define CONFIG_VP9_CUVID_DECODER 0
 621+#define CONFIG_VP9_MEDIACODEC_DECODER 0
 622+#define CONFIG_VP9_QSV_DECODER 0
 623+#define CONFIG_VNULL_DECODER 0
 624+#define CONFIG_ANULL_DECODER 0
 625+#define CONFIG_A64MULTI_ENCODER 0
 626+#define CONFIG_A64MULTI5_ENCODER 0
 627+#define CONFIG_ALIAS_PIX_ENCODER 0
 628+#define CONFIG_AMV_ENCODER 0
 629+#define CONFIG_APNG_ENCODER 0
 630+#define CONFIG_ASV1_ENCODER 0
 631+#define CONFIG_ASV2_ENCODER 0
 632+#define CONFIG_AVRP_ENCODER 0
 633+#define CONFIG_AVUI_ENCODER 0
 634+#define CONFIG_BITPACKED_ENCODER 0
 635+#define CONFIG_BMP_ENCODER 0
 636+#define CONFIG_CFHD_ENCODER 0
 637+#define CONFIG_CINEPAK_ENCODER 0
 638+#define CONFIG_CLJR_ENCODER 0
 639+#define CONFIG_COMFORTNOISE_ENCODER 0
 640+#define CONFIG_DNXHD_ENCODER 0
 641+#define CONFIG_DPX_ENCODER 0
 642+#define CONFIG_DVVIDEO_ENCODER 0
 643+#define CONFIG_DXV_ENCODER 0
 644+#define CONFIG_EXR_ENCODER 0
 645+#define CONFIG_FFV1_ENCODER 0
 646+#define CONFIG_FFVHUFF_ENCODER 0
 647+#define CONFIG_FITS_ENCODER 0
 648+#define CONFIG_FLASHSV_ENCODER 0
 649+#define CONFIG_FLASHSV2_ENCODER 0
 650+#define CONFIG_FLV_ENCODER 0
 651+#define CONFIG_GIF_ENCODER 0
 652+#define CONFIG_H261_ENCODER 0
 653+#define CONFIG_H263_ENCODER 0
 654+#define CONFIG_H263P_ENCODER 0
 655+#define CONFIG_H264_MEDIACODEC_ENCODER 0
 656+#define CONFIG_HAP_ENCODER 0
 657+#define CONFIG_HUFFYUV_ENCODER 0
 658+#define CONFIG_JPEG2000_ENCODER 0
 659+#define CONFIG_JPEGLS_ENCODER 0
 660+#define CONFIG_LJPEG_ENCODER 0
 661+#define CONFIG_MAGICYUV_ENCODER 0
 662+#define CONFIG_MJPEG_ENCODER 0
 663+#define CONFIG_MPEG1VIDEO_ENCODER 0
 664+#define CONFIG_MPEG2VIDEO_ENCODER 0
 665+#define CONFIG_MPEG4_ENCODER 0
 666+#define CONFIG_MSMPEG4V2_ENCODER 0
 667+#define CONFIG_MSMPEG4V3_ENCODER 0
 668+#define CONFIG_MSRLE_ENCODER 0
 669+#define CONFIG_MSVIDEO1_ENCODER 0
 670+#define CONFIG_PAM_ENCODER 0
 671+#define CONFIG_PBM_ENCODER 0
 672+#define CONFIG_PCX_ENCODER 0
 673+#define CONFIG_PFM_ENCODER 0
 674+#define CONFIG_PGM_ENCODER 0
 675+#define CONFIG_PGMYUV_ENCODER 0
 676+#define CONFIG_PHM_ENCODER 0
 677+#define CONFIG_PNG_ENCODER 1
 678+#define CONFIG_PPM_ENCODER 0
 679+#define CONFIG_PRORES_ENCODER 0
 680+#define CONFIG_PRORES_AW_ENCODER 0
 681+#define CONFIG_PRORES_KS_ENCODER 0
 682+#define CONFIG_QOI_ENCODER 0
 683+#define CONFIG_QTRLE_ENCODER 0
 684+#define CONFIG_R10K_ENCODER 0
 685+#define CONFIG_R210_ENCODER 0
 686+#define CONFIG_RAWVIDEO_ENCODER 1
 687+#define CONFIG_ROQ_ENCODER 0
 688+#define CONFIG_RPZA_ENCODER 0
 689+#define CONFIG_RV10_ENCODER 0
 690+#define CONFIG_RV20_ENCODER 0
 691+#define CONFIG_S302M_ENCODER 0
 692+#define CONFIG_SGI_ENCODER 0
 693+#define CONFIG_SMC_ENCODER 0
 694+#define CONFIG_SNOW_ENCODER 0
 695+#define CONFIG_SPEEDHQ_ENCODER 0
 696+#define CONFIG_SUNRAST_ENCODER 0
 697+#define CONFIG_SVQ1_ENCODER 0
 698+#define CONFIG_TARGA_ENCODER 0
 699+#define CONFIG_TIFF_ENCODER 0
 700+#define CONFIG_UTVIDEO_ENCODER 0
 701+#define CONFIG_V210_ENCODER 0
 702+#define CONFIG_V308_ENCODER 0
 703+#define CONFIG_V408_ENCODER 0
 704+#define CONFIG_V410_ENCODER 0
 705+#define CONFIG_VBN_ENCODER 0
 706+#define CONFIG_VC2_ENCODER 0
 707+#define CONFIG_WBMP_ENCODER 0
 708+#define CONFIG_WRAPPED_AVFRAME_ENCODER 1
 709+#define CONFIG_WMV1_ENCODER 0
 710+#define CONFIG_WMV2_ENCODER 0
 711+#define CONFIG_XBM_ENCODER 0
 712+#define CONFIG_XFACE_ENCODER 0
 713+#define CONFIG_XWD_ENCODER 0
 714+#define CONFIG_Y41P_ENCODER 0
 715+#define CONFIG_YUV4_ENCODER 0
 716+#define CONFIG_ZLIB_ENCODER 0
 717+#define CONFIG_ZMBV_ENCODER 0
 718+#define CONFIG_AAC_ENCODER 0
 719+#define CONFIG_AC3_ENCODER 0
 720+#define CONFIG_AC3_FIXED_ENCODER 0
 721+#define CONFIG_ALAC_ENCODER 0
 722+#define CONFIG_APTX_ENCODER 0
 723+#define CONFIG_APTX_HD_ENCODER 0
 724+#define CONFIG_DCA_ENCODER 0
 725+#define CONFIG_DFPWM_ENCODER 0
 726+#define CONFIG_EAC3_ENCODER 0
 727+#define CONFIG_FLAC_ENCODER 0
 728+#define CONFIG_G723_1_ENCODER 0
 729+#define CONFIG_HDR_ENCODER 0
 730+#define CONFIG_MLP_ENCODER 0
 731+#define CONFIG_MP2_ENCODER 0
 732+#define CONFIG_MP2FIXED_ENCODER 0
 733+#define CONFIG_NELLYMOSER_ENCODER 0
 734+#define CONFIG_OPUS_ENCODER 0
 735+#define CONFIG_RA_144_ENCODER 0
 736+#define CONFIG_SBC_ENCODER 0
 737+#define CONFIG_SONIC_ENCODER 0
 738+#define CONFIG_SONIC_LS_ENCODER 0
 739+#define CONFIG_TRUEHD_ENCODER 0
 740+#define CONFIG_TTA_ENCODER 0
 741+#define CONFIG_VORBIS_ENCODER 0
 742+#define CONFIG_WAVPACK_ENCODER 0
 743+#define CONFIG_WMAV1_ENCODER 0
 744+#define CONFIG_WMAV2_ENCODER 0
 745+#define CONFIG_PCM_ALAW_ENCODER 0
 746+#define CONFIG_PCM_BLURAY_ENCODER 0
 747+#define CONFIG_PCM_DVD_ENCODER 0
 748+#define CONFIG_PCM_F32BE_ENCODER 0
 749+#define CONFIG_PCM_F32LE_ENCODER 0
 750+#define CONFIG_PCM_F64BE_ENCODER 0
 751+#define CONFIG_PCM_F64LE_ENCODER 0
 752+#define CONFIG_PCM_MULAW_ENCODER 0
 753+#define CONFIG_PCM_S8_ENCODER 0
 754+#define CONFIG_PCM_S8_PLANAR_ENCODER 0
 755+#define CONFIG_PCM_S16BE_ENCODER 0
 756+#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
 757+#define CONFIG_PCM_S16LE_ENCODER 1
 758+#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
 759+#define CONFIG_PCM_S24BE_ENCODER 0
 760+#define CONFIG_PCM_S24DAUD_ENCODER 0
 761+#define CONFIG_PCM_S24LE_ENCODER 0
 762+#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
 763+#define CONFIG_PCM_S32BE_ENCODER 0
 764+#define CONFIG_PCM_S32LE_ENCODER 0
 765+#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
 766+#define CONFIG_PCM_S64BE_ENCODER 0
 767+#define CONFIG_PCM_S64LE_ENCODER 0
 768+#define CONFIG_PCM_U8_ENCODER 0
 769+#define CONFIG_PCM_U16BE_ENCODER 0
 770+#define CONFIG_PCM_U16LE_ENCODER 0
 771+#define CONFIG_PCM_U24BE_ENCODER 0
 772+#define CONFIG_PCM_U24LE_ENCODER 0
 773+#define CONFIG_PCM_U32BE_ENCODER 0
 774+#define CONFIG_PCM_U32LE_ENCODER 0
 775+#define CONFIG_PCM_VIDC_ENCODER 0
 776+#define CONFIG_ROQ_DPCM_ENCODER 0
 777+#define CONFIG_ADPCM_ADX_ENCODER 0
 778+#define CONFIG_ADPCM_ARGO_ENCODER 0
 779+#define CONFIG_ADPCM_G722_ENCODER 0
 780+#define CONFIG_ADPCM_G726_ENCODER 0
 781+#define CONFIG_ADPCM_G726LE_ENCODER 0
 782+#define CONFIG_ADPCM_IMA_AMV_ENCODER 0
 783+#define CONFIG_ADPCM_IMA_ALP_ENCODER 0
 784+#define CONFIG_ADPCM_IMA_APM_ENCODER 0
 785+#define CONFIG_ADPCM_IMA_QT_ENCODER 0
 786+#define CONFIG_ADPCM_IMA_SSI_ENCODER 0
 787+#define CONFIG_ADPCM_IMA_WAV_ENCODER 0
 788+#define CONFIG_ADPCM_IMA_WS_ENCODER 0
 789+#define CONFIG_ADPCM_MS_ENCODER 0
 790+#define CONFIG_ADPCM_SWF_ENCODER 0
 791+#define CONFIG_ADPCM_YAMAHA_ENCODER 0
 792+#define CONFIG_SSA_ENCODER 0
 793+#define CONFIG_ASS_ENCODER 0
 794+#define CONFIG_DVBSUB_ENCODER 0
 795+#define CONFIG_DVDSUB_ENCODER 0
 796+#define CONFIG_MOVTEXT_ENCODER 0
 797+#define CONFIG_SRT_ENCODER 0
 798+#define CONFIG_SUBRIP_ENCODER 0
 799+#define CONFIG_TEXT_ENCODER 0
 800+#define CONFIG_TTML_ENCODER 0
 801+#define CONFIG_WEBVTT_ENCODER 0
 802+#define CONFIG_XSUB_ENCODER 0
 803+#define CONFIG_AAC_AT_ENCODER 0
 804+#define CONFIG_ALAC_AT_ENCODER 0
 805+#define CONFIG_ILBC_AT_ENCODER 0
 806+#define CONFIG_PCM_ALAW_AT_ENCODER 0
 807+#define CONFIG_PCM_MULAW_AT_ENCODER 0
 808+#define CONFIG_LIBAOM_AV1_ENCODER 0
 809+#define CONFIG_LIBCODEC2_ENCODER 0
 810+#define CONFIG_LIBFDK_AAC_ENCODER 0
 811+#define CONFIG_LIBGSM_ENCODER 0
 812+#define CONFIG_LIBGSM_MS_ENCODER 0
 813+#define CONFIG_LIBILBC_ENCODER 0
 814+#define CONFIG_LIBJXL_ENCODER 0
 815+#define CONFIG_LIBMP3LAME_ENCODER 0
 816+#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
 817+#define CONFIG_LIBOPENJPEG_ENCODER 0
 818+#define CONFIG_LIBOPUS_ENCODER 1
 819+#define CONFIG_LIBRAV1E_ENCODER 0
 820+#define CONFIG_LIBSHINE_ENCODER 0
 821+#define CONFIG_LIBSPEEX_ENCODER 0
 822+#define CONFIG_LIBSVTAV1_ENCODER 0
 823+#define CONFIG_LIBTHEORA_ENCODER 0
 824+#define CONFIG_LIBTWOLAME_ENCODER 0
 825+#define CONFIG_LIBVO_AMRWBENC_ENCODER 0
 826+#define CONFIG_LIBVORBIS_ENCODER 0
 827+#define CONFIG_LIBVPX_VP8_ENCODER 0
 828+#define CONFIG_LIBVPX_VP9_ENCODER 0
 829+#define CONFIG_LIBWEBP_ANIM_ENCODER 0
 830+#define CONFIG_LIBWEBP_ENCODER 0
 831+#define CONFIG_LIBX262_ENCODER 0
 832+#define CONFIG_LIBX264_ENCODER 0
 833+#define CONFIG_LIBX264RGB_ENCODER 0
 834+#define CONFIG_LIBX265_ENCODER 0
 835+#define CONFIG_LIBXEVE_ENCODER 0
 836+#define CONFIG_LIBXAVS_ENCODER 0
 837+#define CONFIG_LIBXAVS2_ENCODER 0
 838+#define CONFIG_LIBXVID_ENCODER 0
 839+#define CONFIG_AAC_MF_ENCODER 0
 840+#define CONFIG_AC3_MF_ENCODER 0
 841+#define CONFIG_H263_V4L2M2M_ENCODER 0
 842+#define CONFIG_AV1_MEDIACODEC_ENCODER 0
 843+#define CONFIG_AV1_NVENC_ENCODER 0
 844+#define CONFIG_AV1_QSV_ENCODER 0
 845+#define CONFIG_AV1_AMF_ENCODER 0
 846+#define CONFIG_AV1_VAAPI_ENCODER 0
 847+#define CONFIG_LIBOPENH264_ENCODER 0
 848+#define CONFIG_H264_AMF_ENCODER 0
 849+#define CONFIG_H264_MF_ENCODER 0
 850+#define CONFIG_H264_NVENC_ENCODER 0
 851+#define CONFIG_H264_OMX_ENCODER 0
 852+#define CONFIG_H264_QSV_ENCODER 0
 853+#define CONFIG_H264_V4L2M2M_ENCODER 0
 854+#define CONFIG_H264_VAAPI_ENCODER 0
 855+#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
 856+#define CONFIG_HEVC_AMF_ENCODER 0
 857+#define CONFIG_HEVC_MEDIACODEC_ENCODER 0
 858+#define CONFIG_HEVC_MF_ENCODER 0
 859+#define CONFIG_HEVC_NVENC_ENCODER 0
 860+#define CONFIG_HEVC_QSV_ENCODER 0
 861+#define CONFIG_HEVC_V4L2M2M_ENCODER 0
 862+#define CONFIG_HEVC_VAAPI_ENCODER 0
 863+#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
 864+#define CONFIG_LIBKVAZAAR_ENCODER 0
 865+#define CONFIG_MJPEG_QSV_ENCODER 0
 866+#define CONFIG_MJPEG_VAAPI_ENCODER 0
 867+#define CONFIG_MP3_MF_ENCODER 0
 868+#define CONFIG_MPEG2_QSV_ENCODER 0
 869+#define CONFIG_MPEG2_VAAPI_ENCODER 0
 870+#define CONFIG_MPEG4_MEDIACODEC_ENCODER 0
 871+#define CONFIG_MPEG4_OMX_ENCODER 0
 872+#define CONFIG_MPEG4_V4L2M2M_ENCODER 0
 873+#define CONFIG_PRORES_VIDEOTOOLBOX_ENCODER 0
 874+#define CONFIG_VP8_MEDIACODEC_ENCODER 0
 875+#define CONFIG_VP8_V4L2M2M_ENCODER 0
 876+#define CONFIG_VP8_VAAPI_ENCODER 0
 877+#define CONFIG_VP9_MEDIACODEC_ENCODER 0
 878+#define CONFIG_VP9_VAAPI_ENCODER 0
 879+#define CONFIG_VP9_QSV_ENCODER 0
 880+#define CONFIG_VNULL_ENCODER 0
 881+#define CONFIG_ANULL_ENCODER 0
 882+#define CONFIG_AV1_D3D11VA_HWACCEL 0
 883+#define CONFIG_AV1_D3D11VA2_HWACCEL 0
 884+#define CONFIG_AV1_D3D12VA_HWACCEL 0
 885+#define CONFIG_AV1_DXVA2_HWACCEL 0
 886+#define CONFIG_AV1_NVDEC_HWACCEL 0
 887+#define CONFIG_AV1_VAAPI_HWACCEL 0
 888+#define CONFIG_AV1_VDPAU_HWACCEL 0
 889+#define CONFIG_AV1_VULKAN_HWACCEL 0
 890+#define CONFIG_H263_VAAPI_HWACCEL 0
 891+#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
 892+#define CONFIG_H264_D3D11VA_HWACCEL 0
 893+#define CONFIG_H264_D3D11VA2_HWACCEL 0
 894+#define CONFIG_H264_D3D12VA_HWACCEL 0
 895+#define CONFIG_H264_DXVA2_HWACCEL 0
 896+#define CONFIG_H264_NVDEC_HWACCEL 0
 897+#define CONFIG_H264_VAAPI_HWACCEL 0
 898+#define CONFIG_H264_VDPAU_HWACCEL 0
 899+#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
 900+#define CONFIG_H264_VULKAN_HWACCEL 0
 901+#define CONFIG_HEVC_D3D11VA_HWACCEL 0
 902+#define CONFIG_HEVC_D3D11VA2_HWACCEL 0
 903+#define CONFIG_HEVC_D3D12VA_HWACCEL 0
 904+#define CONFIG_HEVC_DXVA2_HWACCEL 0
 905+#define CONFIG_HEVC_NVDEC_HWACCEL 0
 906+#define CONFIG_HEVC_VAAPI_HWACCEL 0
 907+#define CONFIG_HEVC_VDPAU_HWACCEL 0
 908+#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
 909+#define CONFIG_HEVC_VULKAN_HWACCEL 0
 910+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
 911+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
 912+#define CONFIG_MPEG1_NVDEC_HWACCEL 0
 913+#define CONFIG_MPEG1_VDPAU_HWACCEL 0
 914+#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
 915+#define CONFIG_MPEG2_D3D11VA_HWACCEL 0
 916+#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
 917+#define CONFIG_MPEG2_D3D12VA_HWACCEL 0
 918+#define CONFIG_MPEG2_DXVA2_HWACCEL 0
 919+#define CONFIG_MPEG2_NVDEC_HWACCEL 0
 920+#define CONFIG_MPEG2_VAAPI_HWACCEL 0
 921+#define CONFIG_MPEG2_VDPAU_HWACCEL 0
 922+#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
 923+#define CONFIG_MPEG4_NVDEC_HWACCEL 0
 924+#define CONFIG_MPEG4_VAAPI_HWACCEL 0
 925+#define CONFIG_MPEG4_VDPAU_HWACCEL 0
 926+#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
 927+#define CONFIG_PRORES_VIDEOTOOLBOX_HWACCEL 0
 928+#define CONFIG_VC1_D3D11VA_HWACCEL 0
 929+#define CONFIG_VC1_D3D11VA2_HWACCEL 0
 930+#define CONFIG_VC1_D3D12VA_HWACCEL 0
 931+#define CONFIG_VC1_DXVA2_HWACCEL 0
 932+#define CONFIG_VC1_NVDEC_HWACCEL 0
 933+#define CONFIG_VC1_VAAPI_HWACCEL 0
 934+#define CONFIG_VC1_VDPAU_HWACCEL 0
 935+#define CONFIG_VP8_NVDEC_HWACCEL 0
 936+#define CONFIG_VP8_VAAPI_HWACCEL 0
 937+#define CONFIG_VP9_D3D11VA_HWACCEL 0
 938+#define CONFIG_VP9_D3D11VA2_HWACCEL 0
 939+#define CONFIG_VP9_D3D12VA_HWACCEL 0
 940+#define CONFIG_VP9_DXVA2_HWACCEL 0
 941+#define CONFIG_VP9_NVDEC_HWACCEL 0
 942+#define CONFIG_VP9_VAAPI_HWACCEL 0
 943+#define CONFIG_VP9_VDPAU_HWACCEL 0
 944+#define CONFIG_VP9_VIDEOTOOLBOX_HWACCEL 0
 945+#define CONFIG_WMV3_D3D11VA_HWACCEL 0
 946+#define CONFIG_WMV3_D3D11VA2_HWACCEL 0
 947+#define CONFIG_WMV3_D3D12VA_HWACCEL 0
 948+#define CONFIG_WMV3_DXVA2_HWACCEL 0
 949+#define CONFIG_WMV3_NVDEC_HWACCEL 0
 950+#define CONFIG_WMV3_VAAPI_HWACCEL 0
 951+#define CONFIG_WMV3_VDPAU_HWACCEL 0
 952+#define CONFIG_AAC_PARSER 1
 953+#define CONFIG_AAC_LATM_PARSER 0
 954+#define CONFIG_AC3_PARSER 1
 955+#define CONFIG_ADX_PARSER 0
 956+#define CONFIG_AMR_PARSER 0
 957+#define CONFIG_AV1_PARSER 1
 958+#define CONFIG_AVS2_PARSER 0
 959+#define CONFIG_AVS3_PARSER 0
 960+#define CONFIG_BMP_PARSER 0
 961+#define CONFIG_CAVSVIDEO_PARSER 0
 962+#define CONFIG_COOK_PARSER 0
 963+#define CONFIG_CRI_PARSER 0
 964+#define CONFIG_DCA_PARSER 1
 965+#define CONFIG_DIRAC_PARSER 0
 966+#define CONFIG_DNXHD_PARSER 0
 967+#define CONFIG_DOLBY_E_PARSER 0
 968+#define CONFIG_DPX_PARSER 0
 969+#define CONFIG_DVAUDIO_PARSER 0
 970+#define CONFIG_DVBSUB_PARSER 0
 971+#define CONFIG_DVDSUB_PARSER 0
 972+#define CONFIG_DVD_NAV_PARSER 0
 973+#define CONFIG_EVC_PARSER 0
 974+#define CONFIG_FLAC_PARSER 1
 975+#define CONFIG_FTR_PARSER 0
 976+#define CONFIG_G723_1_PARSER 0
 977+#define CONFIG_G729_PARSER 0
 978+#define CONFIG_GIF_PARSER 0
 979+#define CONFIG_GSM_PARSER 0
 980+#define CONFIG_H261_PARSER 0
 981+#define CONFIG_H263_PARSER 1
 982+#define CONFIG_H264_PARSER 1
 983+#define CONFIG_HEVC_PARSER 0
 984+#define CONFIG_HDR_PARSER 0
 985+#define CONFIG_IPU_PARSER 0
 986+#define CONFIG_JPEG2000_PARSER 0
 987+#define CONFIG_JPEGXL_PARSER 0
 988+#define CONFIG_MISC4_PARSER 0
 989+#define CONFIG_MJPEG_PARSER 0
 990+#define CONFIG_MLP_PARSER 0
 991+#define CONFIG_MPEG4VIDEO_PARSER 1
 992+#define CONFIG_MPEGAUDIO_PARSER 1
 993+#define CONFIG_MPEGVIDEO_PARSER 1
 994+#define CONFIG_OPUS_PARSER 0
 995+#define CONFIG_PNG_PARSER 0
 996+#define CONFIG_PNM_PARSER 0
 997+#define CONFIG_QOI_PARSER 0
 998+#define CONFIG_RV34_PARSER 0
 999+#define CONFIG_SBC_PARSER 0
1000+#define CONFIG_SIPR_PARSER 0
1001+#define CONFIG_TAK_PARSER 0
1002+#define CONFIG_VC1_PARSER 1
1003+#define CONFIG_VORBIS_PARSER 0
1004+#define CONFIG_VP3_PARSER 0
1005+#define CONFIG_VP8_PARSER 0
1006+#define CONFIG_VP9_PARSER 1
1007+#define CONFIG_VVC_PARSER 0
1008+#define CONFIG_WEBP_PARSER 0
1009+#define CONFIG_XBM_PARSER 0
1010+#define CONFIG_XMA_PARSER 0
1011+#define CONFIG_XWD_PARSER 0
1012+#define CONFIG_ALSA_INDEV 0
1013+#define CONFIG_ANDROID_CAMERA_INDEV 0
1014+#define CONFIG_AVFOUNDATION_INDEV 0
1015+#define CONFIG_BKTR_INDEV 0
1016+#define CONFIG_DECKLINK_INDEV 0
1017+#define CONFIG_DSHOW_INDEV 0
1018+#define CONFIG_FBDEV_INDEV 0
1019+#define CONFIG_GDIGRAB_INDEV 0
1020+#define CONFIG_IEC61883_INDEV 0
1021+#define CONFIG_JACK_INDEV 0
1022+#define CONFIG_KMSGRAB_INDEV 0
1023+#define CONFIG_LAVFI_INDEV 0
1024+#define CONFIG_OPENAL_INDEV 0
1025+#define CONFIG_OSS_INDEV 0
1026+#define CONFIG_PULSE_INDEV 0
1027+#define CONFIG_SNDIO_INDEV 0
1028+#define CONFIG_V4L2_INDEV 1
1029+#define CONFIG_VFWCAP_INDEV 0
1030+#define CONFIG_XCBGRAB_INDEV 0
1031+#define CONFIG_LIBCDIO_INDEV 0
1032+#define CONFIG_LIBDC1394_INDEV 0
1033+#define CONFIG_ALSA_OUTDEV 0
1034+#define CONFIG_AUDIOTOOLBOX_OUTDEV 0
1035+#define CONFIG_CACA_OUTDEV 0
1036+#define CONFIG_DECKLINK_OUTDEV 0
1037+#define CONFIG_FBDEV_OUTDEV 0
1038+#define CONFIG_OPENGL_OUTDEV 0
1039+#define CONFIG_OSS_OUTDEV 0
1040+#define CONFIG_PULSE_OUTDEV 0
1041+#define CONFIG_SDL2_OUTDEV 0
1042+#define CONFIG_SNDIO_OUTDEV 0
1043+#define CONFIG_V4L2_OUTDEV 0
1044+#define CONFIG_XV_OUTDEV 0
1045+#define CONFIG_AAP_FILTER 0
1046+#define CONFIG_ABENCH_FILTER 0
1047+#define CONFIG_ACOMPRESSOR_FILTER 0
1048+#define CONFIG_ACONTRAST_FILTER 0
1049+#define CONFIG_ACOPY_FILTER 0
1050+#define CONFIG_ACUE_FILTER 0
1051+#define CONFIG_ACROSSFADE_FILTER 0
1052+#define CONFIG_ACROSSOVER_FILTER 0
1053+#define CONFIG_ACRUSHER_FILTER 0
1054+#define CONFIG_ADECLICK_FILTER 0
1055+#define CONFIG_ADECLIP_FILTER 0
1056+#define CONFIG_ADECORRELATE_FILTER 0
1057+#define CONFIG_ADELAY_FILTER 0
1058+#define CONFIG_ADENORM_FILTER 0
1059+#define CONFIG_ADERIVATIVE_FILTER 0
1060+#define CONFIG_ADRC_FILTER 0
1061+#define CONFIG_ADYNAMICEQUALIZER_FILTER 0
1062+#define CONFIG_ADYNAMICSMOOTH_FILTER 0
1063+#define CONFIG_AECHO_FILTER 0
1064+#define CONFIG_AEMPHASIS_FILTER 0
1065+#define CONFIG_AEVAL_FILTER 0
1066+#define CONFIG_AEXCITER_FILTER 0
1067+#define CONFIG_AFADE_FILTER 0
1068+#define CONFIG_AFFTDN_FILTER 0
1069+#define CONFIG_AFFTFILT_FILTER 0
1070+#define CONFIG_AFIR_FILTER 0
1071+#define CONFIG_AFORMAT_FILTER 1
1072+#define CONFIG_AFREQSHIFT_FILTER 0
1073+#define CONFIG_AFWTDN_FILTER 0
1074+#define CONFIG_AGATE_FILTER 0
1075+#define CONFIG_AIIR_FILTER 0
1076+#define CONFIG_AINTEGRAL_FILTER 0
1077+#define CONFIG_AINTERLEAVE_FILTER 0
1078+#define CONFIG_ALATENCY_FILTER 0
1079+#define CONFIG_ALIMITER_FILTER 0
1080+#define CONFIG_ALLPASS_FILTER 0
1081+#define CONFIG_ALOOP_FILTER 0
1082+#define CONFIG_AMERGE_FILTER 0
1083+#define CONFIG_AMETADATA_FILTER 0
1084+#define CONFIG_AMIX_FILTER 0
1085+#define CONFIG_AMULTIPLY_FILTER 0
1086+#define CONFIG_ANEQUALIZER_FILTER 0
1087+#define CONFIG_ANLMDN_FILTER 0
1088+#define CONFIG_ANLMF_FILTER 0
1089+#define CONFIG_ANLMS_FILTER 0
1090+#define CONFIG_ANULL_FILTER 1
1091+#define CONFIG_APAD_FILTER 0
1092+#define CONFIG_APERMS_FILTER 0
1093+#define CONFIG_APHASER_FILTER 0
1094+#define CONFIG_APHASESHIFT_FILTER 0
1095+#define CONFIG_APSNR_FILTER 0
1096+#define CONFIG_APSYCLIP_FILTER 0
1097+#define CONFIG_APULSATOR_FILTER 0
1098+#define CONFIG_AREALTIME_FILTER 0
1099+#define CONFIG_ARESAMPLE_FILTER 1
1100+#define CONFIG_AREVERSE_FILTER 0
1101+#define CONFIG_ARLS_FILTER 0
1102+#define CONFIG_ARNNDN_FILTER 0
1103+#define CONFIG_ASDR_FILTER 0
1104+#define CONFIG_ASEGMENT_FILTER 0
1105+#define CONFIG_ASELECT_FILTER 0
1106+#define CONFIG_ASENDCMD_FILTER 0
1107+#define CONFIG_ASETNSAMPLES_FILTER 0
1108+#define CONFIG_ASETPTS_FILTER 0
1109+#define CONFIG_ASETRATE_FILTER 0
1110+#define CONFIG_ASETTB_FILTER 0
1111+#define CONFIG_ASHOWINFO_FILTER 0
1112+#define CONFIG_ASIDEDATA_FILTER 0
1113+#define CONFIG_ASISDR_FILTER 0
1114+#define CONFIG_ASOFTCLIP_FILTER 0
1115+#define CONFIG_ASPECTRALSTATS_FILTER 0
1116+#define CONFIG_ASPLIT_FILTER 0
1117+#define CONFIG_ASR_FILTER 0
1118+#define CONFIG_ASTATS_FILTER 0
1119+#define CONFIG_ASTREAMSELECT_FILTER 0
1120+#define CONFIG_ASUBBOOST_FILTER 0
1121+#define CONFIG_ASUBCUT_FILTER 0
1122+#define CONFIG_ASUPERCUT_FILTER 0
1123+#define CONFIG_ASUPERPASS_FILTER 0
1124+#define CONFIG_ASUPERSTOP_FILTER 0
1125+#define CONFIG_ATEMPO_FILTER 0
1126+#define CONFIG_ATILT_FILTER 0
1127+#define CONFIG_ATRIM_FILTER 0
1128+#define CONFIG_AXCORRELATE_FILTER 0
1129+#define CONFIG_AZMQ_FILTER 0
1130+#define CONFIG_BANDPASS_FILTER 0
1131+#define CONFIG_BANDREJECT_FILTER 0
1132+#define CONFIG_BASS_FILTER 0
1133+#define CONFIG_BIQUAD_FILTER 0
1134+#define CONFIG_BS2B_FILTER 0
1135+#define CONFIG_CHANNELMAP_FILTER 0
1136+#define CONFIG_CHANNELSPLIT_FILTER 0
1137+#define CONFIG_CHORUS_FILTER 0
1138+#define CONFIG_COMPAND_FILTER 0
1139+#define CONFIG_COMPENSATIONDELAY_FILTER 0
1140+#define CONFIG_CROSSFEED_FILTER 0
1141+#define CONFIG_CRYSTALIZER_FILTER 0
1142+#define CONFIG_DCSHIFT_FILTER 0
1143+#define CONFIG_DEESSER_FILTER 0
1144+#define CONFIG_DIALOGUENHANCE_FILTER 0
1145+#define CONFIG_DRMETER_FILTER 0
1146+#define CONFIG_DYNAUDNORM_FILTER 0
1147+#define CONFIG_EARWAX_FILTER 0
1148+#define CONFIG_EBUR128_FILTER 0
1149+#define CONFIG_EQUALIZER_FILTER 0
1150+#define CONFIG_EXTRASTEREO_FILTER 0
1151+#define CONFIG_FIREQUALIZER_FILTER 0
1152+#define CONFIG_FLANGER_FILTER 0
1153+#define CONFIG_HAAS_FILTER 0
1154+#define CONFIG_HDCD_FILTER 0
1155+#define CONFIG_HEADPHONE_FILTER 0
1156+#define CONFIG_HIGHPASS_FILTER 0
1157+#define CONFIG_HIGHSHELF_FILTER 0
1158+#define CONFIG_JOIN_FILTER 0
1159+#define CONFIG_LADSPA_FILTER 0
1160+#define CONFIG_LOUDNORM_FILTER 0
1161+#define CONFIG_LOWPASS_FILTER 0
1162+#define CONFIG_LOWSHELF_FILTER 0
1163+#define CONFIG_LV2_FILTER 0
1164+#define CONFIG_MCOMPAND_FILTER 0
1165+#define CONFIG_PAN_FILTER 0
1166+#define CONFIG_REPLAYGAIN_FILTER 0
1167+#define CONFIG_RUBBERBAND_FILTER 0
1168+#define CONFIG_SIDECHAINCOMPRESS_FILTER 0
1169+#define CONFIG_SIDECHAINGATE_FILTER 0
1170+#define CONFIG_SILENCEDETECT_FILTER 0
1171+#define CONFIG_SILENCEREMOVE_FILTER 0
1172+#define CONFIG_SOFALIZER_FILTER 0
1173+#define CONFIG_SPEECHNORM_FILTER 0
1174+#define CONFIG_STEREOTOOLS_FILTER 0
1175+#define CONFIG_STEREOWIDEN_FILTER 0
1176+#define CONFIG_SUPEREQUALIZER_FILTER 0
1177+#define CONFIG_SURROUND_FILTER 0
1178+#define CONFIG_TILTSHELF_FILTER 0
1179+#define CONFIG_TREBLE_FILTER 0
1180+#define CONFIG_TREMOLO_FILTER 0
1181+#define CONFIG_VIBRATO_FILTER 0
1182+#define CONFIG_VIRTUALBASS_FILTER 0
1183+#define CONFIG_VOLUME_FILTER 0
1184+#define CONFIG_VOLUMEDETECT_FILTER 0
1185+#define CONFIG_AEVALSRC_FILTER 0
1186+#define CONFIG_AFDELAYSRC_FILTER 0
1187+#define CONFIG_AFIREQSRC_FILTER 0
1188+#define CONFIG_AFIRSRC_FILTER 0
1189+#define CONFIG_ANOISESRC_FILTER 0
1190+#define CONFIG_ANULLSRC_FILTER 0
1191+#define CONFIG_FLITE_FILTER 0
1192+#define CONFIG_HILBERT_FILTER 0
1193+#define CONFIG_SINC_FILTER 0
1194+#define CONFIG_SINE_FILTER 0
1195+#define CONFIG_ANULLSINK_FILTER 0
1196+#define CONFIG_ADDROI_FILTER 0
1197+#define CONFIG_ALPHAEXTRACT_FILTER 0
1198+#define CONFIG_ALPHAMERGE_FILTER 0
1199+#define CONFIG_AMPLIFY_FILTER 0
1200+#define CONFIG_ASS_FILTER 0
1201+#define CONFIG_ATADENOISE_FILTER 0
1202+#define CONFIG_AVGBLUR_FILTER 0
1203+#define CONFIG_AVGBLUR_OPENCL_FILTER 0
1204+#define CONFIG_AVGBLUR_VULKAN_FILTER 0
1205+#define CONFIG_BACKGROUNDKEY_FILTER 0
1206+#define CONFIG_BBOX_FILTER 0
1207+#define CONFIG_BENCH_FILTER 0
1208+#define CONFIG_BILATERAL_FILTER 0
1209+#define CONFIG_BILATERAL_CUDA_FILTER 0
1210+#define CONFIG_BITPLANENOISE_FILTER 0
1211+#define CONFIG_BLACKDETECT_FILTER 0
1212+#define CONFIG_BLACKFRAME_FILTER 0
1213+#define CONFIG_BLEND_FILTER 0
1214+#define CONFIG_BLEND_VULKAN_FILTER 0
1215+#define CONFIG_BLOCKDETECT_FILTER 0
1216+#define CONFIG_BLURDETECT_FILTER 0
1217+#define CONFIG_BM3D_FILTER 0
1218+#define CONFIG_BOXBLUR_FILTER 0
1219+#define CONFIG_BOXBLUR_OPENCL_FILTER 0
1220+#define CONFIG_BWDIF_FILTER 0
1221+#define CONFIG_BWDIF_CUDA_FILTER 0
1222+#define CONFIG_BWDIF_VULKAN_FILTER 0
1223+#define CONFIG_CAS_FILTER 0
1224+#define CONFIG_CCREPACK_FILTER 0
1225+#define CONFIG_CHROMABER_VULKAN_FILTER 0
1226+#define CONFIG_CHROMAHOLD_FILTER 0
1227+#define CONFIG_CHROMAKEY_FILTER 0
1228+#define CONFIG_CHROMAKEY_CUDA_FILTER 0
1229+#define CONFIG_CHROMANR_FILTER 0
1230+#define CONFIG_CHROMASHIFT_FILTER 0
1231+#define CONFIG_CIESCOPE_FILTER 0
1232+#define CONFIG_CODECVIEW_FILTER 0
1233+#define CONFIG_COLORBALANCE_FILTER 0
1234+#define CONFIG_COLORCHANNELMIXER_FILTER 0
1235+#define CONFIG_COLORCONTRAST_FILTER 0
1236+#define CONFIG_COLORCORRECT_FILTER 0
1237+#define CONFIG_COLORIZE_FILTER 0
1238+#define CONFIG_COLORKEY_FILTER 0
1239+#define CONFIG_COLORKEY_OPENCL_FILTER 0
1240+#define CONFIG_COLORHOLD_FILTER 0
1241+#define CONFIG_COLORLEVELS_FILTER 0
1242+#define CONFIG_COLORMAP_FILTER 0
1243+#define CONFIG_COLORMATRIX_FILTER 0
1244+#define CONFIG_COLORSPACE_FILTER 0
1245+#define CONFIG_COLORSPACE_CUDA_FILTER 0
1246+#define CONFIG_COLORTEMPERATURE_FILTER 0
1247+#define CONFIG_CONVOLUTION_FILTER 0
1248+#define CONFIG_CONVOLUTION_OPENCL_FILTER 0
1249+#define CONFIG_CONVOLVE_FILTER 0
1250+#define CONFIG_COPY_FILTER 0
1251+#define CONFIG_COREIMAGE_FILTER 0
1252+#define CONFIG_CORR_FILTER 0
1253+#define CONFIG_COVER_RECT_FILTER 0
1254+#define CONFIG_CROP_FILTER 0
1255+#define CONFIG_CROPDETECT_FILTER 0
1256+#define CONFIG_CUE_FILTER 0
1257+#define CONFIG_CURVES_FILTER 0
1258+#define CONFIG_DATASCOPE_FILTER 0
1259+#define CONFIG_DBLUR_FILTER 0
1260+#define CONFIG_DCTDNOIZ_FILTER 0
1261+#define CONFIG_DEBAND_FILTER 0
1262+#define CONFIG_DEBLOCK_FILTER 0
1263+#define CONFIG_DECIMATE_FILTER 0
1264+#define CONFIG_DECONVOLVE_FILTER 0
1265+#define CONFIG_DEDOT_FILTER 0
1266+#define CONFIG_DEFLATE_FILTER 0
1267+#define CONFIG_DEFLICKER_FILTER 0
1268+#define CONFIG_DEINTERLACE_QSV_FILTER 0
1269+#define CONFIG_DEINTERLACE_VAAPI_FILTER 0
1270+#define CONFIG_DEJUDDER_FILTER 0
1271+#define CONFIG_DELOGO_FILTER 0
1272+#define CONFIG_DENOISE_VAAPI_FILTER 0
1273+#define CONFIG_DERAIN_FILTER 0
1274+#define CONFIG_DESHAKE_FILTER 0
1275+#define CONFIG_DESHAKE_OPENCL_FILTER 0
1276+#define CONFIG_DESPILL_FILTER 0
1277+#define CONFIG_DETELECINE_FILTER 0
1278+#define CONFIG_DILATION_FILTER 0
1279+#define CONFIG_DILATION_OPENCL_FILTER 0
1280+#define CONFIG_DISPLACE_FILTER 0
1281+#define CONFIG_DNN_CLASSIFY_FILTER 0
1282+#define CONFIG_DNN_DETECT_FILTER 0
1283+#define CONFIG_DNN_PROCESSING_FILTER 0
1284+#define CONFIG_DOUBLEWEAVE_FILTER 0
1285+#define CONFIG_DRAWBOX_FILTER 0
1286+#define CONFIG_DRAWGRAPH_FILTER 0
1287+#define CONFIG_DRAWGRID_FILTER 0
1288+#define CONFIG_DRAWTEXT_FILTER 0
1289+#define CONFIG_EDGEDETECT_FILTER 0
1290+#define CONFIG_ELBG_FILTER 0
1291+#define CONFIG_ENTROPY_FILTER 0
1292+#define CONFIG_EPX_FILTER 0
1293+#define CONFIG_EQ_FILTER 0
1294+#define CONFIG_EROSION_FILTER 0
1295+#define CONFIG_EROSION_OPENCL_FILTER 0
1296+#define CONFIG_ESTDIF_FILTER 0
1297+#define CONFIG_EXPOSURE_FILTER 0
1298+#define CONFIG_EXTRACTPLANES_FILTER 0
1299+#define CONFIG_FADE_FILTER 0
1300+#define CONFIG_FEEDBACK_FILTER 0
1301+#define CONFIG_FFTDNOIZ_FILTER 0
1302+#define CONFIG_FFTFILT_FILTER 0
1303+#define CONFIG_FIELD_FILTER 0
1304+#define CONFIG_FIELDHINT_FILTER 0
1305+#define CONFIG_FIELDMATCH_FILTER 0
1306+#define CONFIG_FIELDORDER_FILTER 0
1307+#define CONFIG_FILLBORDERS_FILTER 0
1308+#define CONFIG_FIND_RECT_FILTER 0
1309+#define CONFIG_FLIP_VULKAN_FILTER 0
1310+#define CONFIG_FLOODFILL_FILTER 0
1311+#define CONFIG_FORMAT_FILTER 1
1312+#define CONFIG_FPS_FILTER 0
1313+#define CONFIG_FRAMEPACK_FILTER 0
1314+#define CONFIG_FRAMERATE_FILTER 0
1315+#define CONFIG_FRAMESTEP_FILTER 0
1316+#define CONFIG_FREEZEDETECT_FILTER 0
1317+#define CONFIG_FREEZEFRAMES_FILTER 0
1318+#define CONFIG_FREI0R_FILTER 0
1319+#define CONFIG_FSPP_FILTER 0
1320+#define CONFIG_FSYNC_FILTER 0
1321+#define CONFIG_GBLUR_FILTER 0
1322+#define CONFIG_GBLUR_VULKAN_FILTER 0
1323+#define CONFIG_GEQ_FILTER 0
1324+#define CONFIG_GRADFUN_FILTER 0
1325+#define CONFIG_GRAPHMONITOR_FILTER 0
1326+#define CONFIG_GRAYWORLD_FILTER 0
1327+#define CONFIG_GREYEDGE_FILTER 0
1328+#define CONFIG_GUIDED_FILTER 0
1329+#define CONFIG_HALDCLUT_FILTER 0
1330+#define CONFIG_HFLIP_FILTER 0
1331+#define CONFIG_HFLIP_VULKAN_FILTER 0
1332+#define CONFIG_HISTEQ_FILTER 0
1333+#define CONFIG_HISTOGRAM_FILTER 0
1334+#define CONFIG_HQDN3D_FILTER 0
1335+#define CONFIG_HQX_FILTER 0
1336+#define CONFIG_HSTACK_FILTER 0
1337+#define CONFIG_HSVHOLD_FILTER 0
1338+#define CONFIG_HSVKEY_FILTER 0
1339+#define CONFIG_HUE_FILTER 0
1340+#define CONFIG_HUESATURATION_FILTER 0
1341+#define CONFIG_HWDOWNLOAD_FILTER 0
1342+#define CONFIG_HWMAP_FILTER 0
1343+#define CONFIG_HWUPLOAD_FILTER 0
1344+#define CONFIG_HWUPLOAD_CUDA_FILTER 0
1345+#define CONFIG_HYSTERESIS_FILTER 0
1346+#define CONFIG_ICCDETECT_FILTER 0
1347+#define CONFIG_ICCGEN_FILTER 0
1348+#define CONFIG_IDENTITY_FILTER 0
1349+#define CONFIG_IDET_FILTER 0
1350+#define CONFIG_IL_FILTER 0
1351+#define CONFIG_INFLATE_FILTER 0
1352+#define CONFIG_INTERLACE_FILTER 0
1353+#define CONFIG_INTERLEAVE_FILTER 0
1354+#define CONFIG_KERNDEINT_FILTER 0
1355+#define CONFIG_KIRSCH_FILTER 0
1356+#define CONFIG_LAGFUN_FILTER 0
1357+#define CONFIG_LATENCY_FILTER 0
1358+#define CONFIG_LENSCORRECTION_FILTER 0
1359+#define CONFIG_LENSFUN_FILTER 0
1360+#define CONFIG_LIBPLACEBO_FILTER 0
1361+#define CONFIG_LIBVMAF_FILTER 0
1362+#define CONFIG_LIBVMAF_CUDA_FILTER 0
1363+#define CONFIG_LIMITDIFF_FILTER 0
1364+#define CONFIG_LIMITER_FILTER 0
1365+#define CONFIG_LOOP_FILTER 0
1366+#define CONFIG_LUMAKEY_FILTER 0
1367+#define CONFIG_LUT_FILTER 0
1368+#define CONFIG_LUT1D_FILTER 0
1369+#define CONFIG_LUT2_FILTER 0
1370+#define CONFIG_LUT3D_FILTER 0
1371+#define CONFIG_LUTRGB_FILTER 0
1372+#define CONFIG_LUTYUV_FILTER 0
1373+#define CONFIG_MASKEDCLAMP_FILTER 0
1374+#define CONFIG_MASKEDMAX_FILTER 0
1375+#define CONFIG_MASKEDMERGE_FILTER 0
1376+#define CONFIG_MASKEDMIN_FILTER 0
1377+#define CONFIG_MASKEDTHRESHOLD_FILTER 0
1378+#define CONFIG_MASKFUN_FILTER 0
1379+#define CONFIG_MCDEINT_FILTER 0
1380+#define CONFIG_MEDIAN_FILTER 0
1381+#define CONFIG_MERGEPLANES_FILTER 0
1382+#define CONFIG_MESTIMATE_FILTER 0
1383+#define CONFIG_METADATA_FILTER 0
1384+#define CONFIG_MIDEQUALIZER_FILTER 0
1385+#define CONFIG_MINTERPOLATE_FILTER 0
1386+#define CONFIG_MIX_FILTER 0
1387+#define CONFIG_MONOCHROME_FILTER 0
1388+#define CONFIG_MORPHO_FILTER 0
1389+#define CONFIG_MPDECIMATE_FILTER 0
1390+#define CONFIG_MSAD_FILTER 0
1391+#define CONFIG_MULTIPLY_FILTER 0
1392+#define CONFIG_NEGATE_FILTER 0
1393+#define CONFIG_NLMEANS_FILTER 0
1394+#define CONFIG_NLMEANS_OPENCL_FILTER 0
1395+#define CONFIG_NLMEANS_VULKAN_FILTER 0
1396+#define CONFIG_NNEDI_FILTER 0
1397+#define CONFIG_NOFORMAT_FILTER 0
1398+#define CONFIG_NOISE_FILTER 0
1399+#define CONFIG_NORMALIZE_FILTER 0
1400+#define CONFIG_NULL_FILTER 1
1401+#define CONFIG_OCR_FILTER 0
1402+#define CONFIG_OCV_FILTER 0
1403+#define CONFIG_OSCILLOSCOPE_FILTER 0
1404+#define CONFIG_OVERLAY_FILTER 0
1405+#define CONFIG_OVERLAY_OPENCL_FILTER 0
1406+#define CONFIG_OVERLAY_QSV_FILTER 0
1407+#define CONFIG_OVERLAY_VAAPI_FILTER 0
1408+#define CONFIG_OVERLAY_VULKAN_FILTER 0
1409+#define CONFIG_OVERLAY_CUDA_FILTER 0
1410+#define CONFIG_OWDENOISE_FILTER 0
1411+#define CONFIG_PAD_FILTER 0
1412+#define CONFIG_PAD_OPENCL_FILTER 0
1413+#define CONFIG_PALETTEGEN_FILTER 0
1414+#define CONFIG_PALETTEUSE_FILTER 0
1415+#define CONFIG_PERMS_FILTER 0
1416+#define CONFIG_PERSPECTIVE_FILTER 0
1417+#define CONFIG_PHASE_FILTER 0
1418+#define CONFIG_PHOTOSENSITIVITY_FILTER 0
1419+#define CONFIG_PIXDESCTEST_FILTER 0
1420+#define CONFIG_PIXELIZE_FILTER 0
1421+#define CONFIG_PIXSCOPE_FILTER 0
1422+#define CONFIG_PP_FILTER 0
1423+#define CONFIG_PP7_FILTER 0
1424+#define CONFIG_PREMULTIPLY_FILTER 0
1425+#define CONFIG_PREWITT_FILTER 0
1426+#define CONFIG_PREWITT_OPENCL_FILTER 0
1427+#define CONFIG_PROCAMP_VAAPI_FILTER 0
1428+#define CONFIG_PROGRAM_OPENCL_FILTER 0
1429+#define CONFIG_PSEUDOCOLOR_FILTER 0
1430+#define CONFIG_PSNR_FILTER 0
1431+#define CONFIG_PULLUP_FILTER 0
1432+#define CONFIG_QP_FILTER 0
1433+#define CONFIG_QRENCODE_FILTER 0
1434+#define CONFIG_QUIRC_FILTER 0
1435+#define CONFIG_RANDOM_FILTER 0
1436+#define CONFIG_READEIA608_FILTER 0
1437+#define CONFIG_READVITC_FILTER 0
1438+#define CONFIG_REALTIME_FILTER 0
1439+#define CONFIG_REMAP_FILTER 0
1440+#define CONFIG_REMAP_OPENCL_FILTER 0
1441+#define CONFIG_REMOVEGRAIN_FILTER 0
1442+#define CONFIG_REMOVELOGO_FILTER 0
1443+#define CONFIG_REPEATFIELDS_FILTER 0
1444+#define CONFIG_REVERSE_FILTER 0
1445+#define CONFIG_RGBASHIFT_FILTER 0
1446+#define CONFIG_ROBERTS_FILTER 0
1447+#define CONFIG_ROBERTS_OPENCL_FILTER 0
1448+#define CONFIG_ROTATE_FILTER 1
1449+#define CONFIG_SAB_FILTER 0
1450+#define CONFIG_SCALE_FILTER 1
1451+#define CONFIG_SCALE_CUDA_FILTER 0
1452+#define CONFIG_SCALE_NPP_FILTER 0
1453+#define CONFIG_SCALE_QSV_FILTER 0
1454+#define CONFIG_SCALE_VAAPI_FILTER 0
1455+#define CONFIG_SCALE_VT_FILTER 0
1456+#define CONFIG_SCALE_VULKAN_FILTER 0
1457+#define CONFIG_SCALE2REF_FILTER 0
1458+#define CONFIG_SCALE2REF_NPP_FILTER 0
1459+#define CONFIG_SCDET_FILTER 0
1460+#define CONFIG_SCHARR_FILTER 0
1461+#define CONFIG_SCROLL_FILTER 0
1462+#define CONFIG_SEGMENT_FILTER 0
1463+#define CONFIG_SELECT_FILTER 0
1464+#define CONFIG_SELECTIVECOLOR_FILTER 0
1465+#define CONFIG_SENDCMD_FILTER 0
1466+#define CONFIG_SEPARATEFIELDS_FILTER 0
1467+#define CONFIG_SETDAR_FILTER 0
1468+#define CONFIG_SETFIELD_FILTER 0
1469+#define CONFIG_SETPARAMS_FILTER 0
1470+#define CONFIG_SETPTS_FILTER 0
1471+#define CONFIG_SETRANGE_FILTER 0
1472+#define CONFIG_SETSAR_FILTER 0
1473+#define CONFIG_SETTB_FILTER 0
1474+#define CONFIG_SHARPEN_NPP_FILTER 0
1475+#define CONFIG_SHARPNESS_VAAPI_FILTER 0
1476+#define CONFIG_SHEAR_FILTER 0
1477+#define CONFIG_SHOWINFO_FILTER 0
1478+#define CONFIG_SHOWPALETTE_FILTER 0
1479+#define CONFIG_SHUFFLEFRAMES_FILTER 0
1480+#define CONFIG_SHUFFLEPIXELS_FILTER 0
1481+#define CONFIG_SHUFFLEPLANES_FILTER 0
1482+#define CONFIG_SIDEDATA_FILTER 0
1483+#define CONFIG_SIGNALSTATS_FILTER 0
1484+#define CONFIG_SIGNATURE_FILTER 0
1485+#define CONFIG_SITI_FILTER 0
1486+#define CONFIG_SMARTBLUR_FILTER 0
1487+#define CONFIG_SOBEL_FILTER 0
1488+#define CONFIG_SOBEL_OPENCL_FILTER 0
1489+#define CONFIG_SPLIT_FILTER 0
1490+#define CONFIG_SPP_FILTER 0
1491+#define CONFIG_SR_FILTER 0
1492+#define CONFIG_SSIM_FILTER 0
1493+#define CONFIG_SSIM360_FILTER 0
1494+#define CONFIG_STEREO3D_FILTER 0
1495+#define CONFIG_STREAMSELECT_FILTER 0
1496+#define CONFIG_SUBTITLES_FILTER 0
1497+#define CONFIG_SUPER2XSAI_FILTER 0
1498+#define CONFIG_SWAPRECT_FILTER 0
1499+#define CONFIG_SWAPUV_FILTER 0
1500+#define CONFIG_TBLEND_FILTER 0
1501+#define CONFIG_TELECINE_FILTER 0
1502+#define CONFIG_THISTOGRAM_FILTER 0
1503+#define CONFIG_THRESHOLD_FILTER 0
1504+#define CONFIG_THUMBNAIL_FILTER 0
1505+#define CONFIG_THUMBNAIL_CUDA_FILTER 0
1506+#define CONFIG_TILE_FILTER 0
1507+#define CONFIG_TILTANDSHIFT_FILTER 0
1508+#define CONFIG_TINTERLACE_FILTER 0
1509+#define CONFIG_TLUT2_FILTER 0
1510+#define CONFIG_TMEDIAN_FILTER 0
1511+#define CONFIG_TMIDEQUALIZER_FILTER 0
1512+#define CONFIG_TMIX_FILTER 0
1513+#define CONFIG_TONEMAP_FILTER 0
1514+#define CONFIG_TONEMAP_OPENCL_FILTER 0
1515+#define CONFIG_TONEMAP_VAAPI_FILTER 0
1516+#define CONFIG_TPAD_FILTER 0
1517+#define CONFIG_TRANSPOSE_FILTER 0
1518+#define CONFIG_TRANSPOSE_NPP_FILTER 0
1519+#define CONFIG_TRANSPOSE_OPENCL_FILTER 0
1520+#define CONFIG_TRANSPOSE_VAAPI_FILTER 0
1521+#define CONFIG_TRANSPOSE_VT_FILTER 0
1522+#define CONFIG_TRANSPOSE_VULKAN_FILTER 0
1523+#define CONFIG_TRIM_FILTER 0
1524+#define CONFIG_UNPREMULTIPLY_FILTER 0
1525+#define CONFIG_UNSHARP_FILTER 0
1526+#define CONFIG_UNSHARP_OPENCL_FILTER 0
1527+#define CONFIG_UNTILE_FILTER 0
1528+#define CONFIG_USPP_FILTER 0
1529+#define CONFIG_V360_FILTER 0
1530+#define CONFIG_VAGUEDENOISER_FILTER 0
1531+#define CONFIG_VARBLUR_FILTER 0
1532+#define CONFIG_VECTORSCOPE_FILTER 0
1533+#define CONFIG_VFLIP_FILTER 0
1534+#define CONFIG_VFLIP_VULKAN_FILTER 0
1535+#define CONFIG_VFRDET_FILTER 0
1536+#define CONFIG_VIBRANCE_FILTER 0
1537+#define CONFIG_VIDSTABDETECT_FILTER 0
1538+#define CONFIG_VIDSTABTRANSFORM_FILTER 0
1539+#define CONFIG_VIF_FILTER 0
1540+#define CONFIG_VIGNETTE_FILTER 0
1541+#define CONFIG_VMAFMOTION_FILTER 0
1542+#define CONFIG_VPP_QSV_FILTER 0
1543+#define CONFIG_VSTACK_FILTER 0
1544+#define CONFIG_W3FDIF_FILTER 0
1545+#define CONFIG_WAVEFORM_FILTER 0
1546+#define CONFIG_WEAVE_FILTER 0
1547+#define CONFIG_XBR_FILTER 0
1548+#define CONFIG_XCORRELATE_FILTER 0
1549+#define CONFIG_XFADE_FILTER 0
1550+#define CONFIG_XFADE_OPENCL_FILTER 0
1551+#define CONFIG_XFADE_VULKAN_FILTER 0
1552+#define CONFIG_XMEDIAN_FILTER 0
1553+#define CONFIG_XSTACK_FILTER 0
1554+#define CONFIG_YADIF_FILTER 0
1555+#define CONFIG_YADIF_CUDA_FILTER 0
1556+#define CONFIG_YADIF_VIDEOTOOLBOX_FILTER 0
1557+#define CONFIG_YAEPBLUR_FILTER 0
1558+#define CONFIG_ZMQ_FILTER 0
1559+#define CONFIG_ZOOMPAN_FILTER 0
1560+#define CONFIG_ZSCALE_FILTER 0
1561+#define CONFIG_HSTACK_VAAPI_FILTER 0
1562+#define CONFIG_VSTACK_VAAPI_FILTER 0
1563+#define CONFIG_XSTACK_VAAPI_FILTER 0
1564+#define CONFIG_HSTACK_QSV_FILTER 0
1565+#define CONFIG_VSTACK_QSV_FILTER 0
1566+#define CONFIG_XSTACK_QSV_FILTER 0
1567+#define CONFIG_ALLRGB_FILTER 0
1568+#define CONFIG_ALLYUV_FILTER 0
1569+#define CONFIG_CELLAUTO_FILTER 0
1570+#define CONFIG_COLOR_FILTER 0
1571+#define CONFIG_COLOR_VULKAN_FILTER 0
1572+#define CONFIG_COLORCHART_FILTER 0
1573+#define CONFIG_COLORSPECTRUM_FILTER 0
1574+#define CONFIG_COREIMAGESRC_FILTER 0
1575+#define CONFIG_DDAGRAB_FILTER 0
1576+#define CONFIG_FREI0R_SRC_FILTER 0
1577+#define CONFIG_GRADIENTS_FILTER 0
1578+#define CONFIG_HALDCLUTSRC_FILTER 0
1579+#define CONFIG_LIFE_FILTER 0
1580+#define CONFIG_MANDELBROT_FILTER 0
1581+#define CONFIG_MPTESTSRC_FILTER 0
1582+#define CONFIG_NULLSRC_FILTER 0
1583+#define CONFIG_OPENCLSRC_FILTER 0
1584+#define CONFIG_QRENCODESRC_FILTER 0
1585+#define CONFIG_PAL75BARS_FILTER 0
1586+#define CONFIG_PAL100BARS_FILTER 0
1587+#define CONFIG_RGBTESTSRC_FILTER 0
1588+#define CONFIG_SIERPINSKI_FILTER 0
1589+#define CONFIG_SMPTEBARS_FILTER 0
1590+#define CONFIG_SMPTEHDBARS_FILTER 0
1591+#define CONFIG_TESTSRC_FILTER 0
1592+#define CONFIG_TESTSRC2_FILTER 0
1593+#define CONFIG_YUVTESTSRC_FILTER 0
1594+#define CONFIG_ZONEPLATE_FILTER 0
1595+#define CONFIG_NULLSINK_FILTER 0
1596+#define CONFIG_A3DSCOPE_FILTER 0
1597+#define CONFIG_ABITSCOPE_FILTER 0
1598+#define CONFIG_ADRAWGRAPH_FILTER 0
1599+#define CONFIG_AGRAPHMONITOR_FILTER 0
1600+#define CONFIG_AHISTOGRAM_FILTER 0
1601+#define CONFIG_APHASEMETER_FILTER 0
1602+#define CONFIG_AVECTORSCOPE_FILTER 0
1603+#define CONFIG_CONCAT_FILTER 0
1604+#define CONFIG_SHOWCQT_FILTER 0
1605+#define CONFIG_SHOWCWT_FILTER 0
1606+#define CONFIG_SHOWFREQS_FILTER 0
1607+#define CONFIG_SHOWSPATIAL_FILTER 0
1608+#define CONFIG_SHOWSPECTRUM_FILTER 0
1609+#define CONFIG_SHOWSPECTRUMPIC_FILTER 0
1610+#define CONFIG_SHOWVOLUME_FILTER 0
1611+#define CONFIG_SHOWWAVES_FILTER 0
1612+#define CONFIG_SHOWWAVESPIC_FILTER 0
1613+#define CONFIG_SPECTRUMSYNTH_FILTER 0
1614+#define CONFIG_AVSYNCTEST_FILTER 0
1615+#define CONFIG_AMOVIE_FILTER 0
1616+#define CONFIG_MOVIE_FILTER 0
1617+#define CONFIG_AA_DEMUXER 0
1618+#define CONFIG_AAC_DEMUXER 1
1619+#define CONFIG_AAX_DEMUXER 0
1620+#define CONFIG_AC3_DEMUXER 1
1621+#define CONFIG_AC4_DEMUXER 0
1622+#define CONFIG_ACE_DEMUXER 0
1623+#define CONFIG_ACM_DEMUXER 0
1624+#define CONFIG_ACT_DEMUXER 0
1625+#define CONFIG_ADF_DEMUXER 0
1626+#define CONFIG_ADP_DEMUXER 0
1627+#define CONFIG_ADS_DEMUXER 0
1628+#define CONFIG_ADX_DEMUXER 0
1629+#define CONFIG_AEA_DEMUXER 0
1630+#define CONFIG_AFC_DEMUXER 0
1631+#define CONFIG_AIFF_DEMUXER 0
1632+#define CONFIG_AIX_DEMUXER 0
1633+#define CONFIG_ALP_DEMUXER 0
1634+#define CONFIG_AMR_DEMUXER 0
1635+#define CONFIG_AMRNB_DEMUXER 0
1636+#define CONFIG_AMRWB_DEMUXER 0
1637+#define CONFIG_ANM_DEMUXER 0
1638+#define CONFIG_APAC_DEMUXER 0
1639+#define CONFIG_APC_DEMUXER 0
1640+#define CONFIG_APE_DEMUXER 0
1641+#define CONFIG_APM_DEMUXER 0
1642+#define CONFIG_APNG_DEMUXER 0
1643+#define CONFIG_APTX_DEMUXER
1644+#define CONFIG_APTX_HD_DEMUXER
1645+#define CONFIG_AQTITLE_DEMUXER 0
1646+#define CONFIG_ARGO_ASF_DEMUXER 0
1647+#define CONFIG_ARGO_BRP_DEMUXER 0
1648+#define CONFIG_ARGO_CVG_DEMUXER 0
1649+#define CONFIG_ASF_DEMUXER 1
1650+#define CONFIG_ASF_O_DEMUXER 0
1651+#define CONFIG_ASS_DEMUXER 0
1652+#define CONFIG_AST_DEMUXER 0
1653+#define CONFIG_AU_DEMUXER 0
1654+#define CONFIG_AV1_DEMUXER 0
1655+#define CONFIG_AVI_DEMUXER 0
1656+#define CONFIG_AVISYNTH_DEMUXER 0
1657+#define CONFIG_AVR_DEMUXER 0
1658+#define CONFIG_AVS_DEMUXER 0
1659+#define CONFIG_AVS2_DEMUXER 0
1660+#define CONFIG_AVS3_DEMUXER 0
1661+#define CONFIG_BETHSOFTVID_DEMUXER 0
1662+#define CONFIG_BFI_DEMUXER 0
1663+#define CONFIG_BINTEXT_DEMUXER 0
1664+#define CONFIG_BINK_DEMUXER 0
1665+#define CONFIG_BINKA_DEMUXER 0
1666+#define CONFIG_BIT_DEMUXER 0
1667+#define CONFIG_BITPACKED_DEMUXER 0
1668+#define CONFIG_BMV_DEMUXER 0
1669+#define CONFIG_BFSTM_DEMUXER 0
1670+#define CONFIG_BRSTM_DEMUXER 0
1671+#define CONFIG_BOA_DEMUXER 0
1672+#define CONFIG_BONK_DEMUXER 0
1673+#define CONFIG_C93_DEMUXER 0
1674+#define CONFIG_CAF_DEMUXER 0
1675+#define CONFIG_CAVSVIDEO_DEMUXER 0
1676+#define CONFIG_CDG_DEMUXER 0
1677+#define CONFIG_CDXL_DEMUXER 0
1678+#define CONFIG_CINE_DEMUXER 0
1679+#define CONFIG_CODEC2_DEMUXER
1680+#define CONFIG_CODEC2RAW_DEMUXER
1681+#define CONFIG_CONCAT_DEMUXER 0
1682+#define CONFIG_DASH_DEMUXER 0
1683+#define CONFIG_DATA_DEMUXER 0
1684+#define CONFIG_DAUD_DEMUXER 0
1685+#define CONFIG_DCSTR_DEMUXER 0
1686+#define CONFIG_DERF_DEMUXER 0
1687+#define CONFIG_DFA_DEMUXER 0
1688+#define CONFIG_DFPWM_DEMUXER 0
1689+#define CONFIG_DHAV_DEMUXER 0
1690+#define CONFIG_DIRAC_DEMUXER 0
1691+#define CONFIG_DNXHD_DEMUXER 0
1692+#define CONFIG_DSF_DEMUXER 0
1693+#define CONFIG_DSICIN_DEMUXER 0
1694+#define CONFIG_DSS_DEMUXER 0
1695+#define CONFIG_DTS_DEMUXER 1
1696+#define CONFIG_DTSHD_DEMUXER 0
1697+#define CONFIG_DV_DEMUXER 0
1698+#define CONFIG_DVBSUB_DEMUXER 0
1699+#define CONFIG_DVBTXT_DEMUXER 0
1700+#define CONFIG_DVDVIDEO_DEMUXER 0
1701+#define CONFIG_DXA_DEMUXER 0
1702+#define CONFIG_EA_DEMUXER 0
1703+#define CONFIG_EA_CDATA_DEMUXER 0
1704+#define CONFIG_EAC3_DEMUXER 0
1705+#define CONFIG_EPAF_DEMUXER 0
1706+#define CONFIG_EVC_DEMUXER 0
1707+#define CONFIG_FFMETADATA_DEMUXER 1
1708+#define CONFIG_FILMSTRIP_DEMUXER 0
1709+#define CONFIG_FITS_DEMUXER 0
1710+#define CONFIG_FLAC_DEMUXER 1
1711+#define CONFIG_FLIC_DEMUXER 0
1712+#define CONFIG_FLV_DEMUXER 1
1713+#define CONFIG_LIVE_FLV_DEMUXER 0
1714+#define CONFIG_FOURXM_DEMUXER 0
1715+#define CONFIG_FRM_DEMUXER 0
1716+#define CONFIG_FSB_DEMUXER 0
1717+#define CONFIG_FWSE_DEMUXER 0
1718+#define CONFIG_G722_DEMUXER 0
1719+#define CONFIG_G723_1_DEMUXER 0
1720+#define CONFIG_G726_DEMUXER 0
1721+#define CONFIG_G726LE_DEMUXER 0
1722+#define CONFIG_G729_DEMUXER 0
1723+#define CONFIG_GDV_DEMUXER 0
1724+#define CONFIG_GENH_DEMUXER 0
1725+#define CONFIG_GIF_DEMUXER 0
1726+#define CONFIG_GSM_DEMUXER 0
1727+#define CONFIG_GXF_DEMUXER 0
1728+#define CONFIG_H261_DEMUXER 0
1729+#define CONFIG_H263_DEMUXER 0
1730+#define CONFIG_H264_DEMUXER 1
1731+#define CONFIG_HCA_DEMUXER 0
1732+#define CONFIG_HCOM_DEMUXER 0
1733+#define CONFIG_HEVC_DEMUXER 0
1734+#define CONFIG_HLS_DEMUXER 1
1735+#define CONFIG_HNM_DEMUXER 0
1736+#define CONFIG_IAMF_DEMUXER 0
1737+#define CONFIG_ICO_DEMUXER 0
1738+#define CONFIG_IDCIN_DEMUXER 0
1739+#define CONFIG_IDF_DEMUXER 0
1740+#define CONFIG_IFF_DEMUXER 0
1741+#define CONFIG_IFV_DEMUXER 0
1742+#define CONFIG_ILBC_DEMUXER 0
1743+#define CONFIG_IMAGE2_DEMUXER 0
1744+#define CONFIG_IMAGE2PIPE_DEMUXER 0
1745+#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
1746+#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
1747+#define CONFIG_IMF_DEMUXER 0
1748+#define CONFIG_INGENIENT_DEMUXER 0
1749+#define CONFIG_IPMOVIE_DEMUXER 0
1750+#define CONFIG_IPU_DEMUXER 0
1751+#define CONFIG_IRCAM_DEMUXER 0
1752+#define CONFIG_ISS_DEMUXER 0
1753+#define CONFIG_IV8_DEMUXER 0
1754+#define CONFIG_IVF_DEMUXER 1
1755+#define CONFIG_IVR_DEMUXER 0
1756+#define CONFIG_JACOSUB_DEMUXER 0
1757+#define CONFIG_JV_DEMUXER 0
1758+#define CONFIG_JPEGXL_ANIM_DEMUXER 0
1759+#define CONFIG_KUX_DEMUXER 0
1760+#define CONFIG_KVAG_DEMUXER 0
1761+#define CONFIG_LAF_DEMUXER 0
1762+#define CONFIG_LMLM4_DEMUXER 0
1763+#define CONFIG_LOAS_DEMUXER 0
1764+#define CONFIG_LUODAT_DEMUXER 0
1765+#define CONFIG_LRC_DEMUXER 0
1766+#define CONFIG_LVF_DEMUXER 0
1767+#define CONFIG_LXF_DEMUXER 0
1768+#define CONFIG_M4V_DEMUXER 0
1769+#define CONFIG_MCA_DEMUXER 0
1770+#define CONFIG_MCC_DEMUXER 0
1771+#define CONFIG_MATROSKA_DEMUXER 1
1772+#define CONFIG_MGSTS_DEMUXER 0
1773+#define CONFIG_MICRODVD_DEMUXER 0
1774+#define CONFIG_MJPEG_DEMUXER 0
1775+#define CONFIG_MJPEG_2000_DEMUXER 0
1776+#define CONFIG_MLP_DEMUXER 0
1777+#define CONFIG_MLV_DEMUXER 0
1778+#define CONFIG_MM_DEMUXER 0
1779+#define CONFIG_MMF_DEMUXER 0
1780+#define CONFIG_MODS_DEMUXER 0
1781+#define CONFIG_MOFLEX_DEMUXER 0
1782+#define CONFIG_MOV_DEMUXER 1
1783+#define CONFIG_MP3_DEMUXER 1
1784+#define CONFIG_MPC_DEMUXER 0
1785+#define CONFIG_MPC8_DEMUXER 0
1786+#define CONFIG_MPEGPS_DEMUXER 1
1787+#define CONFIG_MPEGTS_DEMUXER 1
1788+#define CONFIG_MPEGTSRAW_DEMUXER 1
1789+#define CONFIG_MPEGVIDEO_DEMUXER 1
1790+#define CONFIG_MPJPEG_DEMUXER 0
1791+#define CONFIG_MPL2_DEMUXER 0
1792+#define CONFIG_MPSUB_DEMUXER 0
1793+#define CONFIG_MSF_DEMUXER 0
1794+#define CONFIG_MSNWC_TCP_DEMUXER 0
1795+#define CONFIG_MSP_DEMUXER 0
1796+#define CONFIG_MTAF_DEMUXER 0
1797+#define CONFIG_MTV_DEMUXER 0
1798+#define CONFIG_MUSX_DEMUXER 0
1799+#define CONFIG_MV_DEMUXER 0
1800+#define CONFIG_MVI_DEMUXER 0
1801+#define CONFIG_MXF_DEMUXER 0
1802+#define CONFIG_MXG_DEMUXER 0
1803+#define CONFIG_NC_DEMUXER 0
1804+#define CONFIG_NISTSPHERE_DEMUXER 0
1805+#define CONFIG_NSP_DEMUXER 0
1806+#define CONFIG_NSV_DEMUXER 0
1807+#define CONFIG_NUT_DEMUXER 0
1808+#define CONFIG_NUV_DEMUXER 0
1809+#define CONFIG_OBU_DEMUXER 0
1810+#define CONFIG_OGG_DEMUXER 1
1811+#define CONFIG_OMA_DEMUXER 0
1812+#define CONFIG_OSQ_DEMUXER 0
1813+#define CONFIG_PAF_DEMUXER 0
1814+#define CONFIG_PCM_ALAW_DEMUXER 0
1815+#define CONFIG_PCM_MULAW_DEMUXER 0
1816+#define CONFIG_PCM_VIDC_DEMUXER 0
1817+#define CONFIG_PCM_F64BE_DEMUXER 0
1818+#define CONFIG_PCM_F64LE_DEMUXER 0
1819+#define CONFIG_PCM_F32BE_DEMUXER 0
1820+#define CONFIG_PCM_F32LE_DEMUXER 0
1821+#define CONFIG_PCM_S32BE_DEMUXER 0
1822+#define CONFIG_PCM_S32LE_DEMUXER 0
1823+#define CONFIG_PCM_S24BE_DEMUXER 0
1824+#define CONFIG_PCM_S24LE_DEMUXER 0
1825+#define CONFIG_PCM_S16BE_DEMUXER 0
1826+#define CONFIG_PCM_S16LE_DEMUXER 0
1827+#define CONFIG_PCM_S8_DEMUXER 0
1828+#define CONFIG_PCM_U32BE_DEMUXER 0
1829+#define CONFIG_PCM_U32LE_DEMUXER 0
1830+#define CONFIG_PCM_U24BE_DEMUXER 0
1831+#define CONFIG_PCM_U24LE_DEMUXER 0
1832+#define CONFIG_PCM_U16BE_DEMUXER 0
1833+#define CONFIG_PCM_U16LE_DEMUXER 0
1834+#define CONFIG_PCM_U8_DEMUXER 0
1835+#define CONFIG_PDV_DEMUXER 0
1836+#define CONFIG_PJS_DEMUXER 0
1837+#define CONFIG_PMP_DEMUXER 0
1838+#define CONFIG_PP_BNK_DEMUXER 0
1839+#define CONFIG_PVA_DEMUXER 0
1840+#define CONFIG_PVF_DEMUXER 0
1841+#define CONFIG_QCP_DEMUXER 0
1842+#define CONFIG_QOA_DEMUXER 0
1843+#define CONFIG_R3D_DEMUXER 0
1844+#define CONFIG_RAWVIDEO_DEMUXER 1
1845+#define CONFIG_REALTEXT_DEMUXER 0
1846+#define CONFIG_REDSPARK_DEMUXER 0
1847+#define CONFIG_RKA_DEMUXER 0
1848+#define CONFIG_RL2_DEMUXER 0
1849+#define CONFIG_RM_DEMUXER 0
1850+#define CONFIG_ROQ_DEMUXER 0
1851+#define CONFIG_RPL_DEMUXER 0
1852+#define CONFIG_RSD_DEMUXER 0
1853+#define CONFIG_RSO_DEMUXER 0
1854+#define CONFIG_RTP_DEMUXER 0
1855+#define CONFIG_RTSP_DEMUXER 0
1856+#define CONFIG_S337M_DEMUXER 0
1857+#define CONFIG_SAMI_DEMUXER 0
1858+#define CONFIG_SAP_DEMUXER 0
1859+#define CONFIG_SBC_DEMUXER 0
1860+#define CONFIG_SBG_DEMUXER 0
1861+#define CONFIG_SCC_DEMUXER 0
1862+#define CONFIG_SCD_DEMUXER 0
1863+#define CONFIG_SDNS_DEMUXER 0
1864+#define CONFIG_SDP_DEMUXER 0
1865+#define CONFIG_SDR2_DEMUXER 0
1866+#define CONFIG_SDS_DEMUXER 0
1867+#define CONFIG_SDX_DEMUXER 0
1868+#define CONFIG_SEGAFILM_DEMUXER 0
1869+#define CONFIG_SER_DEMUXER 0
1870+#define CONFIG_SGA_DEMUXER 0
1871+#define CONFIG_SHORTEN_DEMUXER 0
1872+#define CONFIG_SIFF_DEMUXER 0
1873+#define CONFIG_SIMBIOSIS_IMX_DEMUXER 0
1874+#define CONFIG_SLN_DEMUXER 0
1875+#define CONFIG_SMACKER_DEMUXER 0
1876+#define CONFIG_SMJPEG_DEMUXER 0
1877+#define CONFIG_SMUSH_DEMUXER 0
1878+#define CONFIG_SOL_DEMUXER 0
1879+#define CONFIG_SOX_DEMUXER 0
1880+#define CONFIG_SPDIF_DEMUXER 0
1881+#define CONFIG_SRT_DEMUXER 1
1882+#define CONFIG_STR_DEMUXER 0
1883+#define CONFIG_STL_DEMUXER 0
1884+#define CONFIG_SUBVIEWER1_DEMUXER 0
1885+#define CONFIG_SUBVIEWER_DEMUXER 0
1886+#define CONFIG_SUP_DEMUXER 0
1887+#define CONFIG_SVAG_DEMUXER 0
1888+#define CONFIG_SVS_DEMUXER 0
1889+#define CONFIG_SWF_DEMUXER 0
1890+#define CONFIG_TAK_DEMUXER 0
1891+#define CONFIG_TEDCAPTIONS_DEMUXER 0
1892+#define CONFIG_THP_DEMUXER 0
1893+#define CONFIG_THREEDOSTR_DEMUXER 0
1894+#define CONFIG_TIERTEXSEQ_DEMUXER 0
1895+#define CONFIG_TMV_DEMUXER 0
1896+#define CONFIG_TRUEHD_DEMUXER 0
1897+#define CONFIG_TTA_DEMUXER 0
1898+#define CONFIG_TXD_DEMUXER 0
1899+#define CONFIG_TTY_DEMUXER 0
1900+#define CONFIG_TY_DEMUXER 0
1901+#define CONFIG_USM_DEMUXER 0
1902+#define CONFIG_V210_DEMUXER 0
1903+#define CONFIG_V210X_DEMUXER 0
1904+#define CONFIG_VAG_DEMUXER 0
1905+#define CONFIG_VC1_DEMUXER 0
1906+#define CONFIG_VC1T_DEMUXER 0
1907+#define CONFIG_VIVIDAS_DEMUXER 0
1908+#define CONFIG_VIVO_DEMUXER 0
1909+#define CONFIG_VMD_DEMUXER 0
1910+#define CONFIG_VOBSUB_DEMUXER 0
1911+#define CONFIG_VOC_DEMUXER 0
1912+#define CONFIG_VPK_DEMUXER 0
1913+#define CONFIG_VPLAYER_DEMUXER 0
1914+#define CONFIG_VQF_DEMUXER 0
1915+#define CONFIG_VVC_DEMUXER 0
1916+#define CONFIG_W64_DEMUXER 0
1917+#define CONFIG_WADY_DEMUXER 0
1918+#define CONFIG_WAVARC_DEMUXER 0
1919+#define CONFIG_WAV_DEMUXER 1
1920+#define CONFIG_WC3_DEMUXER 0
1921+#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
1922+#define CONFIG_WEBVTT_DEMUXER 0
1923+#define CONFIG_WSAUD_DEMUXER 0
1924+#define CONFIG_WSD_DEMUXER 0
1925+#define CONFIG_WSVQA_DEMUXER 0
1926+#define CONFIG_WTV_DEMUXER 0
1927+#define CONFIG_WVE_DEMUXER 0
1928+#define CONFIG_WV_DEMUXER 0
1929+#define CONFIG_XA_DEMUXER 0
1930+#define CONFIG_XBIN_DEMUXER 0
1931+#define CONFIG_XMD_DEMUXER 0
1932+#define CONFIG_XMV_DEMUXER 0
1933+#define CONFIG_XVAG_DEMUXER 0
1934+#define CONFIG_XWMA_DEMUXER 0
1935+#define CONFIG_YOP_DEMUXER 0
1936+#define CONFIG_YUV4MPEGPIPE_DEMUXER 1
1937+#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
1938+#define CONFIG_IMAGE_CRI_PIPE_DEMUXER 0
1939+#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
1940+#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
1941+#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
1942+#define CONFIG_IMAGE_GEM_PIPE_DEMUXER 0
1943+#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
1944+#define CONFIG_IMAGE_HDR_PIPE_DEMUXER 0
1945+#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
1946+#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
1947+#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
1948+#define CONFIG_IMAGE_JPEGXL_PIPE_DEMUXER 0
1949+#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
1950+#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
1951+#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
1952+#define CONFIG_IMAGE_PFM_PIPE_DEMUXER 0
1953+#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
1954+#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
1955+#define CONFIG_IMAGE_PGX_PIPE_DEMUXER 0
1956+#define CONFIG_IMAGE_PHM_PIPE_DEMUXER 0
1957+#define CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER 0
1958+#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
1959+#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
1960+#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
1961+#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
1962+#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
1963+#define CONFIG_IMAGE_QOI_PIPE_DEMUXER 0
1964+#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
1965+#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
1966+#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
1967+#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
1968+#define CONFIG_IMAGE_VBN_PIPE_DEMUXER 0
1969+#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
1970+#define CONFIG_IMAGE_XBM_PIPE_DEMUXER 0
1971+#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
1972+#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
1973+#define CONFIG_LIBGME_DEMUXER 0
1974+#define CONFIG_LIBMODPLUG_DEMUXER 0
1975+#define CONFIG_LIBOPENMPT_DEMUXER 0
1976+#define CONFIG_VAPOURSYNTH_DEMUXER 0
1977+#define CONFIG_A64_MUXER 0
1978+#define CONFIG_AC3_MUXER 0
1979+#define CONFIG_AC4_MUXER 0
1980+#define CONFIG_ADTS_MUXER 0
1981+#define CONFIG_ADX_MUXER 0
1982+#define CONFIG_AEA_MUXER 0
1983+#define CONFIG_AIFF_MUXER 0
1984+#define CONFIG_ALP_MUXER 0
1985+#define CONFIG_AMR_MUXER 0
1986+#define CONFIG_AMV_MUXER 0
1987+#define CONFIG_APM_MUXER 0
1988+#define CONFIG_APNG_MUXER 0
1989+#define CONFIG_APTX_MUXER 0
1990+#define CONFIG_APTX_HD_MUXER 0
1991+#define CONFIG_ARGO_ASF_MUXER 0
1992+#define CONFIG_ARGO_CVG_MUXER 0
1993+#define CONFIG_ASF_MUXER 0
1994+#define CONFIG_ASS_MUXER 0
1995+#define CONFIG_AST_MUXER 0
1996+#define CONFIG_ASF_STREAM_MUXER 0
1997+#define CONFIG_AU_MUXER 0
1998+#define CONFIG_AVI_MUXER 0
1999+#define CONFIG_AVIF_MUXER 0
2000+#define CONFIG_AVM2_MUXER 0
2001+#define CONFIG_AVS2_MUXER 0
2002+#define CONFIG_AVS3_MUXER 0
2003+#define CONFIG_BIT_MUXER 0
2004+#define CONFIG_CAF_MUXER 0
2005+#define CONFIG_CAVSVIDEO_MUXER 0
2006+#define CONFIG_CODEC2_MUXER 0
2007+#define CONFIG_CODEC2RAW_MUXER 0
2008+#define CONFIG_CRC_MUXER 0
2009+#define CONFIG_DASH_MUXER 0
2010+#define CONFIG_DATA_MUXER 0
2011+#define CONFIG_DAUD_MUXER 0
2012+#define CONFIG_DFPWM_MUXER 0
2013+#define CONFIG_DIRAC_MUXER 0
2014+#define CONFIG_DNXHD_MUXER 0
2015+#define CONFIG_DTS_MUXER 0
2016+#define CONFIG_DV_MUXER 0
2017+#define CONFIG_EAC3_MUXER 0
2018+#define CONFIG_EVC_MUXER 0
2019+#define CONFIG_F4V_MUXER 0
2020+#define CONFIG_FFMETADATA_MUXER 0
2021+#define CONFIG_FIFO_MUXER 0
2022+#define CONFIG_FILMSTRIP_MUXER 0
2023+#define CONFIG_FITS_MUXER 0
2024+#define CONFIG_FLAC_MUXER 0
2025+#define CONFIG_FLV_MUXER 0
2026+#define CONFIG_FRAMECRC_MUXER 0
2027+#define CONFIG_FRAMEHASH_MUXER 0
2028+#define CONFIG_FRAMEMD5_MUXER 0
2029+#define CONFIG_G722_MUXER 0
2030+#define CONFIG_G723_1_MUXER 0
2031+#define CONFIG_G726_MUXER 0
2032+#define CONFIG_G726LE_MUXER 0
2033+#define CONFIG_GIF_MUXER 0
2034+#define CONFIG_GSM_MUXER 0
2035+#define CONFIG_GXF_MUXER 0
2036+#define CONFIG_H261_MUXER 0
2037+#define CONFIG_H263_MUXER 0
2038+#define CONFIG_H264_MUXER 0
2039+#define CONFIG_HASH_MUXER 0
2040+#define CONFIG_HDS_MUXER 0
2041+#define CONFIG_HEVC_MUXER 0
2042+#define CONFIG_HLS_MUXER 0
2043+#define CONFIG_IAMF_MUXER 0
2044+#define CONFIG_ICO_MUXER 0
2045+#define CONFIG_ILBC_MUXER 0
2046+#define CONFIG_IMAGE2_MUXER 1
2047+#define CONFIG_IMAGE2PIPE_MUXER 0
2048+#define CONFIG_IPOD_MUXER 0
2049+#define CONFIG_IRCAM_MUXER 0
2050+#define CONFIG_ISMV_MUXER 0
2051+#define CONFIG_IVF_MUXER 0
2052+#define CONFIG_JACOSUB_MUXER 0
2053+#define CONFIG_KVAG_MUXER 0
2054+#define CONFIG_LATM_MUXER 0
2055+#define CONFIG_LRC_MUXER 0
2056+#define CONFIG_M4V_MUXER 0
2057+#define CONFIG_MD5_MUXER 0
2058+#define CONFIG_MATROSKA_MUXER 1
2059+#define CONFIG_MATROSKA_AUDIO_MUXER 0
2060+#define CONFIG_MICRODVD_MUXER 0
2061+#define CONFIG_MJPEG_MUXER 0
2062+#define CONFIG_MLP_MUXER 0
2063+#define CONFIG_MMF_MUXER 0
2064+#define CONFIG_MOV_MUXER 1
2065+#define CONFIG_MP2_MUXER 0
2066+#define CONFIG_MP3_MUXER 0
2067+#define CONFIG_MP4_MUXER 1
2068+#define CONFIG_MPEG1SYSTEM_MUXER 0
2069+#define CONFIG_MPEG1VCD_MUXER 0
2070+#define CONFIG_MPEG1VIDEO_MUXER 0
2071+#define CONFIG_MPEG2DVD_MUXER 0
2072+#define CONFIG_MPEG2SVCD_MUXER 0
2073+#define CONFIG_MPEG2VIDEO_MUXER 0
2074+#define CONFIG_MPEG2VOB_MUXER 0
2075+#define CONFIG_MPEGTS_MUXER 0
2076+#define CONFIG_MPJPEG_MUXER 0
2077+#define CONFIG_MXF_MUXER 0
2078+#define CONFIG_MXF_D10_MUXER 0
2079+#define CONFIG_MXF_OPATOM_MUXER 0
2080+#define CONFIG_NULL_MUXER 0
2081+#define CONFIG_NUT_MUXER 0
2082+#define CONFIG_OBU_MUXER 0
2083+#define CONFIG_OGA_MUXER 0
2084+#define CONFIG_OGG_MUXER 0
2085+#define CONFIG_OGV_MUXER 0
2086+#define CONFIG_OMA_MUXER 0
2087+#define CONFIG_OPUS_MUXER 1
2088+#define CONFIG_PCM_ALAW_MUXER 0
2089+#define CONFIG_PCM_MULAW_MUXER 0
2090+#define CONFIG_PCM_VIDC_MUXER 0
2091+#define CONFIG_PCM_F64BE_MUXER 0
2092+#define CONFIG_PCM_F64LE_MUXER 0
2093+#define CONFIG_PCM_F32BE_MUXER 0
2094+#define CONFIG_PCM_F32LE_MUXER 0
2095+#define CONFIG_PCM_S32BE_MUXER 0
2096+#define CONFIG_PCM_S32LE_MUXER 0
2097+#define CONFIG_PCM_S24BE_MUXER 0
2098+#define CONFIG_PCM_S24LE_MUXER 0
2099+#define CONFIG_PCM_S16BE_MUXER 0
2100+#define CONFIG_PCM_S16LE_MUXER 0
2101+#define CONFIG_PCM_S8_MUXER 0
2102+#define CONFIG_PCM_U32BE_MUXER 0
2103+#define CONFIG_PCM_U32LE_MUXER 0
2104+#define CONFIG_PCM_U24BE_MUXER 0
2105+#define CONFIG_PCM_U24LE_MUXER 0
2106+#define CONFIG_PCM_U16BE_MUXER 0
2107+#define CONFIG_PCM_U16LE_MUXER 0
2108+#define CONFIG_PCM_U8_MUXER 0
2109+#define CONFIG_PSP_MUXER 0
2110+#define CONFIG_RAWVIDEO_MUXER 1
2111+#define CONFIG_RCWT_MUXER 0
2112+#define CONFIG_RM_MUXER 0
2113+#define CONFIG_ROQ_MUXER 0
2114+#define CONFIG_RSO_MUXER 0
2115+#define CONFIG_RTP_MUXER 0
2116+#define CONFIG_RTP_MPEGTS_MUXER 0
2117+#define CONFIG_RTSP_MUXER 0
2118+#define CONFIG_SAP_MUXER 0
2119+#define CONFIG_SBC_MUXER 0
2120+#define CONFIG_SCC_MUXER 0
2121+#define CONFIG_SEGAFILM_MUXER 0
2122+#define CONFIG_SEGMENT_MUXER 0
2123+#define CONFIG_STREAM_SEGMENT_MUXER 0
2124+#define CONFIG_SMJPEG_MUXER 0
2125+#define CONFIG_SMOOTHSTREAMING_MUXER 0
2126+#define CONFIG_SOX_MUXER 0
2127+#define CONFIG_SPX_MUXER 0
2128+#define CONFIG_SPDIF_MUXER 1
2129+#define CONFIG_SRT_MUXER 0
2130+#define CONFIG_STREAMHASH_MUXER 0
2131+#define CONFIG_SUP_MUXER 0
2132+#define CONFIG_SWF_MUXER 0
2133+#define CONFIG_TEE_MUXER 0
2134+#define CONFIG_TG2_MUXER 0
2135+#define CONFIG_TGP_MUXER 0
2136+#define CONFIG_MKVTIMESTAMP_V2_MUXER 0
2137+#define CONFIG_TRUEHD_MUXER 0
2138+#define CONFIG_TTA_MUXER 0
2139+#define CONFIG_TTML_MUXER 0
2140+#define CONFIG_UNCODEDFRAMECRC_MUXER 0
2141+#define CONFIG_VC1_MUXER 0
2142+#define CONFIG_VC1T_MUXER 0
2143+#define CONFIG_VOC_MUXER 0
2144+#define CONFIG_VVC_MUXER 0
2145+#define CONFIG_W64_MUXER 0
2146+#define CONFIG_WAV_MUXER 1
2147+#define CONFIG_WEBM_MUXER 0
2148+#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
2149+#define CONFIG_WEBM_CHUNK_MUXER 0
2150+#define CONFIG_WEBP_MUXER 0
2151+#define CONFIG_WEBVTT_MUXER 0
2152+#define CONFIG_WSAUD_MUXER 0
2153+#define CONFIG_WTV_MUXER 0
2154+#define CONFIG_WV_MUXER 0
2155+#define CONFIG_YUV4MPEGPIPE_MUXER 1
2156+#define CONFIG_CHROMAPRINT_MUXER 0
2157+#define CONFIG_ANDROID_CONTENT_PROTOCOL 0
2158+#define CONFIG_ASYNC_PROTOCOL 0
2159+#define CONFIG_BLURAY_PROTOCOL 0
2160+#define CONFIG_CACHE_PROTOCOL 0
2161+#define CONFIG_CONCAT_PROTOCOL 0
2162+#define CONFIG_CONCATF_PROTOCOL 0
2163+#define CONFIG_CRYPTO_PROTOCOL 1
2164+#define CONFIG_DATA_PROTOCOL 0
2165+#define CONFIG_FD_PROTOCOL 1
2166+#define CONFIG_FFRTMPCRYPT_PROTOCOL 0
2167+#define CONFIG_FFRTMPHTTP_PROTOCOL 0
2168+#define CONFIG_FILE_PROTOCOL 1
2169+#define CONFIG_FTP_PROTOCOL 0
2170+#define CONFIG_GOPHER_PROTOCOL 0
2171+#define CONFIG_GOPHERS_PROTOCOL 0
2172+#define CONFIG_HLS_PROTOCOL 0
2173+#define CONFIG_HTTP_PROTOCOL 1
2174+#define CONFIG_HTTPPROXY_PROTOCOL 0
2175+#define CONFIG_HTTPS_PROTOCOL 1
2176+#define CONFIG_ICECAST_PROTOCOL 0
2177+#define CONFIG_MMSH_PROTOCOL 0
2178+#define CONFIG_MMST_PROTOCOL 0
2179+#define CONFIG_MD5_PROTOCOL 0
2180+#define CONFIG_PIPE_PROTOCOL 1
2181+#define CONFIG_PROMPEG_PROTOCOL 0
2182+#define CONFIG_RTMP_PROTOCOL 0
2183+#define CONFIG_RTMPE_PROTOCOL 0
2184+#define CONFIG_RTMPS_PROTOCOL 0
2185+#define CONFIG_RTMPT_PROTOCOL 0
2186+#define CONFIG_RTMPTE_PROTOCOL 0
2187+#define CONFIG_RTMPTS_PROTOCOL 0
2188+#define CONFIG_RTP_PROTOCOL 0
2189+#define CONFIG_SCTP_PROTOCOL 0
2190+#define CONFIG_SRTP_PROTOCOL 0
2191+#define CONFIG_SUBFILE_PROTOCOL 0
2192+#define CONFIG_TEE_PROTOCOL 0
2193+#define CONFIG_TCP_PROTOCOL 1
2194+#define CONFIG_TLS_PROTOCOL 1
2195+#define CONFIG_UDP_PROTOCOL 0
2196+#define CONFIG_UDPLITE_PROTOCOL 0
2197+#define CONFIG_UNIX_PROTOCOL 0
2198+#define CONFIG_LIBAMQP_PROTOCOL 0
2199+#define CONFIG_LIBRIST_PROTOCOL 0
2200+#define CONFIG_LIBRTMP_PROTOCOL 0
2201+#define CONFIG_LIBRTMPE_PROTOCOL 0
2202+#define CONFIG_LIBRTMPS_PROTOCOL 0
2203+#define CONFIG_LIBRTMPT_PROTOCOL 0
2204+#define CONFIG_LIBRTMPTE_PROTOCOL 0
2205+#define CONFIG_LIBSRT_PROTOCOL 0
2206+#define CONFIG_LIBSSH_PROTOCOL 0
2207+#define CONFIG_LIBSMBCLIENT_PROTOCOL 0
2208+#define CONFIG_LIBZMQ_PROTOCOL 0
2209+#define CONFIG_IPFS_GATEWAY_PROTOCOL 0
2210+#define CONFIG_IPNS_GATEWAY_PROTOCOL 0
2211+#endif
+487, -0
  1@@ -0,0 +1,487 @@
  2+local arch = 'x86'
  3+cflags{
  4+	'-Wno-deprecated-declarations',
  5+	'-Wno-discarded-qualifiers',
  6+	'-Wno-stringop-overflow',
  7+	'-I $dir/include',
  8+	'-I $outdir',
  9+	'-I $outdir/include',
 10+	'-I $outdir/internal',
 11+	'-I $srcdir',
 12+	'-I $srcdir/libavcodec',
 13+}
 14+nasmflags{
 15+	'-i $srcdir/',
 16+	'-i $srcdir/libavcodec/'..arch..'/',
 17+	'-i $srcdir/libavutil/'..arch..'/',
 18+	'-f elf64',
 19+	'-P $outdir/config.asm',
 20+}
 21+
 22+-- TODO: Copy the rest of the headers.
 23+pkg.hdrs = {
 24+	'$outdir/include/libavutil/avconfig.h',
 25+	'$outdir/include/libavutil/ffversion.h',
 26+}
 27+pkg.deps = {
 28+	'$outdir/config.asm',
 29+	'$outdir/config.h',
 30+	'$outdir/config_components.h',
 31+	'$gendir/headers',
 32+}
 33+
 34+local probe = {
 35+	'$builddir/probe/PIC',
 36+	'$builddir/probe/HAVE_INLINE_ASM',
 37+	'$builddir/probe/HAVE_MMINTRIN_H',
 38+}
 39+
 40+build('cat', '$outdir/config.h', {'$dir/config-head.h', probe, '$dir/config.h', '$dir/config-tail.h'})
 41+build('copy', '$outdir/config_components.h', '$dir/config_components.h')
 42+build('sed', '$outdir/config.asm', {probe, '$dir/config.h'}, {
 43+	expr=[[-n -e 's,^# *,%,p']],
 44+})
 45+build('awk', '$outdir/config.texi', '$dir/config.h', {
 46+	expr=[['$$3 == "1" {gsub("_", "-", $$2); print "@set", tolower($$2), "yes"}']],
 47+})
 48+build('awk', '$outdir/include/libavutil/avconfig.h', {'$dir/config.h', '|', '$dir/avconfig.awk'}, {
 49+	expr='-f $dir/avconfig.awk',
 50+})
 51+
 52+rule('genlist', 'lua $dir/list.lua $dir/config_components.h $type $var <$in >$out')
 53+local function genlist(out, src, type, var)
 54+	build('genlist', out, {src, '|', '$dir/list.lua', '$dir/config_components.h'}, {type=type, var=var})
 55+	table.insert(pkg.deps, out)
 56+end
 57+genlist('$outdir/internal/libavfilter/filter_list.c', '$srcdir/libavfilter/allfilters.c', 'AVFilter', 'filter_list')
 58+genlist('$outdir/internal/libavcodec/codec_list.c', '$srcdir/libavcodec/allcodecs.c', 'FFCodec', 'codec_list')
 59+genlist('$outdir/internal/libavcodec/parser_list.c', '$srcdir/libavcodec/parsers.c', 'AVCodecParser', 'parser_list')
 60+genlist('$outdir/internal/libavcodec/bsf_list.c', '$srcdir/libavcodec/bitstream_filters.c', 'FFBitStreamFilter', 'bitstream_filters')
 61+genlist('$outdir/internal/libavformat/demuxer_list.c', '$srcdir/libavformat/allformats.c', 'FFInputFormat', 'demuxer_list')
 62+genlist('$outdir/internal/libavformat/muxer_list.c', '$srcdir/libavformat/allformats.c', 'FFOutputFormat', 'muxer_list')
 63+genlist('$outdir/internal/libavdevice/indev_list.c', '$srcdir/libavdevice/alldevices.c', 'FFInputFormat', 'indev_list')
 64+genlist('$outdir/internal/libavdevice/outdev_list.c', '$srcdir/libavdevice/alldevices.c', 'FFOutputFormat', 'outdev_list')
 65+genlist('$outdir/internal/libavformat/protocol_list.c', '$srcdir/libavformat/protocols.c', 'URLProtocol', 'url_protocols')
 66+
 67+build('awk', '$outdir/include/libavutil/ffversion.h', {'$dir/ver'}, {
 68+	expr=[['{printf "#define FFMPEG_VERSION \"%s\"\n", $$1}']],
 69+})
 70+
 71+local options = {}
 72+for _, file in ipairs{'config.h', 'config_components.h'} do
 73+	for line in iterlines(file, 1) do
 74+		local cfg, val = line:match('^#define ([^ ]+) ([^ ]+)')
 75+		if cfg then
 76+			options[cfg] = val == '1'
 77+		end
 78+	end
 79+end
 80+local sources = {
 81+	libavcodec={},
 82+	libavdevice={},
 83+	libavfilter={},
 84+	libavformat={},
 85+	libavutil={},
 86+	libswresample={},
 87+	libswscale={},
 88+}
 89+local archs = {
 90+	['aarch64']=true,
 91+	['alpha']=true,
 92+	['arm']=true,
 93+	['avr32']=true,
 94+	['avr32_ap']=true,
 95+	['avr32_uc']=true,
 96+	['bfin']=true,
 97+	['ia64']=true,
 98+	['loongarch']=true,
 99+	['m68k']=true,
100+	['mips']=true,
101+	['parisc']=true,
102+	['ppc']=true,
103+	['riscv']=true,
104+	['s390']=true,
105+	['sh4']=true,
106+	['sparc']=true,
107+	['tilegx']=true,
108+	['tilepro']=true,
109+	['x86']=true,
110+}
111+for line in iterlines('sources.txt', 1) do
112+	local i = line:find(' ', 1, true)
113+	if i and options[line:sub(1, i - 1)] then
114+		for src, lib, dir in line:gmatch('(([%w_-]+)/?([%w_-]*)[%w_/-]*/[%w_.-]+)', i + 1) do
115+			if not archs[dir] or dir == arch then
116+				sources[lib][src] = true
117+			end
118+		end
119+	end
120+end
121+-- combination option in libavutil/x86/Makefile
122+if not options.HAVE_MMX_INLINE and options.HAVE_MMX_EXTERNAL and not options.HAVE_MM_EMPTY then
123+	sources.libavutil['libavutil/x86/emms.asm'] = true
124+end
125+for lib, srcs in pairs(sources) do
126+	sources[lib] = table.keys(srcs)
127+end
128+
129+if options.CONFIG_ALSA_INDEV or options.config_ALSA_OUTDEV then
130+	cflags{'-isystem $builddir/pkg/alsa-lib/include'}
131+	table.insert(pkg.deps, 'pkg/alsa-lib/headers')
132+	table.insert(sources.libavdevice, '$builddir/pkg/alsa-lib/libasound.a')
133+end
134+
135+if options.CONFIG_LIBDAV1D_DECODER then
136+	cflags{'-isystem $builddir/pkg/dav1d/include'}
137+	table.insert(pkg.deps, 'pkg/dav1d/headers')
138+	table.insert(sources.libavcodec, '$builddir/pkg/dav1d/libdav1d.a')
139+end
140+
141+if options.CONFIG_TLS_PROTOCOL and options.CONFIG_LIBTLS then
142+	cflags{'-isystem $builddir/pkg/libtls-bearssl/include'}
143+	table.insert(pkg.deps, 'pkg/libtls-bearssl/headers')
144+	table.insert(sources.libavformat, '$builddir/pkg/libtls-bearssl/libtls.a.d')
145+end
146+
147+if options.CONFIG_TLS_PROTOCOL and options.CONFIG_OPENSSL then
148+	cflags{'-isystem $builddir/pkg/libressl/include'}
149+	table.insert(pkg.deps, 'pkg/libressl/headers')
150+	table.insert(sources.libavformat, '$builddir/pkg/libressl/libssl.a.d')
151+end
152+
153+if options.CONFIG_LIBOPUS_ENCODER or options.CONFIG_LIBOPUS_DECODER then
154+	cflags{'-isystem $builddir/pkg/opus/include'}
155+	table.insert(pkg.deps, 'pkg/opus/headers')
156+	table.insert(sources.libavcodec, '$builddir/pkg/opus/libopus.a')
157+end
158+
159+if options.CONFIG_ZLIB then
160+	cflags{'-isystem $builddir/pkg/zlib/include'}
161+	table.insert(pkg.deps, 'pkg/zlib/headers')
162+	table.insert(sources.libavcodec, '$builddir/pkg/zlib/libz.a')
163+	table.insert(sources.libavformat, '$builddir/pkg/zlib/libz.a')
164+end
165+
166+if options.CONFIG_BLURAY_PROTOCOL then
167+	cflags{'-isystem $builddir/pkg/libbluray/include'}
168+	table.insert(pkg.deps, 'pkg/libbluray/headers')
169+	table.insert(sources.libavcodec, '$builddir/pkg/libbluray/libbluray.a.d')
170+end
171+
172+sub('lib.ninja', function()
173+cflags{'-D HAVE_AV_CONFIG_H'}
174+lib('libavcodec.a', {
175+	expand{'libavcodec/', {
176+		'ac3_parser.c',
177+		'adts_parser.c',
178+		'allcodecs.c',
179+		'avcodec.c',
180+		'avdct.c',
181+		'avfft.c',
182+		'avpacket.c',
183+		'bitstream.c',
184+		'bitstream_filters.c',
185+		'bsf.c',
186+		'codec_desc.c',
187+		'codec_par.c',
188+		'd3d11va.c',
189+		'decode.c',
190+		'dirac.c',
191+		'dv_profile.c',
192+		'encode.c',
193+		'get_buffer.c',
194+		'imgconvert.c',
195+		'jni.c',
196+		'mathtables.c',
197+		'mediacodec.c',
198+		'mpeg12framerate.c',
199+		'options.c',
200+		'parser.c',
201+		'parsers.c',
202+		'profiles.c',
203+		'qsv_api.c',
204+		'raw.c',
205+		'refstruct.c',
206+		'utils.c',
207+		'version.c',
208+		'vlc.c',
209+		'vorbis_parser.c',
210+		'xiph.c',
211+		'x86/constants.c',
212+	}},
213+	sources.libavcodec,
214+	'libavutil.a',
215+})
216+
217+lib('libavdevice.a', {
218+	expand{'libavdevice/', {
219+		'alldevices.c',
220+		'avdevice.c',
221+		'utils.c',
222+		'version.c',
223+	}},
224+	sources.libavdevice,
225+	'libavcodec.a.d',
226+	'libavformat.a.d',
227+	'libavutil.a',
228+})
229+
230+lib('libavfilter.a', {
231+	expand{'libavfilter/', {
232+		'allfilters.c',
233+		'audio.c',
234+		'avfilter.c',
235+		'avfiltergraph.c',
236+		'buffersink.c',
237+		'buffersrc.c',
238+		'colorspace.c',
239+		'ccfifo.c',
240+		'drawutils.c',
241+		'formats.c',
242+		'framepool.c',
243+		'framequeue.c',
244+		'graphdump.c',
245+		'graphparser.c',
246+		'version.c',
247+		'video.c',
248+	}},
249+	sources.libavfilter,
250+	'libavutil.a',
251+})
252+
253+cc('libavformat/protocols.c', {'$gendir/deps', '$outdir/internal/libavformat/protocol_list.c'})
254+lib('libavformat.a', {
255+	expand{'libavformat/', {
256+		'allformats.c',
257+		'avformat.c',
258+		'avio.c',
259+		'aviobuf.c',
260+		'demux.c',
261+		'demux_utils.c',
262+		'dump.c',
263+		'dv.c',
264+		'format.c',
265+		'id3v1.c',
266+		'id3v2.c',
267+		'isom_tags.c',
268+		'metadata.c',
269+		'mux.c',
270+		'mux_utils.c',
271+		'options.c',
272+		'os_support.c',
273+		'protocols.c.o',
274+		'riff.c',
275+		'sdp.c',
276+		'seek.c',
277+		'url.c',
278+		'utils.c',
279+		'version.c',
280+	}},
281+	sources.libavformat,
282+	'libavcodec.a.d',
283+	'libavutil.a',
284+})
285+
286+lib('libavutil.a', {
287+	expand{'libavutil/', {
288+		'adler32.c',
289+		'aes.c',
290+		'aes_ctr.c',
291+		'ambient_viewing_environment.c',
292+		'audio_fifo.c',
293+		'avstring.c',
294+		'avsscanf.c',
295+		'base64.c',
296+		'blowfish.c',
297+		'bprint.c',
298+		'buffer.c',
299+		'cast5.c',
300+		'camellia.c',
301+		'channel_layout.c',
302+		'cpu.c',
303+		'crc.c',
304+		'csp.c',
305+		'des.c',
306+		'detection_bbox.c',
307+		'dict.c',
308+		'display.c',
309+		'dovi_meta.c',
310+		'downmix_info.c',
311+		'encryption_info.c',
312+		'error.c',
313+		'eval.c',
314+		'executor.c',
315+		'fifo.c',
316+		'file.c',
317+		'file_open.c',
318+		'float_dsp.c',
319+		'fixed_dsp.c',
320+		'frame.c',
321+		'hash.c',
322+		'hdr_dynamic_metadata.c',
323+		'hdr_dynamic_vivid_metadata.c',
324+		'hmac.c',
325+		'hwcontext.c',
326+		'iamf.c',
327+		'imgutils.c',
328+		'integer.c',
329+		'intmath.c',
330+		'lfg.c',
331+		'lls.c',
332+		'log.c',
333+		'log2_tab.c',
334+		'lzo.c',
335+		'mathematics.c',
336+		'mastering_display_metadata.c',
337+		'md5.c',
338+		'mem.c',
339+		'murmur3.c',
340+		'opt.c',
341+		'parseutils.c',
342+		'pixdesc.c',
343+		'pixelutils.c',
344+		'random_seed.c',
345+		'rational.c',
346+		'reverse.c',
347+		'rc4.c',
348+		'ripemd.c',
349+		'samplefmt.c',
350+		'sha.c',
351+		'sha512.c',
352+		'slicethread.c',
353+		'spherical.c',
354+		'stereo3d.c',
355+		'threadmessage.c',
356+		'time.c',
357+		'timecode.c',
358+		'timestamp.c',
359+		'tree.c',
360+		'twofish.c',
361+		'utils.c',
362+		'xga_font_data.c',
363+		'xtea.c',
364+		'tea.c',
365+		'tx.c',
366+		'tx_float.c',
367+		'tx_double.c',
368+		'tx_int32.c',
369+		'uuid.c',
370+		'version.c',
371+		'video_enc_params.c',
372+		'video_hint.c',
373+		'film_grain_params.c',
374+		'x86/cpu.c',
375+		'x86/fixed_dsp_init.c',
376+		'x86/float_dsp_init.c',
377+		'x86/imgutils_init.c',
378+		'x86/lls_init.c',
379+		'x86/cpuid.asm',
380+		'x86/fixed_dsp.asm',
381+		'x86/float_dsp.asm',
382+		'x86/imgutils.asm',
383+		'x86/lls.asm',
384+		'x86/tx_float.asm',
385+	}},
386+	sources.libavutil,
387+})
388+
389+lib('libswresample.a', {
390+	expand{'libswresample/', {
391+		'audioconvert.c',
392+		'dither.c',
393+		'options.c',
394+		'rematrix.c',
395+		'resample.c',
396+		'resample_dsp.c',
397+		'swresample.c',
398+		'swresample_frame.c',
399+		'version.c',
400+		'x86/audio_convert.asm',
401+		'x86/rematrix.asm',
402+		'x86/resample.asm',
403+		'x86/audio_convert_init.c',
404+		'x86/rematrix_init.c',
405+		'x86/resample_init.c',
406+	}},
407+	sources.libswresample,
408+	'libavutil.a',
409+})
410+
411+lib('libswscale.a', {
412+	expand{'libswscale/', {
413+		'alphablend.c',
414+		'hscale.c',
415+		'hscale_fast_bilinear.c',
416+		'gamma.c',
417+		'half2float.c',
418+		'input.c',
419+		'options.c',
420+		'output.c',
421+		'rgb2rgb.c',
422+		'slice.c',
423+		'swscale.c',
424+		'swscale_unscaled.c',
425+		'utils.c',
426+		'version.c',
427+		'yuv2rgb.c',
428+		'vscale.c',
429+		'x86/rgb2rgb.c',
430+		'x86/swscale.c',
431+		'x86/yuv2rgb.c',
432+		'x86/hscale_fast_bilinear_simd.c',
433+		'x86/input.asm',
434+		'x86/output.asm',
435+		'x86/scale.asm',
436+		'x86/scale_avx2.asm',
437+		'x86/rgb_2_rgb.asm',
438+		'x86/yuv_2_rgb.asm',
439+		'x86/yuv2yuvX.asm',
440+	}},
441+	sources.libswscale,
442+	'libavutil.a',
443+})
444+end)
445+
446+local libs = {
447+	'libavcodec.a.d',
448+	'libavdevice.a.d',
449+	'libavfilter.a.d',
450+	'libavformat.a.d',
451+	'libavutil.a',
452+	'libswresample.a.d',
453+	'libswscale.a.d',
454+}
455+
456+cc('fftools/cmdutils.c', {'$gendir/deps'})
457+cc('fftools/opt_common.c', {'$gendir/deps'})
458+
459+exe('ffprobe', {paths[[fftools/(ffprobe.c cmdutils.c.o opt_common.c.o)]], libs})
460+file('bin/ffprobe', '755', '$outdir/ffprobe')
461+
462+exe('ffmpeg', {paths[[
463+	fftools/(
464+		ffmpeg.c
465+		ffmpeg_dec.c
466+		ffmpeg_demux.c
467+		ffmpeg_enc.c
468+		ffmpeg_filter.c
469+		ffmpeg_hw.c
470+		ffmpeg_mux.c
471+		ffmpeg_mux_init.c
472+		ffmpeg_opt.c
473+		ffmpeg_sched.c
474+		objpool.c
475+		sync_queue.c
476+		thread_queue.c
477+		cmdutils.c.o
478+		opt_common.c.o
479+	)
480+]], libs})
481+file('bin/ffmpeg', '755', '$outdir/ffmpeg')
482+
483+rule('texi2mdoc', [[$builddir/pkg/texi2mdoc/host/texi2mdoc -d 'August 2, 2024' -I $outdir $in >$out]])
484+build('texi2mdoc', '$outdir/ffprobe.1', {'$srcdir/doc/ffprobe.texi', '|', '$outdir/config.texi', '$builddir/pkg/texi2mdoc/host/texi2mdoc'})
485+build('texi2mdoc', '$outdir/ffmpeg.1', {'$srcdir/doc/ffmpeg.texi', '|', '$outdir/config.texi', '$builddir/pkg/texi2mdoc/host/texi2mdoc'})
486+man{'$outdir/ffprobe.1', '$outdir/ffmpeg.1'}
487+
488+fetch 'git'
+5, -0
1@@ -0,0 +1,5 @@
2+#ifdef __STDC_NO_ATOMICS__
3+# include <compat/atomics/dummy/stdatomic.h>
4+#else
5+# include_next <stdatomic.h>
6+#endif
+45, -0
 1@@ -0,0 +1,45 @@
 2+local optionshdr = arg[1]
 3+local type = arg[2]
 4+local var = arg[3]
 5+
 6+local options = {}
 7+for line in io.lines(optionshdr) do
 8+	local cfg, val = line:match('^#define CONFIG_([%w_]+) (%d)$')
 9+	if cfg then
10+		options[cfg] = val == '1'
11+	end
12+end
13+
14+print('static const '..type..' *const '..var..'[] = {')
15+for line in io.lines() do
16+	local name = line:match('^extern .*'..type..' +ff_([%w_]+);$')
17+	if name then
18+		local cfg
19+		if var == 'filter_list' then
20+			local i = name:find('_', 1, true)
21+			if i then
22+				cfg = name:sub(i + 1)..'_filter'
23+			end
24+		elseif var == 'outdev_list' then
25+			if name:sub(-6) == '_muxer' then
26+				cfg = name:sub(1, -7)..'_outdev'
27+			end
28+		elseif var == 'indev_list' then
29+			if name:sub(-8) == '_demuxer' then
30+				cfg = name:sub(1, -9)..'_indev'
31+			end
32+		else
33+			cfg = name
34+		end
35+		if cfg and options[cfg:upper()] then
36+			print('&ff_'..name..',')
37+		end
38+	end
39+end
40+if var == 'filter_list' then
41+	print('&ff_asrc_abuffer,')
42+	print('&ff_vsrc_buffer,')
43+	print('&ff_asink_abuffer,')
44+	print('&ff_vsink_buffer,')
45+end
46+print('NULL};')
+27, -0
 1@@ -0,0 +1,27 @@
 2+From ac61188ac8c177bceb48dd2b373caaf7a639f266 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Tue, 7 Sep 2021 01:39:36 -0700
 5+Subject: [PATCH] libavutil: Remove last use of long double
 6+
 7+The commit that introduced this file mentioned converting all long
 8+double to double, so presumably this one was just missed.
 9+---
10+ libavutil/avsscanf.c | 2 +-
11+ 1 file changed, 1 insertion(+), 1 deletion(-)
12+
13+diff --git a/libavutil/avsscanf.c b/libavutil/avsscanf.c
14+index b7f0f71c2d..31530dde67 100644
15+--- a/libavutil/avsscanf.c
16++++ b/libavutil/avsscanf.c
17+@@ -440,7 +440,7 @@ static double decfloat(FFFILE *f, int c, int bits, int emin, int sign, int pok)
18+     /* Assemble desired bits into floating point variable */
19+     for (y=i=0; i<LD_B1B_DIG; i++) {
20+         if ((a+i & MASK)==z) x[(z=(z+1 & MASK))-1] = 0;
21+-        y = 1000000000.0L * y + x[a+i & MASK];
22++        y = 1000000000.0 * y + x[a+i & MASK];
23+     }
24+ 
25+     y *= sign;
26+-- 
27+2.32.0
28+
+114, -0
  1@@ -0,0 +1,114 @@
  2+From cda1b59c7ed7bb7dc5951552f33b214fe4e64f05 Mon Sep 17 00:00:00 2001
  3+From: Michael Forney <mforney@mforney.org>
  4+Date: Tue, 7 Sep 2021 01:41:48 -0700
  5+Subject: [PATCH] libavcodec: Prevent stray semicolon at top-level
  6+
  7+If any of these codecs are disabled, we end up with a stray semicolon,
  8+which is not allowed in ISO C.
  9+
 10+Instead, move the semicolon to the macro definition, so that there
 11+is no problem if it expands to an empty token sequence.
 12+---
 13+ libavcodec/pcm.c | 72 ++++++++++++++++++++++++------------------------
 14+ 1 file changed, 36 insertions(+), 36 deletions(-)
 15+
 16+diff --git a/libavcodec/pcm.c b/libavcodec/pcm.c
 17+index 4abca7cc07..3b6ca83d55 100644
 18+--- a/libavcodec/pcm.c
 19++++ b/libavcodec/pcm.c
 20+@@ -558,7 +558,7 @@ const FFCodec ff_ ## name_ ## _encoder = {                                  \
 21+     FF_CODEC_ENCODE_CB(pcm_encode_frame),                                   \
 22+     .p.sample_fmts = (const enum AVSampleFormat[]){ sample_fmt_,             \
 23+                                                    AV_SAMPLE_FMT_NONE },    \
 24+-}
 25++};
 26+ 
 27+ #define PCM_ENCODER_2(cf, id, sample_fmt, name, long_name)                  \
 28+     PCM_ENCODER_ ## cf(id, sample_fmt, name, long_name)
 29+@@ -580,7 +580,7 @@ const FFCodec ff_ ## name_ ## _decoder = {                                  \
 30+     .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_PARAM_CHANGE,         \
 31+     .p.sample_fmts  = (const enum AVSampleFormat[]){ sample_fmt_,           \
 32+                                                      AV_SAMPLE_FMT_NONE },  \
 33+-}
 34++};
 35+ 
 36+ #define PCM_DECODER_2(cf, id, sample_fmt, name, long_name)                  \
 37+     PCM_DECODER_ ## cf(id, sample_fmt, name, long_name)
 38+@@ -590,40 +590,40 @@ const FFCodec ff_ ## name_ ## _decoder = {                                  \
 39+     PCM_DECODER_3(CONFIG_ ## id ## _DECODER, id, sample_fmt, name, long_name)
 40+ 
 41+ #define PCM_CODEC(id, sample_fmt_, name, long_name_)                    \
 42+-    PCM_ENCODER(id, sample_fmt_, name, long_name_);                     \
 43++    PCM_ENCODER(id, sample_fmt_, name, long_name_)                      \
 44+     PCM_DECODER(id, sample_fmt_, name, long_name_)
 45+ 
 46+ /* Note: Do not forget to add new entries to the Makefile as well. */
 47+-PCM_CODEC  (PCM_ALAW,         AV_SAMPLE_FMT_S16, pcm_alaw,         "PCM A-law / G.711 A-law");
 48+-PCM_DECODER(PCM_F16LE,        AV_SAMPLE_FMT_FLT, pcm_f16le,        "PCM 16.8 floating point little-endian");
 49+-PCM_DECODER(PCM_F24LE,        AV_SAMPLE_FMT_FLT, pcm_f24le,        "PCM 24.0 floating point little-endian");
 50+-PCM_CODEC  (PCM_F32BE,        AV_SAMPLE_FMT_FLT, pcm_f32be,        "PCM 32-bit floating point big-endian");
 51+-PCM_CODEC  (PCM_F32LE,        AV_SAMPLE_FMT_FLT, pcm_f32le,        "PCM 32-bit floating point little-endian");
 52+-PCM_CODEC  (PCM_F64BE,        AV_SAMPLE_FMT_DBL, pcm_f64be,        "PCM 64-bit floating point big-endian");
 53+-PCM_CODEC  (PCM_F64LE,        AV_SAMPLE_FMT_DBL, pcm_f64le,        "PCM 64-bit floating point little-endian");
 54+-PCM_DECODER(PCM_LXF,          AV_SAMPLE_FMT_S32P,pcm_lxf,          "PCM signed 20-bit little-endian planar");
 55+-PCM_CODEC  (PCM_MULAW,        AV_SAMPLE_FMT_S16, pcm_mulaw,        "PCM mu-law / G.711 mu-law");
 56+-PCM_CODEC  (PCM_S8,           AV_SAMPLE_FMT_U8,  pcm_s8,           "PCM signed 8-bit");
 57+-PCM_CODEC  (PCM_S8_PLANAR,    AV_SAMPLE_FMT_U8P, pcm_s8_planar,    "PCM signed 8-bit planar");
 58+-PCM_CODEC  (PCM_S16BE,        AV_SAMPLE_FMT_S16, pcm_s16be,        "PCM signed 16-bit big-endian");
 59+-PCM_CODEC  (PCM_S16BE_PLANAR, AV_SAMPLE_FMT_S16P,pcm_s16be_planar, "PCM signed 16-bit big-endian planar");
 60+-PCM_CODEC  (PCM_S16LE,        AV_SAMPLE_FMT_S16, pcm_s16le,        "PCM signed 16-bit little-endian");
 61+-PCM_CODEC  (PCM_S16LE_PLANAR, AV_SAMPLE_FMT_S16P,pcm_s16le_planar, "PCM signed 16-bit little-endian planar");
 62+-PCM_CODEC  (PCM_S24BE,        AV_SAMPLE_FMT_S32, pcm_s24be,        "PCM signed 24-bit big-endian");
 63+-PCM_CODEC  (PCM_S24DAUD,      AV_SAMPLE_FMT_S16, pcm_s24daud,      "PCM D-Cinema audio signed 24-bit");
 64+-PCM_CODEC  (PCM_S24LE,        AV_SAMPLE_FMT_S32, pcm_s24le,        "PCM signed 24-bit little-endian");
 65+-PCM_CODEC  (PCM_S24LE_PLANAR, AV_SAMPLE_FMT_S32P,pcm_s24le_planar, "PCM signed 24-bit little-endian planar");
 66+-PCM_CODEC  (PCM_S32BE,        AV_SAMPLE_FMT_S32, pcm_s32be,        "PCM signed 32-bit big-endian");
 67+-PCM_CODEC  (PCM_S32LE,        AV_SAMPLE_FMT_S32, pcm_s32le,        "PCM signed 32-bit little-endian");
 68+-PCM_CODEC  (PCM_S32LE_PLANAR, AV_SAMPLE_FMT_S32P,pcm_s32le_planar, "PCM signed 32-bit little-endian planar");
 69+-PCM_CODEC  (PCM_U8,           AV_SAMPLE_FMT_U8,  pcm_u8,           "PCM unsigned 8-bit");
 70+-PCM_CODEC  (PCM_U16BE,        AV_SAMPLE_FMT_S16, pcm_u16be,        "PCM unsigned 16-bit big-endian");
 71+-PCM_CODEC  (PCM_U16LE,        AV_SAMPLE_FMT_S16, pcm_u16le,        "PCM unsigned 16-bit little-endian");
 72+-PCM_CODEC  (PCM_U24BE,        AV_SAMPLE_FMT_S32, pcm_u24be,        "PCM unsigned 24-bit big-endian");
 73+-PCM_CODEC  (PCM_U24LE,        AV_SAMPLE_FMT_S32, pcm_u24le,        "PCM unsigned 24-bit little-endian");
 74+-PCM_CODEC  (PCM_U32BE,        AV_SAMPLE_FMT_S32, pcm_u32be,        "PCM unsigned 32-bit big-endian");
 75+-PCM_CODEC  (PCM_U32LE,        AV_SAMPLE_FMT_S32, pcm_u32le,        "PCM unsigned 32-bit little-endian");
 76+-PCM_CODEC  (PCM_S64BE,        AV_SAMPLE_FMT_S64, pcm_s64be,        "PCM signed 64-bit big-endian");
 77+-PCM_CODEC  (PCM_S64LE,        AV_SAMPLE_FMT_S64, pcm_s64le,        "PCM signed 64-bit little-endian");
 78+-PCM_CODEC  (PCM_VIDC,         AV_SAMPLE_FMT_S16, pcm_vidc,         "PCM Archimedes VIDC");
 79+-PCM_DECODER(PCM_SGA,          AV_SAMPLE_FMT_U8,  pcm_sga,          "PCM SGA");
 80++PCM_CODEC  (PCM_ALAW,         AV_SAMPLE_FMT_S16, pcm_alaw,         "PCM A-law / G.711 A-law")
 81++PCM_DECODER(PCM_F16LE,        AV_SAMPLE_FMT_FLT, pcm_f16le,        "PCM 16.8 floating point little-endian")
 82++PCM_DECODER(PCM_F24LE,        AV_SAMPLE_FMT_FLT, pcm_f24le,        "PCM 24.0 floating point little-endian")
 83++PCM_CODEC  (PCM_F32BE,        AV_SAMPLE_FMT_FLT, pcm_f32be,        "PCM 32-bit floating point big-endian")
 84++PCM_CODEC  (PCM_F32LE,        AV_SAMPLE_FMT_FLT, pcm_f32le,        "PCM 32-bit floating point little-endian")
 85++PCM_CODEC  (PCM_F64BE,        AV_SAMPLE_FMT_DBL, pcm_f64be,        "PCM 64-bit floating point big-endian")
 86++PCM_CODEC  (PCM_F64LE,        AV_SAMPLE_FMT_DBL, pcm_f64le,        "PCM 64-bit floating point little-endian")
 87++PCM_DECODER(PCM_LXF,          AV_SAMPLE_FMT_S32P,pcm_lxf,          "PCM signed 20-bit little-endian planar")
 88++PCM_CODEC  (PCM_MULAW,        AV_SAMPLE_FMT_S16, pcm_mulaw,        "PCM mu-law / G.711 mu-law")
 89++PCM_CODEC  (PCM_S8,           AV_SAMPLE_FMT_U8,  pcm_s8,           "PCM signed 8-bit")
 90++PCM_CODEC  (PCM_S8_PLANAR,    AV_SAMPLE_FMT_U8P, pcm_s8_planar,    "PCM signed 8-bit planar")
 91++PCM_CODEC  (PCM_S16BE,        AV_SAMPLE_FMT_S16, pcm_s16be,        "PCM signed 16-bit big-endian")
 92++PCM_CODEC  (PCM_S16BE_PLANAR, AV_SAMPLE_FMT_S16P,pcm_s16be_planar, "PCM signed 16-bit big-endian planar")
 93++PCM_CODEC  (PCM_S16LE,        AV_SAMPLE_FMT_S16, pcm_s16le,        "PCM signed 16-bit little-endian")
 94++PCM_CODEC  (PCM_S16LE_PLANAR, AV_SAMPLE_FMT_S16P,pcm_s16le_planar, "PCM signed 16-bit little-endian planar")
 95++PCM_CODEC  (PCM_S24BE,        AV_SAMPLE_FMT_S32, pcm_s24be,        "PCM signed 24-bit big-endian")
 96++PCM_CODEC  (PCM_S24DAUD,      AV_SAMPLE_FMT_S16, pcm_s24daud,      "PCM D-Cinema audio signed 24-bit")
 97++PCM_CODEC  (PCM_S24LE,        AV_SAMPLE_FMT_S32, pcm_s24le,        "PCM signed 24-bit little-endian")
 98++PCM_CODEC  (PCM_S24LE_PLANAR, AV_SAMPLE_FMT_S32P,pcm_s24le_planar, "PCM signed 24-bit little-endian planar")
 99++PCM_CODEC  (PCM_S32BE,        AV_SAMPLE_FMT_S32, pcm_s32be,        "PCM signed 32-bit big-endian")
100++PCM_CODEC  (PCM_S32LE,        AV_SAMPLE_FMT_S32, pcm_s32le,        "PCM signed 32-bit little-endian")
101++PCM_CODEC  (PCM_S32LE_PLANAR, AV_SAMPLE_FMT_S32P,pcm_s32le_planar, "PCM signed 32-bit little-endian planar")
102++PCM_CODEC  (PCM_U8,           AV_SAMPLE_FMT_U8,  pcm_u8,           "PCM unsigned 8-bit")
103++PCM_CODEC  (PCM_U16BE,        AV_SAMPLE_FMT_S16, pcm_u16be,        "PCM unsigned 16-bit big-endian")
104++PCM_CODEC  (PCM_U16LE,        AV_SAMPLE_FMT_S16, pcm_u16le,        "PCM unsigned 16-bit little-endian")
105++PCM_CODEC  (PCM_U24BE,        AV_SAMPLE_FMT_S32, pcm_u24be,        "PCM unsigned 24-bit big-endian")
106++PCM_CODEC  (PCM_U24LE,        AV_SAMPLE_FMT_S32, pcm_u24le,        "PCM unsigned 24-bit little-endian")
107++PCM_CODEC  (PCM_U32BE,        AV_SAMPLE_FMT_S32, pcm_u32be,        "PCM unsigned 32-bit big-endian")
108++PCM_CODEC  (PCM_U32LE,        AV_SAMPLE_FMT_S32, pcm_u32le,        "PCM unsigned 32-bit little-endian")
109++PCM_CODEC  (PCM_S64BE,        AV_SAMPLE_FMT_S64, pcm_s64be,        "PCM signed 64-bit big-endian")
110++PCM_CODEC  (PCM_S64LE,        AV_SAMPLE_FMT_S64, pcm_s64le,        "PCM signed 64-bit little-endian")
111++PCM_CODEC  (PCM_VIDC,         AV_SAMPLE_FMT_S16, pcm_vidc,         "PCM Archimedes VIDC")
112++PCM_DECODER(PCM_SGA,          AV_SAMPLE_FMT_U8,  pcm_sga,          "PCM SGA")
113+-- 
114+2.44.0
115+
+45, -0
 1@@ -0,0 +1,45 @@
 2+From 423031475f19346601a913dd24ae5ace3d0d9739 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Tue, 7 Sep 2021 01:44:53 -0700
 5+Subject: [PATCH] libavcodec: Use #if to prevent some unintended dependencies
 6+
 7+---
 8+ libavcodec/mpegvideo_motion.c | 10 ++++++----
 9+ 1 file changed, 6 insertions(+), 4 deletions(-)
10+
11+diff --git a/libavcodec/mpegvideo_motion.c b/libavcodec/mpegvideo_motion.c
12+index 8922f5b1a5..40c364a5cc 100644
13+--- a/libavcodec/mpegvideo_motion.c
14++++ b/libavcodec/mpegvideo_motion.c
15+@@ -207,10 +207,11 @@ void mpeg_motion_internal(MpegEncContext *s,
16+         pix_op[s->chroma_x_shift][uvdxy]
17+             (dest_cr, ptr_cr, uvlinesize, h >> s->chroma_y_shift);
18+     }
19+-    if (!is_mpeg12 && (CONFIG_H261_ENCODER || CONFIG_H261_DECODER) &&
20+-        s->out_format == FMT_H261) {
21++#if CONFIG_H261_ENCODER || CONFIG_H261_DECODER
22++    if (!is_mpeg12 && s->out_format == FMT_H261) {
23+         ff_h261_loop_filter(s);
24+     }
25++#endif
26+ }
27+ /* apply one mpeg motion vector to the three components */
28+ static void mpeg_motion(MpegEncContext *s,
29+@@ -702,11 +703,12 @@ static av_always_inline void mpv_motion_internal(MpegEncContext *s,
30+                         0, 0, 0,
31+                         ref_picture, pix_op, qpix_op,
32+                         s->mv[dir][0][0], s->mv[dir][0][1], 16);
33+-        } else if (!is_mpeg12 && (CONFIG_WMV2_DECODER || CONFIG_WMV2_ENCODER) &&
34+-                   s->mspel && s->codec_id == AV_CODEC_ID_WMV2) {
35++#if CONFIG_WMV2_DECODER || CONFIG_WMV2_ENCODER
36++        } else if (!is_mpeg12 && s->mspel && s->codec_id == AV_CODEC_ID_WMV2) {
37+             ff_mspel_motion(s, dest_y, dest_cb, dest_cr,
38+                             ref_picture, pix_op,
39+                             s->mv[dir][0][0], s->mv[dir][0][1], 16);
40++#endif
41+         } else {
42+             mpeg_motion(s, dest_y, dest_cb, dest_cr, 0,
43+                         ref_picture, pix_op,
44+-- 
45+2.37.3
46+
+49, -0
 1@@ -0,0 +1,49 @@
 2+From c2589a507009d717c3889cd7c7c3803c79a67a67 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Tue, 7 Sep 2021 01:46:57 -0700
 5+Subject: [PATCH] libavutil: Use config instead of compiler to determine
 6+ support for inline asm
 7+
 8+---
 9+ libavutil/x86/intreadwrite.h | 10 +++++-----
10+ 1 file changed, 5 insertions(+), 5 deletions(-)
11+
12+diff --git a/libavutil/x86/intreadwrite.h b/libavutil/x86/intreadwrite.h
13+index 5e57d6a8cd..38ced9a7ce 100644
14+--- a/libavutil/x86/intreadwrite.h
15++++ b/libavutil/x86/intreadwrite.h
16+@@ -25,9 +25,9 @@
17+ #include "config.h"
18+ #include "libavutil/attributes.h"
19+ 
20+-#if HAVE_MMX
21++#if HAVE_MMX_INLINE
22+ 
23+-#ifdef __SSE__
24++#if HAVE_SSE_INLINE
25+ 
26+ #define AV_COPY128 AV_COPY128
27+ static av_always_inline void AV_COPY128(void *d, const void *s)
28+@@ -43,7 +43,7 @@ static av_always_inline void AV_COPY128(void *d, const void *s)
29+ 
30+ #endif /* __SSE__ */
31+ 
32+-#ifdef __SSE2__
33++#if HAVE_SSE2_INLINE
34+ 
35+ #define AV_ZERO128 AV_ZERO128
36+ static av_always_inline void AV_ZERO128(void *d)
37+@@ -56,8 +56,8 @@ static av_always_inline void AV_ZERO128(void *d)
38+             :: "xmm0");
39+ }
40+ 
41+-#endif /* __SSE2__ */
42++#endif /* HAVE_SSE2_INLINE */
43+ 
44+-#endif /* HAVE_MMX */
45++#endif /* HAVE_MMX_INLINE */
46+ 
47+ #endif /* AVUTIL_X86_INTREADWRITE_H */
48+-- 
49+2.44.0
50+
+27, -0
 1@@ -0,0 +1,27 @@
 2+From 4e0c099e66f1e3216b2498eb9c87c12c9034d6a2 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Mon, 25 Oct 2021 17:08:29 -0700
 5+Subject: [PATCH] libavutil: Use C11 _Alignas as fallback for DECLARE_ALIGNED
 6+
 7+---
 8+ libavutil/mem_internal.h | 4 ++++
 9+ 1 file changed, 4 insertions(+)
10+
11+diff --git a/libavutil/mem_internal.h b/libavutil/mem_internal.h
12+index 20f9b3e3f2..a73dfd581b 100644
13+--- a/libavutil/mem_internal.h
14++++ b/libavutil/mem_internal.h
15+@@ -89,6 +89,10 @@
16+     #define DECLARE_ALIGNED_T(n,t,v)    __declspec(align(n)) t v
17+     #define DECLARE_ASM_ALIGNED(n,t,v)  __declspec(align(n)) t v
18+     #define DECLARE_ASM_CONST(n,t,v)    __declspec(align(n)) static const t v
19++#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
20++    #define DECLARE_ALIGNED(n,t,v)      _Alignas(n) t v
21++    #define DECLARE_ASM_ALIGNED(n,t,v)  _Alignas(n) t v
22++    #define DECLARE_ASM_CONST(n,t,v)    static const _Alignas(n) t v
23+ #else
24+     #define DECLARE_ALIGNED_T(n,t,v)    t v
25+     #define DECLARE_ASM_ALIGNED(n,t,v)  t v
26+-- 
27+2.44.0
28+
+32, -0
 1@@ -0,0 +1,32 @@
 2+From 79f1d1f2e080eb37540083381194751b15d50976 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Wed, 14 Aug 2024 17:15:05 -0700
 5+Subject: [PATCH] Revert "lavd/v4l2: Use proper field type for second parameter
 6+ of ioctl() with BSD's"
 7+
 8+This reverts commit 6ab65792ab8e522f5a8a9f432ca11900f35a9d94.
 9+---
10+ libavdevice/v4l2.c | 6 +++---
11+ 1 file changed, 3 insertions(+), 3 deletions(-)
12+
13+diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c
14+index 50ac47ec5a..51291246b3 100644
15+--- a/libavdevice/v4l2.c
16++++ b/libavdevice/v4l2.c
17+@@ -107,10 +107,10 @@ struct video_data {
18+     int (*open_f)(const char *file, int oflag, ...);
19+     int (*close_f)(int fd);
20+     int (*dup_f)(int fd);
21+-#if defined(__sun) || defined(__BIONIC__) || defined(__musl__) /* POSIX-like */
22+-    int (*ioctl_f)(int fd, int request, ...);
23+-#else
24++#ifdef __GLIBC__
25+     int (*ioctl_f)(int fd, unsigned long int request, ...);
26++#else
27++    int (*ioctl_f)(int fd, int request, ...);
28+ #endif
29+     ssize_t (*read_f)(int fd, void *buffer, size_t n);
30+     void *(*mmap_f)(void *start, size_t length, int prot, int flags, int fd, int64_t offset);
31+-- 
32+2.44.0
33+
+30, -0
 1@@ -0,0 +1,30 @@
 2+From 9caa1ecbdf94a9bd5bedc83c602b30821f7fdd23 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Tue, 7 Sep 2021 02:01:31 -0700
 5+Subject: [PATCH] [HACK] Disable __has_builtin for now
 6+
 7+This is only used for detecting __builtin_add_overflow, but since
 8+we use gcc as a preprocessor for cproc, we have no way to tell it
 9+we don't support that feature. Since the built-in is used regardless
10+of __has_builtin on gcc 5.1 or newer, just disable it for now until
11+the cproc preprocessor is complete.
12+---
13+ libavutil/attributes.h | 2 +-
14+ 1 file changed, 1 insertion(+), 1 deletion(-)
15+
16+diff --git a/libavutil/attributes.h b/libavutil/attributes.h
17+index 5cb9fe3452..d70d98abb1 100644
18+--- a/libavutil/attributes.h
19++++ b/libavutil/attributes.h
20+@@ -34,7 +34,7 @@
21+ #    define AV_GCC_VERSION_AT_MOST(x,y)  0
22+ #endif
23+ 
24+-#ifdef __has_builtin
25++#if 0
26+ #    define AV_HAS_BUILTIN(x) __has_builtin(x)
27+ #else
28+ #    define AV_HAS_BUILTIN(x) 0
29+-- 
30+2.32.0
31+
+15, -0
 1@@ -0,0 +1,15 @@
 2+To generate `sources.txt`, first run configure ffmpeg
 3+
 4+	../src/configure
 5+
 6+Then, generate `vars.txt` from config.asm
 7+
 8+	awk '$3 ~ /^[01]$/ {print $2}' config.asm config_components.h >vars.txt
 9+
10+Build `sources.txt` from vars.txt and ffmpeg's `Makefile`s
11+
12+	make -f sources.mk >../sources.txt
13+
14+Finally, clean up what `./configure` left behind
15+
16+	git clean -df .
+39, -0
 1@@ -0,0 +1,39 @@
 2+VARS := $(file < vars.txt)
 3+
 4+DIRS :=\
 5+	libavcodec\
 6+	libavdevice\
 7+	libavfilter\
 8+	libavformat\
 9+	libavutil\
10+	libswresample\
11+	libswscale
12+
13+ARCHS :=\
14+	x86
15+
16+define printsrcs
17+	@echo $(1) $(foreach dir,$(DIRS),\
18+		$(OBJS-$(1)/$(dir):%.o=$(dir)/%.c)\
19+		$(TLS-OBJS-$(1)/$(dir):%.o=$(dir)/%.c)\
20+		$(MMX-OBJS-$(1)/$(dir):%.o=$(dir)/%.c)\
21+		$(X86ASM-OBJS-$(1)/$(dir):%.o=$(dir)/%.asm)\
22+	)
23+
24+endef
25+
26+.PHONY: all
27+all: vars.txt
28+	$(foreach var,$(VARS),$(call printsrcs,$(var)))
29+
30+SRC_PATH := ../src
31+
32+define subdir
33+	$(foreach var,$(VARS),$(eval $(var):=$(var)/$(1)))
34+	include ../src/$(1)/Makefile
35+	$(foreach arch,$(ARCHS),
36+		-include ../src/$(1)/$(arch)/Makefile
37+	)
38+endef
39+
40+$(foreach dir,$(DIRS),$(eval $(call subdir,$(dir))))
+8, -0
1@@ -0,0 +1,8 @@
2+#!/bin/sh
3+
4+set -ex
5+
6+../src/configure >/dev/null
7+awk '{print $2}' config.asm >vars.txt
8+make -f sources.mk >../sources.txt
9+git clean -df .
+2963, -0
   1@@ -0,0 +1,2963 @@
   2+ARCH_AARCH64
   3+ARCH_ALPHA
   4+ARCH_ARM
   5+ARCH_AVR32
   6+ARCH_AVR32_AP
   7+ARCH_AVR32_UC
   8+ARCH_BFIN
   9+ARCH_IA64
  10+ARCH_LOONGARCH
  11+ARCH_LOONGARCH32
  12+ARCH_LOONGARCH64
  13+ARCH_M68K
  14+ARCH_MIPS
  15+ARCH_MIPS64
  16+ARCH_PARISC
  17+ARCH_PPC
  18+ARCH_PPC64
  19+ARCH_RISCV
  20+ARCH_S390
  21+ARCH_SH4
  22+ARCH_SPARC
  23+ARCH_SPARC64
  24+ARCH_TILEGX
  25+ARCH_TILEPRO
  26+ARCH_X86
  27+ARCH_X86_32
  28+ARCH_X86_64
  29+HAVE_ARMV5TE
  30+HAVE_ARMV6
  31+HAVE_ARMV6T2
  32+HAVE_ARMV8
  33+HAVE_DOTPROD
  34+HAVE_I8MM
  35+HAVE_NEON
  36+HAVE_VFP
  37+HAVE_VFPV3
  38+HAVE_SETEND
  39+HAVE_ALTIVEC
  40+HAVE_DCBZL
  41+HAVE_LDBRX
  42+HAVE_POWER8
  43+HAVE_PPC4XX
  44+HAVE_VSX
  45+HAVE_RV
  46+HAVE_RVV
  47+HAVE_AESNI
  48+HAVE_AMD3DNOW
  49+HAVE_AMD3DNOWEXT
  50+HAVE_AVX
  51+HAVE_AVX2
  52+HAVE_AVX512
  53+HAVE_AVX512ICL
  54+HAVE_FMA3
  55+HAVE_FMA4
  56+HAVE_MMX
  57+HAVE_MMXEXT
  58+HAVE_SSE
  59+HAVE_SSE2
  60+HAVE_SSE3
  61+HAVE_SSE4
  62+HAVE_SSE42
  63+HAVE_SSSE3
  64+HAVE_XOP
  65+HAVE_I686
  66+HAVE_MIPSFPU
  67+HAVE_MIPS32R2
  68+HAVE_MIPS32R5
  69+HAVE_MIPS64R2
  70+HAVE_MIPS32R6
  71+HAVE_MIPS64R6
  72+HAVE_MIPSDSP
  73+HAVE_MIPSDSPR2
  74+HAVE_MSA
  75+HAVE_LOONGSON2
  76+HAVE_LOONGSON3
  77+HAVE_MMI
  78+HAVE_LSX
  79+HAVE_LASX
  80+HAVE_ARMV5TE_EXTERNAL
  81+HAVE_ARMV6_EXTERNAL
  82+HAVE_ARMV6T2_EXTERNAL
  83+HAVE_ARMV8_EXTERNAL
  84+HAVE_DOTPROD_EXTERNAL
  85+HAVE_I8MM_EXTERNAL
  86+HAVE_NEON_EXTERNAL
  87+HAVE_VFP_EXTERNAL
  88+HAVE_VFPV3_EXTERNAL
  89+HAVE_SETEND_EXTERNAL
  90+HAVE_ALTIVEC_EXTERNAL
  91+HAVE_DCBZL_EXTERNAL
  92+HAVE_LDBRX_EXTERNAL
  93+HAVE_POWER8_EXTERNAL
  94+HAVE_PPC4XX_EXTERNAL
  95+HAVE_VSX_EXTERNAL
  96+HAVE_RV_EXTERNAL
  97+HAVE_RVV_EXTERNAL
  98+HAVE_AESNI_EXTERNAL
  99+HAVE_AMD3DNOW_EXTERNAL
 100+HAVE_AMD3DNOWEXT_EXTERNAL
 101+HAVE_AVX_EXTERNAL
 102+HAVE_AVX2_EXTERNAL
 103+HAVE_AVX512_EXTERNAL
 104+HAVE_AVX512ICL_EXTERNAL
 105+HAVE_FMA3_EXTERNAL
 106+HAVE_FMA4_EXTERNAL
 107+HAVE_MMX_EXTERNAL
 108+HAVE_MMXEXT_EXTERNAL
 109+HAVE_SSE_EXTERNAL
 110+HAVE_SSE2_EXTERNAL
 111+HAVE_SSE3_EXTERNAL
 112+HAVE_SSE4_EXTERNAL
 113+HAVE_SSE42_EXTERNAL
 114+HAVE_SSSE3_EXTERNAL
 115+HAVE_XOP_EXTERNAL
 116+HAVE_I686_EXTERNAL
 117+HAVE_MIPSFPU_EXTERNAL
 118+HAVE_MIPS32R2_EXTERNAL
 119+HAVE_MIPS32R5_EXTERNAL
 120+HAVE_MIPS64R2_EXTERNAL
 121+HAVE_MIPS32R6_EXTERNAL
 122+HAVE_MIPS64R6_EXTERNAL
 123+HAVE_MIPSDSP_EXTERNAL
 124+HAVE_MIPSDSPR2_EXTERNAL
 125+HAVE_MSA_EXTERNAL
 126+HAVE_LOONGSON2_EXTERNAL
 127+HAVE_LOONGSON3_EXTERNAL
 128+HAVE_MMI_EXTERNAL
 129+HAVE_LSX_EXTERNAL
 130+HAVE_LASX_EXTERNAL
 131+HAVE_ARMV5TE_INLINE
 132+HAVE_ARMV6_INLINE
 133+HAVE_ARMV6T2_INLINE
 134+HAVE_ARMV8_INLINE
 135+HAVE_DOTPROD_INLINE
 136+HAVE_I8MM_INLINE
 137+HAVE_NEON_INLINE
 138+HAVE_VFP_INLINE
 139+HAVE_VFPV3_INLINE
 140+HAVE_SETEND_INLINE
 141+HAVE_ALTIVEC_INLINE
 142+HAVE_DCBZL_INLINE
 143+HAVE_LDBRX_INLINE
 144+HAVE_POWER8_INLINE
 145+HAVE_PPC4XX_INLINE
 146+HAVE_VSX_INLINE
 147+HAVE_RV_INLINE
 148+HAVE_RVV_INLINE
 149+HAVE_AESNI_INLINE
 150+HAVE_AMD3DNOW_INLINE
 151+HAVE_AMD3DNOWEXT_INLINE
 152+HAVE_AVX_INLINE
 153+HAVE_AVX2_INLINE
 154+HAVE_AVX512_INLINE
 155+HAVE_AVX512ICL_INLINE
 156+HAVE_FMA3_INLINE
 157+HAVE_FMA4_INLINE
 158+HAVE_MMX_INLINE
 159+HAVE_MMXEXT_INLINE
 160+HAVE_SSE_INLINE
 161+HAVE_SSE2_INLINE
 162+HAVE_SSE3_INLINE
 163+HAVE_SSE4_INLINE
 164+HAVE_SSE42_INLINE
 165+HAVE_SSSE3_INLINE
 166+HAVE_XOP_INLINE
 167+HAVE_I686_INLINE
 168+HAVE_MIPSFPU_INLINE
 169+HAVE_MIPS32R2_INLINE
 170+HAVE_MIPS32R5_INLINE
 171+HAVE_MIPS64R2_INLINE
 172+HAVE_MIPS32R6_INLINE
 173+HAVE_MIPS64R6_INLINE
 174+HAVE_MIPSDSP_INLINE
 175+HAVE_MIPSDSPR2_INLINE
 176+HAVE_MSA_INLINE
 177+HAVE_LOONGSON2_INLINE
 178+HAVE_LOONGSON3_INLINE
 179+HAVE_MMI_INLINE
 180+HAVE_LSX_INLINE
 181+HAVE_LASX_INLINE
 182+HAVE_ALIGNED_STACK
 183+HAVE_FAST_64BIT
 184+HAVE_FAST_CLZ
 185+HAVE_FAST_CMOV
 186+HAVE_FAST_FLOAT16
 187+HAVE_LOCAL_ALIGNED
 188+HAVE_SIMD_ALIGN_16
 189+HAVE_SIMD_ALIGN_32
 190+HAVE_SIMD_ALIGN_64
 191+HAVE_ATOMIC_CAS_PTR
 192+HAVE_MACHINE_RW_BARRIER
 193+HAVE_MEMORYBARRIER
 194+HAVE_MM_EMPTY
 195+HAVE_RDTSC
 196+HAVE_SEM_TIMEDWAIT
 197+HAVE_SYNC_VAL_COMPARE_AND_SWAP
 198+HAVE_INLINE_ASM
 199+HAVE_SYMVER
 200+HAVE_X86ASM libavutil/x86/tx_float_init.c
 201+HAVE_BIGENDIAN
 202+HAVE_FAST_UNALIGNED
 203+HAVE_ARPA_INET_H
 204+HAVE_ASM_TYPES_H
 205+HAVE_CDIO_PARANOIA_H
 206+HAVE_CDIO_PARANOIA_PARANOIA_H
 207+HAVE_CUDA_H
 208+HAVE_DISPATCH_DISPATCH_H
 209+HAVE_DEV_BKTR_IOCTL_BT848_H
 210+HAVE_DEV_BKTR_IOCTL_METEOR_H
 211+HAVE_DEV_IC_BT8XX_H
 212+HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H
 213+HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H
 214+HAVE_DIRECT_H
 215+HAVE_DIRENT_H
 216+HAVE_DXGIDEBUG_H
 217+HAVE_DXVA_H
 218+HAVE_ES2_GL_H
 219+HAVE_GSM_H
 220+HAVE_IO_H
 221+HAVE_LINUX_DMA_BUF_H
 222+HAVE_LINUX_PERF_EVENT_H
 223+HAVE_MACHINE_IOCTL_BT848_H
 224+HAVE_MACHINE_IOCTL_METEOR_H
 225+HAVE_MALLOC_H
 226+HAVE_OPENCV2_CORE_CORE_C_H
 227+HAVE_OPENGL_GL3_H
 228+HAVE_POLL_H
 229+HAVE_PTHREAD_NP_H
 230+HAVE_SYS_PARAM_H
 231+HAVE_SYS_RESOURCE_H
 232+HAVE_SYS_SELECT_H
 233+HAVE_SYS_SOUNDCARD_H
 234+HAVE_SYS_TIME_H
 235+HAVE_SYS_UN_H
 236+HAVE_SYS_VIDEOIO_H
 237+HAVE_TERMIOS_H
 238+HAVE_UDPLITE_H
 239+HAVE_UNISTD_H
 240+HAVE_VALGRIND_VALGRIND_H
 241+HAVE_WINDOWS_H
 242+HAVE_WINSOCK2_H
 243+HAVE_INTRINSICS_NEON
 244+HAVE_ATANF
 245+HAVE_ATAN2F
 246+HAVE_CBRT
 247+HAVE_CBRTF
 248+HAVE_COPYSIGN
 249+HAVE_COSF
 250+HAVE_ERF
 251+HAVE_EXP2
 252+HAVE_EXP2F
 253+HAVE_EXPF
 254+HAVE_HYPOT
 255+HAVE_ISFINITE
 256+HAVE_ISINF
 257+HAVE_ISNAN
 258+HAVE_LDEXPF
 259+HAVE_LLRINT
 260+HAVE_LLRINTF
 261+HAVE_LOG2
 262+HAVE_LOG2F
 263+HAVE_LOG10F
 264+HAVE_LRINT
 265+HAVE_LRINTF
 266+HAVE_POWF
 267+HAVE_RINT
 268+HAVE_ROUND
 269+HAVE_ROUNDF
 270+HAVE_SINF
 271+HAVE_TRUNC
 272+HAVE_TRUNCF
 273+HAVE_DOS_PATHS
 274+HAVE_LIBC_MSVCRT libavcodec/file_open.c libavdevice/file_open.c libavfilter/file_open.c libavformat/file_open.c
 275+HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS
 276+HAVE_SECTION_DATA_REL_RO
 277+HAVE_THREADS libavcodec/pthread.c libavcodec/pthread_slice.c libavcodec/pthread_frame.c libavfilter/pthread.c
 278+HAVE_UWP
 279+HAVE_WINRT
 280+HAVE_ACCESS
 281+HAVE_ALIGNED_MALLOC
 282+HAVE_ARC4RANDOM_BUF
 283+HAVE_CLOCK_GETTIME
 284+HAVE_CLOSESOCKET
 285+HAVE_COMMANDLINETOARGVW
 286+HAVE_FCNTL
 287+HAVE_GETADDRINFO
 288+HAVE_GETAUXVAL
 289+HAVE_GETENV
 290+HAVE_GETHRTIME
 291+HAVE_GETOPT
 292+HAVE_GETMODULEHANDLE
 293+HAVE_GETPROCESSAFFINITYMASK
 294+HAVE_GETPROCESSMEMORYINFO
 295+HAVE_GETPROCESSTIMES
 296+HAVE_GETRUSAGE
 297+HAVE_GETSTDHANDLE
 298+HAVE_GETSYSTEMTIMEASFILETIME
 299+HAVE_GETTIMEOFDAY
 300+HAVE_GLOB
 301+HAVE_GLXGETPROCADDRESS
 302+HAVE_GMTIME_R
 303+HAVE_INET_ATON
 304+HAVE_ISATTY
 305+HAVE_KBHIT
 306+HAVE_LOCALTIME_R
 307+HAVE_LSTAT
 308+HAVE_LZO1X_999_COMPRESS
 309+HAVE_MACH_ABSOLUTE_TIME
 310+HAVE_MAPVIEWOFFILE
 311+HAVE_MEMALIGN
 312+HAVE_MKSTEMP
 313+HAVE_MMAP
 314+HAVE_MPROTECT
 315+HAVE_NANOSLEEP
 316+HAVE_PEEKNAMEDPIPE
 317+HAVE_POSIX_MEMALIGN
 318+HAVE_PRCTL
 319+HAVE_PTHREAD_CANCEL
 320+HAVE_PTHREAD_SET_NAME_NP
 321+HAVE_PTHREAD_SETNAME_NP
 322+HAVE_SCHED_GETAFFINITY
 323+HAVE_SECITEMIMPORT
 324+HAVE_SETCONSOLETEXTATTRIBUTE
 325+HAVE_SETCONSOLECTRLHANDLER
 326+HAVE_SETDLLDIRECTORY
 327+HAVE_SETMODE
 328+HAVE_SETRLIMIT
 329+HAVE_SLEEP
 330+HAVE_STRERROR_R
 331+HAVE_SYSCONF
 332+HAVE_SYSCTL
 333+HAVE_SYSCTLBYNAME
 334+HAVE_USLEEP
 335+HAVE_UTGETOSTYPEFROMSTRING
 336+HAVE_VIRTUALALLOC
 337+HAVE_WGLGETPROCADDRESS
 338+HAVE_BCRYPT
 339+HAVE_VAAPI_DRM
 340+HAVE_VAAPI_X11
 341+HAVE_VAAPI_WIN32
 342+HAVE_VDPAU_X11
 343+HAVE_PTHREADS
 344+HAVE_OS2THREADS
 345+HAVE_W32THREADS
 346+HAVE_AS_ARCH_DIRECTIVE
 347+HAVE_AS_ARCHEXT_DOTPROD_DIRECTIVE
 348+HAVE_AS_ARCHEXT_I8MM_DIRECTIVE
 349+HAVE_AS_DN_DIRECTIVE
 350+HAVE_AS_FPU_DIRECTIVE
 351+HAVE_AS_FUNC
 352+HAVE_AS_OBJECT_ARCH
 353+HAVE_ASM_MOD_Q
 354+HAVE_BLOCKS_EXTENSION
 355+HAVE_EBP_AVAILABLE
 356+HAVE_EBX_AVAILABLE
 357+HAVE_GNU_AS
 358+HAVE_GNU_WINDRES
 359+HAVE_IBM_ASM
 360+HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS
 361+HAVE_INLINE_ASM_LABELS
 362+HAVE_INLINE_ASM_NONLOCAL_LABELS
 363+HAVE_PRAGMA_DEPRECATED
 364+HAVE_RSYNC_CONTIMEOUT
 365+HAVE_SYMVER_ASM_LABEL
 366+HAVE_SYMVER_GNU_ASM
 367+HAVE_VFP_ARGS
 368+HAVE_XFORM_ASM
 369+HAVE_XMM_CLOBBERS
 370+HAVE_DPI_AWARENESS_CONTEXT
 371+HAVE_IDXGIOUTPUT5
 372+HAVE_KCMVIDEOCODECTYPE_HEVC
 373+HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA
 374+HAVE_KCMVIDEOCODECTYPE_VP9
 375+HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE
 376+HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE
 377+HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE
 378+HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE
 379+HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE
 380+HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE
 381+HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE
 382+HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ
 383+HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG
 384+HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR
 385+HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020
 386+HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020
 387+HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020
 388+HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1
 389+HAVE_SOCKLEN_T
 390+HAVE_STRUCT_ADDRINFO
 391+HAVE_STRUCT_GROUP_SOURCE_REQ
 392+HAVE_STRUCT_IP_MREQ_SOURCE
 393+HAVE_STRUCT_IPV6_MREQ
 394+HAVE_STRUCT_MSGHDR_MSG_FLAGS
 395+HAVE_STRUCT_POLLFD
 396+HAVE_STRUCT_RUSAGE_RU_MAXRSS
 397+HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE
 398+HAVE_STRUCT_SOCKADDR_IN6
 399+HAVE_STRUCT_SOCKADDR_SA_LEN
 400+HAVE_STRUCT_SOCKADDR_STORAGE
 401+HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
 402+HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE
 403+HAVE_GZIP
 404+HAVE_LIBDRM_GETFB2
 405+HAVE_MAKEINFO
 406+HAVE_MAKEINFO_HTML
 407+HAVE_OPENCL_D3D11
 408+HAVE_OPENCL_DRM_ARM
 409+HAVE_OPENCL_DRM_BEIGNET
 410+HAVE_OPENCL_DXVA2
 411+HAVE_OPENCL_VAAPI_BEIGNET
 412+HAVE_OPENCL_VAAPI_INTEL_MEDIA
 413+HAVE_OPENCL_VIDEOTOOLBOX
 414+HAVE_PERL
 415+HAVE_POD2MAN
 416+HAVE_TEXI2HTML
 417+HAVE_XMLLINT
 418+HAVE_ZLIB_GZIP
 419+HAVE_OPENVINO2
 420+CONFIG_DOC
 421+CONFIG_HTMLPAGES
 422+CONFIG_MANPAGES
 423+CONFIG_PODPAGES
 424+CONFIG_TXTPAGES
 425+CONFIG_AVIO_HTTP_SERVE_FILES_EXAMPLE
 426+CONFIG_AVIO_LIST_DIR_EXAMPLE
 427+CONFIG_AVIO_READ_CALLBACK_EXAMPLE
 428+CONFIG_DECODE_AUDIO_EXAMPLE
 429+CONFIG_DECODE_FILTER_AUDIO_EXAMPLE
 430+CONFIG_DECODE_FILTER_VIDEO_EXAMPLE
 431+CONFIG_DECODE_VIDEO_EXAMPLE
 432+CONFIG_DEMUX_DECODE_EXAMPLE
 433+CONFIG_ENCODE_AUDIO_EXAMPLE
 434+CONFIG_ENCODE_VIDEO_EXAMPLE
 435+CONFIG_EXTRACT_MVS_EXAMPLE
 436+CONFIG_FILTER_AUDIO_EXAMPLE
 437+CONFIG_HW_DECODE_EXAMPLE
 438+CONFIG_MUX_EXAMPLE
 439+CONFIG_QSV_DECODE_EXAMPLE
 440+CONFIG_REMUX_EXAMPLE
 441+CONFIG_RESAMPLE_AUDIO_EXAMPLE
 442+CONFIG_SCALE_VIDEO_EXAMPLE
 443+CONFIG_SHOW_METADATA_EXAMPLE
 444+CONFIG_TRANSCODE_AAC_EXAMPLE
 445+CONFIG_TRANSCODE_EXAMPLE
 446+CONFIG_VAAPI_ENCODE_EXAMPLE
 447+CONFIG_VAAPI_TRANSCODE_EXAMPLE
 448+CONFIG_QSV_TRANSCODE_EXAMPLE
 449+CONFIG_AVISYNTH
 450+CONFIG_FREI0R
 451+CONFIG_LIBCDIO
 452+CONFIG_LIBDAVS2
 453+CONFIG_LIBDVDNAV
 454+CONFIG_LIBDVDREAD
 455+CONFIG_LIBRUBBERBAND
 456+CONFIG_LIBVIDSTAB
 457+CONFIG_LIBX264
 458+CONFIG_LIBX265
 459+CONFIG_LIBXAVS
 460+CONFIG_LIBXAVS2
 461+CONFIG_LIBXVID
 462+CONFIG_DECKLINK
 463+CONFIG_LIBFDK_AAC
 464+CONFIG_LIBTLS libavformat/tls_libtls.c
 465+CONFIG_GMP
 466+CONFIG_LIBARIBB24
 467+CONFIG_LIBLENSFUN
 468+CONFIG_LIBOPENCORE_AMRNB
 469+CONFIG_LIBOPENCORE_AMRWB
 470+CONFIG_LIBVO_AMRWBENC
 471+CONFIG_MBEDTLS libavformat/tls_mbedtls.c
 472+CONFIG_RKMPP
 473+CONFIG_LIBSMBCLIENT
 474+CONFIG_CHROMAPRINT
 475+CONFIG_GCRYPT
 476+CONFIG_GNUTLS libavformat/tls_gnutls.c
 477+CONFIG_JNI libavcodec/ffjni.c libavcodec/jni.c
 478+CONFIG_LADSPA
 479+CONFIG_LCMS2 libavcodec/fflcms2.c
 480+CONFIG_LIBAOM
 481+CONFIG_LIBARIBCAPTION
 482+CONFIG_LIBASS
 483+CONFIG_LIBBLURAY
 484+CONFIG_LIBBS2B
 485+CONFIG_LIBCACA
 486+CONFIG_LIBCELT
 487+CONFIG_LIBCODEC2
 488+CONFIG_LIBDAV1D
 489+CONFIG_LIBDC1394
 490+CONFIG_LIBFLITE
 491+CONFIG_LIBFONTCONFIG
 492+CONFIG_LIBFREETYPE
 493+CONFIG_LIBFRIBIDI
 494+CONFIG_LIBHARFBUZZ
 495+CONFIG_LIBGLSLANG libavfilter/vulkan_glslang.c
 496+CONFIG_LIBGME
 497+CONFIG_LIBGSM
 498+CONFIG_LIBIEC61883
 499+CONFIG_LIBILBC
 500+CONFIG_LIBJACK
 501+CONFIG_LIBJXL
 502+CONFIG_LIBKLVANC
 503+CONFIG_LIBKVAZAAR
 504+CONFIG_LIBMODPLUG
 505+CONFIG_LIBMP3LAME
 506+CONFIG_LIBMYSOFA
 507+CONFIG_LIBOPENCV
 508+CONFIG_LIBOPENH264
 509+CONFIG_LIBOPENJPEG
 510+CONFIG_LIBOPENMPT
 511+CONFIG_LIBOPENVINO
 512+CONFIG_LIBOPUS
 513+CONFIG_LIBPLACEBO
 514+CONFIG_LIBPULSE
 515+CONFIG_LIBQRENCODE
 516+CONFIG_LIBQUIRC
 517+CONFIG_LIBRABBITMQ
 518+CONFIG_LIBRAV1E
 519+CONFIG_LIBRIST
 520+CONFIG_LIBRSVG
 521+CONFIG_LIBRTMP
 522+CONFIG_LIBSHADERC libavfilter/vulkan_shaderc.c
 523+CONFIG_LIBSHINE
 524+CONFIG_LIBSMBCLIENT
 525+CONFIG_LIBSNAPPY
 526+CONFIG_LIBSOXR libswresample/soxr_resample.c
 527+CONFIG_LIBSPEEX
 528+CONFIG_LIBSRT
 529+CONFIG_LIBSSH
 530+CONFIG_LIBSVTAV1
 531+CONFIG_LIBTENSORFLOW
 532+CONFIG_LIBTESSERACT
 533+CONFIG_LIBTHEORA
 534+CONFIG_LIBTORCH
 535+CONFIG_LIBTWOLAME
 536+CONFIG_LIBUAVS3D
 537+CONFIG_LIBV4L2
 538+CONFIG_LIBVMAF
 539+CONFIG_LIBVORBIS
 540+CONFIG_LIBVPX
 541+CONFIG_LIBWEBP
 542+CONFIG_LIBXEVD
 543+CONFIG_LIBXEVE
 544+CONFIG_LIBXML2
 545+CONFIG_LIBZIMG
 546+CONFIG_LIBZMQ
 547+CONFIG_LIBZVBI
 548+CONFIG_LV2
 549+CONFIG_MEDIACODEC libavcodec/mediacodecdec_common.c libavcodec/mediacodec_surface.c libavcodec/mediacodec_wrapper.c libavcodec/mediacodec_sw_buffer.c libavutil/hwcontext_mediacodec.c
 550+CONFIG_OPENAL
 551+CONFIG_OPENGL
 552+CONFIG_OPENSSL libavformat/tls_openssl.c
 553+CONFIG_POCKETSPHINX
 554+CONFIG_VAPOURSYNTH
 555+CONFIG_ALSA
 556+CONFIG_APPKIT
 557+CONFIG_AVFOUNDATION
 558+CONFIG_BZLIB
 559+CONFIG_COREIMAGE
 560+CONFIG_ICONV
 561+CONFIG_LIBXCB
 562+CONFIG_LIBXCB_SHM
 563+CONFIG_LIBXCB_SHAPE
 564+CONFIG_LIBXCB_XFIXES
 565+CONFIG_LZMA
 566+CONFIG_MEDIAFOUNDATION
 567+CONFIG_METAL
 568+CONFIG_SCHANNEL libavformat/tls_schannel.c
 569+CONFIG_SDL2
 570+CONFIG_SECURETRANSPORT libavformat/tls_securetransport.c
 571+CONFIG_SNDIO
 572+CONFIG_XLIB
 573+CONFIG_ZLIB
 574+CONFIG_CUDA_NVCC
 575+CONFIG_CUDA_SDK
 576+CONFIG_LIBNPP
 577+CONFIG_LIBMFX
 578+CONFIG_LIBVPL
 579+CONFIG_MMAL
 580+CONFIG_OMX
 581+CONFIG_OPENCL libavutil/hwcontext_opencl.c
 582+CONFIG_AMF libavcodec/amfenc.c
 583+CONFIG_AUDIOTOOLBOX
 584+CONFIG_CUDA libavutil/hwcontext_cuda.c
 585+CONFIG_CUDA_LLVM
 586+CONFIG_CUVID
 587+CONFIG_D3D11VA libavcodec/dxva2.c libavutil/hwcontext_d3d11va.c
 588+CONFIG_D3D12VA libavcodec/dxva2.c libavcodec/d3d12va_decode.c libavutil/hwcontext_d3d12va.c
 589+CONFIG_DXVA2 libavcodec/dxva2.c libavutil/hwcontext_dxva2.c
 590+CONFIG_FFNVCODEC
 591+CONFIG_LIBDRM libavutil/hwcontext_drm.c
 592+CONFIG_NVDEC libavcodec/nvdec.c
 593+CONFIG_NVENC
 594+CONFIG_VAAPI libavcodec/vaapi_decode.c libavutil/hwcontext_vaapi.c
 595+CONFIG_VDPAU libavcodec/vdpau.c libavutil/hwcontext_vdpau.c
 596+CONFIG_VIDEOTOOLBOX libavcodec/videotoolbox.c libavutil/hwcontext_videotoolbox.c
 597+CONFIG_VULKAN libavcodec/vulkan.c libavcodec/vulkan_video.c libavutil/hwcontext_vulkan.c libavutil/vulkan.c
 598+CONFIG_V4L2_M2M libavcodec/v4l2_m2m.c libavcodec/v4l2_context.c libavcodec/v4l2_buffers.c libavcodec/v4l2_fmt.c
 599+CONFIG_FTRAPV
 600+CONFIG_GRAY
 601+CONFIG_HARDCODED_TABLES
 602+CONFIG_OMX_RPI
 603+CONFIG_RUNTIME_CPUDETECT
 604+CONFIG_SAFE_BITSTREAM_READER
 605+CONFIG_SHARED
 606+CONFIG_SMALL
 607+CONFIG_STATIC
 608+CONFIG_SWSCALE_ALPHA
 609+CONFIG_GPL
 610+CONFIG_NONFREE
 611+CONFIG_VERSION3
 612+CONFIG_AVDEVICE
 613+CONFIG_AVFILTER
 614+CONFIG_SWSCALE
 615+CONFIG_POSTPROC
 616+CONFIG_AVFORMAT
 617+CONFIG_AVCODEC
 618+CONFIG_SWRESAMPLE
 619+CONFIG_AVUTIL
 620+CONFIG_FFPLAY
 621+CONFIG_FFPROBE
 622+CONFIG_FFMPEG
 623+CONFIG_DWT
 624+CONFIG_ERROR_RESILIENCE libavcodec/error_resilience.c
 625+CONFIG_FAAN
 626+CONFIG_FAST_UNALIGNED
 627+CONFIG_LSP libavcodec/lsp.c
 628+CONFIG_PIXELUTILS libavutil/x86/pixelutils_init.c libavutil/x86/pixelutils.asm
 629+CONFIG_NETWORK libavformat/network.c
 630+CONFIG_AUTODETECT
 631+CONFIG_FONTCONFIG
 632+CONFIG_LARGE_TESTS
 633+CONFIG_LINUX_PERF
 634+CONFIG_MACOS_KPERF libavutil/macos_kperf.c
 635+CONFIG_MEMORY_POISONING
 636+CONFIG_NEON_CLOBBER_TEST
 637+CONFIG_OSSFUZZ
 638+CONFIG_PIC
 639+CONFIG_PTX_COMPRESSION
 640+CONFIG_THUMB
 641+CONFIG_VALGRIND_BACKTRACE
 642+CONFIG_XMM_CLOBBER_TEST libavcodec/x86/w64xmmtest.c libswresample/x86/w64xmmtest.c libswscale/x86/w64xmmtest.c
 643+CONFIG_BSFS
 644+CONFIG_DECODERS
 645+CONFIG_ENCODERS
 646+CONFIG_HWACCELS
 647+CONFIG_PARSERS
 648+CONFIG_INDEVS
 649+CONFIG_OUTDEVS
 650+CONFIG_FILTERS
 651+CONFIG_DEMUXERS
 652+CONFIG_MUXERS
 653+CONFIG_PROTOCOLS
 654+CONFIG_AANDCTTABLES libavcodec/aandcttab.c
 655+CONFIG_AC3DSP libavcodec/ac3dsp.c libavcodec/ac3.c libavcodec/ac3tab.c libavcodec/x86/ac3dsp_init.c libavcodec/x86/ac3dsp.asm libavcodec/x86/ac3dsp_downmix.asm
 656+CONFIG_ADTS_HEADER libavcodec/adts_header.c libavcodec/mpeg4audio_sample_rates.c
 657+CONFIG_ATSC_A53 libavcodec/atsc_a53.c
 658+CONFIG_AUDIO_FRAME_QUEUE libavcodec/audio_frame_queue.c
 659+CONFIG_AUDIODSP libavcodec/audiodsp.c libavcodec/x86/audiodsp_init.c libavcodec/x86/audiodsp.asm
 660+CONFIG_BLOCKDSP libavcodec/blockdsp.c libavcodec/x86/blockdsp_init.c libavcodec/x86/blockdsp.asm
 661+CONFIG_BSWAPDSP libavcodec/bswapdsp.c libavcodec/x86/bswapdsp_init.c libavcodec/x86/bswapdsp.asm
 662+CONFIG_CABAC libavcodec/cabac.c
 663+CONFIG_CBS libavcodec/cbs.c libavcodec/cbs_bsf.c
 664+CONFIG_CBS_AV1 libavcodec/cbs_av1.c
 665+CONFIG_CBS_H264 libavcodec/cbs_h2645.c libavcodec/cbs_sei.c libavcodec/h2645_parse.c
 666+CONFIG_CBS_H265 libavcodec/cbs_h2645.c libavcodec/cbs_sei.c libavcodec/h2645_parse.c
 667+CONFIG_CBS_H266 libavcodec/cbs_h2645.c libavcodec/cbs_sei.c libavcodec/h2645_parse.c
 668+CONFIG_CBS_JPEG libavcodec/cbs_jpeg.c
 669+CONFIG_CBS_MPEG2 libavcodec/cbs_mpeg2.c
 670+CONFIG_CBS_VP8 libavcodec/cbs_vp8.c libavcodec/vp8data.c
 671+CONFIG_CBS_VP9 libavcodec/cbs_vp9.c
 672+CONFIG_DEFLATE_WRAPPER libavcodec/zlib_wrapper.c
 673+CONFIG_DIRAC_PARSE
 674+CONFIG_DNN libavfilter/dnn_filter_common.c libavfilter/dnn/dnn_interface.c libavfilter/dnn/dnn_io_proc.c libavfilter/dnn/queue.c libavfilter/dnn/safe_queue.c libavfilter/dnn/dnn_backend_common.c
 675+CONFIG_DOVI_RPU libavcodec/dovi_rpu.c
 676+CONFIG_DVPROFILE
 677+CONFIG_EVCPARSE libavcodec/evc_parse.c libavcodec/evc_ps.c
 678+CONFIG_EXIF libavcodec/exif.c libavcodec/tiff_common.c
 679+CONFIG_FAANDCT libavcodec/faandct.c
 680+CONFIG_FAANIDCT libavcodec/faanidct.c
 681+CONFIG_FDCTDSP libavcodec/fdctdsp.c libavcodec/jfdctfst.c libavcodec/jfdctint.c libavcodec/x86/fdctdsp_init.c libavcodec/x86/fdct.c
 682+CONFIG_FMTCONVERT libavcodec/fmtconvert.c libavcodec/x86/fmtconvert_init.c libavcodec/x86/fmtconvert.asm
 683+CONFIG_FRAME_THREAD_ENCODER libavcodec/frame_thread_encoder.c
 684+CONFIG_G722DSP
 685+CONFIG_GOLOMB libavcodec/golomb.c
 686+CONFIG_GPLV3
 687+CONFIG_H263DSP libavcodec/h263dsp.c libavcodec/x86/h263dsp_init.c libavcodec/x86/h263_loopfilter.asm
 688+CONFIG_H264CHROMA libavcodec/h264chroma.c libavcodec/x86/h264chroma_init.c libavcodec/x86/h264_chromamc.asm libavcodec/x86/h264_chromamc_10bit.asm
 689+CONFIG_H264DSP libavcodec/h264dsp.c libavcodec/h264idct.c libavcodec/x86/h264dsp_init.c libavcodec/x86/h264_deblock.asm libavcodec/x86/h264_deblock_10bit.asm libavcodec/x86/h264_idct.asm libavcodec/x86/h264_idct_10bit.asm libavcodec/x86/h264_weight.asm libavcodec/x86/h264_weight_10bit.asm
 690+CONFIG_H264PARSE libavcodec/h264_parse.c libavcodec/h264_ps.c libavcodec/h2645data.c libavcodec/h2645_parse.c libavcodec/h2645_vui.c
 691+CONFIG_H264PRED libavcodec/h264pred.c libavcodec/x86/h264_intrapred_init.c libavcodec/x86/h264_intrapred.asm libavcodec/x86/h264_intrapred_10bit.asm
 692+CONFIG_H264QPEL libavcodec/h264qpel.c libavcodec/x86/h264_qpel.c libavcodec/x86/h264_qpel_8bit.asm libavcodec/x86/h264_qpel_10bit.asm libavcodec/x86/fpel.asm libavcodec/x86/qpel.asm
 693+CONFIG_H264_SEI libavcodec/h264_sei.c libavcodec/h2645_sei.c
 694+CONFIG_HEVCPARSE libavcodec/hevc_parse.c libavcodec/hevc_ps.c libavcodec/hevc_data.c libavcodec/h2645data.c libavcodec/h2645_parse.c libavcodec/h2645_vui.c
 695+CONFIG_HEVC_SEI libavcodec/hevc_sei.c libavcodec/h2645_sei.c libavcodec/dynamic_hdr_vivid.c libavcodec/aom_film_grain.c
 696+CONFIG_HPELDSP libavcodec/hpeldsp.c libavcodec/x86/hpeldsp_init.c libavcodec/x86/fpel.asm libavcodec/x86/hpeldsp.asm
 697+CONFIG_HUFFMAN libavcodec/huffman.c
 698+CONFIG_HUFFYUVDSP libavcodec/huffyuvdsp.c libavcodec/x86/huffyuvdsp_init.c libavcodec/x86/huffyuvdsp.asm
 699+CONFIG_HUFFYUVENCDSP libavcodec/huffyuvencdsp.c libavcodec/x86/huffyuvencdsp_init.c libavcodec/x86/huffyuvencdsp.asm
 700+CONFIG_IAMFDEC libavformat/iamf_reader.c libavformat/iamf_parse.c libavformat/iamf.c
 701+CONFIG_IAMFENC libavformat/iamf_writer.c libavformat/iamf.c
 702+CONFIG_IDCTDSP libavcodec/idctdsp.c libavcodec/simple_idct.c libavcodec/jrevdct.c libavcodec/x86/idctdsp_init.c libavcodec/x86/idctdsp.asm libavcodec/x86/simple_idct10.asm
 703+CONFIG_IIRFILTER libavcodec/iirfilter.c
 704+CONFIG_INFLATE_WRAPPER libavcodec/zlib_wrapper.c
 705+CONFIG_INTRAX8 libavcodec/intrax8.c libavcodec/intrax8dsp.c libavcodec/msmpeg4data.c
 706+CONFIG_ISO_MEDIA libavformat/isom.c
 707+CONFIG_IVIDSP libavcodec/ivi_dsp.c
 708+CONFIG_JPEGTABLES libavcodec/jpegtables.c
 709+CONFIG_LGPLV3
 710+CONFIG_LIBX262
 711+CONFIG_LIBX264_HDR10
 712+CONFIG_LLAUDDSP libavcodec/lossless_audiodsp.c libavcodec/x86/lossless_audiodsp_init.c libavcodec/x86/lossless_audiodsp.asm
 713+CONFIG_LLVIDDSP libavcodec/lossless_videodsp.c libavcodec/x86/lossless_videodsp_init.c libavcodec/x86/lossless_videodsp.asm
 714+CONFIG_LLVIDENCDSP libavcodec/lossless_videoencdsp.c libavcodec/x86/lossless_videoencdsp_init.c libavcodec/x86/lossless_videoencdsp.asm
 715+CONFIG_LPC libavcodec/lpc.c libavcodec/x86/lpc_init.c libavcodec/x86/lpc.asm
 716+CONFIG_LZF libavcodec/lzf.c
 717+CONFIG_ME_CMP libavcodec/me_cmp.c libavcodec/x86/me_cmp_init.c libavcodec/x86/me_cmp.asm
 718+CONFIG_MPEG_ER libavcodec/mpeg_er.c
 719+CONFIG_MPEGAUDIO libavcodec/mpegaudio.c libavcodec/mpegaudiodec_common.c libavcodec/mpegaudiodata.c
 720+CONFIG_MPEGAUDIODSP libavcodec/mpegaudiodsp.c libavcodec/mpegaudiodsp_data.c libavcodec/mpegaudiodsp_fixed.c libavcodec/mpegaudiodsp_float.c libavcodec/dct32_fixed.c libavcodec/dct32_float.c libavcodec/x86/mpegaudiodsp.c libavcodec/x86/dct32.asm libavcodec/x86/imdct36.asm
 721+CONFIG_MPEGAUDIOHEADER libavcodec/mpegaudiodecheader.c libavcodec/mpegaudiotabs.c
 722+CONFIG_MPEG4AUDIO libavcodec/mpeg4audio.c libavcodec/mpeg4audio_sample_rates.c
 723+CONFIG_MPEGVIDEO libavcodec/mpegvideo.c libavcodec/rl.c libavcodec/mpegvideo_motion.c libavcodec/mpegvideodata.c libavcodec/mpegpicture.c libavcodec/to_upper4.c libavcodec/x86/mpegvideo.c
 724+CONFIG_MPEGVIDEODEC libavcodec/mpegvideo_dec.c libavcodec/mpegutils.c
 725+CONFIG_MPEGVIDEOENC libavcodec/mpegvideo_enc.c libavcodec/mpeg12data.c libavcodec/motion_est.c libavcodec/ratecontrol.c libavcodec/mpegvideoencdsp.c libavcodec/x86/mpegvideoenc.c libavcodec/x86/mpegvideoencdsp_init.c libavcodec/x86/mpegvideoencdsp.asm
 726+CONFIG_MSMPEG4DEC libavcodec/msmpeg4dec.c libavcodec/msmpeg4.c libavcodec/msmpeg4data.c libavcodec/msmpeg4_vc1_data.c
 727+CONFIG_MSMPEG4ENC libavcodec/msmpeg4enc.c libavcodec/msmpeg4.c libavcodec/msmpeg4data.c libavcodec/msmpeg4_vc1_data.c
 728+CONFIG_MSS34DSP libavcodec/mss34dsp.c libavcodec/jpegquanttables.c
 729+CONFIG_PIXBLOCKDSP libavcodec/pixblockdsp.c libavcodec/x86/pixblockdsp_init.c libavcodec/x86/pixblockdsp.asm
 730+CONFIG_QPELDSP libavcodec/qpeldsp.c libavcodec/x86/qpeldsp_init.c libavcodec/x86/qpeldsp.asm libavcodec/x86/fpel.asm libavcodec/x86/qpel.asm
 731+CONFIG_QSV libavcodec/qsv.c libavutil/hwcontext_qsv.c
 732+CONFIG_QSVDEC libavcodec/qsvdec.c
 733+CONFIG_QSVENC libavcodec/qsvenc.c
 734+CONFIG_QSVVPP libavfilter/qsvvpp.c
 735+CONFIG_RANGECODER libavcodec/rangecoder.c
 736+CONFIG_RIFFDEC libavformat/riffdec.c
 737+CONFIG_RIFFENC libavformat/riffenc.c
 738+CONFIG_RTPDEC libavformat/rdt.c libavformat/rtp.c libavformat/rtpdec.c libavformat/rtpdec_ac3.c libavformat/rtpdec_amr.c libavformat/rtpdec_asf.c libavformat/rtpdec_dv.c libavformat/rtpdec_g726.c libavformat/rtpdec_h261.c libavformat/rtpdec_h263.c libavformat/rtpdec_h263_rfc2190.c libavformat/rtpdec_h264.c libavformat/rtpdec_hevc.c libavformat/rtpdec_ilbc.c libavformat/rtpdec_jpeg.c libavformat/rtpdec_latm.c libavformat/rtpdec_mpa_robust.c libavformat/rtpdec_mpeg12.c libavformat/rtpdec_mpeg4.c libavformat/rtpdec_mpegts.c libavformat/rtpdec_qcelp.c libavformat/rtpdec_qdm2.c libavformat/rtpdec_qt.c libavformat/rtpdec_rfc4175.c libavformat/rtpdec_svq3.c libavformat/rtpdec_vc2hq.c libavformat/rtpdec_vp8.c libavformat/rtpdec_vp9.c libavformat/rtpdec_xiph.c
 739+CONFIG_RTPENC_CHAIN libavformat/rtpenc_chain.c libavformat/rtp.c
 740+CONFIG_RV34DSP libavcodec/rv34dsp.c libavcodec/x86/rv34dsp_init.c libavcodec/x86/rv34dsp.asm
 741+CONFIG_SCENE_SAD libavfilter/scene_sad.c libavfilter/x86/scene_sad_init.c libavfilter/x86/scene_sad.asm
 742+CONFIG_SINEWIN libavcodec/sinewin.c
 743+CONFIG_SNAPPY libavcodec/snappy.c
 744+CONFIG_SRTP libavformat/srtp.c
 745+CONFIG_STARTCODE libavcodec/startcode.c
 746+CONFIG_TEXTUREDSP libavcodec/texturedsp.c
 747+CONFIG_TEXTUREDSPENC libavcodec/texturedspenc.c
 748+CONFIG_TPELDSP libavcodec/tpeldsp.c
 749+CONFIG_VAAPI_1
 750+CONFIG_VAAPI_ENCODE libavcodec/vaapi_encode.c
 751+CONFIG_VC1DSP libavcodec/vc1dsp.c libavcodec/x86/vc1dsp_init.c libavcodec/x86/vc1dsp_mmx.c libavcodec/x86/vc1dsp_loopfilter.asm libavcodec/x86/vc1dsp_mc.asm
 752+CONFIG_VIDEODSP libavcodec/videodsp.c libavcodec/x86/videodsp_init.c libavcodec/x86/videodsp.asm
 753+CONFIG_VP3DSP libavcodec/vp3dsp.c libavcodec/x86/vp3dsp_init.c libavcodec/x86/vp3dsp.asm
 754+CONFIG_VP56DSP libavcodec/vp56dsp.c
 755+CONFIG_VP8DSP libavcodec/vp8dsp.c libavcodec/x86/vp8dsp_init.c libavcodec/x86/vp8dsp.asm libavcodec/x86/vp8dsp_loopfilter.asm
 756+CONFIG_WMA_FREQS libavcodec/wma_freqs.c
 757+CONFIG_WMV2DSP libavcodec/wmv2dsp.c
 758+CONFIG_AAC_ADTSTOASC_BSF libavcodec/bsf/aac_adtstoasc.c
 759+CONFIG_AV1_FRAME_MERGE_BSF libavcodec/bsf/av1_frame_merge.c
 760+CONFIG_AV1_FRAME_SPLIT_BSF libavcodec/bsf/av1_frame_split.c
 761+CONFIG_AV1_METADATA_BSF libavcodec/bsf/av1_metadata.c
 762+CONFIG_CHOMP_BSF libavcodec/bsf/chomp.c
 763+CONFIG_DUMP_EXTRADATA_BSF libavcodec/bsf/dump_extradata.c
 764+CONFIG_DCA_CORE_BSF libavcodec/bsf/dca_core.c
 765+CONFIG_DTS2PTS_BSF libavcodec/bsf/dts2pts.c
 766+CONFIG_DV_ERROR_MARKER_BSF libavcodec/bsf/dv_error_marker.c
 767+CONFIG_EAC3_CORE_BSF libavcodec/bsf/eac3_core.c
 768+CONFIG_EXTRACT_EXTRADATA_BSF libavcodec/bsf/extract_extradata.c libavcodec/av1_parse.c libavcodec/h2645_parse.c
 769+CONFIG_FILTER_UNITS_BSF libavcodec/bsf/filter_units.c
 770+CONFIG_H264_METADATA_BSF libavcodec/bsf/h264_metadata.c libavcodec/h264_levels.c libavcodec/h2645data.c
 771+CONFIG_H264_MP4TOANNEXB_BSF libavcodec/bsf/h264_mp4toannexb.c
 772+CONFIG_H264_REDUNDANT_PPS_BSF libavcodec/bsf/h264_redundant_pps.c
 773+CONFIG_HAPQA_EXTRACT_BSF libavcodec/bsf/hapqa_extract.c libavcodec/hap.c
 774+CONFIG_HEVC_METADATA_BSF libavcodec/bsf/h265_metadata.c libavcodec/h265_profile_level.c libavcodec/h2645data.c
 775+CONFIG_HEVC_MP4TOANNEXB_BSF libavcodec/bsf/hevc_mp4toannexb.c
 776+CONFIG_IMX_DUMP_HEADER_BSF libavcodec/bsf/imx_dump_header.c
 777+CONFIG_MEDIA100_TO_MJPEGB_BSF libavcodec/bsf/media100_to_mjpegb.c
 778+CONFIG_MJPEG2JPEG_BSF libavcodec/bsf/mjpeg2jpeg.c
 779+CONFIG_MJPEGA_DUMP_HEADER_BSF libavcodec/bsf/mjpega_dump_header.c
 780+CONFIG_MPEG2_METADATA_BSF libavcodec/bsf/mpeg2_metadata.c
 781+CONFIG_MPEG4_UNPACK_BFRAMES_BSF libavcodec/bsf/mpeg4_unpack_bframes.c
 782+CONFIG_MOV2TEXTSUB_BSF libavcodec/bsf/movsub.c
 783+CONFIG_NOISE_BSF libavcodec/bsf/noise.c
 784+CONFIG_NULL_BSF libavcodec/bsf/null.c
 785+CONFIG_OPUS_METADATA_BSF libavcodec/bsf/opus_metadata.c
 786+CONFIG_PCM_RECHUNK_BSF libavcodec/bsf/pcm_rechunk.c
 787+CONFIG_PGS_FRAME_MERGE_BSF libavcodec/bsf/pgs_frame_merge.c
 788+CONFIG_PRORES_METADATA_BSF libavcodec/bsf/prores_metadata.c
 789+CONFIG_REMOVE_EXTRADATA_BSF libavcodec/bsf/remove_extradata.c libavcodec/av1_parse.c
 790+CONFIG_SETTS_BSF libavcodec/bsf/setts.c
 791+CONFIG_SHOWINFO_BSF libavcodec/bsf/showinfo.c
 792+CONFIG_TEXT2MOVSUB_BSF libavcodec/bsf/movsub.c
 793+CONFIG_TRACE_HEADERS_BSF libavcodec/bsf/trace_headers.c
 794+CONFIG_TRUEHD_CORE_BSF libavcodec/bsf/truehd_core.c libavcodec/mlp_parse.c libavcodec/mlp.c
 795+CONFIG_VP9_METADATA_BSF libavcodec/bsf/vp9_metadata.c
 796+CONFIG_VP9_RAW_REORDER_BSF libavcodec/bsf/vp9_raw_reorder.c
 797+CONFIG_VP9_SUPERFRAME_BSF libavcodec/bsf/vp9_superframe.c
 798+CONFIG_VP9_SUPERFRAME_SPLIT_BSF libavcodec/bsf/vp9_superframe_split.c
 799+CONFIG_VVC_METADATA_BSF libavcodec/bsf/h266_metadata.c
 800+CONFIG_VVC_MP4TOANNEXB_BSF libavcodec/bsf/vvc_mp4toannexb.c
 801+CONFIG_EVC_FRAME_MERGE_BSF libavcodec/bsf/evc_frame_merge.c
 802+CONFIG_AASC_DECODER libavcodec/aasc.c libavcodec/msrledec.c
 803+CONFIG_AIC_DECODER libavcodec/aic.c
 804+CONFIG_ALIAS_PIX_DECODER libavcodec/aliaspixdec.c
 805+CONFIG_AGM_DECODER libavcodec/agm.c libavcodec/jpegquanttables.c
 806+CONFIG_AMV_DECODER
 807+CONFIG_ANM_DECODER libavcodec/anm.c
 808+CONFIG_ANSI_DECODER libavcodec/ansi.c libavcodec/cga_data.c
 809+CONFIG_APNG_DECODER libavcodec/png.c libavcodec/pngdec.c libavcodec/pngdsp.c libavcodec/x86/pngdsp_init.c libavcodec/x86/pngdsp.asm
 810+CONFIG_ARBC_DECODER libavcodec/arbc.c
 811+CONFIG_ARGO_DECODER libavcodec/argo.c
 812+CONFIG_ASV1_DECODER libavcodec/asvdec.c libavcodec/asv.c libavcodec/mpeg12data.c
 813+CONFIG_ASV2_DECODER libavcodec/asvdec.c libavcodec/asv.c libavcodec/mpeg12data.c
 814+CONFIG_AURA_DECODER libavcodec/cyuv.c
 815+CONFIG_AURA2_DECODER libavcodec/aura.c
 816+CONFIG_AVRP_DECODER libavcodec/r210dec.c
 817+CONFIG_AVRN_DECODER libavcodec/avrndec.c
 818+CONFIG_AVS_DECODER libavcodec/avs.c
 819+CONFIG_AVUI_DECODER libavcodec/avuidec.c
 820+CONFIG_BETHSOFTVID_DECODER libavcodec/bethsoftvideo.c
 821+CONFIG_BFI_DECODER libavcodec/bfi.c
 822+CONFIG_BINK_DECODER libavcodec/bink.c libavcodec/binkdsp.c
 823+CONFIG_BITPACKED_DECODER libavcodec/bitpacked_dec.c
 824+CONFIG_BMP_DECODER libavcodec/bmp.c libavcodec/msrledec.c
 825+CONFIG_BMV_VIDEO_DECODER libavcodec/bmvvideo.c
 826+CONFIG_BRENDER_PIX_DECODER libavcodec/brenderpix.c
 827+CONFIG_C93_DECODER libavcodec/c93.c
 828+CONFIG_CAVS_DECODER libavcodec/cavs.c libavcodec/cavsdec.c libavcodec/cavsdsp.c libavcodec/cavsdata.c libavcodec/x86/cavsdsp.c libavcodec/x86/cavsidct.asm
 829+CONFIG_CDGRAPHICS_DECODER libavcodec/cdgraphics.c
 830+CONFIG_CDTOONS_DECODER libavcodec/cdtoons.c
 831+CONFIG_CDXL_DECODER libavcodec/cdxl.c
 832+CONFIG_CFHD_DECODER libavcodec/cfhd.c libavcodec/cfhddata.c libavcodec/cfhddsp.c libavcodec/x86/cfhddsp_init.c libavcodec/x86/cfhddsp.asm
 833+CONFIG_CINEPAK_DECODER libavcodec/cinepak.c
 834+CONFIG_CLEARVIDEO_DECODER libavcodec/clearvideo.c
 835+CONFIG_CLJR_DECODER libavcodec/cljrdec.c
 836+CONFIG_CLLC_DECODER libavcodec/cllc.c libavcodec/canopus.c
 837+CONFIG_COMFORTNOISE_DECODER libavcodec/cngdec.c libavcodec/celp_filters.c
 838+CONFIG_CPIA_DECODER libavcodec/cpia.c
 839+CONFIG_CRI_DECODER libavcodec/cri.c
 840+CONFIG_CSCD_DECODER libavcodec/cscd.c
 841+CONFIG_CYUV_DECODER libavcodec/cyuv.c
 842+CONFIG_DDS_DECODER libavcodec/dds.c
 843+CONFIG_DFA_DECODER libavcodec/dfa.c
 844+CONFIG_DIRAC_DECODER libavcodec/diracdec.c libavcodec/dirac.c libavcodec/diracdsp.c libavcodec/diractab.c libavcodec/dirac_arith.c libavcodec/dirac_dwt.c libavcodec/dirac_vlc.c libavcodec/x86/diracdsp_init.c libavcodec/x86/dirac_dwt_init.c libavcodec/x86/diracdsp.asm libavcodec/x86/dirac_dwt.asm
 845+CONFIG_DNXHD_DECODER libavcodec/dnxhddec.c libavcodec/dnxhddata.c
 846+CONFIG_DPX_DECODER libavcodec/dpx.c
 847+CONFIG_DSICINVIDEO_DECODER libavcodec/dsicinvideo.c
 848+CONFIG_DVAUDIO_DECODER libavcodec/dvaudiodec.c
 849+CONFIG_DVVIDEO_DECODER libavcodec/dvdec.c libavcodec/dv.c libavcodec/dvdata.c
 850+CONFIG_DXA_DECODER libavcodec/dxa.c
 851+CONFIG_DXTORY_DECODER libavcodec/dxtory.c
 852+CONFIG_DXV_DECODER libavcodec/dxv.c
 853+CONFIG_EACMV_DECODER libavcodec/eacmv.c
 854+CONFIG_EAMAD_DECODER libavcodec/eamad.c libavcodec/eaidct.c libavcodec/mpeg12.c libavcodec/mpeg12data.c
 855+CONFIG_EATGQ_DECODER libavcodec/eatgq.c libavcodec/eaidct.c
 856+CONFIG_EATGV_DECODER libavcodec/eatgv.c
 857+CONFIG_EATQI_DECODER libavcodec/eatqi.c libavcodec/eaidct.c libavcodec/mpeg12.c libavcodec/mpeg12data.c
 858+CONFIG_EIGHTBPS_DECODER libavcodec/8bps.c
 859+CONFIG_EIGHTSVX_EXP_DECODER libavcodec/8svx.c
 860+CONFIG_EIGHTSVX_FIB_DECODER libavcodec/8svx.c
 861+CONFIG_ESCAPE124_DECODER libavcodec/escape124.c
 862+CONFIG_ESCAPE130_DECODER libavcodec/escape130.c
 863+CONFIG_EXR_DECODER libavcodec/exr.c libavcodec/exrdsp.c libavcodec/half2float.c libavcodec/x86/exrdsp_init.c libavcodec/x86/exrdsp.asm
 864+CONFIG_FFV1_DECODER libavcodec/ffv1dec.c libavcodec/ffv1.c
 865+CONFIG_FFVHUFF_DECODER
 866+CONFIG_FIC_DECODER libavcodec/fic.c
 867+CONFIG_FITS_DECODER libavcodec/fitsdec.c libavcodec/fits.c
 868+CONFIG_FLASHSV_DECODER libavcodec/flashsv.c
 869+CONFIG_FLASHSV2_DECODER libavcodec/flashsv.c
 870+CONFIG_FLIC_DECODER libavcodec/flicvideo.c
 871+CONFIG_FLV_DECODER libavcodec/flvdec.c
 872+CONFIG_FMVC_DECODER libavcodec/fmvc.c
 873+CONFIG_FOURXM_DECODER libavcodec/4xm.c
 874+CONFIG_FRAPS_DECODER libavcodec/fraps.c
 875+CONFIG_FRWU_DECODER libavcodec/frwu.c
 876+CONFIG_G2M_DECODER libavcodec/g2meet.c libavcodec/elsdec.c libavcodec/mjpegdec_common.c
 877+CONFIG_GDV_DECODER libavcodec/gdv.c
 878+CONFIG_GEM_DECODER libavcodec/gemdec.c
 879+CONFIG_GIF_DECODER libavcodec/gifdec.c libavcodec/lzw.c
 880+CONFIG_H261_DECODER libavcodec/h261dec.c libavcodec/h261data.c libavcodec/h261.c
 881+CONFIG_H263_DECODER libavcodec/h263dec.c libavcodec/h263.c libavcodec/ituh263dec.c libavcodec/mpeg4video.c libavcodec/mpeg4videodec.c libavcodec/h263data.c
 882+CONFIG_H263I_DECODER libavcodec/intelh263dec.c
 883+CONFIG_H263P_DECODER
 884+CONFIG_H263_V4L2M2M_DECODER libavcodec/v4l2_m2m_dec.c
 885+CONFIG_H264_DECODER libavcodec/h264dec.c libavcodec/h264_cabac.c libavcodec/h264_cavlc.c libavcodec/h264_direct.c libavcodec/h264_loopfilter.c libavcodec/h264_mb.c libavcodec/h264_picture.c libavcodec/h264_refs.c libavcodec/h264_slice.c libavcodec/h264data.c libavcodec/h274.c
 886+CONFIG_H264_V4L2M2M_DECODER libavcodec/v4l2_m2m_dec.c
 887+CONFIG_H264_MEDIACODEC_DECODER libavcodec/mediacodecdec.c
 888+CONFIG_H264_MMAL_DECODER libavcodec/mmaldec.c
 889+CONFIG_H264_QSV_DECODER libavcodec/qsvdec.c
 890+CONFIG_H264_RKMPP_DECODER libavcodec/rkmppdec.c
 891+CONFIG_HAP_DECODER libavcodec/hapdec.c libavcodec/hap.c
 892+CONFIG_HEVC_DECODER libavcodec/hevcdec.c libavcodec/hevc_mvs.c libavcodec/hevc_cabac.c libavcodec/hevc_refs.c libavcodec/hevcpred.c libavcodec/hevcdsp.c libavcodec/hevc_filter.c libavcodec/hevc_data.c libavcodec/h274.c libavcodec/aom_film_grain.c libavcodec/x86/hevcdsp_init.c libavcodec/x86/h26x/h2656dsp.c libavcodec/x86/hevc_add_res.asm libavcodec/x86/hevc_deblock.asm libavcodec/x86/hevc_idct.asm libavcodec/x86/hevc_mc.asm libavcodec/x86/h26x/h2656_inter.asm libavcodec/x86/hevc_sao.asm libavcodec/x86/hevc_sao_10bit.asm
 893+CONFIG_HEVC_QSV_DECODER libavcodec/qsvdec.c
 894+CONFIG_HEVC_RKMPP_DECODER libavcodec/rkmppdec.c
 895+CONFIG_HEVC_V4L2M2M_DECODER libavcodec/v4l2_m2m_dec.c
 896+CONFIG_HNM4_VIDEO_DECODER libavcodec/hnm4video.c
 897+CONFIG_HQ_HQA_DECODER libavcodec/hq_hqa.c libavcodec/hq_hqadsp.c libavcodec/canopus.c
 898+CONFIG_HQX_DECODER libavcodec/hqx.c libavcodec/hqxvlc.c libavcodec/hqxdsp.c libavcodec/canopus.c
 899+CONFIG_HUFFYUV_DECODER libavcodec/huffyuv.c libavcodec/huffyuvdec.c
 900+CONFIG_HYMT_DECODER libavcodec/huffyuv.c libavcodec/huffyuvdec.c
 901+CONFIG_IDCIN_DECODER libavcodec/idcinvideo.c
 902+CONFIG_IFF_ILBM_DECODER libavcodec/iff.c
 903+CONFIG_IMM4_DECODER libavcodec/imm4.c
 904+CONFIG_IMM5_DECODER libavcodec/imm5.c
 905+CONFIG_INDEO2_DECODER libavcodec/indeo2.c
 906+CONFIG_INDEO3_DECODER libavcodec/indeo3.c
 907+CONFIG_INDEO4_DECODER libavcodec/indeo4.c libavcodec/ivi.c
 908+CONFIG_INDEO5_DECODER libavcodec/indeo5.c libavcodec/ivi.c
 909+CONFIG_INTERPLAY_VIDEO_DECODER libavcodec/interplayvideo.c
 910+CONFIG_IPU_DECODER libavcodec/mpeg12dec.c libavcodec/mpeg12.c libavcodec/mpeg12data.c
 911+CONFIG_JPEG2000_DECODER libavcodec/jpeg2000dec.c libavcodec/jpeg2000.c libavcodec/jpeg2000dsp.c libavcodec/jpeg2000dwt.c libavcodec/mqcdec.c libavcodec/mqc.c libavcodec/jpeg2000htdec.c libavcodec/x86/jpeg2000dsp_init.c libavcodec/x86/jpeg2000dsp.asm
 912+CONFIG_JPEGLS_DECODER libavcodec/jpeglsdec.c libavcodec/jpegls.c
 913+CONFIG_JV_DECODER libavcodec/jvdec.c
 914+CONFIG_KGV1_DECODER libavcodec/kgv1dec.c
 915+CONFIG_KMVC_DECODER libavcodec/kmvc.c
 916+CONFIG_LAGARITH_DECODER libavcodec/lagarith.c libavcodec/lagarithrac.c
 917+CONFIG_LEAD_DECODER libavcodec/leaddec.c libavcodec/jpegquanttables.c
 918+CONFIG_LOCO_DECODER libavcodec/loco.c
 919+CONFIG_LSCR_DECODER libavcodec/lscrdec.c libavcodec/png.c libavcodec/pngdec.c libavcodec/pngdsp.c libavcodec/x86/pngdsp_init.c libavcodec/x86/pngdsp.asm
 920+CONFIG_M101_DECODER libavcodec/m101.c
 921+CONFIG_MAGICYUV_DECODER libavcodec/magicyuv.c
 922+CONFIG_MDEC_DECODER libavcodec/mdec.c libavcodec/mpeg12.c libavcodec/mpeg12data.c
 923+CONFIG_MEDIA100_DECODER libavcodec/mjpegbdec.c
 924+CONFIG_MIMIC_DECODER libavcodec/mimic.c
 925+CONFIG_MJPEG_DECODER libavcodec/mjpegdec.c libavcodec/mjpegdec_common.c
 926+CONFIG_MJPEGB_DECODER libavcodec/mjpegbdec.c
 927+CONFIG_MMVIDEO_DECODER libavcodec/mmvideo.c
 928+CONFIG_MOBICLIP_DECODER libavcodec/mobiclip.c
 929+CONFIG_MOTIONPIXELS_DECODER libavcodec/motionpixels.c
 930+CONFIG_MPEG1VIDEO_DECODER libavcodec/mpeg12dec.c libavcodec/mpeg12.c libavcodec/mpeg12data.c
 931+CONFIG_MPEG2VIDEO_DECODER libavcodec/mpeg12dec.c libavcodec/mpeg12.c libavcodec/mpeg12data.c
 932+CONFIG_MPEG4_DECODER libavcodec/mpeg4videodsp.c libavcodec/xvididct.c libavcodec/x86/mpeg4videodsp.c libavcodec/x86/xvididct_init.c libavcodec/x86/xvididct.asm
 933+CONFIG_MPEG4_V4L2M2M_DECODER libavcodec/v4l2_m2m_dec.c
 934+CONFIG_MPEG4_MMAL_DECODER
 935+CONFIG_MPEGVIDEO_DECODER libavcodec/mpeg12dec.c libavcodec/mpeg12.c libavcodec/mpeg12data.c
 936+CONFIG_MPEG1_V4L2M2M_DECODER libavcodec/v4l2_m2m_dec.c
 937+CONFIG_MPEG2_MMAL_DECODER libavcodec/mmaldec.c
 938+CONFIG_MPEG2_V4L2M2M_DECODER libavcodec/v4l2_m2m_dec.c
 939+CONFIG_MPEG2_QSV_DECODER libavcodec/qsvdec.c
 940+CONFIG_MPEG2_MEDIACODEC_DECODER libavcodec/mediacodecdec.c
 941+CONFIG_MSA1_DECODER libavcodec/mss3.c
 942+CONFIG_MSCC_DECODER libavcodec/mscc.c
 943+CONFIG_MSMPEG4V1_DECODER
 944+CONFIG_MSMPEG4V2_DECODER
 945+CONFIG_MSMPEG4V3_DECODER
 946+CONFIG_MSP2_DECODER libavcodec/msp2dec.c
 947+CONFIG_MSRLE_DECODER libavcodec/msrle.c libavcodec/msrledec.c
 948+CONFIG_MSS1_DECODER libavcodec/mss1.c libavcodec/mss12.c
 949+CONFIG_MSS2_DECODER libavcodec/mss2.c libavcodec/mss12.c libavcodec/mss2dsp.c libavcodec/wmv2data.c
 950+CONFIG_MSVIDEO1_DECODER libavcodec/msvideo1.c
 951+CONFIG_MSZH_DECODER libavcodec/lcldec.c
 952+CONFIG_MTS2_DECODER libavcodec/mss4.c
 953+CONFIG_MV30_DECODER libavcodec/mv30.c
 954+CONFIG_MVC1_DECODER libavcodec/mvcdec.c
 955+CONFIG_MVC2_DECODER libavcodec/mvcdec.c
 956+CONFIG_MVDV_DECODER libavcodec/midivid.c
 957+CONFIG_MVHA_DECODER libavcodec/mvha.c
 958+CONFIG_MWSC_DECODER libavcodec/mwsc.c
 959+CONFIG_MXPEG_DECODER libavcodec/mxpegdec.c
 960+CONFIG_NOTCHLC_DECODER libavcodec/notchlc.c
 961+CONFIG_NUV_DECODER libavcodec/nuv.c libavcodec/rtjpeg.c libavcodec/jpegquanttables.c
 962+CONFIG_PAF_VIDEO_DECODER libavcodec/pafvideo.c
 963+CONFIG_PAM_DECODER libavcodec/pnmdec.c libavcodec/pnm.c
 964+CONFIG_PBM_DECODER libavcodec/pnmdec.c libavcodec/pnm.c
 965+CONFIG_PCX_DECODER libavcodec/pcx.c
 966+CONFIG_PDV_DECODER libavcodec/pdvdec.c
 967+CONFIG_PFM_DECODER libavcodec/pnmdec.c libavcodec/pnm.c
 968+CONFIG_PGM_DECODER libavcodec/pnmdec.c libavcodec/pnm.c
 969+CONFIG_PGMYUV_DECODER libavcodec/pnmdec.c libavcodec/pnm.c
 970+CONFIG_PGX_DECODER libavcodec/pgxdec.c
 971+CONFIG_PHM_DECODER libavcodec/pnmdec.c libavcodec/pnm.c libavcodec/half2float.c
 972+CONFIG_PHOTOCD_DECODER libavcodec/photocd.c
 973+CONFIG_PICTOR_DECODER libavcodec/pictordec.c libavcodec/cga_data.c
 974+CONFIG_PIXLET_DECODER libavcodec/pixlet.c
 975+CONFIG_PNG_DECODER libavcodec/png.c libavcodec/pngdec.c libavcodec/pngdsp.c libavcodec/x86/pngdsp_init.c libavcodec/x86/pngdsp.asm
 976+CONFIG_PPM_DECODER libavcodec/pnmdec.c libavcodec/pnm.c
 977+CONFIG_PRORES_DECODER libavcodec/proresdec2.c libavcodec/proresdsp.c libavcodec/proresdata.c libavcodec/x86/proresdsp_init.c libavcodec/x86/proresdsp.asm
 978+CONFIG_PROSUMER_DECODER libavcodec/prosumer.c
 979+CONFIG_PSD_DECODER libavcodec/psd.c
 980+CONFIG_PTX_DECODER libavcodec/ptx.c
 981+CONFIG_QDRAW_DECODER libavcodec/qdrw.c
 982+CONFIG_QOI_DECODER libavcodec/qoidec.c
 983+CONFIG_QPEG_DECODER libavcodec/qpeg.c
 984+CONFIG_QTRLE_DECODER libavcodec/qtrle.c
 985+CONFIG_R10K_DECODER libavcodec/r210dec.c
 986+CONFIG_R210_DECODER libavcodec/r210dec.c
 987+CONFIG_RASC_DECODER libavcodec/rasc.c
 988+CONFIG_RAWVIDEO_DECODER libavcodec/rawdec.c
 989+CONFIG_RKA_DECODER libavcodec/rka.c
 990+CONFIG_RL2_DECODER libavcodec/rl2.c
 991+CONFIG_ROQ_DECODER libavcodec/roqvideodec.c libavcodec/roqvideo.c
 992+CONFIG_RPZA_DECODER libavcodec/rpza.c
 993+CONFIG_RSCC_DECODER libavcodec/rscc.c
 994+CONFIG_RTV1_DECODER libavcodec/rtv1.c
 995+CONFIG_RV10_DECODER libavcodec/rv10.c
 996+CONFIG_RV20_DECODER libavcodec/rv10.c
 997+CONFIG_RV30_DECODER libavcodec/rv30.c libavcodec/rv34.c libavcodec/rv30dsp.c
 998+CONFIG_RV40_DECODER libavcodec/rv40.c libavcodec/rv34.c libavcodec/rv40dsp.c libavcodec/x86/rv40dsp_init.c libavcodec/x86/rv40dsp.asm
 999+CONFIG_S302M_DECODER libavcodec/s302m.c
1000+CONFIG_SANM_DECODER libavcodec/sanm.c
1001+CONFIG_SCPR_DECODER libavcodec/scpr.c
1002+CONFIG_SCREENPRESSO_DECODER libavcodec/screenpresso.c
1003+CONFIG_SGA_DECODER libavcodec/sga.c
1004+CONFIG_SGI_DECODER libavcodec/sgidec.c
1005+CONFIG_SGIRLE_DECODER libavcodec/sgirledec.c
1006+CONFIG_SHEERVIDEO_DECODER libavcodec/sheervideo.c
1007+CONFIG_SIMBIOSIS_IMX_DECODER libavcodec/imx.c
1008+CONFIG_SMACKER_DECODER libavcodec/smacker.c
1009+CONFIG_SMC_DECODER libavcodec/smc.c
1010+CONFIG_SMVJPEG_DECODER
1011+CONFIG_SNOW_DECODER libavcodec/snowdec.c libavcodec/snow.c libavcodec/snow_dwt.c libavcodec/x86/snowdsp.c
1012+CONFIG_SP5X_DECODER libavcodec/sp5xdec.c
1013+CONFIG_SPEEDHQ_DECODER libavcodec/speedhqdec.c libavcodec/speedhq.c libavcodec/mpeg12.c libavcodec/mpeg12data.c
1014+CONFIG_SPEEX_DECODER libavcodec/speexdec.c
1015+CONFIG_SRGC_DECODER libavcodec/mscc.c
1016+CONFIG_SUNRAST_DECODER libavcodec/sunrast.c
1017+CONFIG_SVQ1_DECODER libavcodec/svq1dec.c libavcodec/svq1.c libavcodec/h263data.c
1018+CONFIG_SVQ3_DECODER libavcodec/svq3.c libavcodec/mpegutils.c libavcodec/h264data.c
1019+CONFIG_TARGA_DECODER libavcodec/targa.c
1020+CONFIG_TARGA_Y216_DECODER libavcodec/targa_y216dec.c
1021+CONFIG_TDSC_DECODER libavcodec/tdsc.c
1022+CONFIG_THEORA_DECODER
1023+CONFIG_THP_DECODER
1024+CONFIG_TIERTEXSEQVIDEO_DECODER libavcodec/tiertexseqv.c
1025+CONFIG_TIFF_DECODER libavcodec/tiff.c libavcodec/lzw.c libavcodec/faxcompr.c libavcodec/tiff_common.c
1026+CONFIG_TMV_DECODER libavcodec/tmv.c libavcodec/cga_data.c
1027+CONFIG_TRUEMOTION1_DECODER libavcodec/truemotion1.c
1028+CONFIG_TRUEMOTION2_DECODER libavcodec/truemotion2.c
1029+CONFIG_TRUEMOTION2RT_DECODER libavcodec/truemotion2rt.c
1030+CONFIG_TSCC_DECODER libavcodec/tscc.c libavcodec/msrledec.c
1031+CONFIG_TSCC2_DECODER libavcodec/tscc2.c
1032+CONFIG_TXD_DECODER libavcodec/txd.c
1033+CONFIG_ULTI_DECODER libavcodec/ulti.c
1034+CONFIG_UTVIDEO_DECODER libavcodec/utvideodec.c libavcodec/utvideodsp.c libavcodec/x86/utvideodsp_init.c libavcodec/x86/utvideodsp.asm
1035+CONFIG_V210_DECODER libavcodec/v210dec.c libavcodec/x86/v210-init.c libavcodec/x86/v210.asm
1036+CONFIG_V210X_DECODER libavcodec/v210x.c
1037+CONFIG_V308_DECODER libavcodec/v308dec.c
1038+CONFIG_V408_DECODER libavcodec/v408dec.c
1039+CONFIG_V410_DECODER libavcodec/v410dec.c
1040+CONFIG_VB_DECODER libavcodec/vb.c
1041+CONFIG_VBN_DECODER libavcodec/vbndec.c
1042+CONFIG_VBLE_DECODER libavcodec/vble.c
1043+CONFIG_VC1_DECODER libavcodec/vc1dec.c libavcodec/vc1_block.c libavcodec/vc1_loopfilter.c libavcodec/vc1_mc.c libavcodec/vc1_pred.c libavcodec/vc1.c libavcodec/vc1data.c libavcodec/msmpeg4_vc1_data.c libavcodec/wmv2data.c
1044+CONFIG_VC1IMAGE_DECODER
1045+CONFIG_VC1_MMAL_DECODER libavcodec/mmaldec.c
1046+CONFIG_VC1_QSV_DECODER libavcodec/qsvdec.c
1047+CONFIG_VC1_V4L2M2M_DECODER libavcodec/v4l2_m2m_dec.c
1048+CONFIG_VCR1_DECODER libavcodec/vcr1.c
1049+CONFIG_VMDVIDEO_DECODER libavcodec/vmdvideo.c
1050+CONFIG_VMIX_DECODER libavcodec/vmixdec.c
1051+CONFIG_VMNC_DECODER libavcodec/vmnc.c
1052+CONFIG_VP3_DECODER libavcodec/vp3.c libavcodec/jpegquanttables.c
1053+CONFIG_VP4_DECODER
1054+CONFIG_VP5_DECODER libavcodec/vp5.c libavcodec/vp56.c libavcodec/vp56data.c libavcodec/vpx_rac.c
1055+CONFIG_VP6_DECODER libavcodec/vp6.c libavcodec/vp56.c libavcodec/vp56data.c libavcodec/vp6dsp.c libavcodec/vpx_rac.c libavcodec/x86/vp6dsp_init.c libavcodec/x86/vp6dsp.asm
1056+CONFIG_VP6A_DECODER
1057+CONFIG_VP6F_DECODER
1058+CONFIG_VP7_DECODER libavcodec/vp8.c libavcodec/vp8data.c libavcodec/vpx_rac.c
1059+CONFIG_VP8_DECODER libavcodec/vp8.c libavcodec/vp8data.c libavcodec/vpx_rac.c
1060+CONFIG_VP8_RKMPP_DECODER libavcodec/rkmppdec.c
1061+CONFIG_VP8_V4L2M2M_DECODER libavcodec/v4l2_m2m_dec.c
1062+CONFIG_VP9_DECODER libavcodec/vp9.c libavcodec/vp9data.c libavcodec/vp9dsp.c libavcodec/vp9lpf.c libavcodec/vp9recon.c libavcodec/vp9block.c libavcodec/vp9prob.c libavcodec/vp9mvs.c libavcodec/vpx_rac.c libavcodec/vp9dsp_8bpp.c libavcodec/vp9dsp_10bpp.c libavcodec/vp9dsp_12bpp.c libavcodec/x86/vp9dsp_init.c libavcodec/x86/vp9dsp_init_10bpp.c libavcodec/x86/vp9dsp_init_12bpp.c libavcodec/x86/vp9dsp_init_16bpp.c libavcodec/x86/vp9intrapred.asm libavcodec/x86/vp9intrapred_16bpp.asm libavcodec/x86/vp9itxfm.asm libavcodec/x86/vp9itxfm_16bpp.asm libavcodec/x86/vp9lpf.asm libavcodec/x86/vp9lpf_16bpp.asm libavcodec/x86/vp9mc.asm libavcodec/x86/vp9mc_16bpp.asm
1063+CONFIG_VP9_RKMPP_DECODER libavcodec/rkmppdec.c
1064+CONFIG_VP9_V4L2M2M_DECODER libavcodec/v4l2_m2m_dec.c
1065+CONFIG_VQA_DECODER libavcodec/vqavideo.c
1066+CONFIG_VQC_DECODER libavcodec/vqcdec.c
1067+CONFIG_VVC_DECODER libavcodec/vvc/vvcdec.c libavcodec/vvc/vvcdsp.c libavcodec/vvc/vvc_cabac.c libavcodec/vvc/vvc_ctu.c libavcodec/vvc/vvc_data.c libavcodec/vvc/vvc_filter.c libavcodec/vvc/vvc_inter.c libavcodec/vvc/vvc_intra.c libavcodec/vvc/vvc_intra_utils.c libavcodec/vvc/vvc_itx_1d.c libavcodec/vvc/vvc_mvs.c libavcodec/vvc/vvc_ps.c libavcodec/vvc/vvc_refs.c libavcodec/vvc/vvc_thread.c libavcodec/vvc/vvcdec.c libavcodec/vvc/vvcdsp.c libavcodec/vvc/vvc_cabac.c libavcodec/vvc/vvc_ctu.c libavcodec/vvc/vvc_data.c libavcodec/vvc/vvc_filter.c libavcodec/vvc/vvc_inter.c libavcodec/vvc/vvc_intra.c libavcodec/vvc/vvc_intra_utils.c libavcodec/vvc/vvc_itx_1d.c libavcodec/vvc/vvc_mvs.c libavcodec/vvc/vvc_ps.c libavcodec/vvc/vvc_refs.c libavcodec/vvc/vvc_thread.c
1068+CONFIG_WBMP_DECODER libavcodec/wbmpdec.c
1069+CONFIG_WEBP_DECODER libavcodec/webp.c libavcodec/x86/vp8dsp_init.c libavcodec/x86/vp8dsp.asm
1070+CONFIG_WCMV_DECODER libavcodec/wcmv.c
1071+CONFIG_WRAPPED_AVFRAME_DECODER libavcodec/wrapped_avframe.c
1072+CONFIG_WMV1_DECODER
1073+CONFIG_WMV2_DECODER libavcodec/wmv2dec.c libavcodec/wmv2.c libavcodec/wmv2data.c
1074+CONFIG_WMV3_DECODER
1075+CONFIG_WMV3IMAGE_DECODER
1076+CONFIG_WNV1_DECODER libavcodec/wnv1.c
1077+CONFIG_XAN_WC3_DECODER libavcodec/xan.c
1078+CONFIG_XAN_WC4_DECODER libavcodec/xxan.c
1079+CONFIG_XBM_DECODER libavcodec/xbmdec.c
1080+CONFIG_XFACE_DECODER libavcodec/xfacedec.c libavcodec/xface.c
1081+CONFIG_XL_DECODER libavcodec/xl.c
1082+CONFIG_XPM_DECODER libavcodec/xpmdec.c
1083+CONFIG_XWD_DECODER libavcodec/xwddec.c
1084+CONFIG_Y41P_DECODER libavcodec/y41pdec.c
1085+CONFIG_YLC_DECODER libavcodec/ylc.c
1086+CONFIG_YOP_DECODER libavcodec/yop.c
1087+CONFIG_YUV4_DECODER libavcodec/yuv4dec.c
1088+CONFIG_ZERO12V_DECODER libavcodec/012v.c
1089+CONFIG_ZEROCODEC_DECODER libavcodec/zerocodec.c
1090+CONFIG_ZLIB_DECODER libavcodec/lcldec.c
1091+CONFIG_ZMBV_DECODER libavcodec/zmbv.c
1092+CONFIG_AAC_DECODER libavcodec/aacdec.c libavcodec/aacdec_common.c libavcodec/aactab.c libavcodec/aacsbr.c libavcodec/aacps_common.c libavcodec/aacps_float.c libavcodec/kbdwin.c libavcodec/sbrdsp.c libavcodec/aacpsdsp_float.c libavcodec/cbrt_data.c libavcodec/x86/aacpsdsp_init.c libavcodec/x86/sbrdsp_init.c libavcodec/x86/aacpsdsp.asm libavcodec/x86/sbrdsp.asm
1093+CONFIG_AAC_FIXED_DECODER libavcodec/aacdec_fixed.c libavcodec/aacdec_common.c libavcodec/aactab.c libavcodec/aacsbr_fixed.c libavcodec/aacps_common.c libavcodec/aacps_fixed.c libavcodec/kbdwin.c libavcodec/sbrdsp_fixed.c libavcodec/aacpsdsp_fixed.c libavcodec/cbrt_data_fixed.c
1094+CONFIG_AAC_LATM_DECODER
1095+CONFIG_AC3_DECODER libavcodec/ac3dec_float.c libavcodec/ac3dec_data.c libavcodec/ac3.c libavcodec/kbdwin.c libavcodec/ac3tab.c libavcodec/ac3_channel_layout_tab.c
1096+CONFIG_AC3_FIXED_DECODER libavcodec/ac3dec_fixed.c libavcodec/ac3dec_data.c libavcodec/ac3.c libavcodec/kbdwin.c libavcodec/ac3tab.c libavcodec/ac3_channel_layout_tab.c
1097+CONFIG_ACELP_KELVIN_DECODER libavcodec/g729dec.c libavcodec/lsp.c libavcodec/celp_math.c libavcodec/celp_filters.c libavcodec/acelp_filters.c libavcodec/acelp_pitch_delay.c libavcodec/acelp_vectors.c libavcodec/g729postfilter.c
1098+CONFIG_ALAC_DECODER libavcodec/alac.c libavcodec/alac_data.c libavcodec/alacdsp.c libavcodec/x86/alacdsp_init.c libavcodec/x86/alacdsp.asm
1099+CONFIG_ALS_DECODER libavcodec/alsdec.c libavcodec/bgmc.c libavcodec/mlz.c
1100+CONFIG_AMRNB_DECODER libavcodec/amrnbdec.c libavcodec/celp_filters.c libavcodec/celp_math.c libavcodec/acelp_filters.c libavcodec/acelp_vectors.c libavcodec/acelp_pitch_delay.c
1101+CONFIG_AMRWB_DECODER libavcodec/amrwbdec.c libavcodec/celp_filters.c libavcodec/celp_math.c libavcodec/acelp_filters.c libavcodec/acelp_vectors.c libavcodec/acelp_pitch_delay.c
1102+CONFIG_APAC_DECODER libavcodec/apac.c
1103+CONFIG_APE_DECODER libavcodec/apedec.c
1104+CONFIG_APTX_DECODER libavcodec/aptxdec.c libavcodec/aptx.c
1105+CONFIG_APTX_HD_DECODER libavcodec/aptxdec.c libavcodec/aptx.c
1106+CONFIG_ATRAC1_DECODER libavcodec/atrac1.c libavcodec/atrac.c
1107+CONFIG_ATRAC3_DECODER libavcodec/atrac3.c libavcodec/atrac.c
1108+CONFIG_ATRAC3AL_DECODER libavcodec/atrac3.c libavcodec/atrac.c
1109+CONFIG_ATRAC3P_DECODER libavcodec/atrac3plusdec.c libavcodec/atrac3plus.c libavcodec/atrac3plusdsp.c libavcodec/atrac.c
1110+CONFIG_ATRAC3PAL_DECODER libavcodec/atrac3plusdec.c libavcodec/atrac3plus.c libavcodec/atrac3plusdsp.c libavcodec/atrac.c
1111+CONFIG_ATRAC9_DECODER libavcodec/atrac9dec.c
1112+CONFIG_BINKAUDIO_DCT_DECODER libavcodec/binkaudio.c
1113+CONFIG_BINKAUDIO_RDFT_DECODER libavcodec/binkaudio.c
1114+CONFIG_BMV_AUDIO_DECODER libavcodec/bmvaudio.c
1115+CONFIG_BONK_DECODER libavcodec/bonk.c
1116+CONFIG_COOK_DECODER libavcodec/cook.c
1117+CONFIG_DCA_DECODER libavcodec/dcadec.c libavcodec/dca.c libavcodec/dcadata.c libavcodec/dcahuff.c libavcodec/dca_core.c libavcodec/dca_exss.c libavcodec/dca_xll.c libavcodec/dca_lbr.c libavcodec/dcadsp.c libavcodec/dcadct.c libavcodec/dca_sample_rate_tab.c libavcodec/synth_filter.c libavcodec/x86/dcadsp_init.c libavcodec/x86/synth_filter_init.c libavcodec/x86/dcadsp.asm libavcodec/x86/synth_filter.asm
1118+CONFIG_DFPWM_DECODER libavcodec/dfpwmdec.c
1119+CONFIG_DOLBY_E_DECODER libavcodec/dolby_e.c libavcodec/dolby_e_parse.c libavcodec/kbdwin.c
1120+CONFIG_DSD_LSBF_DECODER libavcodec/dsddec.c libavcodec/dsd.c
1121+CONFIG_DSD_MSBF_DECODER libavcodec/dsddec.c libavcodec/dsd.c
1122+CONFIG_DSD_LSBF_PLANAR_DECODER libavcodec/dsddec.c libavcodec/dsd.c
1123+CONFIG_DSD_MSBF_PLANAR_DECODER libavcodec/dsddec.c libavcodec/dsd.c
1124+CONFIG_DSICINAUDIO_DECODER libavcodec/dsicinaudio.c
1125+CONFIG_DSS_SP_DECODER libavcodec/dss_sp.c
1126+CONFIG_DST_DECODER libavcodec/dstdec.c libavcodec/dsd.c
1127+CONFIG_EAC3_DECODER libavcodec/eac3_data.c
1128+CONFIG_EVRC_DECODER libavcodec/evrcdec.c libavcodec/acelp_vectors.c libavcodec/lsp.c
1129+CONFIG_FASTAUDIO_DECODER libavcodec/fastaudio.c
1130+CONFIG_FFWAVESYNTH_DECODER libavcodec/ffwavesynth.c
1131+CONFIG_FLAC_DECODER libavcodec/flacdec.c libavcodec/flacdata.c libavcodec/flacdsp.c libavcodec/flac.c libavcodec/x86/flacdsp_init.c libavcodec/x86/flacdsp.asm
1132+CONFIG_FTR_DECODER libavcodec/ftr.c
1133+CONFIG_G723_1_DECODER libavcodec/g723_1dec.c libavcodec/g723_1.c libavcodec/acelp_vectors.c libavcodec/celp_filters.c libavcodec/celp_math.c
1134+CONFIG_G729_DECODER libavcodec/g729dec.c libavcodec/lsp.c libavcodec/celp_math.c libavcodec/celp_filters.c libavcodec/acelp_filters.c libavcodec/acelp_pitch_delay.c libavcodec/acelp_vectors.c libavcodec/g729postfilter.c
1135+CONFIG_GSM_DECODER libavcodec/gsmdec.c libavcodec/gsmdec_data.c libavcodec/msgsmdec.c
1136+CONFIG_GSM_MS_DECODER libavcodec/gsmdec.c libavcodec/gsmdec_data.c libavcodec/msgsmdec.c
1137+CONFIG_HCA_DECODER libavcodec/hcadec.c
1138+CONFIG_HCOM_DECODER libavcodec/hcom.c
1139+CONFIG_HDR_DECODER libavcodec/hdrdec.c
1140+CONFIG_IAC_DECODER
1141+CONFIG_ILBC_DECODER libavcodec/ilbcdec.c
1142+CONFIG_IMC_DECODER libavcodec/imc.c
1143+CONFIG_INTERPLAY_ACM_DECODER libavcodec/interplayacm.c
1144+CONFIG_MACE3_DECODER libavcodec/mace.c
1145+CONFIG_MACE6_DECODER libavcodec/mace.c
1146+CONFIG_METASOUND_DECODER libavcodec/metasound.c libavcodec/twinvq.c
1147+CONFIG_MISC4_DECODER libavcodec/misc4.c
1148+CONFIG_MLP_DECODER libavcodec/mlpdec.c libavcodec/mlpdsp.c libavcodec/x86/mlpdsp_init.c libavcodec/x86/mlpdsp.asm
1149+CONFIG_MP1_DECODER libavcodec/mpegaudiodec_fixed.c
1150+CONFIG_MP1FLOAT_DECODER libavcodec/mpegaudiodec_float.c
1151+CONFIG_MP2_DECODER libavcodec/mpegaudiodec_fixed.c
1152+CONFIG_MP2FLOAT_DECODER libavcodec/mpegaudiodec_float.c
1153+CONFIG_MP3FLOAT_DECODER libavcodec/mpegaudiodec_float.c
1154+CONFIG_MP3_DECODER libavcodec/mpegaudiodec_fixed.c
1155+CONFIG_MP3ADUFLOAT_DECODER libavcodec/mpegaudiodec_float.c
1156+CONFIG_MP3ADU_DECODER libavcodec/mpegaudiodec_fixed.c
1157+CONFIG_MP3ON4FLOAT_DECODER libavcodec/mpegaudiodec_float.c
1158+CONFIG_MP3ON4_DECODER libavcodec/mpegaudiodec_fixed.c
1159+CONFIG_MPC7_DECODER libavcodec/mpc7.c libavcodec/mpc.c
1160+CONFIG_MPC8_DECODER libavcodec/mpc8.c libavcodec/mpc.c
1161+CONFIG_MSNSIREN_DECODER libavcodec/siren.c
1162+CONFIG_NELLYMOSER_DECODER libavcodec/nellymoserdec.c libavcodec/nellymoser.c
1163+CONFIG_ON2AVC_DECODER libavcodec/on2avc.c libavcodec/on2avcdata.c
1164+CONFIG_OPUS_DECODER libavcodec/opusdec.c libavcodec/opusdec_celt.c libavcodec/opus_celt.c libavcodec/opus_pvq.c libavcodec/opus_silk.c libavcodec/opustab.c libavcodec/vorbis_data.c libavcodec/opusdsp.c libavcodec/opus_parse.c libavcodec/opus_rc.c libavcodec/x86/opusdsp_init.c libavcodec/x86/opusdsp.asm
1165+CONFIG_OSQ_DECODER libavcodec/osq.c
1166+CONFIG_PAF_AUDIO_DECODER libavcodec/pafaudio.c
1167+CONFIG_QCELP_DECODER libavcodec/qcelpdec.c libavcodec/celp_filters.c libavcodec/acelp_vectors.c libavcodec/acelp_filters.c
1168+CONFIG_QDM2_DECODER libavcodec/qdm2.c
1169+CONFIG_QDMC_DECODER libavcodec/qdmc.c
1170+CONFIG_QOA_DECODER libavcodec/qoadec.c
1171+CONFIG_RA_144_DECODER libavcodec/ra144dec.c libavcodec/ra144.c libavcodec/celp_filters.c
1172+CONFIG_RA_288_DECODER libavcodec/ra288.c libavcodec/celp_filters.c
1173+CONFIG_RALF_DECODER libavcodec/ralf.c
1174+CONFIG_SBC_DECODER libavcodec/sbcdec.c libavcodec/sbcdec_data.c libavcodec/sbc.c
1175+CONFIG_SHORTEN_DECODER libavcodec/shorten.c
1176+CONFIG_SIPR_DECODER libavcodec/sipr.c libavcodec/acelp_pitch_delay.c libavcodec/celp_math.c libavcodec/acelp_vectors.c libavcodec/acelp_filters.c libavcodec/celp_filters.c libavcodec/sipr16k.c
1177+CONFIG_SIREN_DECODER libavcodec/siren.c
1178+CONFIG_SMACKAUD_DECODER libavcodec/smacker.c
1179+CONFIG_SONIC_DECODER libavcodec/sonic.c
1180+CONFIG_TAK_DECODER libavcodec/takdec.c libavcodec/tak.c libavcodec/takdsp.c libavcodec/x86/takdsp_init.c libavcodec/x86/takdsp.asm
1181+CONFIG_TRUEHD_DECODER libavcodec/mlpdec.c libavcodec/mlpdsp.c libavcodec/x86/mlpdsp_init.c libavcodec/x86/mlpdsp.asm
1182+CONFIG_TRUESPEECH_DECODER libavcodec/truespeech.c
1183+CONFIG_TTA_DECODER libavcodec/tta.c libavcodec/ttadata.c libavcodec/ttadsp.c libavcodec/x86/ttadsp_init.c libavcodec/x86/ttadsp.asm
1184+CONFIG_TWINVQ_DECODER libavcodec/twinvqdec.c libavcodec/twinvq.c
1185+CONFIG_VMDAUDIO_DECODER libavcodec/vmdaudio.c
1186+CONFIG_VORBIS_DECODER libavcodec/vorbisdec.c libavcodec/vorbisdsp.c libavcodec/vorbis.c libavcodec/vorbis_data.c libavcodec/x86/vorbisdsp_init.c libavcodec/x86/vorbisdsp.asm
1187+CONFIG_WAVARC_DECODER libavcodec/wavarc.c
1188+CONFIG_WAVPACK_DECODER libavcodec/wavpack.c libavcodec/wavpackdata.c libavcodec/dsd.c
1189+CONFIG_WMALOSSLESS_DECODER libavcodec/wmalosslessdec.c libavcodec/wma_common.c
1190+CONFIG_WMAPRO_DECODER libavcodec/wmaprodec.c libavcodec/wma.c libavcodec/wma_common.c
1191+CONFIG_WMAV1_DECODER libavcodec/wmadec.c libavcodec/wma.c libavcodec/wma_common.c libavcodec/aactab.c
1192+CONFIG_WMAV2_DECODER libavcodec/wmadec.c libavcodec/wma.c libavcodec/wma_common.c libavcodec/aactab.c
1193+CONFIG_WMAVOICE_DECODER libavcodec/wmavoice.c libavcodec/celp_filters.c libavcodec/acelp_vectors.c libavcodec/acelp_filters.c
1194+CONFIG_WS_SND1_DECODER libavcodec/ws-snd1.c
1195+CONFIG_XMA1_DECODER libavcodec/wmaprodec.c libavcodec/wma.c libavcodec/wma_common.c
1196+CONFIG_XMA2_DECODER libavcodec/wmaprodec.c libavcodec/wma.c libavcodec/wma_common.c
1197+CONFIG_PCM_ALAW_DECODER libavcodec/pcm.c
1198+CONFIG_PCM_BLURAY_DECODER libavcodec/pcm-bluray.c
1199+CONFIG_PCM_DVD_DECODER libavcodec/pcm-dvd.c
1200+CONFIG_PCM_F16LE_DECODER libavcodec/pcm.c
1201+CONFIG_PCM_F24LE_DECODER libavcodec/pcm.c
1202+CONFIG_PCM_F32BE_DECODER libavcodec/pcm.c
1203+CONFIG_PCM_F32LE_DECODER libavcodec/pcm.c
1204+CONFIG_PCM_F64BE_DECODER libavcodec/pcm.c
1205+CONFIG_PCM_F64LE_DECODER libavcodec/pcm.c
1206+CONFIG_PCM_LXF_DECODER libavcodec/pcm.c
1207+CONFIG_PCM_MULAW_DECODER libavcodec/pcm.c
1208+CONFIG_PCM_S8_DECODER libavcodec/pcm.c
1209+CONFIG_PCM_S8_PLANAR_DECODER libavcodec/pcm.c
1210+CONFIG_PCM_S16BE_DECODER libavcodec/pcm.c
1211+CONFIG_PCM_S16BE_PLANAR_DECODER libavcodec/pcm.c
1212+CONFIG_PCM_S16LE_DECODER libavcodec/pcm.c
1213+CONFIG_PCM_S16LE_PLANAR_DECODER libavcodec/pcm.c
1214+CONFIG_PCM_S24BE_DECODER libavcodec/pcm.c
1215+CONFIG_PCM_S24DAUD_DECODER libavcodec/pcm.c
1216+CONFIG_PCM_S24LE_DECODER libavcodec/pcm.c
1217+CONFIG_PCM_S24LE_PLANAR_DECODER libavcodec/pcm.c
1218+CONFIG_PCM_S32BE_DECODER libavcodec/pcm.c
1219+CONFIG_PCM_S32LE_DECODER libavcodec/pcm.c
1220+CONFIG_PCM_S32LE_PLANAR_DECODER libavcodec/pcm.c
1221+CONFIG_PCM_S64BE_DECODER libavcodec/pcm.c
1222+CONFIG_PCM_S64LE_DECODER libavcodec/pcm.c
1223+CONFIG_PCM_SGA_DECODER libavcodec/pcm.c
1224+CONFIG_PCM_U8_DECODER libavcodec/pcm.c
1225+CONFIG_PCM_U16BE_DECODER libavcodec/pcm.c
1226+CONFIG_PCM_U16LE_DECODER libavcodec/pcm.c
1227+CONFIG_PCM_U24BE_DECODER libavcodec/pcm.c
1228+CONFIG_PCM_U24LE_DECODER libavcodec/pcm.c
1229+CONFIG_PCM_U32BE_DECODER libavcodec/pcm.c
1230+CONFIG_PCM_U32LE_DECODER libavcodec/pcm.c
1231+CONFIG_PCM_VIDC_DECODER libavcodec/pcm.c
1232+CONFIG_CBD2_DPCM_DECODER
1233+CONFIG_DERF_DPCM_DECODER libavcodec/dpcm.c
1234+CONFIG_GREMLIN_DPCM_DECODER libavcodec/dpcm.c
1235+CONFIG_INTERPLAY_DPCM_DECODER libavcodec/dpcm.c
1236+CONFIG_ROQ_DPCM_DECODER libavcodec/dpcm.c
1237+CONFIG_SDX2_DPCM_DECODER libavcodec/dpcm.c
1238+CONFIG_SOL_DPCM_DECODER libavcodec/dpcm.c
1239+CONFIG_XAN_DPCM_DECODER libavcodec/dpcm.c
1240+CONFIG_WADY_DPCM_DECODER libavcodec/dpcm.c
1241+CONFIG_ADPCM_4XM_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1242+CONFIG_ADPCM_ADX_DECODER libavcodec/adxdec.c libavcodec/adx.c
1243+CONFIG_ADPCM_AFC_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1244+CONFIG_ADPCM_AGM_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1245+CONFIG_ADPCM_AICA_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1246+CONFIG_ADPCM_ARGO_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1247+CONFIG_ADPCM_CT_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1248+CONFIG_ADPCM_DTK_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1249+CONFIG_ADPCM_EA_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1250+CONFIG_ADPCM_EA_MAXIS_XA_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1251+CONFIG_ADPCM_EA_R1_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1252+CONFIG_ADPCM_EA_R2_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1253+CONFIG_ADPCM_EA_R3_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1254+CONFIG_ADPCM_EA_XAS_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1255+CONFIG_ADPCM_G722_DECODER libavcodec/g722.c libavcodec/g722dsp.c libavcodec/g722dec.c libavcodec/x86/g722dsp_init.c libavcodec/x86/g722dsp.asm
1256+CONFIG_ADPCM_G726_DECODER libavcodec/g726.c
1257+CONFIG_ADPCM_G726LE_DECODER libavcodec/g726.c
1258+CONFIG_ADPCM_IMA_ACORN_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1259+CONFIG_ADPCM_IMA_AMV_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1260+CONFIG_ADPCM_IMA_ALP_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1261+CONFIG_ADPCM_IMA_APC_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1262+CONFIG_ADPCM_IMA_APM_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1263+CONFIG_ADPCM_IMA_CUNNING_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1264+CONFIG_ADPCM_IMA_DAT4_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1265+CONFIG_ADPCM_IMA_DK3_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1266+CONFIG_ADPCM_IMA_DK4_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1267+CONFIG_ADPCM_IMA_EA_EACS_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1268+CONFIG_ADPCM_IMA_EA_SEAD_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1269+CONFIG_ADPCM_IMA_ISS_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1270+CONFIG_ADPCM_IMA_MOFLEX_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1271+CONFIG_ADPCM_IMA_MTF_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1272+CONFIG_ADPCM_IMA_OKI_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1273+CONFIG_ADPCM_IMA_QT_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1274+CONFIG_ADPCM_IMA_RAD_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1275+CONFIG_ADPCM_IMA_SSI_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1276+CONFIG_ADPCM_IMA_SMJPEG_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1277+CONFIG_ADPCM_IMA_WAV_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1278+CONFIG_ADPCM_IMA_WS_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1279+CONFIG_ADPCM_MS_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1280+CONFIG_ADPCM_MTAF_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1281+CONFIG_ADPCM_PSX_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1282+CONFIG_ADPCM_SBPRO_2_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1283+CONFIG_ADPCM_SBPRO_3_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1284+CONFIG_ADPCM_SBPRO_4_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1285+CONFIG_ADPCM_SWF_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1286+CONFIG_ADPCM_THP_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1287+CONFIG_ADPCM_THP_LE_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1288+CONFIG_ADPCM_VIMA_DECODER libavcodec/vima.c libavcodec/adpcm_data.c
1289+CONFIG_ADPCM_XA_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1290+CONFIG_ADPCM_XMD_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1291+CONFIG_ADPCM_YAMAHA_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1292+CONFIG_ADPCM_ZORK_DECODER libavcodec/adpcm.c libavcodec/adpcm_data.c
1293+CONFIG_SSA_DECODER libavcodec/assdec.c libavcodec/ass.c
1294+CONFIG_ASS_DECODER libavcodec/assdec.c libavcodec/ass.c
1295+CONFIG_CCAPTION_DECODER libavcodec/ccaption_dec.c libavcodec/ass.c
1296+CONFIG_DVBSUB_DECODER libavcodec/dvbsubdec.c
1297+CONFIG_DVDSUB_DECODER libavcodec/dvdsubdec.c libavcodec/dvdsub.c
1298+CONFIG_JACOSUB_DECODER libavcodec/jacosubdec.c libavcodec/ass.c
1299+CONFIG_MICRODVD_DECODER libavcodec/microdvddec.c libavcodec/ass.c
1300+CONFIG_MOVTEXT_DECODER libavcodec/movtextdec.c libavcodec/ass.c
1301+CONFIG_MPL2_DECODER libavcodec/mpl2dec.c libavcodec/ass.c
1302+CONFIG_PGSSUB_DECODER libavcodec/pgssubdec.c
1303+CONFIG_PJS_DECODER libavcodec/textdec.c libavcodec/ass.c
1304+CONFIG_REALTEXT_DECODER libavcodec/realtextdec.c libavcodec/ass.c
1305+CONFIG_SAMI_DECODER libavcodec/samidec.c libavcodec/ass.c libavcodec/htmlsubtitles.c
1306+CONFIG_SRT_DECODER libavcodec/srtdec.c libavcodec/ass.c libavcodec/htmlsubtitles.c
1307+CONFIG_STL_DECODER libavcodec/textdec.c libavcodec/ass.c
1308+CONFIG_SUBRIP_DECODER libavcodec/srtdec.c libavcodec/ass.c libavcodec/htmlsubtitles.c
1309+CONFIG_SUBVIEWER_DECODER libavcodec/subviewerdec.c libavcodec/ass.c
1310+CONFIG_SUBVIEWER1_DECODER libavcodec/textdec.c libavcodec/ass.c
1311+CONFIG_TEXT_DECODER libavcodec/textdec.c libavcodec/ass.c
1312+CONFIG_VPLAYER_DECODER libavcodec/textdec.c libavcodec/ass.c
1313+CONFIG_WEBVTT_DECODER libavcodec/webvttdec.c libavcodec/ass.c
1314+CONFIG_XSUB_DECODER libavcodec/xsubdec.c
1315+CONFIG_AAC_AT_DECODER libavcodec/audiotoolboxdec.c
1316+CONFIG_AC3_AT_DECODER libavcodec/audiotoolboxdec.c
1317+CONFIG_ADPCM_IMA_QT_AT_DECODER libavcodec/audiotoolboxdec.c
1318+CONFIG_ALAC_AT_DECODER libavcodec/audiotoolboxdec.c
1319+CONFIG_AMR_NB_AT_DECODER libavcodec/audiotoolboxdec.c
1320+CONFIG_EAC3_AT_DECODER libavcodec/audiotoolboxdec.c
1321+CONFIG_GSM_MS_AT_DECODER libavcodec/audiotoolboxdec.c
1322+CONFIG_ILBC_AT_DECODER libavcodec/audiotoolboxdec.c
1323+CONFIG_MP1_AT_DECODER libavcodec/audiotoolboxdec.c
1324+CONFIG_MP2_AT_DECODER libavcodec/audiotoolboxdec.c
1325+CONFIG_MP3_AT_DECODER libavcodec/audiotoolboxdec.c
1326+CONFIG_PCM_ALAW_AT_DECODER libavcodec/audiotoolboxdec.c
1327+CONFIG_PCM_MULAW_AT_DECODER libavcodec/audiotoolboxdec.c
1328+CONFIG_QDMC_AT_DECODER libavcodec/audiotoolboxdec.c
1329+CONFIG_QDM2_AT_DECODER libavcodec/audiotoolboxdec.c
1330+CONFIG_LIBARIBCAPTION_DECODER libavcodec/libaribcaption.c libavcodec/ass.c
1331+CONFIG_LIBARIBB24_DECODER libavcodec/libaribb24.c libavcodec/ass.c
1332+CONFIG_LIBCELT_DECODER libavcodec/libcelt_dec.c
1333+CONFIG_LIBCODEC2_DECODER libavcodec/libcodec2.c
1334+CONFIG_LIBDAV1D_DECODER libavcodec/libdav1d.c libavcodec/av1_parse.c
1335+CONFIG_LIBDAVS2_DECODER libavcodec/libdavs2.c
1336+CONFIG_LIBFDK_AAC_DECODER libavcodec/libfdk-aacdec.c
1337+CONFIG_LIBGSM_DECODER libavcodec/libgsmdec.c
1338+CONFIG_LIBGSM_MS_DECODER libavcodec/libgsmdec.c
1339+CONFIG_LIBILBC_DECODER libavcodec/libilbc.c
1340+CONFIG_LIBJXL_DECODER libavcodec/libjxldec.c libavcodec/libjxl.c
1341+CONFIG_LIBOPENCORE_AMRNB_DECODER libavcodec/libopencore-amr.c
1342+CONFIG_LIBOPENCORE_AMRWB_DECODER libavcodec/libopencore-amr.c
1343+CONFIG_LIBOPUS_DECODER libavcodec/libopusdec.c libavcodec/libopus.c libavcodec/vorbis_data.c
1344+CONFIG_LIBRSVG_DECODER libavcodec/librsvgdec.c
1345+CONFIG_LIBSPEEX_DECODER libavcodec/libspeexdec.c
1346+CONFIG_LIBUAVS3D_DECODER libavcodec/libuavs3d.c
1347+CONFIG_LIBVORBIS_DECODER libavcodec/libvorbisdec.c
1348+CONFIG_LIBVPX_VP8_DECODER libavcodec/libvpxdec.c
1349+CONFIG_LIBVPX_VP9_DECODER libavcodec/libvpxdec.c
1350+CONFIG_LIBXEVD_DECODER libavcodec/libxevd.c
1351+CONFIG_LIBZVBI_TELETEXT_DECODER libavcodec/libzvbi-teletextdec.c libavcodec/ass.c
1352+CONFIG_BINTEXT_DECODER libavcodec/bintext.c libavcodec/cga_data.c
1353+CONFIG_XBIN_DECODER libavcodec/bintext.c libavcodec/cga_data.c
1354+CONFIG_IDF_DECODER libavcodec/bintext.c libavcodec/cga_data.c
1355+CONFIG_LIBAOM_AV1_DECODER libavcodec/libaomdec.c libavcodec/libaom.c
1356+CONFIG_AV1_DECODER libavcodec/av1dec.c libavcodec/av1_parse.c
1357+CONFIG_AV1_CUVID_DECODER libavcodec/cuviddec.c
1358+CONFIG_AV1_MEDIACODEC_DECODER libavcodec/mediacodecdec.c
1359+CONFIG_AV1_QSV_DECODER
1360+CONFIG_LIBOPENH264_DECODER libavcodec/libopenh264dec.c libavcodec/libopenh264.c
1361+CONFIG_H264_CUVID_DECODER libavcodec/cuviddec.c
1362+CONFIG_HEVC_CUVID_DECODER libavcodec/cuviddec.c
1363+CONFIG_HEVC_MEDIACODEC_DECODER libavcodec/mediacodecdec.c
1364+CONFIG_MJPEG_CUVID_DECODER libavcodec/cuviddec.c
1365+CONFIG_MJPEG_QSV_DECODER libavcodec/qsvdec.c
1366+CONFIG_MPEG1_CUVID_DECODER libavcodec/cuviddec.c
1367+CONFIG_MPEG2_CUVID_DECODER libavcodec/cuviddec.c
1368+CONFIG_MPEG4_CUVID_DECODER libavcodec/cuviddec.c
1369+CONFIG_MPEG4_MEDIACODEC_DECODER libavcodec/mediacodecdec.c
1370+CONFIG_VC1_CUVID_DECODER libavcodec/cuviddec.c
1371+CONFIG_VP8_CUVID_DECODER libavcodec/cuviddec.c
1372+CONFIG_VP8_MEDIACODEC_DECODER libavcodec/mediacodecdec.c
1373+CONFIG_VP8_QSV_DECODER libavcodec/qsvdec.c
1374+CONFIG_VP9_CUVID_DECODER libavcodec/cuviddec.c
1375+CONFIG_VP9_MEDIACODEC_DECODER libavcodec/mediacodecdec.c
1376+CONFIG_VP9_QSV_DECODER
1377+CONFIG_VNULL_DECODER libavcodec/null.c
1378+CONFIG_ANULL_DECODER libavcodec/null.c
1379+CONFIG_A64MULTI_ENCODER libavcodec/a64multienc.c libavcodec/elbg.c
1380+CONFIG_A64MULTI5_ENCODER libavcodec/a64multienc.c libavcodec/elbg.c
1381+CONFIG_ALIAS_PIX_ENCODER libavcodec/aliaspixenc.c
1382+CONFIG_AMV_ENCODER libavcodec/mjpegenc.c libavcodec/mjpegenc_common.c
1383+CONFIG_APNG_ENCODER libavcodec/png.c libavcodec/pngenc.c
1384+CONFIG_ASV1_ENCODER libavcodec/asvenc.c libavcodec/asv.c libavcodec/mpeg12data.c
1385+CONFIG_ASV2_ENCODER libavcodec/asvenc.c libavcodec/asv.c libavcodec/mpeg12data.c
1386+CONFIG_AVRP_ENCODER libavcodec/r210enc.c
1387+CONFIG_AVUI_ENCODER libavcodec/avuienc.c
1388+CONFIG_BITPACKED_ENCODER libavcodec/bitpacked_enc.c
1389+CONFIG_BMP_ENCODER libavcodec/bmpenc.c
1390+CONFIG_CFHD_ENCODER libavcodec/cfhdenc.c libavcodec/cfhddata.c libavcodec/cfhdencdsp.c libavcodec/x86/cfhdencdsp_init.c libavcodec/x86/cfhdencdsp.asm
1391+CONFIG_CINEPAK_ENCODER libavcodec/cinepakenc.c libavcodec/elbg.c
1392+CONFIG_CLJR_ENCODER libavcodec/cljrenc.c
1393+CONFIG_COMFORTNOISE_ENCODER libavcodec/cngenc.c
1394+CONFIG_DNXHD_ENCODER libavcodec/dnxhdenc.c libavcodec/dnxhddata.c libavcodec/x86/dnxhdenc_init.c libavcodec/x86/dnxhdenc.asm
1395+CONFIG_DPX_ENCODER libavcodec/dpxenc.c
1396+CONFIG_DVVIDEO_ENCODER libavcodec/dvenc.c libavcodec/dv.c libavcodec/dvdata.c
1397+CONFIG_DXV_ENCODER libavcodec/dxvenc.c
1398+CONFIG_EXR_ENCODER libavcodec/exrenc.c libavcodec/float2half.c
1399+CONFIG_FFV1_ENCODER libavcodec/ffv1enc.c libavcodec/ffv1.c
1400+CONFIG_FFVHUFF_ENCODER
1401+CONFIG_FITS_ENCODER libavcodec/fitsenc.c
1402+CONFIG_FLASHSV_ENCODER libavcodec/flashsvenc.c
1403+CONFIG_FLASHSV2_ENCODER libavcodec/flashsv2enc.c
1404+CONFIG_FLV_ENCODER libavcodec/flvenc.c
1405+CONFIG_GIF_ENCODER libavcodec/gif.c libavcodec/lzwenc.c
1406+CONFIG_H261_ENCODER libavcodec/h261enc.c libavcodec/h261data.c libavcodec/h261.c
1407+CONFIG_H263_ENCODER libavcodec/mpeg4video.c libavcodec/h263.c libavcodec/ituh263enc.c libavcodec/h263data.c
1408+CONFIG_H263P_ENCODER
1409+CONFIG_H264_MEDIACODEC_ENCODER libavcodec/mediacodecenc.c
1410+CONFIG_HAP_ENCODER libavcodec/hapenc.c libavcodec/hap.c
1411+CONFIG_HUFFYUV_ENCODER libavcodec/huffyuv.c libavcodec/huffyuvenc.c
1412+CONFIG_JPEG2000_ENCODER libavcodec/j2kenc.c libavcodec/mqcenc.c libavcodec/mqc.c libavcodec/jpeg2000.c libavcodec/jpeg2000dwt.c
1413+CONFIG_JPEGLS_ENCODER libavcodec/jpeglsenc.c libavcodec/jpegls.c
1414+CONFIG_LJPEG_ENCODER libavcodec/ljpegenc.c libavcodec/mjpegenc_common.c
1415+CONFIG_MAGICYUV_ENCODER libavcodec/magicyuvenc.c
1416+CONFIG_MJPEG_ENCODER libavcodec/mjpegenc.c libavcodec/mjpegenc_common.c libavcodec/mjpegenc_huffman.c
1417+CONFIG_MPEG1VIDEO_ENCODER libavcodec/mpeg12enc.c libavcodec/mpeg12.c
1418+CONFIG_MPEG2VIDEO_ENCODER libavcodec/mpeg12enc.c libavcodec/mpeg12.c
1419+CONFIG_MPEG4_ENCODER libavcodec/mpeg4videoenc.c
1420+CONFIG_MSMPEG4V2_ENCODER
1421+CONFIG_MSMPEG4V3_ENCODER
1422+CONFIG_MSRLE_ENCODER libavcodec/msrleenc.c
1423+CONFIG_MSVIDEO1_ENCODER libavcodec/msvideo1enc.c libavcodec/elbg.c
1424+CONFIG_PAM_ENCODER libavcodec/pamenc.c
1425+CONFIG_PBM_ENCODER libavcodec/pnmenc.c
1426+CONFIG_PCX_ENCODER libavcodec/pcxenc.c
1427+CONFIG_PFM_ENCODER libavcodec/pnmenc.c
1428+CONFIG_PGM_ENCODER libavcodec/pnmenc.c
1429+CONFIG_PGMYUV_ENCODER libavcodec/pnmenc.c
1430+CONFIG_PHM_ENCODER libavcodec/pnmenc.c libavcodec/float2half.c
1431+CONFIG_PNG_ENCODER libavcodec/png.c libavcodec/pngenc.c
1432+CONFIG_PPM_ENCODER libavcodec/pnmenc.c
1433+CONFIG_PRORES_ENCODER libavcodec/proresenc_anatoliy.c libavcodec/proresdata.c
1434+CONFIG_PRORES_AW_ENCODER libavcodec/proresenc_anatoliy.c libavcodec/proresdata.c
1435+CONFIG_PRORES_KS_ENCODER libavcodec/proresenc_kostya.c libavcodec/proresdata.c
1436+CONFIG_QOI_ENCODER libavcodec/qoienc.c
1437+CONFIG_QTRLE_ENCODER libavcodec/qtrleenc.c
1438+CONFIG_R10K_ENCODER libavcodec/r210enc.c
1439+CONFIG_R210_ENCODER libavcodec/r210enc.c
1440+CONFIG_RAWVIDEO_ENCODER libavcodec/rawenc.c
1441+CONFIG_ROQ_ENCODER libavcodec/roqvideoenc.c libavcodec/roqvideo.c libavcodec/elbg.c
1442+CONFIG_RPZA_ENCODER libavcodec/rpzaenc.c
1443+CONFIG_RV10_ENCODER libavcodec/rv10enc.c
1444+CONFIG_RV20_ENCODER libavcodec/rv20enc.c
1445+CONFIG_S302M_ENCODER libavcodec/s302menc.c
1446+CONFIG_SGI_ENCODER libavcodec/sgienc.c libavcodec/rle.c
1447+CONFIG_SMC_ENCODER libavcodec/smcenc.c
1448+CONFIG_SNOW_ENCODER libavcodec/snowenc.c libavcodec/snow.c libavcodec/snow_dwt.c libavcodec/h263.c libavcodec/h263data.c libavcodec/ituh263enc.c libavcodec/x86/snowdsp.c
1449+CONFIG_SPEEDHQ_ENCODER libavcodec/speedhq.c libavcodec/mpeg12data.c libavcodec/mpeg12enc.c libavcodec/speedhqenc.c
1450+CONFIG_SUNRAST_ENCODER libavcodec/sunrastenc.c
1451+CONFIG_SVQ1_ENCODER libavcodec/svq1enc.c libavcodec/svq1.c libavcodec/h263data.c libavcodec/h263.c libavcodec/ituh263enc.c libavcodec/x86/svq1enc_init.c libavcodec/x86/svq1enc.asm
1452+CONFIG_TARGA_ENCODER libavcodec/targaenc.c libavcodec/rle.c
1453+CONFIG_TIFF_ENCODER libavcodec/tiffenc.c libavcodec/rle.c libavcodec/lzwenc.c
1454+CONFIG_UTVIDEO_ENCODER libavcodec/utvideoenc.c
1455+CONFIG_V210_ENCODER libavcodec/v210enc.c libavcodec/x86/v210enc_init.c libavcodec/x86/v210enc.asm
1456+CONFIG_V308_ENCODER libavcodec/v308enc.c
1457+CONFIG_V408_ENCODER libavcodec/v408enc.c
1458+CONFIG_V410_ENCODER libavcodec/v410enc.c
1459+CONFIG_VBN_ENCODER libavcodec/vbnenc.c
1460+CONFIG_VC2_ENCODER libavcodec/vc2enc.c libavcodec/vc2enc_dwt.c libavcodec/diractab.c
1461+CONFIG_WBMP_ENCODER libavcodec/wbmpenc.c
1462+CONFIG_WRAPPED_AVFRAME_ENCODER libavcodec/wrapped_avframe.c
1463+CONFIG_WMV1_ENCODER
1464+CONFIG_WMV2_ENCODER libavcodec/wmv2enc.c libavcodec/wmv2.c libavcodec/wmv2data.c
1465+CONFIG_XBM_ENCODER libavcodec/xbmenc.c
1466+CONFIG_XFACE_ENCODER libavcodec/xfaceenc.c libavcodec/xface.c
1467+CONFIG_XWD_ENCODER libavcodec/xwdenc.c
1468+CONFIG_Y41P_ENCODER libavcodec/y41penc.c
1469+CONFIG_YUV4_ENCODER libavcodec/yuv4enc.c
1470+CONFIG_ZLIB_ENCODER libavcodec/lclenc.c
1471+CONFIG_ZMBV_ENCODER libavcodec/zmbvenc.c
1472+CONFIG_AAC_ENCODER libavcodec/aacenc.c libavcodec/aaccoder.c libavcodec/aacenctab.c libavcodec/aacpsy.c libavcodec/aactab.c libavcodec/aacenc_is.c libavcodec/aacenc_tns.c libavcodec/aacenc_ltp.c libavcodec/aacenc_pred.c libavcodec/psymodel.c libavcodec/kbdwin.c libavcodec/mpeg4audio_sample_rates.c libavcodec/x86/aacencdsp_init.c libavcodec/x86/aacencdsp.asm
1473+CONFIG_AC3_ENCODER libavcodec/ac3enc_float.c libavcodec/ac3enc.c libavcodec/ac3tab.c libavcodec/ac3.c libavcodec/kbdwin.c
1474+CONFIG_AC3_FIXED_ENCODER libavcodec/ac3enc_fixed.c libavcodec/ac3enc.c libavcodec/ac3tab.c libavcodec/ac3.c libavcodec/kbdwin.c
1475+CONFIG_ALAC_ENCODER libavcodec/alacenc.c libavcodec/alac_data.c
1476+CONFIG_APTX_ENCODER libavcodec/aptxenc.c libavcodec/aptx.c
1477+CONFIG_APTX_HD_ENCODER libavcodec/aptxenc.c libavcodec/aptx.c
1478+CONFIG_DCA_ENCODER libavcodec/dcaenc.c libavcodec/dcadata.c libavcodec/dcahuff.c libavcodec/dcaadpcm.c
1479+CONFIG_DFPWM_ENCODER libavcodec/dfpwmenc.c
1480+CONFIG_EAC3_ENCODER libavcodec/eac3enc.c libavcodec/eac3_data.c
1481+CONFIG_FLAC_ENCODER libavcodec/flacenc.c libavcodec/flacdata.c libavcodec/flacencdsp.c libavcodec/x86/flacencdsp_init.c libavcodec/x86/flac_dsp_gpl.asm
1482+CONFIG_G723_1_ENCODER libavcodec/g723_1enc.c libavcodec/g723_1.c libavcodec/acelp_vectors.c libavcodec/celp_filters.c libavcodec/celp_math.c
1483+CONFIG_HDR_ENCODER libavcodec/hdrenc.c
1484+CONFIG_MLP_ENCODER libavcodec/mlpenc.c libavcodec/mlp.c
1485+CONFIG_MP2_ENCODER libavcodec/mpegaudioenc_float.c libavcodec/mpegaudio.c libavcodec/mpegaudiodata.c libavcodec/mpegaudiodsp_data.c libavcodec/mpegaudiotabs.c
1486+CONFIG_MP2FIXED_ENCODER libavcodec/mpegaudioenc_fixed.c libavcodec/mpegaudio.c libavcodec/mpegaudiodata.c libavcodec/mpegaudiodsp_data.c libavcodec/mpegaudiotabs.c
1487+CONFIG_NELLYMOSER_ENCODER libavcodec/nellymoserenc.c libavcodec/nellymoser.c
1488+CONFIG_OPUS_ENCODER libavcodec/opusenc.c libavcodec/opusenc_psy.c libavcodec/opus_celt.c libavcodec/opus_pvq.c libavcodec/opus_rc.c libavcodec/opustab.c libavcodec/x86/celt_pvq_init.c libavcodec/x86/celt_pvq_search.asm
1489+CONFIG_RA_144_ENCODER libavcodec/ra144enc.c libavcodec/ra144.c libavcodec/celp_filters.c
1490+CONFIG_SBC_ENCODER libavcodec/sbcenc.c libavcodec/sbc.c libavcodec/sbcdsp.c libavcodec/sbcdsp_data.c libavcodec/x86/sbcdsp_init.c libavcodec/x86/sbcdsp.asm
1491+CONFIG_SONIC_ENCODER libavcodec/sonic.c
1492+CONFIG_SONIC_LS_ENCODER libavcodec/sonic.c
1493+CONFIG_TRUEHD_ENCODER libavcodec/mlpenc.c libavcodec/mlp.c
1494+CONFIG_TTA_ENCODER libavcodec/ttaenc.c libavcodec/ttaencdsp.c libavcodec/ttadata.c libavcodec/x86/ttaencdsp_init.c libavcodec/x86/ttaencdsp.asm
1495+CONFIG_VORBIS_ENCODER libavcodec/vorbisenc.c libavcodec/vorbis.c libavcodec/vorbis_data.c
1496+CONFIG_WAVPACK_ENCODER libavcodec/wavpackdata.c libavcodec/wavpackenc.c
1497+CONFIG_WMAV1_ENCODER libavcodec/wmaenc.c libavcodec/wma.c libavcodec/wma_common.c libavcodec/aactab.c
1498+CONFIG_WMAV2_ENCODER libavcodec/wmaenc.c libavcodec/wma.c libavcodec/wma_common.c libavcodec/aactab.c
1499+CONFIG_PCM_ALAW_ENCODER libavcodec/pcm.c
1500+CONFIG_PCM_BLURAY_ENCODER libavcodec/pcm-blurayenc.c
1501+CONFIG_PCM_DVD_ENCODER libavcodec/pcm-dvdenc.c
1502+CONFIG_PCM_F32BE_ENCODER libavcodec/pcm.c
1503+CONFIG_PCM_F32LE_ENCODER libavcodec/pcm.c
1504+CONFIG_PCM_F64BE_ENCODER libavcodec/pcm.c
1505+CONFIG_PCM_F64LE_ENCODER libavcodec/pcm.c
1506+CONFIG_PCM_MULAW_ENCODER libavcodec/pcm.c
1507+CONFIG_PCM_S8_ENCODER libavcodec/pcm.c
1508+CONFIG_PCM_S8_PLANAR_ENCODER libavcodec/pcm.c
1509+CONFIG_PCM_S16BE_ENCODER libavcodec/pcm.c
1510+CONFIG_PCM_S16BE_PLANAR_ENCODER libavcodec/pcm.c
1511+CONFIG_PCM_S16LE_ENCODER libavcodec/pcm.c
1512+CONFIG_PCM_S16LE_PLANAR_ENCODER libavcodec/pcm.c
1513+CONFIG_PCM_S24BE_ENCODER libavcodec/pcm.c
1514+CONFIG_PCM_S24DAUD_ENCODER libavcodec/pcm.c
1515+CONFIG_PCM_S24LE_ENCODER libavcodec/pcm.c
1516+CONFIG_PCM_S24LE_PLANAR_ENCODER libavcodec/pcm.c
1517+CONFIG_PCM_S32BE_ENCODER libavcodec/pcm.c
1518+CONFIG_PCM_S32LE_ENCODER libavcodec/pcm.c
1519+CONFIG_PCM_S32LE_PLANAR_ENCODER libavcodec/pcm.c
1520+CONFIG_PCM_S64BE_ENCODER libavcodec/pcm.c
1521+CONFIG_PCM_S64LE_ENCODER libavcodec/pcm.c
1522+CONFIG_PCM_U8_ENCODER libavcodec/pcm.c
1523+CONFIG_PCM_U16BE_ENCODER libavcodec/pcm.c
1524+CONFIG_PCM_U16LE_ENCODER libavcodec/pcm.c
1525+CONFIG_PCM_U24BE_ENCODER libavcodec/pcm.c
1526+CONFIG_PCM_U24LE_ENCODER libavcodec/pcm.c
1527+CONFIG_PCM_U32BE_ENCODER libavcodec/pcm.c
1528+CONFIG_PCM_U32LE_ENCODER libavcodec/pcm.c
1529+CONFIG_PCM_VIDC_ENCODER libavcodec/pcm.c
1530+CONFIG_ROQ_DPCM_ENCODER libavcodec/roqaudioenc.c
1531+CONFIG_ADPCM_ADX_ENCODER libavcodec/adxenc.c libavcodec/adx.c
1532+CONFIG_ADPCM_ARGO_ENCODER libavcodec/adpcm.c libavcodec/adpcm_data.c libavcodec/adpcmenc.c
1533+CONFIG_ADPCM_G722_ENCODER libavcodec/g722.c libavcodec/g722dsp.c libavcodec/g722enc.c libavcodec/x86/g722dsp_init.c libavcodec/x86/g722dsp.asm
1534+CONFIG_ADPCM_G726_ENCODER libavcodec/g726.c
1535+CONFIG_ADPCM_G726LE_ENCODER libavcodec/g726.c
1536+CONFIG_ADPCM_IMA_AMV_ENCODER libavcodec/adpcmenc.c libavcodec/adpcm_data.c
1537+CONFIG_ADPCM_IMA_ALP_ENCODER libavcodec/adpcmenc.c libavcodec/adpcm_data.c
1538+CONFIG_ADPCM_IMA_APM_ENCODER libavcodec/adpcmenc.c libavcodec/adpcm_data.c
1539+CONFIG_ADPCM_IMA_QT_ENCODER libavcodec/adpcmenc.c libavcodec/adpcm_data.c
1540+CONFIG_ADPCM_IMA_SSI_ENCODER libavcodec/adpcmenc.c libavcodec/adpcm_data.c
1541+CONFIG_ADPCM_IMA_WAV_ENCODER libavcodec/adpcmenc.c libavcodec/adpcm_data.c
1542+CONFIG_ADPCM_IMA_WS_ENCODER libavcodec/adpcmenc.c libavcodec/adpcm_data.c
1543+CONFIG_ADPCM_MS_ENCODER libavcodec/adpcmenc.c libavcodec/adpcm_data.c
1544+CONFIG_ADPCM_SWF_ENCODER libavcodec/adpcmenc.c libavcodec/adpcm_data.c
1545+CONFIG_ADPCM_YAMAHA_ENCODER libavcodec/adpcmenc.c libavcodec/adpcm_data.c
1546+CONFIG_SSA_ENCODER libavcodec/assenc.c libavcodec/ass.c
1547+CONFIG_ASS_ENCODER libavcodec/assenc.c libavcodec/ass.c
1548+CONFIG_DVBSUB_ENCODER libavcodec/dvbsubenc.c
1549+CONFIG_DVDSUB_ENCODER libavcodec/dvdsubenc.c libavcodec/dvdsub.c
1550+CONFIG_MOVTEXT_ENCODER libavcodec/movtextenc.c libavcodec/ass_split.c
1551+CONFIG_SRT_ENCODER libavcodec/srtenc.c libavcodec/ass_split.c
1552+CONFIG_SUBRIP_ENCODER libavcodec/srtenc.c libavcodec/ass_split.c
1553+CONFIG_TEXT_ENCODER libavcodec/srtenc.c libavcodec/ass_split.c
1554+CONFIG_TTML_ENCODER libavcodec/ttmlenc.c libavcodec/ass_split.c
1555+CONFIG_WEBVTT_ENCODER libavcodec/webvttenc.c libavcodec/ass_split.c
1556+CONFIG_XSUB_ENCODER libavcodec/xsubenc.c
1557+CONFIG_AAC_AT_ENCODER libavcodec/audiotoolboxenc.c
1558+CONFIG_ALAC_AT_ENCODER libavcodec/audiotoolboxenc.c
1559+CONFIG_ILBC_AT_ENCODER libavcodec/audiotoolboxenc.c
1560+CONFIG_PCM_ALAW_AT_ENCODER libavcodec/audiotoolboxenc.c
1561+CONFIG_PCM_MULAW_AT_ENCODER libavcodec/audiotoolboxenc.c
1562+CONFIG_LIBAOM_AV1_ENCODER libavcodec/libaomenc.c libavcodec/libaom.c
1563+CONFIG_LIBCODEC2_ENCODER libavcodec/libcodec2.c
1564+CONFIG_LIBFDK_AAC_ENCODER libavcodec/libfdk-aacenc.c
1565+CONFIG_LIBGSM_ENCODER libavcodec/libgsmenc.c
1566+CONFIG_LIBGSM_MS_ENCODER libavcodec/libgsmenc.c
1567+CONFIG_LIBILBC_ENCODER libavcodec/libilbc.c
1568+CONFIG_LIBJXL_ENCODER libavcodec/libjxlenc.c libavcodec/libjxl.c
1569+CONFIG_LIBMP3LAME_ENCODER libavcodec/libmp3lame.c
1570+CONFIG_LIBOPENCORE_AMRNB_ENCODER libavcodec/libopencore-amr.c
1571+CONFIG_LIBOPENJPEG_ENCODER libavcodec/libopenjpegenc.c
1572+CONFIG_LIBOPUS_ENCODER libavcodec/libopusenc.c libavcodec/libopus.c libavcodec/vorbis_data.c
1573+CONFIG_LIBRAV1E_ENCODER libavcodec/librav1e.c
1574+CONFIG_LIBSHINE_ENCODER libavcodec/libshine.c
1575+CONFIG_LIBSPEEX_ENCODER libavcodec/libspeexenc.c
1576+CONFIG_LIBSVTAV1_ENCODER libavcodec/libsvtav1.c
1577+CONFIG_LIBTHEORA_ENCODER libavcodec/libtheoraenc.c
1578+CONFIG_LIBTWOLAME_ENCODER libavcodec/libtwolame.c
1579+CONFIG_LIBVO_AMRWBENC_ENCODER libavcodec/libvo-amrwbenc.c
1580+CONFIG_LIBVORBIS_ENCODER libavcodec/libvorbisenc.c libavcodec/vorbis_data.c
1581+CONFIG_LIBVPX_VP8_ENCODER libavcodec/libvpxenc.c
1582+CONFIG_LIBVPX_VP9_ENCODER libavcodec/libvpxenc.c
1583+CONFIG_LIBWEBP_ANIM_ENCODER libavcodec/libwebpenc_common.c libavcodec/libwebpenc_animencoder.c
1584+CONFIG_LIBWEBP_ENCODER libavcodec/libwebpenc_common.c libavcodec/libwebpenc.c
1585+CONFIG_LIBX262_ENCODER libavcodec/libx264.c
1586+CONFIG_LIBX264_ENCODER libavcodec/libx264.c
1587+CONFIG_LIBX264RGB_ENCODER
1588+CONFIG_LIBX265_ENCODER libavcodec/libx265.c
1589+CONFIG_LIBXEVE_ENCODER libavcodec/libxeve.c
1590+CONFIG_LIBXAVS_ENCODER libavcodec/libxavs.c
1591+CONFIG_LIBXAVS2_ENCODER libavcodec/libxavs2.c
1592+CONFIG_LIBXVID_ENCODER libavcodec/libxvid.c
1593+CONFIG_AAC_MF_ENCODER libavcodec/mfenc.c libavcodec/mf_utils.c
1594+CONFIG_AC3_MF_ENCODER libavcodec/mfenc.c libavcodec/mf_utils.c
1595+CONFIG_H263_V4L2M2M_ENCODER libavcodec/v4l2_m2m_enc.c
1596+CONFIG_AV1_MEDIACODEC_ENCODER libavcodec/mediacodecenc.c
1597+CONFIG_AV1_NVENC_ENCODER libavcodec/nvenc_av1.c libavcodec/nvenc.c
1598+CONFIG_AV1_QSV_ENCODER libavcodec/qsvenc_av1.c
1599+CONFIG_AV1_AMF_ENCODER libavcodec/amfenc_av1.c
1600+CONFIG_AV1_VAAPI_ENCODER libavcodec/vaapi_encode_av1.c libavcodec/av1_levels.c
1601+CONFIG_LIBOPENH264_ENCODER libavcodec/libopenh264enc.c libavcodec/libopenh264.c
1602+CONFIG_H264_AMF_ENCODER libavcodec/amfenc_h264.c
1603+CONFIG_H264_MF_ENCODER libavcodec/mfenc.c libavcodec/mf_utils.c
1604+CONFIG_H264_NVENC_ENCODER libavcodec/nvenc_h264.c libavcodec/nvenc.c
1605+CONFIG_H264_OMX_ENCODER libavcodec/omx.c
1606+CONFIG_H264_QSV_ENCODER libavcodec/qsvenc_h264.c
1607+CONFIG_H264_V4L2M2M_ENCODER libavcodec/v4l2_m2m_enc.c
1608+CONFIG_H264_VAAPI_ENCODER libavcodec/vaapi_encode_h264.c libavcodec/h264_levels.c libavcodec/h2645data.c
1609+CONFIG_H264_VIDEOTOOLBOX_ENCODER libavcodec/videotoolboxenc.c
1610+CONFIG_HEVC_AMF_ENCODER libavcodec/amfenc_hevc.c
1611+CONFIG_HEVC_MEDIACODEC_ENCODER libavcodec/mediacodecenc.c
1612+CONFIG_HEVC_MF_ENCODER libavcodec/mfenc.c libavcodec/mf_utils.c
1613+CONFIG_HEVC_NVENC_ENCODER libavcodec/nvenc_hevc.c libavcodec/nvenc.c
1614+CONFIG_HEVC_QSV_ENCODER libavcodec/qsvenc_hevc.c libavcodec/hevc_ps_enc.c libavcodec/hevc_data.c
1615+CONFIG_HEVC_V4L2M2M_ENCODER libavcodec/v4l2_m2m_enc.c
1616+CONFIG_HEVC_VAAPI_ENCODER libavcodec/vaapi_encode_h265.c libavcodec/h265_profile_level.c libavcodec/h2645data.c
1617+CONFIG_HEVC_VIDEOTOOLBOX_ENCODER libavcodec/videotoolboxenc.c
1618+CONFIG_LIBKVAZAAR_ENCODER libavcodec/libkvazaar.c
1619+CONFIG_MJPEG_QSV_ENCODER libavcodec/qsvenc_jpeg.c
1620+CONFIG_MJPEG_VAAPI_ENCODER libavcodec/vaapi_encode_mjpeg.c
1621+CONFIG_MP3_MF_ENCODER libavcodec/mfenc.c libavcodec/mf_utils.c
1622+CONFIG_MPEG2_QSV_ENCODER libavcodec/qsvenc_mpeg2.c
1623+CONFIG_MPEG2_VAAPI_ENCODER libavcodec/vaapi_encode_mpeg2.c
1624+CONFIG_MPEG4_MEDIACODEC_ENCODER libavcodec/mediacodecenc.c
1625+CONFIG_MPEG4_OMX_ENCODER libavcodec/omx.c
1626+CONFIG_MPEG4_V4L2M2M_ENCODER libavcodec/v4l2_m2m_enc.c
1627+CONFIG_PRORES_VIDEOTOOLBOX_ENCODER libavcodec/videotoolboxenc.c
1628+CONFIG_VP8_MEDIACODEC_ENCODER libavcodec/mediacodecenc.c
1629+CONFIG_VP8_V4L2M2M_ENCODER libavcodec/v4l2_m2m_enc.c
1630+CONFIG_VP8_VAAPI_ENCODER libavcodec/vaapi_encode_vp8.c
1631+CONFIG_VP9_MEDIACODEC_ENCODER libavcodec/mediacodecenc.c
1632+CONFIG_VP9_VAAPI_ENCODER libavcodec/vaapi_encode_vp9.c
1633+CONFIG_VP9_QSV_ENCODER libavcodec/qsvenc_vp9.c
1634+CONFIG_VNULL_ENCODER libavcodec/null.c
1635+CONFIG_ANULL_ENCODER libavcodec/null.c
1636+CONFIG_AV1_D3D11VA_HWACCEL libavcodec/dxva2_av1.c
1637+CONFIG_AV1_D3D11VA2_HWACCEL
1638+CONFIG_AV1_D3D12VA_HWACCEL libavcodec/dxva2_av1.c libavcodec/d3d12va_av1.c
1639+CONFIG_AV1_DXVA2_HWACCEL libavcodec/dxva2_av1.c
1640+CONFIG_AV1_NVDEC_HWACCEL libavcodec/nvdec_av1.c
1641+CONFIG_AV1_VAAPI_HWACCEL libavcodec/vaapi_av1.c
1642+CONFIG_AV1_VDPAU_HWACCEL libavcodec/vdpau_av1.c
1643+CONFIG_AV1_VULKAN_HWACCEL libavcodec/vulkan_decode.c libavcodec/vulkan_av1.c
1644+CONFIG_H263_VAAPI_HWACCEL libavcodec/vaapi_mpeg4.c
1645+CONFIG_H263_VIDEOTOOLBOX_HWACCEL libavcodec/videotoolbox.c
1646+CONFIG_H264_D3D11VA_HWACCEL libavcodec/dxva2_h264.c
1647+CONFIG_H264_D3D11VA2_HWACCEL
1648+CONFIG_H264_D3D12VA_HWACCEL libavcodec/dxva2_h264.c libavcodec/d3d12va_h264.c
1649+CONFIG_H264_DXVA2_HWACCEL libavcodec/dxva2_h264.c
1650+CONFIG_H264_NVDEC_HWACCEL libavcodec/nvdec_h264.c
1651+CONFIG_H264_VAAPI_HWACCEL libavcodec/vaapi_h264.c
1652+CONFIG_H264_VDPAU_HWACCEL libavcodec/vdpau_h264.c
1653+CONFIG_H264_VIDEOTOOLBOX_HWACCEL libavcodec/videotoolbox.c
1654+CONFIG_H264_VULKAN_HWACCEL libavcodec/vulkan_decode.c libavcodec/vulkan_h264.c
1655+CONFIG_HEVC_D3D11VA_HWACCEL libavcodec/dxva2_hevc.c
1656+CONFIG_HEVC_D3D11VA2_HWACCEL
1657+CONFIG_HEVC_D3D12VA_HWACCEL libavcodec/dxva2_hevc.c libavcodec/d3d12va_hevc.c
1658+CONFIG_HEVC_DXVA2_HWACCEL libavcodec/dxva2_hevc.c
1659+CONFIG_HEVC_NVDEC_HWACCEL libavcodec/nvdec_hevc.c
1660+CONFIG_HEVC_VAAPI_HWACCEL libavcodec/vaapi_hevc.c libavcodec/h265_profile_level.c
1661+CONFIG_HEVC_VDPAU_HWACCEL libavcodec/vdpau_hevc.c libavcodec/h265_profile_level.c
1662+CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL
1663+CONFIG_HEVC_VULKAN_HWACCEL libavcodec/vulkan_decode.c libavcodec/vulkan_hevc.c
1664+CONFIG_MJPEG_NVDEC_HWACCEL libavcodec/nvdec_mjpeg.c
1665+CONFIG_MJPEG_VAAPI_HWACCEL libavcodec/vaapi_mjpeg.c
1666+CONFIG_MPEG1_NVDEC_HWACCEL libavcodec/nvdec_mpeg12.c
1667+CONFIG_MPEG1_VDPAU_HWACCEL libavcodec/vdpau_mpeg12.c
1668+CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL libavcodec/videotoolbox.c
1669+CONFIG_MPEG2_D3D11VA_HWACCEL libavcodec/dxva2_mpeg2.c
1670+CONFIG_MPEG2_D3D11VA2_HWACCEL
1671+CONFIG_MPEG2_D3D12VA_HWACCEL libavcodec/dxva2_mpeg2.c libavcodec/d3d12va_mpeg2.c
1672+CONFIG_MPEG2_DXVA2_HWACCEL libavcodec/dxva2_mpeg2.c
1673+CONFIG_MPEG2_NVDEC_HWACCEL libavcodec/nvdec_mpeg12.c
1674+CONFIG_MPEG2_VAAPI_HWACCEL libavcodec/vaapi_mpeg2.c
1675+CONFIG_MPEG2_VDPAU_HWACCEL libavcodec/vdpau_mpeg12.c
1676+CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL libavcodec/videotoolbox.c
1677+CONFIG_MPEG4_NVDEC_HWACCEL libavcodec/nvdec_mpeg4.c
1678+CONFIG_MPEG4_VAAPI_HWACCEL libavcodec/vaapi_mpeg4.c
1679+CONFIG_MPEG4_VDPAU_HWACCEL libavcodec/vdpau_mpeg4.c
1680+CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL libavcodec/videotoolbox.c
1681+CONFIG_PRORES_VIDEOTOOLBOX_HWACCEL
1682+CONFIG_VC1_D3D11VA_HWACCEL libavcodec/dxva2_vc1.c
1683+CONFIG_VC1_D3D11VA2_HWACCEL
1684+CONFIG_VC1_D3D12VA_HWACCEL libavcodec/dxva2_vc1.c libavcodec/d3d12va_vc1.c
1685+CONFIG_VC1_DXVA2_HWACCEL libavcodec/dxva2_vc1.c
1686+CONFIG_VC1_NVDEC_HWACCEL libavcodec/nvdec_vc1.c
1687+CONFIG_VC1_VAAPI_HWACCEL libavcodec/vaapi_vc1.c
1688+CONFIG_VC1_VDPAU_HWACCEL libavcodec/vdpau_vc1.c
1689+CONFIG_VP8_NVDEC_HWACCEL libavcodec/nvdec_vp8.c
1690+CONFIG_VP8_VAAPI_HWACCEL libavcodec/vaapi_vp8.c
1691+CONFIG_VP9_D3D11VA_HWACCEL libavcodec/dxva2_vp9.c
1692+CONFIG_VP9_D3D11VA2_HWACCEL
1693+CONFIG_VP9_D3D12VA_HWACCEL libavcodec/dxva2_vp9.c libavcodec/d3d12va_vp9.c
1694+CONFIG_VP9_DXVA2_HWACCEL libavcodec/dxva2_vp9.c
1695+CONFIG_VP9_NVDEC_HWACCEL libavcodec/nvdec_vp9.c
1696+CONFIG_VP9_VAAPI_HWACCEL libavcodec/vaapi_vp9.c
1697+CONFIG_VP9_VDPAU_HWACCEL libavcodec/vdpau_vp9.c
1698+CONFIG_VP9_VIDEOTOOLBOX_HWACCEL libavcodec/videotoolbox_vp9.c
1699+CONFIG_WMV3_D3D11VA_HWACCEL
1700+CONFIG_WMV3_D3D11VA2_HWACCEL
1701+CONFIG_WMV3_D3D12VA_HWACCEL
1702+CONFIG_WMV3_DXVA2_HWACCEL
1703+CONFIG_WMV3_NVDEC_HWACCEL
1704+CONFIG_WMV3_VAAPI_HWACCEL
1705+CONFIG_WMV3_VDPAU_HWACCEL
1706+CONFIG_AAC_PARSER libavcodec/aac_parser.c libavcodec/aac_ac3_parser.c
1707+CONFIG_AAC_LATM_PARSER libavcodec/latm_parser.c
1708+CONFIG_AC3_PARSER libavcodec/aac_ac3_parser.c libavcodec/ac3tab.c libavcodec/ac3_channel_layout_tab.c
1709+CONFIG_ADX_PARSER libavcodec/adx_parser.c
1710+CONFIG_AMR_PARSER libavcodec/amr_parser.c
1711+CONFIG_AV1_PARSER libavcodec/av1_parser.c libavcodec/av1_parse.c
1712+CONFIG_AVS2_PARSER libavcodec/avs2.c libavcodec/avs2_parser.c
1713+CONFIG_AVS3_PARSER libavcodec/avs3_parser.c
1714+CONFIG_BMP_PARSER libavcodec/bmp_parser.c
1715+CONFIG_CAVSVIDEO_PARSER libavcodec/cavs_parser.c
1716+CONFIG_COOK_PARSER libavcodec/cook_parser.c
1717+CONFIG_CRI_PARSER libavcodec/cri_parser.c
1718+CONFIG_DCA_PARSER libavcodec/dca_parser.c libavcodec/dca_exss.c libavcodec/dca.c libavcodec/dca_sample_rate_tab.c
1719+CONFIG_DIRAC_PARSER libavcodec/dirac_parser.c
1720+CONFIG_DNXHD_PARSER libavcodec/dnxhd_parser.c libavcodec/dnxhddata.c
1721+CONFIG_DOLBY_E_PARSER libavcodec/dolby_e_parser.c libavcodec/dolby_e_parse.c
1722+CONFIG_DPX_PARSER libavcodec/dpx_parser.c
1723+CONFIG_DVAUDIO_PARSER libavcodec/dvaudio_parser.c
1724+CONFIG_DVBSUB_PARSER libavcodec/dvbsub_parser.c
1725+CONFIG_DVDSUB_PARSER libavcodec/dvdsub_parser.c
1726+CONFIG_DVD_NAV_PARSER libavcodec/dvd_nav_parser.c
1727+CONFIG_EVC_PARSER libavcodec/evc_parser.c
1728+CONFIG_FLAC_PARSER libavcodec/flac_parser.c libavcodec/flacdata.c libavcodec/flac.c
1729+CONFIG_FTR_PARSER libavcodec/ftr_parser.c
1730+CONFIG_G723_1_PARSER libavcodec/g723_1_parser.c
1731+CONFIG_G729_PARSER libavcodec/g729_parser.c
1732+CONFIG_GIF_PARSER libavcodec/gif_parser.c
1733+CONFIG_GSM_PARSER libavcodec/gsm_parser.c
1734+CONFIG_H261_PARSER libavcodec/h261_parser.c
1735+CONFIG_H263_PARSER libavcodec/h263_parser.c
1736+CONFIG_H264_PARSER libavcodec/h264_parser.c libavcodec/h264data.c
1737+CONFIG_HEVC_PARSER libavcodec/hevc_parser.c libavcodec/hevc_data.c
1738+CONFIG_HDR_PARSER libavcodec/hdr_parser.c
1739+CONFIG_IPU_PARSER libavcodec/ipu_parser.c
1740+CONFIG_JPEG2000_PARSER libavcodec/jpeg2000_parser.c
1741+CONFIG_JPEGXL_PARSER libavcodec/jpegxl_parser.c libavcodec/jpegxl_parse.c
1742+CONFIG_MISC4_PARSER libavcodec/misc4_parser.c
1743+CONFIG_MJPEG_PARSER libavcodec/mjpeg_parser.c
1744+CONFIG_MLP_PARSER libavcodec/mlp_parse.c libavcodec/mlp_parser.c libavcodec/mlp.c
1745+CONFIG_MPEG4VIDEO_PARSER libavcodec/mpeg4video_parser.c libavcodec/h263.c libavcodec/mpeg4videodec.c libavcodec/mpeg4video.c libavcodec/ituh263dec.c libavcodec/h263dec.c libavcodec/h263data.c
1746+CONFIG_MPEGAUDIO_PARSER libavcodec/mpegaudio_parser.c
1747+CONFIG_MPEGVIDEO_PARSER libavcodec/mpegvideo_parser.c libavcodec/mpeg12.c libavcodec/mpeg12data.c
1748+CONFIG_OPUS_PARSER libavcodec/opus_parser.c libavcodec/opus_parse.c libavcodec/vorbis_data.c
1749+CONFIG_PNG_PARSER libavcodec/png_parser.c
1750+CONFIG_PNM_PARSER libavcodec/pnm_parser.c libavcodec/pnm.c
1751+CONFIG_QOI_PARSER libavcodec/qoi_parser.c
1752+CONFIG_RV34_PARSER libavcodec/rv34_parser.c
1753+CONFIG_SBC_PARSER libavcodec/sbc_parser.c
1754+CONFIG_SIPR_PARSER libavcodec/sipr_parser.c
1755+CONFIG_TAK_PARSER libavcodec/tak_parser.c libavcodec/tak.c
1756+CONFIG_VC1_PARSER libavcodec/vc1_parser.c libavcodec/vc1.c libavcodec/vc1data.c libavcodec/wmv2data.c
1757+CONFIG_VORBIS_PARSER
1758+CONFIG_VP3_PARSER libavcodec/vp3_parser.c
1759+CONFIG_VP8_PARSER libavcodec/vp8_parser.c
1760+CONFIG_VP9_PARSER libavcodec/vp9_parser.c
1761+CONFIG_VVC_PARSER libavcodec/vvc_parser.c
1762+CONFIG_WEBP_PARSER libavcodec/webp_parser.c
1763+CONFIG_XBM_PARSER libavcodec/xbm_parser.c
1764+CONFIG_XMA_PARSER libavcodec/xma_parser.c
1765+CONFIG_XWD_PARSER libavcodec/xwd_parser.c
1766+CONFIG_ALSA_INDEV libavdevice/alsa_dec.c libavdevice/alsa.c libavdevice/timefilter.c
1767+CONFIG_ANDROID_CAMERA_INDEV libavdevice/android_camera.c
1768+CONFIG_AVFOUNDATION_INDEV libavdevice/avfoundation.c
1769+CONFIG_BKTR_INDEV libavdevice/bktr.c
1770+CONFIG_DECKLINK_INDEV libavdevice/decklink_dec.c libavdevice/decklink_dec_c.c libavdevice/decklink_common.c
1771+CONFIG_DSHOW_INDEV libavdevice/dshow_crossbar.c libavdevice/dshow.c libavdevice/dshow_enummediatypes.c libavdevice/dshow_enumpins.c libavdevice/dshow_filter.c libavdevice/dshow_pin.c libavdevice/dshow_common.c
1772+CONFIG_FBDEV_INDEV libavdevice/fbdev_dec.c libavdevice/fbdev_common.c
1773+CONFIG_GDIGRAB_INDEV libavdevice/gdigrab.c
1774+CONFIG_IEC61883_INDEV libavdevice/iec61883.c
1775+CONFIG_JACK_INDEV libavdevice/jack.c libavdevice/timefilter.c
1776+CONFIG_KMSGRAB_INDEV libavdevice/kmsgrab.c
1777+CONFIG_LAVFI_INDEV libavdevice/lavfi.c
1778+CONFIG_OPENAL_INDEV libavdevice/openal-dec.c
1779+CONFIG_OSS_INDEV libavdevice/oss_dec.c libavdevice/oss.c
1780+CONFIG_PULSE_INDEV libavdevice/pulse_audio_dec.c libavdevice/pulse_audio_common.c libavdevice/timefilter.c
1781+CONFIG_SNDIO_INDEV libavdevice/sndio_dec.c libavdevice/sndio.c
1782+CONFIG_V4L2_INDEV libavdevice/v4l2.c libavdevice/v4l2-common.c libavdevice/timefilter.c
1783+CONFIG_VFWCAP_INDEV libavdevice/vfwcap.c
1784+CONFIG_XCBGRAB_INDEV libavdevice/xcbgrab.c
1785+CONFIG_LIBCDIO_INDEV libavdevice/libcdio.c
1786+CONFIG_LIBDC1394_INDEV libavdevice/libdc1394.c
1787+CONFIG_ALSA_OUTDEV libavdevice/alsa_enc.c libavdevice/alsa.c
1788+CONFIG_AUDIOTOOLBOX_OUTDEV libavdevice/audiotoolbox.c
1789+CONFIG_CACA_OUTDEV libavdevice/caca.c
1790+CONFIG_DECKLINK_OUTDEV libavdevice/decklink_enc.c libavdevice/decklink_enc_c.c libavdevice/decklink_common.c
1791+CONFIG_FBDEV_OUTDEV libavdevice/fbdev_enc.c libavdevice/fbdev_common.c
1792+CONFIG_OPENGL_OUTDEV libavdevice/opengl_enc.c
1793+CONFIG_OSS_OUTDEV libavdevice/oss_enc.c libavdevice/oss.c
1794+CONFIG_PULSE_OUTDEV libavdevice/pulse_audio_enc.c libavdevice/pulse_audio_common.c
1795+CONFIG_SDL2_OUTDEV libavdevice/sdl2.c
1796+CONFIG_SNDIO_OUTDEV libavdevice/sndio_enc.c libavdevice/sndio.c
1797+CONFIG_V4L2_OUTDEV libavdevice/v4l2enc.c libavdevice/v4l2-common.c
1798+CONFIG_XV_OUTDEV libavdevice/xv.c
1799+CONFIG_AAP_FILTER libavfilter/af_aap.c
1800+CONFIG_ABENCH_FILTER libavfilter/f_bench.c
1801+CONFIG_ACOMPRESSOR_FILTER libavfilter/af_sidechaincompress.c
1802+CONFIG_ACONTRAST_FILTER libavfilter/af_acontrast.c
1803+CONFIG_ACOPY_FILTER libavfilter/af_acopy.c
1804+CONFIG_ACUE_FILTER libavfilter/f_cue.c
1805+CONFIG_ACROSSFADE_FILTER libavfilter/af_afade.c
1806+CONFIG_ACROSSOVER_FILTER libavfilter/af_acrossover.c
1807+CONFIG_ACRUSHER_FILTER libavfilter/af_acrusher.c
1808+CONFIG_ADECLICK_FILTER libavfilter/af_adeclick.c
1809+CONFIG_ADECLIP_FILTER libavfilter/af_adeclick.c
1810+CONFIG_ADECORRELATE_FILTER libavfilter/af_adecorrelate.c
1811+CONFIG_ADELAY_FILTER libavfilter/af_adelay.c
1812+CONFIG_ADENORM_FILTER libavfilter/af_adenorm.c
1813+CONFIG_ADERIVATIVE_FILTER libavfilter/af_aderivative.c
1814+CONFIG_ADRC_FILTER libavfilter/af_adrc.c
1815+CONFIG_ADYNAMICEQUALIZER_FILTER libavfilter/af_adynamicequalizer.c
1816+CONFIG_ADYNAMICSMOOTH_FILTER libavfilter/af_adynamicsmooth.c
1817+CONFIG_AECHO_FILTER libavfilter/af_aecho.c
1818+CONFIG_AEMPHASIS_FILTER libavfilter/af_aemphasis.c
1819+CONFIG_AEVAL_FILTER libavfilter/aeval.c
1820+CONFIG_AEXCITER_FILTER libavfilter/af_aexciter.c
1821+CONFIG_AFADE_FILTER libavfilter/af_afade.c
1822+CONFIG_AFFTDN_FILTER libavfilter/af_afftdn.c
1823+CONFIG_AFFTFILT_FILTER libavfilter/af_afftfilt.c
1824+CONFIG_AFIR_FILTER libavfilter/af_afir.c libavfilter/x86/af_afir_init.c libavfilter/x86/af_afir.asm
1825+CONFIG_AFORMAT_FILTER libavfilter/af_aformat.c
1826+CONFIG_AFREQSHIFT_FILTER libavfilter/af_afreqshift.c
1827+CONFIG_AFWTDN_FILTER libavfilter/af_afwtdn.c
1828+CONFIG_AGATE_FILTER libavfilter/af_agate.c
1829+CONFIG_AIIR_FILTER libavfilter/af_aiir.c
1830+CONFIG_AINTEGRAL_FILTER libavfilter/af_aderivative.c
1831+CONFIG_AINTERLEAVE_FILTER libavfilter/f_interleave.c
1832+CONFIG_ALATENCY_FILTER libavfilter/f_latency.c
1833+CONFIG_ALIMITER_FILTER libavfilter/af_alimiter.c
1834+CONFIG_ALLPASS_FILTER libavfilter/af_biquads.c
1835+CONFIG_ALOOP_FILTER libavfilter/f_loop.c
1836+CONFIG_AMERGE_FILTER libavfilter/af_amerge.c
1837+CONFIG_AMETADATA_FILTER libavfilter/f_metadata.c
1838+CONFIG_AMIX_FILTER libavfilter/af_amix.c
1839+CONFIG_AMULTIPLY_FILTER libavfilter/af_amultiply.c
1840+CONFIG_ANEQUALIZER_FILTER libavfilter/af_anequalizer.c
1841+CONFIG_ANLMDN_FILTER libavfilter/af_anlmdn.c libavfilter/x86/af_anlmdn_init.c libavfilter/x86/af_anlmdn.asm
1842+CONFIG_ANLMF_FILTER libavfilter/af_anlms.c
1843+CONFIG_ANLMS_FILTER libavfilter/af_anlms.c
1844+CONFIG_ANULL_FILTER libavfilter/af_anull.c
1845+CONFIG_APAD_FILTER libavfilter/af_apad.c
1846+CONFIG_APERMS_FILTER libavfilter/f_perms.c
1847+CONFIG_APHASER_FILTER libavfilter/af_aphaser.c libavfilter/generate_wave_table.c
1848+CONFIG_APHASESHIFT_FILTER libavfilter/af_afreqshift.c
1849+CONFIG_APSNR_FILTER libavfilter/af_asdr.c
1850+CONFIG_APSYCLIP_FILTER libavfilter/af_apsyclip.c
1851+CONFIG_APULSATOR_FILTER libavfilter/af_apulsator.c
1852+CONFIG_AREALTIME_FILTER libavfilter/f_realtime.c
1853+CONFIG_ARESAMPLE_FILTER libavfilter/af_aresample.c
1854+CONFIG_AREVERSE_FILTER libavfilter/f_reverse.c
1855+CONFIG_ARLS_FILTER libavfilter/af_arls.c
1856+CONFIG_ARNNDN_FILTER libavfilter/af_arnndn.c
1857+CONFIG_ASDR_FILTER libavfilter/af_asdr.c
1858+CONFIG_ASEGMENT_FILTER libavfilter/f_segment.c
1859+CONFIG_ASELECT_FILTER libavfilter/f_select.c
1860+CONFIG_ASENDCMD_FILTER libavfilter/f_sendcmd.c
1861+CONFIG_ASETNSAMPLES_FILTER libavfilter/af_asetnsamples.c
1862+CONFIG_ASETPTS_FILTER libavfilter/setpts.c
1863+CONFIG_ASETRATE_FILTER libavfilter/af_asetrate.c
1864+CONFIG_ASETTB_FILTER libavfilter/settb.c
1865+CONFIG_ASHOWINFO_FILTER libavfilter/af_ashowinfo.c
1866+CONFIG_ASIDEDATA_FILTER libavfilter/f_sidedata.c
1867+CONFIG_ASISDR_FILTER libavfilter/af_asdr.c
1868+CONFIG_ASOFTCLIP_FILTER libavfilter/af_asoftclip.c
1869+CONFIG_ASPECTRALSTATS_FILTER libavfilter/af_aspectralstats.c
1870+CONFIG_ASPLIT_FILTER libavfilter/split.c
1871+CONFIG_ASR_FILTER libavfilter/af_asr.c
1872+CONFIG_ASTATS_FILTER libavfilter/af_astats.c
1873+CONFIG_ASTREAMSELECT_FILTER libavfilter/f_streamselect.c libavfilter/framesync.c
1874+CONFIG_ASUBBOOST_FILTER libavfilter/af_asubboost.c
1875+CONFIG_ASUBCUT_FILTER libavfilter/af_asupercut.c
1876+CONFIG_ASUPERCUT_FILTER libavfilter/af_asupercut.c
1877+CONFIG_ASUPERPASS_FILTER libavfilter/af_asupercut.c
1878+CONFIG_ASUPERSTOP_FILTER libavfilter/af_asupercut.c
1879+CONFIG_ATEMPO_FILTER libavfilter/af_atempo.c
1880+CONFIG_ATILT_FILTER libavfilter/af_atilt.c
1881+CONFIG_ATRIM_FILTER libavfilter/trim.c
1882+CONFIG_AXCORRELATE_FILTER libavfilter/af_axcorrelate.c
1883+CONFIG_AZMQ_FILTER libavfilter/f_zmq.c
1884+CONFIG_BANDPASS_FILTER libavfilter/af_biquads.c
1885+CONFIG_BANDREJECT_FILTER libavfilter/af_biquads.c
1886+CONFIG_BASS_FILTER libavfilter/af_biquads.c
1887+CONFIG_BIQUAD_FILTER libavfilter/af_biquads.c
1888+CONFIG_BS2B_FILTER libavfilter/af_bs2b.c
1889+CONFIG_CHANNELMAP_FILTER libavfilter/af_channelmap.c
1890+CONFIG_CHANNELSPLIT_FILTER libavfilter/af_channelsplit.c
1891+CONFIG_CHORUS_FILTER libavfilter/af_chorus.c libavfilter/generate_wave_table.c
1892+CONFIG_COMPAND_FILTER libavfilter/af_compand.c
1893+CONFIG_COMPENSATIONDELAY_FILTER libavfilter/af_compensationdelay.c
1894+CONFIG_CROSSFEED_FILTER libavfilter/af_crossfeed.c
1895+CONFIG_CRYSTALIZER_FILTER libavfilter/af_crystalizer.c
1896+CONFIG_DCSHIFT_FILTER libavfilter/af_dcshift.c
1897+CONFIG_DEESSER_FILTER libavfilter/af_deesser.c
1898+CONFIG_DIALOGUENHANCE_FILTER libavfilter/af_dialoguenhance.c
1899+CONFIG_DRMETER_FILTER libavfilter/af_drmeter.c
1900+CONFIG_DYNAUDNORM_FILTER libavfilter/af_dynaudnorm.c
1901+CONFIG_EARWAX_FILTER libavfilter/af_earwax.c
1902+CONFIG_EBUR128_FILTER libavfilter/f_ebur128.c
1903+CONFIG_EQUALIZER_FILTER libavfilter/af_biquads.c
1904+CONFIG_EXTRASTEREO_FILTER libavfilter/af_extrastereo.c
1905+CONFIG_FIREQUALIZER_FILTER libavfilter/af_firequalizer.c
1906+CONFIG_FLANGER_FILTER libavfilter/af_flanger.c libavfilter/generate_wave_table.c
1907+CONFIG_HAAS_FILTER libavfilter/af_haas.c
1908+CONFIG_HDCD_FILTER libavfilter/af_hdcd.c
1909+CONFIG_HEADPHONE_FILTER libavfilter/af_headphone.c
1910+CONFIG_HIGHPASS_FILTER libavfilter/af_biquads.c
1911+CONFIG_HIGHSHELF_FILTER libavfilter/af_biquads.c
1912+CONFIG_JOIN_FILTER libavfilter/af_join.c
1913+CONFIG_LADSPA_FILTER libavfilter/af_ladspa.c
1914+CONFIG_LOUDNORM_FILTER libavfilter/af_loudnorm.c libavfilter/ebur128.c
1915+CONFIG_LOWPASS_FILTER libavfilter/af_biquads.c
1916+CONFIG_LOWSHELF_FILTER libavfilter/af_biquads.c
1917+CONFIG_LV2_FILTER libavfilter/af_lv2.c
1918+CONFIG_MCOMPAND_FILTER libavfilter/af_mcompand.c
1919+CONFIG_PAN_FILTER libavfilter/af_pan.c
1920+CONFIG_REPLAYGAIN_FILTER libavfilter/af_replaygain.c
1921+CONFIG_RUBBERBAND_FILTER libavfilter/af_rubberband.c
1922+CONFIG_SIDECHAINCOMPRESS_FILTER libavfilter/af_sidechaincompress.c
1923+CONFIG_SIDECHAINGATE_FILTER libavfilter/af_agate.c
1924+CONFIG_SILENCEDETECT_FILTER libavfilter/af_silencedetect.c
1925+CONFIG_SILENCEREMOVE_FILTER libavfilter/af_silenceremove.c
1926+CONFIG_SOFALIZER_FILTER libavfilter/af_sofalizer.c
1927+CONFIG_SPEECHNORM_FILTER libavfilter/af_speechnorm.c
1928+CONFIG_STEREOTOOLS_FILTER libavfilter/af_stereotools.c
1929+CONFIG_STEREOWIDEN_FILTER libavfilter/af_stereowiden.c
1930+CONFIG_SUPEREQUALIZER_FILTER libavfilter/af_superequalizer.c
1931+CONFIG_SURROUND_FILTER libavfilter/af_surround.c
1932+CONFIG_TILTSHELF_FILTER
1933+CONFIG_TREBLE_FILTER libavfilter/af_biquads.c
1934+CONFIG_TREMOLO_FILTER libavfilter/af_tremolo.c
1935+CONFIG_VIBRATO_FILTER libavfilter/af_vibrato.c libavfilter/generate_wave_table.c
1936+CONFIG_VIRTUALBASS_FILTER libavfilter/af_virtualbass.c
1937+CONFIG_VOLUME_FILTER libavfilter/af_volume.c libavfilter/x86/af_volume_init.c libavfilter/x86/af_volume.asm
1938+CONFIG_VOLUMEDETECT_FILTER libavfilter/af_volumedetect.c
1939+CONFIG_AEVALSRC_FILTER libavfilter/aeval.c
1940+CONFIG_AFDELAYSRC_FILTER libavfilter/asrc_afdelaysrc.c
1941+CONFIG_AFIREQSRC_FILTER libavfilter/asrc_afirsrc.c
1942+CONFIG_AFIRSRC_FILTER libavfilter/asrc_afirsrc.c
1943+CONFIG_ANOISESRC_FILTER libavfilter/asrc_anoisesrc.c
1944+CONFIG_ANULLSRC_FILTER libavfilter/asrc_anullsrc.c
1945+CONFIG_FLITE_FILTER libavfilter/asrc_flite.c
1946+CONFIG_HILBERT_FILTER libavfilter/asrc_hilbert.c
1947+CONFIG_SINC_FILTER libavfilter/asrc_sinc.c
1948+CONFIG_SINE_FILTER libavfilter/asrc_sine.c
1949+CONFIG_ANULLSINK_FILTER libavfilter/asink_anullsink.c
1950+CONFIG_ADDROI_FILTER libavfilter/vf_addroi.c
1951+CONFIG_ALPHAEXTRACT_FILTER libavfilter/vf_extractplanes.c
1952+CONFIG_ALPHAMERGE_FILTER libavfilter/vf_alphamerge.c libavfilter/framesync.c
1953+CONFIG_AMPLIFY_FILTER libavfilter/vf_amplify.c
1954+CONFIG_ASS_FILTER libavfilter/vf_subtitles.c
1955+CONFIG_ATADENOISE_FILTER libavfilter/vf_atadenoise.c libavfilter/x86/vf_atadenoise_init.c libavfilter/x86/vf_atadenoise.asm
1956+CONFIG_AVGBLUR_FILTER libavfilter/vf_avgblur.c
1957+CONFIG_AVGBLUR_OPENCL_FILTER libavfilter/vf_avgblur_opencl.c libavfilter/opencl.c libavfilter/opencl/avgblur.c libavfilter/boxblur.c
1958+CONFIG_AVGBLUR_VULKAN_FILTER libavfilter/vf_avgblur_vulkan.c libavfilter/vulkan.c libavfilter/vulkan_filter.c
1959+CONFIG_BACKGROUNDKEY_FILTER libavfilter/vf_backgroundkey.c
1960+CONFIG_BBOX_FILTER libavfilter/bbox.c libavfilter/vf_bbox.c
1961+CONFIG_BENCH_FILTER libavfilter/f_bench.c
1962+CONFIG_BILATERAL_FILTER libavfilter/vf_bilateral.c
1963+CONFIG_BILATERAL_CUDA_FILTER libavfilter/vf_bilateral_cuda.c libavfilter/vf_bilateral_cuda.ptx.c
1964+CONFIG_BITPLANENOISE_FILTER libavfilter/vf_bitplanenoise.c
1965+CONFIG_BLACKDETECT_FILTER libavfilter/vf_blackdetect.c
1966+CONFIG_BLACKFRAME_FILTER libavfilter/vf_blackframe.c
1967+CONFIG_BLEND_FILTER libavfilter/vf_blend.c libavfilter/framesync.c libavfilter/x86/vf_blend_init.c libavfilter/x86/vf_blend.asm
1968+CONFIG_BLEND_VULKAN_FILTER libavfilter/vf_blend_vulkan.c libavfilter/framesync.c libavfilter/vulkan.c libavfilter/vulkan_filter.c
1969+CONFIG_BLOCKDETECT_FILTER libavfilter/vf_blockdetect.c
1970+CONFIG_BLURDETECT_FILTER libavfilter/vf_blurdetect.c libavfilter/edge_common.c
1971+CONFIG_BM3D_FILTER libavfilter/vf_bm3d.c libavfilter/framesync.c
1972+CONFIG_BOXBLUR_FILTER libavfilter/vf_boxblur.c libavfilter/boxblur.c
1973+CONFIG_BOXBLUR_OPENCL_FILTER libavfilter/vf_avgblur_opencl.c libavfilter/opencl.c libavfilter/opencl/avgblur.c libavfilter/boxblur.c
1974+CONFIG_BWDIF_FILTER libavfilter/vf_bwdif.c libavfilter/bwdifdsp.c libavfilter/yadif_common.c libavfilter/x86/vf_bwdif_init.c libavfilter/x86/vf_bwdif.asm
1975+CONFIG_BWDIF_CUDA_FILTER libavfilter/vf_bwdif_cuda.c libavfilter/vf_bwdif_cuda.ptx.c libavfilter/yadif_common.c
1976+CONFIG_BWDIF_VULKAN_FILTER libavfilter/vf_bwdif_vulkan.c libavfilter/yadif_common.c libavfilter/vulkan.c libavfilter/vulkan_filter.c
1977+CONFIG_CAS_FILTER libavfilter/vf_cas.c
1978+CONFIG_CCREPACK_FILTER libavfilter/vf_ccrepack.c
1979+CONFIG_CHROMABER_VULKAN_FILTER libavfilter/vf_chromaber_vulkan.c libavfilter/vulkan.c libavfilter/vulkan_filter.c
1980+CONFIG_CHROMAHOLD_FILTER libavfilter/vf_chromakey.c
1981+CONFIG_CHROMAKEY_FILTER libavfilter/vf_chromakey.c
1982+CONFIG_CHROMAKEY_CUDA_FILTER libavfilter/vf_chromakey_cuda.c libavfilter/vf_chromakey_cuda.ptx.c
1983+CONFIG_CHROMANR_FILTER libavfilter/vf_chromanr.c
1984+CONFIG_CHROMASHIFT_FILTER libavfilter/vf_chromashift.c
1985+CONFIG_CIESCOPE_FILTER libavfilter/vf_ciescope.c
1986+CONFIG_CODECVIEW_FILTER libavfilter/vf_codecview.c libavfilter/qp_table.c
1987+CONFIG_COLORBALANCE_FILTER libavfilter/vf_colorbalance.c
1988+CONFIG_COLORCHANNELMIXER_FILTER libavfilter/vf_colorchannelmixer.c
1989+CONFIG_COLORCONTRAST_FILTER libavfilter/vf_colorcontrast.c
1990+CONFIG_COLORCORRECT_FILTER libavfilter/vf_colorcorrect.c
1991+CONFIG_COLORIZE_FILTER libavfilter/vf_colorize.c
1992+CONFIG_COLORKEY_FILTER libavfilter/vf_colorkey.c
1993+CONFIG_COLORKEY_OPENCL_FILTER libavfilter/vf_colorkey_opencl.c libavfilter/opencl.c libavfilter/opencl/colorkey.c
1994+CONFIG_COLORHOLD_FILTER libavfilter/vf_colorkey.c
1995+CONFIG_COLORLEVELS_FILTER libavfilter/vf_colorlevels.c
1996+CONFIG_COLORMAP_FILTER libavfilter/vf_colormap.c
1997+CONFIG_COLORMATRIX_FILTER libavfilter/vf_colormatrix.c
1998+CONFIG_COLORSPACE_FILTER libavfilter/vf_colorspace.c libavfilter/colorspacedsp.c libavfilter/x86/colorspacedsp_init.c libavfilter/x86/colorspacedsp.asm
1999+CONFIG_COLORSPACE_CUDA_FILTER libavfilter/vf_colorspace_cuda.c libavfilter/vf_colorspace_cuda.ptx.c libavfilter/cuda/load_helper.c
2000+CONFIG_COLORTEMPERATURE_FILTER libavfilter/vf_colortemperature.c
2001+CONFIG_CONVOLUTION_FILTER libavfilter/vf_convolution.c libavfilter/x86/vf_convolution_init.c libavfilter/x86/vf_convolution.asm
2002+CONFIG_CONVOLUTION_OPENCL_FILTER libavfilter/vf_convolution_opencl.c libavfilter/opencl.c libavfilter/opencl/convolution.c
2003+CONFIG_CONVOLVE_FILTER libavfilter/vf_convolve.c libavfilter/framesync.c
2004+CONFIG_COPY_FILTER libavfilter/vf_copy.c
2005+CONFIG_COREIMAGE_FILTER libavfilter/vf_coreimage.c
2006+CONFIG_CORR_FILTER libavfilter/vf_corr.c libavfilter/framesync.c
2007+CONFIG_COVER_RECT_FILTER libavfilter/vf_cover_rect.c libavfilter/lavfutils.c
2008+CONFIG_CROP_FILTER libavfilter/vf_crop.c
2009+CONFIG_CROPDETECT_FILTER libavfilter/vf_cropdetect.c libavfilter/edge_common.c
2010+CONFIG_CUE_FILTER libavfilter/f_cue.c
2011+CONFIG_CURVES_FILTER libavfilter/vf_curves.c
2012+CONFIG_DATASCOPE_FILTER libavfilter/vf_datascope.c
2013+CONFIG_DBLUR_FILTER libavfilter/vf_dblur.c
2014+CONFIG_DCTDNOIZ_FILTER libavfilter/vf_dctdnoiz.c
2015+CONFIG_DEBAND_FILTER libavfilter/vf_deband.c
2016+CONFIG_DEBLOCK_FILTER libavfilter/vf_deblock.c
2017+CONFIG_DECIMATE_FILTER libavfilter/vf_decimate.c
2018+CONFIG_DECONVOLVE_FILTER libavfilter/vf_convolve.c libavfilter/framesync.c
2019+CONFIG_DEDOT_FILTER libavfilter/vf_dedot.c
2020+CONFIG_DEFLATE_FILTER libavfilter/vf_neighbor.c
2021+CONFIG_DEFLICKER_FILTER libavfilter/vf_deflicker.c
2022+CONFIG_DEINTERLACE_QSV_FILTER libavfilter/vf_vpp_qsv.c
2023+CONFIG_DEINTERLACE_VAAPI_FILTER libavfilter/vf_deinterlace_vaapi.c libavfilter/vaapi_vpp.c
2024+CONFIG_DEJUDDER_FILTER libavfilter/vf_dejudder.c
2025+CONFIG_DELOGO_FILTER libavfilter/vf_delogo.c
2026+CONFIG_DENOISE_VAAPI_FILTER libavfilter/vf_misc_vaapi.c libavfilter/vaapi_vpp.c
2027+CONFIG_DERAIN_FILTER libavfilter/vf_derain.c
2028+CONFIG_DESHAKE_FILTER libavfilter/vf_deshake.c libavfilter/transform.c
2029+CONFIG_DESHAKE_OPENCL_FILTER libavfilter/vf_deshake_opencl.c libavfilter/opencl.c libavfilter/opencl/deshake.c libavfilter/transform.c
2030+CONFIG_DESPILL_FILTER libavfilter/vf_despill.c
2031+CONFIG_DETELECINE_FILTER libavfilter/vf_detelecine.c
2032+CONFIG_DILATION_FILTER libavfilter/vf_neighbor.c
2033+CONFIG_DILATION_OPENCL_FILTER libavfilter/vf_neighbor_opencl.c libavfilter/opencl.c libavfilter/opencl/neighbor.c
2034+CONFIG_DISPLACE_FILTER libavfilter/vf_displace.c libavfilter/framesync.c
2035+CONFIG_DNN_CLASSIFY_FILTER libavfilter/vf_dnn_classify.c
2036+CONFIG_DNN_DETECT_FILTER libavfilter/vf_dnn_detect.c
2037+CONFIG_DNN_PROCESSING_FILTER libavfilter/vf_dnn_processing.c
2038+CONFIG_DOUBLEWEAVE_FILTER libavfilter/vf_weave.c
2039+CONFIG_DRAWBOX_FILTER libavfilter/vf_drawbox.c
2040+CONFIG_DRAWGRAPH_FILTER libavfilter/f_drawgraph.c
2041+CONFIG_DRAWGRID_FILTER libavfilter/vf_drawbox.c
2042+CONFIG_DRAWTEXT_FILTER libavfilter/vf_drawtext.c libavfilter/textutils.c
2043+CONFIG_EDGEDETECT_FILTER libavfilter/vf_edgedetect.c libavfilter/edge_common.c
2044+CONFIG_ELBG_FILTER libavcodec/elbg.c libavfilter/vf_elbg.c
2045+CONFIG_ENTROPY_FILTER libavfilter/vf_entropy.c
2046+CONFIG_EPX_FILTER libavfilter/vf_epx.c
2047+CONFIG_EQ_FILTER libavfilter/vf_eq.c libavfilter/x86/vf_eq_init.c libavfilter/x86/vf_eq.asm
2048+CONFIG_EROSION_FILTER libavfilter/vf_neighbor.c
2049+CONFIG_EROSION_OPENCL_FILTER libavfilter/vf_neighbor_opencl.c libavfilter/opencl.c libavfilter/opencl/neighbor.c
2050+CONFIG_ESTDIF_FILTER libavfilter/vf_estdif.c
2051+CONFIG_EXPOSURE_FILTER libavfilter/vf_exposure.c
2052+CONFIG_EXTRACTPLANES_FILTER libavfilter/vf_extractplanes.c
2053+CONFIG_FADE_FILTER libavfilter/vf_fade.c
2054+CONFIG_FEEDBACK_FILTER libavfilter/vf_feedback.c
2055+CONFIG_FFTDNOIZ_FILTER libavfilter/vf_fftdnoiz.c
2056+CONFIG_FFTFILT_FILTER libavfilter/vf_fftfilt.c
2057+CONFIG_FIELD_FILTER libavfilter/vf_field.c
2058+CONFIG_FIELDHINT_FILTER libavfilter/vf_fieldhint.c
2059+CONFIG_FIELDMATCH_FILTER libavfilter/vf_fieldmatch.c
2060+CONFIG_FIELDORDER_FILTER libavfilter/vf_fieldorder.c
2061+CONFIG_FILLBORDERS_FILTER libavfilter/vf_fillborders.c
2062+CONFIG_FIND_RECT_FILTER libavfilter/vf_find_rect.c libavfilter/lavfutils.c
2063+CONFIG_FLIP_VULKAN_FILTER
2064+CONFIG_FLOODFILL_FILTER libavfilter/vf_floodfill.c
2065+CONFIG_FORMAT_FILTER libavfilter/vf_format.c
2066+CONFIG_FPS_FILTER libavfilter/vf_fps.c
2067+CONFIG_FRAMEPACK_FILTER libavfilter/vf_framepack.c
2068+CONFIG_FRAMERATE_FILTER libavfilter/vf_framerate.c libavfilter/x86/vf_framerate_init.c libavfilter/x86/vf_framerate.asm
2069+CONFIG_FRAMESTEP_FILTER libavfilter/vf_framestep.c
2070+CONFIG_FREEZEDETECT_FILTER libavfilter/vf_freezedetect.c
2071+CONFIG_FREEZEFRAMES_FILTER libavfilter/vf_freezeframes.c
2072+CONFIG_FREI0R_FILTER libavfilter/vf_frei0r.c
2073+CONFIG_FSPP_FILTER libavfilter/vf_fspp.c libavfilter/qp_table.c libavfilter/x86/vf_fspp_init.c libavfilter/x86/vf_fspp.asm
2074+CONFIG_FSYNC_FILTER libavfilter/vf_fsync.c
2075+CONFIG_GBLUR_FILTER libavfilter/vf_gblur.c libavfilter/x86/vf_gblur_init.c libavfilter/x86/vf_gblur.asm
2076+CONFIG_GBLUR_VULKAN_FILTER libavfilter/vf_gblur_vulkan.c libavfilter/vulkan.c libavfilter/vulkan_filter.c
2077+CONFIG_GEQ_FILTER libavfilter/vf_geq.c
2078+CONFIG_GRADFUN_FILTER libavfilter/vf_gradfun.c libavfilter/x86/vf_gradfun_init.c libavfilter/x86/vf_gradfun.asm
2079+CONFIG_GRAPHMONITOR_FILTER libavfilter/f_graphmonitor.c
2080+CONFIG_GRAYWORLD_FILTER libavfilter/vf_grayworld.c
2081+CONFIG_GREYEDGE_FILTER libavfilter/vf_colorconstancy.c
2082+CONFIG_GUIDED_FILTER libavfilter/vf_guided.c
2083+CONFIG_HALDCLUT_FILTER libavfilter/vf_lut3d.c libavfilter/framesync.c
2084+CONFIG_HFLIP_FILTER libavfilter/vf_hflip.c libavfilter/x86/vf_hflip_init.c libavfilter/x86/vf_hflip.asm
2085+CONFIG_HFLIP_VULKAN_FILTER libavfilter/vf_flip_vulkan.c libavfilter/vulkan.c
2086+CONFIG_HISTEQ_FILTER libavfilter/vf_histeq.c
2087+CONFIG_HISTOGRAM_FILTER libavfilter/vf_histogram.c
2088+CONFIG_HQDN3D_FILTER libavfilter/vf_hqdn3d.c libavfilter/x86/vf_hqdn3d_init.c libavfilter/x86/vf_hqdn3d.asm
2089+CONFIG_HQX_FILTER libavfilter/vf_hqx.c
2090+CONFIG_HSTACK_FILTER libavfilter/vf_stack.c libavfilter/framesync.c
2091+CONFIG_HSVHOLD_FILTER libavfilter/vf_hsvkey.c
2092+CONFIG_HSVKEY_FILTER libavfilter/vf_hsvkey.c
2093+CONFIG_HUE_FILTER libavfilter/vf_hue.c
2094+CONFIG_HUESATURATION_FILTER libavfilter/vf_huesaturation.c
2095+CONFIG_HWDOWNLOAD_FILTER libavfilter/vf_hwdownload.c
2096+CONFIG_HWMAP_FILTER libavfilter/vf_hwmap.c
2097+CONFIG_HWUPLOAD_FILTER libavfilter/vf_hwupload.c
2098+CONFIG_HWUPLOAD_CUDA_FILTER libavfilter/vf_hwupload_cuda.c
2099+CONFIG_HYSTERESIS_FILTER libavfilter/vf_hysteresis.c libavfilter/framesync.c
2100+CONFIG_ICCDETECT_FILTER libavfilter/vf_iccdetect.c libavfilter/fflcms2.c
2101+CONFIG_ICCGEN_FILTER libavfilter/vf_iccgen.c libavfilter/fflcms2.c
2102+CONFIG_IDENTITY_FILTER libavfilter/vf_identity.c
2103+CONFIG_IDET_FILTER libavfilter/vf_idet.c libavfilter/x86/vf_idet_init.c libavfilter/x86/vf_idet.asm
2104+CONFIG_IL_FILTER libavfilter/vf_il.c
2105+CONFIG_INFLATE_FILTER libavfilter/vf_neighbor.c
2106+CONFIG_INTERLACE_FILTER libavfilter/vf_tinterlace.c libavfilter/x86/vf_tinterlace_init.c libavfilter/x86/vf_interlace.asm
2107+CONFIG_INTERLEAVE_FILTER libavfilter/f_interleave.c
2108+CONFIG_KERNDEINT_FILTER libavfilter/vf_kerndeint.c
2109+CONFIG_KIRSCH_FILTER libavfilter/vf_convolution.c
2110+CONFIG_LAGFUN_FILTER libavfilter/vf_lagfun.c
2111+CONFIG_LATENCY_FILTER libavfilter/f_latency.c
2112+CONFIG_LENSCORRECTION_FILTER libavfilter/vf_lenscorrection.c
2113+CONFIG_LENSFUN_FILTER libavfilter/vf_lensfun.c
2114+CONFIG_LIBPLACEBO_FILTER libavfilter/vf_libplacebo.c libavfilter/vulkan.c libavfilter/vulkan_filter.c
2115+CONFIG_LIBVMAF_FILTER libavfilter/vf_libvmaf.c libavfilter/framesync.c
2116+CONFIG_LIBVMAF_CUDA_FILTER libavfilter/vf_libvmaf.c libavfilter/framesync.c
2117+CONFIG_LIMITDIFF_FILTER libavfilter/vf_limitdiff.c libavfilter/framesync.c
2118+CONFIG_LIMITER_FILTER libavfilter/vf_limiter.c libavfilter/x86/vf_limiter_init.c libavfilter/x86/vf_limiter.asm
2119+CONFIG_LOOP_FILTER libavfilter/f_loop.c
2120+CONFIG_LUMAKEY_FILTER libavfilter/vf_lumakey.c
2121+CONFIG_LUT_FILTER libavfilter/vf_lut.c
2122+CONFIG_LUT1D_FILTER libavfilter/vf_lut3d.c
2123+CONFIG_LUT2_FILTER libavfilter/vf_lut2.c libavfilter/framesync.c
2124+CONFIG_LUT3D_FILTER libavfilter/vf_lut3d.c libavfilter/framesync.c libavfilter/x86/vf_lut3d_init.c libavfilter/x86/vf_lut3d.asm
2125+CONFIG_LUTRGB_FILTER libavfilter/vf_lut.c
2126+CONFIG_LUTYUV_FILTER libavfilter/vf_lut.c
2127+CONFIG_MASKEDCLAMP_FILTER libavfilter/vf_maskedclamp.c libavfilter/framesync.c libavfilter/x86/vf_maskedclamp_init.c libavfilter/x86/vf_maskedclamp.asm
2128+CONFIG_MASKEDMAX_FILTER libavfilter/vf_maskedminmax.c libavfilter/framesync.c
2129+CONFIG_MASKEDMERGE_FILTER libavfilter/vf_maskedmerge.c libavfilter/framesync.c libavfilter/x86/vf_maskedmerge_init.c libavfilter/x86/vf_maskedmerge.asm
2130+CONFIG_MASKEDMIN_FILTER libavfilter/vf_maskedminmax.c libavfilter/framesync.c
2131+CONFIG_MASKEDTHRESHOLD_FILTER libavfilter/vf_maskedthreshold.c libavfilter/framesync.c
2132+CONFIG_MASKFUN_FILTER libavfilter/vf_maskfun.c
2133+CONFIG_MCDEINT_FILTER libavfilter/vf_mcdeint.c
2134+CONFIG_MEDIAN_FILTER libavfilter/vf_median.c
2135+CONFIG_MERGEPLANES_FILTER libavfilter/vf_mergeplanes.c libavfilter/framesync.c
2136+CONFIG_MESTIMATE_FILTER libavfilter/vf_mestimate.c libavfilter/motion_estimation.c
2137+CONFIG_METADATA_FILTER libavfilter/f_metadata.c
2138+CONFIG_MIDEQUALIZER_FILTER libavfilter/vf_midequalizer.c libavfilter/framesync.c
2139+CONFIG_MINTERPOLATE_FILTER libavfilter/vf_minterpolate.c libavfilter/motion_estimation.c
2140+CONFIG_MIX_FILTER libavfilter/vf_mix.c libavfilter/framesync.c
2141+CONFIG_MONOCHROME_FILTER libavfilter/vf_monochrome.c
2142+CONFIG_MORPHO_FILTER libavfilter/vf_morpho.c
2143+CONFIG_MPDECIMATE_FILTER libavfilter/vf_mpdecimate.c
2144+CONFIG_MSAD_FILTER
2145+CONFIG_MULTIPLY_FILTER libavfilter/vf_multiply.c
2146+CONFIG_NEGATE_FILTER libavfilter/vf_negate.c
2147+CONFIG_NLMEANS_FILTER libavfilter/vf_nlmeans.c libavfilter/x86/vf_nlmeans_init.c libavfilter/x86/vf_nlmeans.asm
2148+CONFIG_NLMEANS_OPENCL_FILTER libavfilter/vf_nlmeans_opencl.c libavfilter/opencl.c libavfilter/opencl/nlmeans.c
2149+CONFIG_NLMEANS_VULKAN_FILTER libavfilter/vf_nlmeans_vulkan.c libavfilter/vulkan.c libavfilter/vulkan_filter.c
2150+CONFIG_NNEDI_FILTER libavfilter/vf_nnedi.c
2151+CONFIG_NOFORMAT_FILTER libavfilter/vf_format.c
2152+CONFIG_NOISE_FILTER libavfilter/vf_noise.c libavfilter/x86/vf_noise.c
2153+CONFIG_NORMALIZE_FILTER libavfilter/vf_normalize.c
2154+CONFIG_NULL_FILTER libavfilter/vf_null.c
2155+CONFIG_OCR_FILTER libavfilter/vf_ocr.c
2156+CONFIG_OCV_FILTER libavfilter/vf_libopencv.c
2157+CONFIG_OSCILLOSCOPE_FILTER libavfilter/vf_datascope.c
2158+CONFIG_OVERLAY_FILTER libavfilter/vf_overlay.c libavfilter/framesync.c libavfilter/x86/vf_overlay_init.c libavfilter/x86/vf_overlay.asm
2159+CONFIG_OVERLAY_OPENCL_FILTER libavfilter/vf_overlay_opencl.c libavfilter/opencl.c libavfilter/opencl/overlay.c libavfilter/framesync.c
2160+CONFIG_OVERLAY_QSV_FILTER libavfilter/vf_overlay_qsv.c libavfilter/framesync.c
2161+CONFIG_OVERLAY_VAAPI_FILTER libavfilter/vf_overlay_vaapi.c libavfilter/framesync.c libavfilter/vaapi_vpp.c
2162+CONFIG_OVERLAY_VULKAN_FILTER libavfilter/vf_overlay_vulkan.c libavfilter/vulkan.c libavfilter/vulkan_filter.c
2163+CONFIG_OVERLAY_CUDA_FILTER libavfilter/vf_overlay_cuda.c libavfilter/framesync.c libavfilter/vf_overlay_cuda.ptx.c libavfilter/cuda/load_helper.c
2164+CONFIG_OWDENOISE_FILTER libavfilter/vf_owdenoise.c
2165+CONFIG_PAD_FILTER libavfilter/vf_pad.c
2166+CONFIG_PAD_OPENCL_FILTER libavfilter/vf_pad_opencl.c libavfilter/opencl.c libavfilter/opencl/pad.c
2167+CONFIG_PALETTEGEN_FILTER libavfilter/vf_palettegen.c libavfilter/palette.c
2168+CONFIG_PALETTEUSE_FILTER libavfilter/vf_paletteuse.c libavfilter/framesync.c libavfilter/palette.c
2169+CONFIG_PERMS_FILTER libavfilter/f_perms.c
2170+CONFIG_PERSPECTIVE_FILTER libavfilter/vf_perspective.c
2171+CONFIG_PHASE_FILTER libavfilter/vf_phase.c
2172+CONFIG_PHOTOSENSITIVITY_FILTER libavfilter/vf_photosensitivity.c
2173+CONFIG_PIXDESCTEST_FILTER libavfilter/vf_pixdesctest.c
2174+CONFIG_PIXELIZE_FILTER libavfilter/vf_pixelize.c
2175+CONFIG_PIXSCOPE_FILTER libavfilter/vf_datascope.c
2176+CONFIG_PP_FILTER libavfilter/vf_pp.c libavfilter/qp_table.c
2177+CONFIG_PP7_FILTER libavfilter/vf_pp7.c libavfilter/qp_table.c libavfilter/x86/vf_pp7_init.c libavfilter/x86/vf_pp7.asm
2178+CONFIG_PREMULTIPLY_FILTER libavfilter/vf_premultiply.c libavfilter/framesync.c
2179+CONFIG_PREWITT_FILTER libavfilter/vf_convolution.c
2180+CONFIG_PREWITT_OPENCL_FILTER libavfilter/vf_convolution_opencl.c libavfilter/opencl.c libavfilter/opencl/convolution.c
2181+CONFIG_PROCAMP_VAAPI_FILTER libavfilter/vf_procamp_vaapi.c libavfilter/vaapi_vpp.c
2182+CONFIG_PROGRAM_OPENCL_FILTER libavfilter/vf_program_opencl.c libavfilter/opencl.c libavfilter/framesync.c
2183+CONFIG_PSEUDOCOLOR_FILTER libavfilter/vf_pseudocolor.c
2184+CONFIG_PSNR_FILTER libavfilter/vf_psnr.c libavfilter/framesync.c libavfilter/x86/vf_psnr_init.c libavfilter/x86/vf_psnr.asm
2185+CONFIG_PULLUP_FILTER libavfilter/vf_pullup.c libavfilter/x86/vf_pullup_init.c libavfilter/x86/vf_pullup.asm
2186+CONFIG_QP_FILTER libavfilter/vf_qp.c
2187+CONFIG_QRENCODE_FILTER libavfilter/qrencode.c libavfilter/textutils.c
2188+CONFIG_QUIRC_FILTER libavfilter/vf_quirc.c
2189+CONFIG_RANDOM_FILTER libavfilter/vf_random.c
2190+CONFIG_READEIA608_FILTER libavfilter/vf_readeia608.c
2191+CONFIG_READVITC_FILTER libavfilter/vf_readvitc.c
2192+CONFIG_REALTIME_FILTER libavfilter/f_realtime.c
2193+CONFIG_REMAP_FILTER libavfilter/vf_remap.c libavfilter/framesync.c
2194+CONFIG_REMAP_OPENCL_FILTER libavfilter/vf_remap_opencl.c libavfilter/framesync.c libavfilter/opencl.c libavfilter/opencl/remap.c
2195+CONFIG_REMOVEGRAIN_FILTER libavfilter/vf_removegrain.c libavfilter/x86/vf_removegrain_init.c libavfilter/x86/vf_removegrain.asm
2196+CONFIG_REMOVELOGO_FILTER libavfilter/bbox.c libavfilter/lswsutils.c libavfilter/lavfutils.c libavfilter/vf_removelogo.c
2197+CONFIG_REPEATFIELDS_FILTER libavfilter/vf_repeatfields.c
2198+CONFIG_REVERSE_FILTER libavfilter/f_reverse.c
2199+CONFIG_RGBASHIFT_FILTER libavfilter/vf_chromashift.c
2200+CONFIG_ROBERTS_FILTER libavfilter/vf_convolution.c
2201+CONFIG_ROBERTS_OPENCL_FILTER libavfilter/vf_convolution_opencl.c libavfilter/opencl.c libavfilter/opencl/convolution.c
2202+CONFIG_ROTATE_FILTER libavfilter/vf_rotate.c
2203+CONFIG_SAB_FILTER libavfilter/vf_sab.c
2204+CONFIG_SCALE_FILTER libavfilter/vf_scale.c libavfilter/scale_eval.c
2205+CONFIG_SCALE_CUDA_FILTER libavfilter/vf_scale_cuda.c libavfilter/scale_eval.c libavfilter/vf_scale_cuda.ptx.c libavfilter/cuda/load_helper.c
2206+CONFIG_SCALE_NPP_FILTER libavfilter/vf_scale_npp.c libavfilter/scale_eval.c
2207+CONFIG_SCALE_QSV_FILTER libavfilter/vf_vpp_qsv.c
2208+CONFIG_SCALE_VAAPI_FILTER libavfilter/vf_scale_vaapi.c libavfilter/scale_eval.c libavfilter/vaapi_vpp.c
2209+CONFIG_SCALE_VT_FILTER libavfilter/vf_scale_vt.c libavfilter/scale_eval.c
2210+CONFIG_SCALE_VULKAN_FILTER libavfilter/vf_scale_vulkan.c libavfilter/vulkan.c libavfilter/vulkan_filter.c
2211+CONFIG_SCALE2REF_FILTER libavfilter/vf_scale.c libavfilter/scale_eval.c
2212+CONFIG_SCALE2REF_NPP_FILTER libavfilter/vf_scale_npp.c libavfilter/scale_eval.c
2213+CONFIG_SCDET_FILTER libavfilter/vf_scdet.c
2214+CONFIG_SCHARR_FILTER libavfilter/vf_convolution.c
2215+CONFIG_SCROLL_FILTER libavfilter/vf_scroll.c
2216+CONFIG_SEGMENT_FILTER libavfilter/f_segment.c
2217+CONFIG_SELECT_FILTER libavfilter/f_select.c
2218+CONFIG_SELECTIVECOLOR_FILTER libavfilter/vf_selectivecolor.c
2219+CONFIG_SENDCMD_FILTER libavfilter/f_sendcmd.c
2220+CONFIG_SEPARATEFIELDS_FILTER libavfilter/vf_separatefields.c
2221+CONFIG_SETDAR_FILTER libavfilter/vf_aspect.c
2222+CONFIG_SETFIELD_FILTER libavfilter/vf_setparams.c
2223+CONFIG_SETPARAMS_FILTER libavfilter/vf_setparams.c
2224+CONFIG_SETPTS_FILTER libavfilter/setpts.c
2225+CONFIG_SETRANGE_FILTER libavfilter/vf_setparams.c
2226+CONFIG_SETSAR_FILTER libavfilter/vf_aspect.c
2227+CONFIG_SETTB_FILTER libavfilter/settb.c
2228+CONFIG_SHARPEN_NPP_FILTER libavfilter/vf_sharpen_npp.c
2229+CONFIG_SHARPNESS_VAAPI_FILTER libavfilter/vf_misc_vaapi.c libavfilter/vaapi_vpp.c
2230+CONFIG_SHEAR_FILTER libavfilter/vf_shear.c
2231+CONFIG_SHOWINFO_FILTER libavfilter/vf_showinfo.c
2232+CONFIG_SHOWPALETTE_FILTER libavfilter/vf_showpalette.c
2233+CONFIG_SHUFFLEFRAMES_FILTER libavfilter/vf_shuffleframes.c
2234+CONFIG_SHUFFLEPIXELS_FILTER libavfilter/vf_shufflepixels.c
2235+CONFIG_SHUFFLEPLANES_FILTER libavfilter/vf_shuffleplanes.c
2236+CONFIG_SIDEDATA_FILTER libavfilter/f_sidedata.c
2237+CONFIG_SIGNALSTATS_FILTER libavfilter/vf_signalstats.c
2238+CONFIG_SIGNATURE_FILTER libavfilter/vf_signature.c
2239+CONFIG_SITI_FILTER libavfilter/vf_siti.c
2240+CONFIG_SMARTBLUR_FILTER libavfilter/vf_smartblur.c
2241+CONFIG_SOBEL_FILTER libavfilter/vf_convolution.c
2242+CONFIG_SOBEL_OPENCL_FILTER libavfilter/vf_convolution_opencl.c libavfilter/opencl.c libavfilter/opencl/convolution.c
2243+CONFIG_SPLIT_FILTER libavfilter/split.c
2244+CONFIG_SPP_FILTER libavfilter/vf_spp.c libavfilter/qp_table.c libavfilter/x86/vf_spp.c
2245+CONFIG_SR_FILTER libavfilter/vf_sr.c
2246+CONFIG_SSIM_FILTER libavfilter/vf_ssim.c libavfilter/framesync.c libavfilter/x86/vf_ssim_init.c libavfilter/x86/vf_ssim.asm
2247+CONFIG_SSIM360_FILTER libavfilter/vf_ssim360.c libavfilter/framesync.c
2248+CONFIG_STEREO3D_FILTER libavfilter/vf_stereo3d.c libavfilter/x86/vf_stereo3d_init.c libavfilter/x86/vf_stereo3d.asm
2249+CONFIG_STREAMSELECT_FILTER libavfilter/f_streamselect.c libavfilter/framesync.c
2250+CONFIG_SUBTITLES_FILTER libavfilter/vf_subtitles.c
2251+CONFIG_SUPER2XSAI_FILTER libavfilter/vf_super2xsai.c
2252+CONFIG_SWAPRECT_FILTER libavfilter/vf_swaprect.c
2253+CONFIG_SWAPUV_FILTER libavfilter/vf_swapuv.c
2254+CONFIG_TBLEND_FILTER libavfilter/vf_blend.c libavfilter/framesync.c libavfilter/x86/vf_blend_init.c libavfilter/x86/vf_blend.asm
2255+CONFIG_TELECINE_FILTER libavfilter/vf_telecine.c
2256+CONFIG_THISTOGRAM_FILTER libavfilter/vf_histogram.c
2257+CONFIG_THRESHOLD_FILTER libavfilter/vf_threshold.c libavfilter/framesync.c libavfilter/x86/vf_threshold_init.c libavfilter/x86/vf_threshold.asm
2258+CONFIG_THUMBNAIL_FILTER libavfilter/vf_thumbnail.c
2259+CONFIG_THUMBNAIL_CUDA_FILTER libavfilter/vf_thumbnail_cuda.c libavfilter/vf_thumbnail_cuda.ptx.c libavfilter/cuda/load_helper.c
2260+CONFIG_TILE_FILTER libavfilter/vf_tile.c
2261+CONFIG_TILTANDSHIFT_FILTER libavfilter/vf_tiltandshift.c
2262+CONFIG_TINTERLACE_FILTER libavfilter/vf_tinterlace.c libavfilter/x86/vf_tinterlace_init.c libavfilter/x86/vf_interlace.asm
2263+CONFIG_TLUT2_FILTER libavfilter/vf_lut2.c libavfilter/framesync.c
2264+CONFIG_TMEDIAN_FILTER libavfilter/vf_xmedian.c libavfilter/framesync.c
2265+CONFIG_TMIDEQUALIZER_FILTER libavfilter/vf_tmidequalizer.c
2266+CONFIG_TMIX_FILTER libavfilter/vf_mix.c libavfilter/framesync.c
2267+CONFIG_TONEMAP_FILTER libavfilter/vf_tonemap.c
2268+CONFIG_TONEMAP_OPENCL_FILTER libavfilter/vf_tonemap_opencl.c libavfilter/opencl.c libavfilter/opencl/tonemap.c libavfilter/opencl/colorspace_common.c
2269+CONFIG_TONEMAP_VAAPI_FILTER libavfilter/vf_tonemap_vaapi.c libavfilter/vaapi_vpp.c
2270+CONFIG_TPAD_FILTER libavfilter/vf_tpad.c
2271+CONFIG_TRANSPOSE_FILTER libavfilter/vf_transpose.c libavfilter/x86/vf_transpose_init.c libavfilter/x86/vf_transpose.asm
2272+CONFIG_TRANSPOSE_NPP_FILTER libavfilter/vf_transpose_npp.c
2273+CONFIG_TRANSPOSE_OPENCL_FILTER libavfilter/vf_transpose_opencl.c libavfilter/opencl.c libavfilter/opencl/transpose.c
2274+CONFIG_TRANSPOSE_VAAPI_FILTER libavfilter/vf_transpose_vaapi.c libavfilter/vaapi_vpp.c
2275+CONFIG_TRANSPOSE_VT_FILTER libavfilter/vf_transpose_vt.c
2276+CONFIG_TRANSPOSE_VULKAN_FILTER libavfilter/vf_transpose_vulkan.c libavfilter/vulkan.c libavfilter/vulkan_filter.c
2277+CONFIG_TRIM_FILTER libavfilter/trim.c
2278+CONFIG_UNPREMULTIPLY_FILTER libavfilter/vf_premultiply.c libavfilter/framesync.c
2279+CONFIG_UNSHARP_FILTER libavfilter/vf_unsharp.c
2280+CONFIG_UNSHARP_OPENCL_FILTER libavfilter/vf_unsharp_opencl.c libavfilter/opencl.c libavfilter/opencl/unsharp.c
2281+CONFIG_UNTILE_FILTER libavfilter/vf_untile.c
2282+CONFIG_USPP_FILTER libavfilter/vf_uspp.c libavfilter/qp_table.c
2283+CONFIG_V360_FILTER libavfilter/vf_v360.c libavfilter/x86/vf_v360_init.c libavfilter/x86/vf_v360.asm
2284+CONFIG_VAGUEDENOISER_FILTER libavfilter/vf_vaguedenoiser.c
2285+CONFIG_VARBLUR_FILTER libavfilter/vf_varblur.c libavfilter/framesync.c
2286+CONFIG_VECTORSCOPE_FILTER libavfilter/vf_vectorscope.c
2287+CONFIG_VFLIP_FILTER libavfilter/vf_vflip.c
2288+CONFIG_VFLIP_VULKAN_FILTER libavfilter/vf_flip_vulkan.c libavfilter/vulkan.c
2289+CONFIG_VFRDET_FILTER libavfilter/vf_vfrdet.c
2290+CONFIG_VIBRANCE_FILTER libavfilter/vf_vibrance.c
2291+CONFIG_VIDSTABDETECT_FILTER libavfilter/vidstabutils.c libavfilter/vf_vidstabdetect.c
2292+CONFIG_VIDSTABTRANSFORM_FILTER libavfilter/vidstabutils.c libavfilter/vf_vidstabtransform.c
2293+CONFIG_VIF_FILTER libavfilter/vf_vif.c libavfilter/framesync.c
2294+CONFIG_VIGNETTE_FILTER libavfilter/vf_vignette.c
2295+CONFIG_VMAFMOTION_FILTER libavfilter/vf_vmafmotion.c libavfilter/framesync.c
2296+CONFIG_VPP_QSV_FILTER libavfilter/vf_vpp_qsv.c
2297+CONFIG_VSTACK_FILTER libavfilter/vf_stack.c libavfilter/framesync.c
2298+CONFIG_W3FDIF_FILTER libavfilter/vf_w3fdif.c libavfilter/x86/vf_w3fdif_init.c libavfilter/x86/vf_w3fdif.asm
2299+CONFIG_WAVEFORM_FILTER libavfilter/vf_waveform.c
2300+CONFIG_WEAVE_FILTER libavfilter/vf_weave.c
2301+CONFIG_XBR_FILTER libavfilter/vf_xbr.c
2302+CONFIG_XCORRELATE_FILTER libavfilter/vf_convolve.c libavfilter/framesync.c
2303+CONFIG_XFADE_FILTER libavfilter/vf_xfade.c
2304+CONFIG_XFADE_OPENCL_FILTER libavfilter/vf_xfade_opencl.c libavfilter/opencl.c libavfilter/opencl/xfade.c
2305+CONFIG_XFADE_VULKAN_FILTER libavfilter/vf_xfade_vulkan.c libavfilter/vulkan.c libavfilter/vulkan_filter.c
2306+CONFIG_XMEDIAN_FILTER libavfilter/vf_xmedian.c libavfilter/framesync.c
2307+CONFIG_XSTACK_FILTER libavfilter/vf_stack.c libavfilter/framesync.c
2308+CONFIG_YADIF_FILTER libavfilter/vf_yadif.c libavfilter/yadif_common.c libavfilter/x86/vf_yadif_init.c libavfilter/x86/vf_yadif.asm libavfilter/x86/yadif-16.asm libavfilter/x86/yadif-10.asm
2309+CONFIG_YADIF_CUDA_FILTER libavfilter/vf_yadif_cuda.c libavfilter/vf_yadif_cuda.ptx.c libavfilter/yadif_common.c libavfilter/cuda/load_helper.c
2310+CONFIG_YADIF_VIDEOTOOLBOX_FILTER libavfilter/vf_yadif_videotoolbox.c libavfilter/metal/vf_yadif_videotoolbox.metallib.c libavfilter/metal/utils.c libavfilter/yadif_common.c
2311+CONFIG_YAEPBLUR_FILTER libavfilter/vf_yaepblur.c
2312+CONFIG_ZMQ_FILTER libavfilter/f_zmq.c
2313+CONFIG_ZOOMPAN_FILTER libavfilter/vf_zoompan.c
2314+CONFIG_ZSCALE_FILTER libavfilter/vf_zscale.c
2315+CONFIG_HSTACK_VAAPI_FILTER libavfilter/vf_stack_vaapi.c libavfilter/framesync.c libavfilter/vaapi_vpp.c
2316+CONFIG_VSTACK_VAAPI_FILTER libavfilter/vf_stack_vaapi.c libavfilter/framesync.c libavfilter/vaapi_vpp.c
2317+CONFIG_XSTACK_VAAPI_FILTER libavfilter/vf_stack_vaapi.c libavfilter/framesync.c libavfilter/vaapi_vpp.c
2318+CONFIG_HSTACK_QSV_FILTER libavfilter/vf_stack_qsv.c libavfilter/framesync.c
2319+CONFIG_VSTACK_QSV_FILTER libavfilter/vf_stack_qsv.c libavfilter/framesync.c
2320+CONFIG_XSTACK_QSV_FILTER libavfilter/vf_stack_qsv.c libavfilter/framesync.c
2321+CONFIG_ALLRGB_FILTER libavfilter/vsrc_testsrc.c
2322+CONFIG_ALLYUV_FILTER libavfilter/vsrc_testsrc.c
2323+CONFIG_CELLAUTO_FILTER libavfilter/vsrc_cellauto.c
2324+CONFIG_COLOR_FILTER libavfilter/vsrc_testsrc.c
2325+CONFIG_COLOR_VULKAN_FILTER libavfilter/vsrc_testsrc_vulkan.c libavfilter/vulkan.c libavfilter/vulkan_filter.c
2326+CONFIG_COLORCHART_FILTER libavfilter/vsrc_testsrc.c
2327+CONFIG_COLORSPECTRUM_FILTER libavfilter/vsrc_testsrc.c
2328+CONFIG_COREIMAGESRC_FILTER libavfilter/vf_coreimage.c
2329+CONFIG_DDAGRAB_FILTER libavfilter/vsrc_ddagrab.c
2330+CONFIG_FREI0R_SRC_FILTER libavfilter/vf_frei0r.c
2331+CONFIG_GRADIENTS_FILTER libavfilter/vsrc_gradients.c
2332+CONFIG_HALDCLUTSRC_FILTER libavfilter/vsrc_testsrc.c
2333+CONFIG_LIFE_FILTER libavfilter/vsrc_life.c
2334+CONFIG_MANDELBROT_FILTER libavfilter/vsrc_mandelbrot.c
2335+CONFIG_MPTESTSRC_FILTER libavfilter/vsrc_mptestsrc.c
2336+CONFIG_NULLSRC_FILTER libavfilter/vsrc_testsrc.c
2337+CONFIG_OPENCLSRC_FILTER libavfilter/vf_program_opencl.c libavfilter/opencl.c
2338+CONFIG_QRENCODESRC_FILTER libavfilter/qrencode.c libavfilter/textutils.c
2339+CONFIG_PAL75BARS_FILTER libavfilter/vsrc_testsrc.c
2340+CONFIG_PAL100BARS_FILTER libavfilter/vsrc_testsrc.c
2341+CONFIG_RGBTESTSRC_FILTER libavfilter/vsrc_testsrc.c
2342+CONFIG_SIERPINSKI_FILTER libavfilter/vsrc_sierpinski.c
2343+CONFIG_SMPTEBARS_FILTER libavfilter/vsrc_testsrc.c
2344+CONFIG_SMPTEHDBARS_FILTER libavfilter/vsrc_testsrc.c
2345+CONFIG_TESTSRC_FILTER libavfilter/vsrc_testsrc.c
2346+CONFIG_TESTSRC2_FILTER libavfilter/vsrc_testsrc.c
2347+CONFIG_YUVTESTSRC_FILTER libavfilter/vsrc_testsrc.c
2348+CONFIG_ZONEPLATE_FILTER libavfilter/vsrc_testsrc.c
2349+CONFIG_NULLSINK_FILTER libavfilter/vsink_nullsink.c
2350+CONFIG_A3DSCOPE_FILTER libavfilter/avf_a3dscope.c
2351+CONFIG_ABITSCOPE_FILTER libavfilter/avf_abitscope.c
2352+CONFIG_ADRAWGRAPH_FILTER libavfilter/f_drawgraph.c
2353+CONFIG_AGRAPHMONITOR_FILTER libavfilter/f_graphmonitor.c
2354+CONFIG_AHISTOGRAM_FILTER libavfilter/avf_ahistogram.c
2355+CONFIG_APHASEMETER_FILTER libavfilter/avf_aphasemeter.c
2356+CONFIG_AVECTORSCOPE_FILTER libavfilter/avf_avectorscope.c
2357+CONFIG_CONCAT_FILTER libavfilter/avf_concat.c
2358+CONFIG_SHOWCQT_FILTER libavfilter/avf_showcqt.c libavfilter/lswsutils.c libavfilter/lavfutils.c libavfilter/x86/avf_showcqt_init.c libavfilter/x86/avf_showcqt.asm
2359+CONFIG_SHOWCWT_FILTER libavfilter/avf_showcwt.c
2360+CONFIG_SHOWFREQS_FILTER libavfilter/avf_showfreqs.c
2361+CONFIG_SHOWSPATIAL_FILTER libavfilter/avf_showspatial.c
2362+CONFIG_SHOWSPECTRUM_FILTER libavfilter/avf_showspectrum.c
2363+CONFIG_SHOWSPECTRUMPIC_FILTER libavfilter/avf_showspectrum.c
2364+CONFIG_SHOWVOLUME_FILTER libavfilter/avf_showvolume.c
2365+CONFIG_SHOWWAVES_FILTER libavfilter/avf_showwaves.c
2366+CONFIG_SHOWWAVESPIC_FILTER libavfilter/avf_showwaves.c
2367+CONFIG_SPECTRUMSYNTH_FILTER libavfilter/vaf_spectrumsynth.c
2368+CONFIG_AVSYNCTEST_FILTER libavfilter/src_avsynctest.c
2369+CONFIG_AMOVIE_FILTER libavfilter/src_movie.c
2370+CONFIG_MOVIE_FILTER libavfilter/src_movie.c
2371+CONFIG_AA_DEMUXER libavformat/aadec.c
2372+CONFIG_AAC_DEMUXER libavformat/aacdec.c libavformat/apetag.c libavformat/img2.c libavformat/rawdec.c
2373+CONFIG_AAX_DEMUXER libavformat/aaxdec.c
2374+CONFIG_AC3_DEMUXER libavformat/ac3dec.c libavformat/rawdec.c
2375+CONFIG_AC4_DEMUXER libavformat/ac4dec.c
2376+CONFIG_ACE_DEMUXER libavformat/acedec.c
2377+CONFIG_ACM_DEMUXER libavformat/acm.c libavformat/rawdec.c
2378+CONFIG_ACT_DEMUXER libavformat/act.c
2379+CONFIG_ADF_DEMUXER libavformat/bintext.c libavformat/sauce.c
2380+CONFIG_ADP_DEMUXER libavformat/adp.c
2381+CONFIG_ADS_DEMUXER libavformat/ads.c
2382+CONFIG_ADX_DEMUXER libavformat/adxdec.c
2383+CONFIG_AEA_DEMUXER libavformat/aeadec.c libavformat/pcm.c
2384+CONFIG_AFC_DEMUXER libavformat/afc.c
2385+CONFIG_AIFF_DEMUXER libavformat/aiffdec.c libavformat/aiff.c libavformat/pcm.c libavformat/mov_chan.c libavformat/replaygain.c
2386+CONFIG_AIX_DEMUXER libavformat/aixdec.c
2387+CONFIG_ALP_DEMUXER libavformat/alp.c
2388+CONFIG_AMR_DEMUXER libavformat/amr.c libavformat/rawdec.c
2389+CONFIG_AMRNB_DEMUXER libavformat/amr.c libavformat/rawdec.c
2390+CONFIG_AMRWB_DEMUXER libavformat/amr.c libavformat/rawdec.c
2391+CONFIG_ANM_DEMUXER libavformat/anm.c
2392+CONFIG_APAC_DEMUXER libavformat/apac.c libavformat/rawdec.c
2393+CONFIG_APC_DEMUXER libavformat/apc.c
2394+CONFIG_APE_DEMUXER libavformat/ape.c libavformat/apetag.c libavformat/img2.c
2395+CONFIG_APM_DEMUXER libavformat/apm.c
2396+CONFIG_APNG_DEMUXER libavformat/apngdec.c
2397+CONFIG_APTX_DEMUXER libavformat/aptxdec.c
2398+CONFIG_APTX_HD_DEMUXER libavformat/aptxdec.c
2399+CONFIG_AQTITLE_DEMUXER libavformat/aqtitledec.c libavformat/subtitles.c
2400+CONFIG_ARGO_ASF_DEMUXER libavformat/argo_asf.c
2401+CONFIG_ARGO_BRP_DEMUXER libavformat/argo_brp.c libavformat/argo_asf.c
2402+CONFIG_ARGO_CVG_DEMUXER libavformat/argo_cvg.c
2403+CONFIG_ASF_DEMUXER libavformat/asfdec_f.c libavformat/asf.c libavformat/asfcrypt.c libavformat/asf_tags.c libavformat/avlanguage.c
2404+CONFIG_ASF_O_DEMUXER libavformat/asfdec_o.c libavformat/asf.c libavformat/asfcrypt.c libavformat/asf_tags.c libavformat/avlanguage.c
2405+CONFIG_ASS_DEMUXER libavformat/assdec.c libavformat/subtitles.c
2406+CONFIG_AST_DEMUXER libavformat/ast.c libavformat/astdec.c
2407+CONFIG_AU_DEMUXER libavformat/au.c libavformat/pcm.c
2408+CONFIG_AV1_DEMUXER libavformat/av1dec.c
2409+CONFIG_AVI_DEMUXER libavformat/avidec.c
2410+CONFIG_AVISYNTH_DEMUXER libavformat/avisynth.c
2411+CONFIG_AVR_DEMUXER libavformat/avr.c libavformat/pcm.c
2412+CONFIG_AVS_DEMUXER libavformat/avs.c libavformat/voc_packet.c libavformat/voc.c
2413+CONFIG_AVS2_DEMUXER libavformat/avs2dec.c libavformat/rawdec.c
2414+CONFIG_AVS3_DEMUXER libavformat/avs3dec.c libavformat/rawdec.c
2415+CONFIG_BETHSOFTVID_DEMUXER libavformat/bethsoftvid.c
2416+CONFIG_BFI_DEMUXER libavformat/bfi.c
2417+CONFIG_BINTEXT_DEMUXER libavformat/bintext.c libavformat/sauce.c
2418+CONFIG_BINK_DEMUXER libavformat/bink.c
2419+CONFIG_BINKA_DEMUXER libavformat/binka.c
2420+CONFIG_BIT_DEMUXER libavformat/bit.c
2421+CONFIG_BITPACKED_DEMUXER libavformat/rawvideodec.c
2422+CONFIG_BMV_DEMUXER libavformat/bmv.c
2423+CONFIG_BFSTM_DEMUXER libavformat/brstm.c
2424+CONFIG_BRSTM_DEMUXER libavformat/brstm.c
2425+CONFIG_BOA_DEMUXER libavformat/boadec.c
2426+CONFIG_BONK_DEMUXER libavformat/bonk.c libavformat/rawdec.c
2427+CONFIG_C93_DEMUXER libavformat/c93.c libavformat/voc_packet.c libavformat/voc.c
2428+CONFIG_CAF_DEMUXER libavformat/cafdec.c libavformat/caf.c libavformat/mov_chan.c libavformat/mov_esds.c
2429+CONFIG_CAVSVIDEO_DEMUXER libavformat/cavsvideodec.c libavformat/rawdec.c
2430+CONFIG_CDG_DEMUXER libavformat/cdg.c
2431+CONFIG_CDXL_DEMUXER libavformat/cdxl.c
2432+CONFIG_CINE_DEMUXER libavformat/cinedec.c
2433+CONFIG_CODEC2_DEMUXER libavformat/codec2.c libavformat/pcm.c
2434+CONFIG_CODEC2RAW_DEMUXER libavformat/codec2.c libavformat/pcm.c
2435+CONFIG_CONCAT_DEMUXER libavformat/concatdec.c
2436+CONFIG_DASH_DEMUXER libavformat/dash.c libavformat/dashdec.c
2437+CONFIG_DATA_DEMUXER libavformat/rawdec.c
2438+CONFIG_DAUD_DEMUXER libavformat/dauddec.c
2439+CONFIG_DCSTR_DEMUXER libavformat/dcstr.c
2440+CONFIG_DERF_DEMUXER libavformat/derf.c libavformat/pcm.c
2441+CONFIG_DFA_DEMUXER libavformat/dfa.c
2442+CONFIG_DFPWM_DEMUXER libavformat/dfpwmdec.c libavformat/pcm.c
2443+CONFIG_DHAV_DEMUXER libavformat/dhav.c
2444+CONFIG_DIRAC_DEMUXER libavformat/diracdec.c libavformat/rawdec.c
2445+CONFIG_DNXHD_DEMUXER libavformat/dnxhddec.c libavformat/rawdec.c
2446+CONFIG_DSF_DEMUXER libavformat/dsfdec.c
2447+CONFIG_DSICIN_DEMUXER libavformat/dsicin.c
2448+CONFIG_DSS_DEMUXER libavformat/dss.c
2449+CONFIG_DTS_DEMUXER libavformat/dtsdec.c libavformat/rawdec.c
2450+CONFIG_DTSHD_DEMUXER libavformat/dtshddec.c
2451+CONFIG_DV_DEMUXER
2452+CONFIG_DVBSUB_DEMUXER libavformat/dvbsub.c libavformat/rawdec.c
2453+CONFIG_DVBTXT_DEMUXER libavformat/dvbtxt.c libavformat/rawdec.c
2454+CONFIG_DVDVIDEO_DEMUXER libavformat/dvdvideodec.c libavformat/dvdclut.c
2455+CONFIG_DXA_DEMUXER libavformat/dxa.c
2456+CONFIG_EA_DEMUXER libavformat/electronicarts.c
2457+CONFIG_EA_CDATA_DEMUXER libavformat/eacdata.c
2458+CONFIG_EAC3_DEMUXER libavformat/ac3dec.c libavformat/rawdec.c
2459+CONFIG_EPAF_DEMUXER libavformat/epafdec.c libavformat/pcm.c
2460+CONFIG_EVC_DEMUXER libavformat/evcdec.c libavformat/rawdec.c
2461+CONFIG_FFMETADATA_DEMUXER libavformat/ffmetadec.c
2462+CONFIG_FILMSTRIP_DEMUXER libavformat/filmstripdec.c
2463+CONFIG_FITS_DEMUXER libavcodec/fits.c libavformat/fitsdec.c
2464+CONFIG_FLAC_DEMUXER libavformat/flacdec.c libavformat/rawdec.c libavformat/flac_picture.c libavformat/oggparsevorbis.c libavformat/replaygain.c libavformat/vorbiscomment.c
2465+CONFIG_FLIC_DEMUXER libavformat/flic.c
2466+CONFIG_FLV_DEMUXER libavformat/flvdec.c
2467+CONFIG_LIVE_FLV_DEMUXER libavformat/flvdec.c
2468+CONFIG_FOURXM_DEMUXER libavformat/4xm.c
2469+CONFIG_FRM_DEMUXER libavformat/frmdec.c
2470+CONFIG_FSB_DEMUXER libavformat/fsb.c
2471+CONFIG_FWSE_DEMUXER libavformat/fwse.c libavformat/pcm.c
2472+CONFIG_G722_DEMUXER libavformat/g722.c libavformat/rawdec.c
2473+CONFIG_G723_1_DEMUXER libavformat/g723_1.c
2474+CONFIG_G726_DEMUXER libavformat/g726.c
2475+CONFIG_G726LE_DEMUXER libavformat/g726.c
2476+CONFIG_G729_DEMUXER libavformat/g729dec.c
2477+CONFIG_GDV_DEMUXER libavformat/gdv.c
2478+CONFIG_GENH_DEMUXER libavformat/genh.c
2479+CONFIG_GIF_DEMUXER libavformat/gifdec.c
2480+CONFIG_GSM_DEMUXER libavformat/gsmdec.c
2481+CONFIG_GXF_DEMUXER libavformat/gxf.c
2482+CONFIG_H261_DEMUXER libavformat/h261dec.c libavformat/rawdec.c
2483+CONFIG_H263_DEMUXER libavformat/h263dec.c libavformat/rawdec.c
2484+CONFIG_H264_DEMUXER libavformat/h264dec.c libavformat/rawdec.c
2485+CONFIG_HCA_DEMUXER libavformat/hca.c
2486+CONFIG_HCOM_DEMUXER libavformat/hcom.c libavformat/pcm.c
2487+CONFIG_HEVC_DEMUXER libavformat/hevcdec.c libavformat/rawdec.c
2488+CONFIG_HLS_DEMUXER libavformat/hls.c libavformat/hls_sample_encryption.c
2489+CONFIG_HNM_DEMUXER libavformat/hnm.c
2490+CONFIG_IAMF_DEMUXER libavformat/iamfdec.c
2491+CONFIG_ICO_DEMUXER libavformat/icodec.c
2492+CONFIG_IDCIN_DEMUXER libavformat/idcin.c
2493+CONFIG_IDF_DEMUXER libavformat/bintext.c libavformat/sauce.c
2494+CONFIG_IFF_DEMUXER libavformat/iff.c
2495+CONFIG_IFV_DEMUXER libavformat/ifv.c
2496+CONFIG_ILBC_DEMUXER libavformat/ilbc.c
2497+CONFIG_IMAGE2_DEMUXER libavformat/img2dec.c libavformat/img2.c
2498+CONFIG_IMAGE2PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2499+CONFIG_IMAGE2_ALIAS_PIX_DEMUXER libavformat/img2_alias_pix.c
2500+CONFIG_IMAGE2_BRENDER_PIX_DEMUXER libavformat/img2_brender_pix.c
2501+CONFIG_IMF_DEMUXER libavformat/imfdec.c libavformat/imf_cpl.c
2502+CONFIG_INGENIENT_DEMUXER libavformat/ingenientdec.c libavformat/rawdec.c
2503+CONFIG_IPMOVIE_DEMUXER libavformat/ipmovie.c
2504+CONFIG_IPU_DEMUXER libavformat/ipudec.c libavformat/rawdec.c
2505+CONFIG_IRCAM_DEMUXER libavformat/ircamdec.c libavformat/ircam.c libavformat/pcm.c
2506+CONFIG_ISS_DEMUXER libavformat/iss.c
2507+CONFIG_IV8_DEMUXER libavformat/iv8.c
2508+CONFIG_IVF_DEMUXER libavformat/ivfdec.c
2509+CONFIG_IVR_DEMUXER libavformat/rmdec.c libavformat/rm.c libavformat/rmsipr.c
2510+CONFIG_JACOSUB_DEMUXER libavformat/jacosubdec.c libavformat/subtitles.c
2511+CONFIG_JV_DEMUXER libavformat/jvdec.c
2512+CONFIG_JPEGXL_ANIM_DEMUXER libavformat/jpegxl_anim_dec.c
2513+CONFIG_KUX_DEMUXER libavformat/flvdec.c
2514+CONFIG_KVAG_DEMUXER libavformat/kvag.c
2515+CONFIG_LAF_DEMUXER libavformat/lafdec.c
2516+CONFIG_LMLM4_DEMUXER libavformat/lmlm4.c
2517+CONFIG_LOAS_DEMUXER libavformat/loasdec.c libavformat/rawdec.c
2518+CONFIG_LUODAT_DEMUXER libavformat/luodatdec.c
2519+CONFIG_LRC_DEMUXER libavformat/lrcdec.c libavformat/lrc.c libavformat/subtitles.c
2520+CONFIG_LVF_DEMUXER libavformat/lvfdec.c
2521+CONFIG_LXF_DEMUXER libavformat/lxfdec.c
2522+CONFIG_M4V_DEMUXER libavformat/m4vdec.c libavformat/rawdec.c
2523+CONFIG_MCA_DEMUXER libavformat/mca.c
2524+CONFIG_MCC_DEMUXER libavformat/mccdec.c libavformat/subtitles.c
2525+CONFIG_MATROSKA_DEMUXER libavformat/matroskadec.c libavformat/matroska.c libavformat/flac_picture.c libavformat/rmsipr.c libavformat/oggparsevorbis.c libavformat/vorbiscomment.c libavformat/qtpalette.c libavformat/replaygain.c libavformat/dovi_isom.c
2526+CONFIG_MGSTS_DEMUXER libavformat/mgsts.c
2527+CONFIG_MICRODVD_DEMUXER libavformat/microdvddec.c libavformat/subtitles.c
2528+CONFIG_MJPEG_DEMUXER libavformat/rawdec.c
2529+CONFIG_MJPEG_2000_DEMUXER libavformat/rawdec.c libavformat/mj2kdec.c
2530+CONFIG_MLP_DEMUXER libavformat/rawdec.c libavformat/mlpdec.c
2531+CONFIG_MLV_DEMUXER libavformat/mlvdec.c libavformat/riffdec.c
2532+CONFIG_MM_DEMUXER libavformat/mm.c
2533+CONFIG_MMF_DEMUXER libavformat/mmf.c
2534+CONFIG_MODS_DEMUXER libavformat/mods.c
2535+CONFIG_MOFLEX_DEMUXER libavformat/moflex.c
2536+CONFIG_MOV_DEMUXER libavformat/mov.c libavformat/mov_chan.c libavformat/mov_esds.c libavformat/qtpalette.c libavformat/replaygain.c libavformat/dovi_isom.c
2537+CONFIG_MP3_DEMUXER libavformat/mp3dec.c libavformat/replaygain.c
2538+CONFIG_MPC_DEMUXER libavformat/mpc.c libavformat/apetag.c libavformat/img2.c
2539+CONFIG_MPC8_DEMUXER libavformat/mpc8.c libavformat/apetag.c libavformat/img2.c
2540+CONFIG_MPEGPS_DEMUXER libavformat/mpeg.c
2541+CONFIG_MPEGTS_DEMUXER libavformat/mpegts.c
2542+CONFIG_MPEGTSRAW_DEMUXER
2543+CONFIG_MPEGVIDEO_DEMUXER libavformat/mpegvideodec.c libavformat/rawdec.c
2544+CONFIG_MPJPEG_DEMUXER libavformat/mpjpegdec.c
2545+CONFIG_MPL2_DEMUXER libavformat/mpl2dec.c libavformat/subtitles.c
2546+CONFIG_MPSUB_DEMUXER libavformat/mpsubdec.c libavformat/subtitles.c
2547+CONFIG_MSF_DEMUXER libavformat/msf.c
2548+CONFIG_MSNWC_TCP_DEMUXER libavformat/msnwc_tcp.c
2549+CONFIG_MSP_DEMUXER libavformat/mspdec.c
2550+CONFIG_MTAF_DEMUXER libavformat/mtaf.c
2551+CONFIG_MTV_DEMUXER libavformat/mtv.c
2552+CONFIG_MUSX_DEMUXER libavformat/musx.c
2553+CONFIG_MV_DEMUXER libavformat/mvdec.c
2554+CONFIG_MVI_DEMUXER libavformat/mvi.c
2555+CONFIG_MXF_DEMUXER libavformat/mxfdec.c libavformat/mxf.c libavformat/avlanguage.c
2556+CONFIG_MXG_DEMUXER libavformat/mxg.c
2557+CONFIG_NC_DEMUXER libavformat/ncdec.c
2558+CONFIG_NISTSPHERE_DEMUXER libavformat/nistspheredec.c libavformat/pcm.c
2559+CONFIG_NSP_DEMUXER libavformat/nspdec.c libavformat/pcm.c
2560+CONFIG_NSV_DEMUXER libavformat/nsvdec.c
2561+CONFIG_NUT_DEMUXER libavformat/nutdec.c libavformat/nut.c
2562+CONFIG_NUV_DEMUXER libavformat/nuv.c
2563+CONFIG_OBU_DEMUXER libavformat/av1dec.c
2564+CONFIG_OGG_DEMUXER libavformat/oggdec.c libavformat/oggparsecelt.c libavformat/oggparsedirac.c libavformat/oggparseflac.c libavformat/oggparseogm.c libavformat/oggparseopus.c libavformat/oggparseskeleton.c libavformat/oggparsespeex.c libavformat/oggparsetheora.c libavformat/oggparsevorbis.c libavformat/oggparsevp8.c libavformat/replaygain.c libavformat/vorbiscomment.c libavformat/flac_picture.c
2565+CONFIG_OMA_DEMUXER libavformat/omadec.c libavformat/pcm.c libavformat/oma.c
2566+CONFIG_OSQ_DEMUXER libavformat/osq.c libavformat/rawdec.c
2567+CONFIG_PAF_DEMUXER libavformat/paf.c
2568+CONFIG_PCM_ALAW_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2569+CONFIG_PCM_MULAW_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2570+CONFIG_PCM_VIDC_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2571+CONFIG_PCM_F64BE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2572+CONFIG_PCM_F64LE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2573+CONFIG_PCM_F32BE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2574+CONFIG_PCM_F32LE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2575+CONFIG_PCM_S32BE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2576+CONFIG_PCM_S32LE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2577+CONFIG_PCM_S24BE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2578+CONFIG_PCM_S24LE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2579+CONFIG_PCM_S16BE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2580+CONFIG_PCM_S16LE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2581+CONFIG_PCM_S8_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2582+CONFIG_PCM_U32BE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2583+CONFIG_PCM_U32LE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2584+CONFIG_PCM_U24BE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2585+CONFIG_PCM_U24LE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2586+CONFIG_PCM_U16BE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2587+CONFIG_PCM_U16LE_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2588+CONFIG_PCM_U8_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2589+CONFIG_PDV_DEMUXER libavformat/pdvdec.c
2590+CONFIG_PJS_DEMUXER libavformat/pjsdec.c libavformat/subtitles.c
2591+CONFIG_PMP_DEMUXER libavformat/pmpdec.c
2592+CONFIG_PP_BNK_DEMUXER libavformat/pp_bnk.c
2593+CONFIG_PVA_DEMUXER libavformat/pva.c
2594+CONFIG_PVF_DEMUXER libavformat/pvfdec.c libavformat/pcm.c
2595+CONFIG_QCP_DEMUXER libavformat/qcp.c
2596+CONFIG_QOA_DEMUXER libavformat/qoadec.c
2597+CONFIG_R3D_DEMUXER libavformat/r3d.c
2598+CONFIG_RAWVIDEO_DEMUXER libavformat/rawvideodec.c
2599+CONFIG_REALTEXT_DEMUXER libavformat/realtextdec.c libavformat/subtitles.c
2600+CONFIG_REDSPARK_DEMUXER libavformat/redspark.c
2601+CONFIG_RKA_DEMUXER libavformat/rka.c libavformat/apetag.c libavformat/img2.c
2602+CONFIG_RL2_DEMUXER libavformat/rl2.c
2603+CONFIG_RM_DEMUXER libavformat/rmdec.c libavformat/rm.c libavformat/rmsipr.c
2604+CONFIG_ROQ_DEMUXER libavformat/idroqdec.c
2605+CONFIG_RPL_DEMUXER libavformat/rpl.c
2606+CONFIG_RSD_DEMUXER libavformat/rsd.c
2607+CONFIG_RSO_DEMUXER libavformat/rsodec.c libavformat/rso.c libavformat/pcm.c
2608+CONFIG_RTP_DEMUXER
2609+CONFIG_RTSP_DEMUXER libavformat/rtsp.c libavformat/rtspdec.c libavformat/httpauth.c libavformat/urldecode.c
2610+CONFIG_S337M_DEMUXER libavformat/s337m.c libavformat/spdif.c
2611+CONFIG_SAMI_DEMUXER libavformat/samidec.c libavformat/subtitles.c
2612+CONFIG_SAP_DEMUXER libavformat/sapdec.c
2613+CONFIG_SBC_DEMUXER libavformat/sbcdec.c libavformat/rawdec.c
2614+CONFIG_SBG_DEMUXER libavformat/sbgdec.c
2615+CONFIG_SCC_DEMUXER libavformat/sccdec.c libavformat/subtitles.c
2616+CONFIG_SCD_DEMUXER libavformat/scd.c
2617+CONFIG_SDNS_DEMUXER libavformat/sdns.c
2618+CONFIG_SDP_DEMUXER libavformat/rtsp.c
2619+CONFIG_SDR2_DEMUXER libavformat/sdr2.c
2620+CONFIG_SDS_DEMUXER libavformat/sdsdec.c
2621+CONFIG_SDX_DEMUXER libavformat/sdxdec.c libavformat/pcm.c
2622+CONFIG_SEGAFILM_DEMUXER libavformat/segafilm.c
2623+CONFIG_SER_DEMUXER libavformat/serdec.c
2624+CONFIG_SGA_DEMUXER libavformat/sga.c
2625+CONFIG_SHORTEN_DEMUXER libavformat/shortendec.c libavformat/rawdec.c
2626+CONFIG_SIFF_DEMUXER libavformat/siff.c
2627+CONFIG_SIMBIOSIS_IMX_DEMUXER libavformat/imx.c
2628+CONFIG_SLN_DEMUXER libavformat/pcmdec.c libavformat/pcm.c
2629+CONFIG_SMACKER_DEMUXER libavformat/smacker.c
2630+CONFIG_SMJPEG_DEMUXER libavformat/smjpegdec.c libavformat/smjpeg.c
2631+CONFIG_SMUSH_DEMUXER libavformat/smush.c
2632+CONFIG_SOL_DEMUXER libavformat/sol.c libavformat/pcm.c
2633+CONFIG_SOX_DEMUXER libavformat/soxdec.c libavformat/pcm.c
2634+CONFIG_SPDIF_DEMUXER libavformat/spdif.c libavformat/spdifdec.c
2635+CONFIG_SRT_DEMUXER libavformat/srtdec.c libavformat/subtitles.c
2636+CONFIG_STR_DEMUXER libavformat/psxstr.c
2637+CONFIG_STL_DEMUXER libavformat/stldec.c libavformat/subtitles.c
2638+CONFIG_SUBVIEWER1_DEMUXER libavformat/subviewer1dec.c libavformat/subtitles.c
2639+CONFIG_SUBVIEWER_DEMUXER libavformat/subviewerdec.c libavformat/subtitles.c
2640+CONFIG_SUP_DEMUXER libavformat/supdec.c
2641+CONFIG_SVAG_DEMUXER libavformat/svag.c
2642+CONFIG_SVS_DEMUXER libavformat/svs.c
2643+CONFIG_SWF_DEMUXER libavformat/swfdec.c libavformat/swf.c
2644+CONFIG_TAK_DEMUXER libavcodec/tak.c libavformat/takdec.c libavformat/apetag.c libavformat/img2.c libavformat/rawdec.c
2645+CONFIG_TEDCAPTIONS_DEMUXER libavformat/tedcaptionsdec.c libavformat/subtitles.c
2646+CONFIG_THP_DEMUXER libavformat/thp.c
2647+CONFIG_THREEDOSTR_DEMUXER libavformat/3dostr.c
2648+CONFIG_TIERTEXSEQ_DEMUXER libavformat/tiertexseq.c
2649+CONFIG_TMV_DEMUXER libavformat/tmv.c
2650+CONFIG_TRUEHD_DEMUXER libavformat/rawdec.c libavformat/mlpdec.c
2651+CONFIG_TTA_DEMUXER libavformat/tta.c libavformat/apetag.c libavformat/img2.c
2652+CONFIG_TXD_DEMUXER libavformat/txd.c
2653+CONFIG_TTY_DEMUXER libavformat/tty.c libavformat/sauce.c
2654+CONFIG_TY_DEMUXER libavformat/ty.c
2655+CONFIG_USM_DEMUXER libavformat/usmdec.c
2656+CONFIG_V210_DEMUXER libavformat/rawvideodec.c
2657+CONFIG_V210X_DEMUXER libavformat/rawvideodec.c
2658+CONFIG_VAG_DEMUXER libavformat/vag.c
2659+CONFIG_VC1_DEMUXER libavformat/rawdec.c libavformat/vc1dec.c
2660+CONFIG_VC1T_DEMUXER libavformat/vc1test.c
2661+CONFIG_VIVIDAS_DEMUXER libavformat/vividas.c
2662+CONFIG_VIVO_DEMUXER libavformat/vivo.c
2663+CONFIG_VMD_DEMUXER libavformat/sierravmd.c
2664+CONFIG_VOBSUB_DEMUXER libavformat/subtitles.c
2665+CONFIG_VOC_DEMUXER libavformat/vocdec.c libavformat/voc_packet.c libavformat/voc.c
2666+CONFIG_VPK_DEMUXER libavformat/vpk.c
2667+CONFIG_VPLAYER_DEMUXER libavformat/vplayerdec.c libavformat/subtitles.c
2668+CONFIG_VQF_DEMUXER libavformat/vqf.c
2669+CONFIG_VVC_DEMUXER libavformat/vvcdec.c libavformat/rawdec.c
2670+CONFIG_W64_DEMUXER libavformat/wavdec.c libavformat/w64.c libavformat/pcm.c
2671+CONFIG_WADY_DEMUXER libavformat/wady.c libavformat/pcm.c
2672+CONFIG_WAVARC_DEMUXER libavformat/wavarc.c
2673+CONFIG_WAV_DEMUXER libavformat/wavdec.c libavformat/pcm.c
2674+CONFIG_WC3_DEMUXER libavformat/wc3movie.c
2675+CONFIG_WEBM_DASH_MANIFEST_DEMUXER
2676+CONFIG_WEBVTT_DEMUXER libavformat/webvttdec.c libavformat/subtitles.c
2677+CONFIG_WSAUD_DEMUXER libavformat/westwood_aud.c
2678+CONFIG_WSD_DEMUXER libavformat/wsddec.c libavformat/rawdec.c
2679+CONFIG_WSVQA_DEMUXER libavformat/westwood_vqa.c
2680+CONFIG_WTV_DEMUXER libavformat/wtvdec.c libavformat/wtv_common.c libavformat/asf.c
2681+CONFIG_WVE_DEMUXER libavformat/wvedec.c libavformat/pcm.c
2682+CONFIG_WV_DEMUXER libavformat/wvdec.c libavformat/wv.c libavformat/apetag.c libavformat/img2.c
2683+CONFIG_XA_DEMUXER libavformat/xa.c
2684+CONFIG_XBIN_DEMUXER libavformat/bintext.c libavformat/sauce.c
2685+CONFIG_XMD_DEMUXER libavformat/xmd.c libavformat/pcm.c
2686+CONFIG_XMV_DEMUXER libavformat/xmv.c
2687+CONFIG_XVAG_DEMUXER libavformat/xvag.c
2688+CONFIG_XWMA_DEMUXER libavformat/xwma.c
2689+CONFIG_YOP_DEMUXER libavformat/yop.c
2690+CONFIG_YUV4MPEGPIPE_DEMUXER libavformat/yuv4mpegdec.c
2691+CONFIG_IMAGE_BMP_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2692+CONFIG_IMAGE_CRI_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2693+CONFIG_IMAGE_DDS_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2694+CONFIG_IMAGE_DPX_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2695+CONFIG_IMAGE_EXR_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2696+CONFIG_IMAGE_GEM_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2697+CONFIG_IMAGE_GIF_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2698+CONFIG_IMAGE_HDR_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2699+CONFIG_IMAGE_J2K_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2700+CONFIG_IMAGE_JPEG_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2701+CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2702+CONFIG_IMAGE_JPEGXL_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2703+CONFIG_IMAGE_PAM_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2704+CONFIG_IMAGE_PBM_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2705+CONFIG_IMAGE_PCX_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2706+CONFIG_IMAGE_PFM_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2707+CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2708+CONFIG_IMAGE_PGM_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2709+CONFIG_IMAGE_PGX_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2710+CONFIG_IMAGE_PHM_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2711+CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2712+CONFIG_IMAGE_PICTOR_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2713+CONFIG_IMAGE_PNG_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2714+CONFIG_IMAGE_PPM_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2715+CONFIG_IMAGE_PSD_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2716+CONFIG_IMAGE_QDRAW_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2717+CONFIG_IMAGE_QOI_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2718+CONFIG_IMAGE_SGI_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2719+CONFIG_IMAGE_SVG_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2720+CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2721+CONFIG_IMAGE_TIFF_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2722+CONFIG_IMAGE_VBN_PIPE_DEMUXER
2723+CONFIG_IMAGE_WEBP_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2724+CONFIG_IMAGE_XBM_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2725+CONFIG_IMAGE_XPM_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2726+CONFIG_IMAGE_XWD_PIPE_DEMUXER libavformat/img2dec.c libavformat/img2.c
2727+CONFIG_LIBGME_DEMUXER libavformat/libgme.c
2728+CONFIG_LIBMODPLUG_DEMUXER libavformat/libmodplug.c
2729+CONFIG_LIBOPENMPT_DEMUXER libavformat/libopenmpt.c
2730+CONFIG_VAPOURSYNTH_DEMUXER libavformat/vapoursynth.c
2731+CONFIG_A64_MUXER libavformat/a64.c libavformat/rawenc.c
2732+CONFIG_AC3_MUXER libavformat/rawenc.c
2733+CONFIG_AC4_MUXER libavformat/ac4enc.c
2734+CONFIG_ADTS_MUXER libavformat/adtsenc.c libavformat/apetag.c libavformat/img2.c libavformat/id3v2enc.c
2735+CONFIG_ADX_MUXER libavformat/rawenc.c
2736+CONFIG_AEA_MUXER libavformat/aeaenc.c libavformat/rawenc.c
2737+CONFIG_AIFF_MUXER libavformat/aiffenc.c libavformat/aiff.c libavformat/id3v2enc.c
2738+CONFIG_ALP_MUXER libavformat/alp.c libavformat/rawenc.c
2739+CONFIG_AMR_MUXER libavformat/amr.c libavformat/rawenc.c
2740+CONFIG_AMV_MUXER libavformat/amvenc.c
2741+CONFIG_APM_MUXER libavformat/apm.c libavformat/rawenc.c
2742+CONFIG_APNG_MUXER libavformat/apngenc.c
2743+CONFIG_APTX_MUXER libavformat/rawenc.c
2744+CONFIG_APTX_HD_MUXER libavformat/rawenc.c
2745+CONFIG_ARGO_ASF_MUXER libavformat/argo_asf.c
2746+CONFIG_ARGO_CVG_MUXER libavformat/argo_cvg.c
2747+CONFIG_ASF_MUXER libavformat/asfenc.c libavformat/asf.c libavformat/avlanguage.c
2748+CONFIG_ASS_MUXER libavformat/assenc.c
2749+CONFIG_AST_MUXER libavformat/ast.c libavformat/astenc.c
2750+CONFIG_ASF_STREAM_MUXER
2751+CONFIG_AU_MUXER libavformat/au.c libavformat/rawenc.c
2752+CONFIG_AVI_MUXER libavformat/avienc.c libavformat/mpegtsenc.c libavformat/avlanguage.c libavformat/rawutils.c
2753+CONFIG_AVIF_MUXER
2754+CONFIG_AVM2_MUXER libavformat/swfenc.c libavformat/swf.c
2755+CONFIG_AVS2_MUXER libavformat/rawenc.c
2756+CONFIG_AVS3_MUXER libavformat/rawenc.c
2757+CONFIG_BIT_MUXER libavformat/bit.c
2758+CONFIG_CAF_MUXER libavformat/cafenc.c libavformat/caf.c libavformat/riff.c
2759+CONFIG_CAVSVIDEO_MUXER libavformat/rawenc.c
2760+CONFIG_CODEC2_MUXER libavformat/codec2.c libavformat/rawenc.c
2761+CONFIG_CODEC2RAW_MUXER libavformat/rawenc.c
2762+CONFIG_CRC_MUXER libavformat/crcenc.c
2763+CONFIG_DASH_MUXER libavformat/dash.c libavformat/dashenc.c libavformat/hlsplaylist.c
2764+CONFIG_DATA_MUXER libavformat/rawenc.c
2765+CONFIG_DAUD_MUXER libavformat/daudenc.c
2766+CONFIG_DFPWM_MUXER libavformat/rawenc.c
2767+CONFIG_DIRAC_MUXER libavformat/rawenc.c
2768+CONFIG_DNXHD_MUXER libavformat/rawenc.c
2769+CONFIG_DTS_MUXER libavformat/rawenc.c
2770+CONFIG_DV_MUXER libavformat/dvenc.c
2771+CONFIG_EAC3_MUXER libavformat/rawenc.c
2772+CONFIG_EVC_MUXER libavformat/rawenc.c
2773+CONFIG_F4V_MUXER
2774+CONFIG_FFMETADATA_MUXER libavformat/ffmetaenc.c
2775+CONFIG_FIFO_MUXER libavformat/fifo.c
2776+CONFIG_FILMSTRIP_MUXER libavformat/filmstripenc.c libavformat/rawenc.c
2777+CONFIG_FITS_MUXER libavformat/fitsenc.c
2778+CONFIG_FLAC_MUXER libavformat/flacenc.c libavformat/flacenc_header.c libavformat/vorbiscomment.c
2779+CONFIG_FLV_MUXER libavformat/flvenc.c libavformat/avc.c libavformat/hevc.c libavformat/av1.c libavformat/vpcc.c
2780+CONFIG_FRAMECRC_MUXER libavformat/framecrcenc.c libavformat/framehash.c
2781+CONFIG_FRAMEHASH_MUXER libavformat/hashenc.c libavformat/framehash.c
2782+CONFIG_FRAMEMD5_MUXER libavformat/hashenc.c libavformat/framehash.c
2783+CONFIG_G722_MUXER libavformat/rawenc.c
2784+CONFIG_G723_1_MUXER libavformat/rawenc.c
2785+CONFIG_G726_MUXER libavformat/rawenc.c
2786+CONFIG_G726LE_MUXER libavformat/rawenc.c
2787+CONFIG_GIF_MUXER libavformat/gif.c
2788+CONFIG_GSM_MUXER libavformat/rawenc.c
2789+CONFIG_GXF_MUXER libavformat/gxfenc.c
2790+CONFIG_H261_MUXER libavformat/rawenc.c
2791+CONFIG_H263_MUXER libavformat/rawenc.c
2792+CONFIG_H264_MUXER libavformat/rawenc.c
2793+CONFIG_HASH_MUXER libavformat/hashenc.c
2794+CONFIG_HDS_MUXER libavformat/hdsenc.c
2795+CONFIG_HEVC_MUXER libavformat/rawenc.c
2796+CONFIG_HLS_MUXER libavformat/hlsenc.c libavformat/hlsplaylist.c libavformat/avc.c
2797+CONFIG_IAMF_MUXER libavformat/iamfenc.c
2798+CONFIG_ICO_MUXER libavformat/icoenc.c
2799+CONFIG_ILBC_MUXER libavformat/ilbc.c libavformat/rawenc.c
2800+CONFIG_IMAGE2_MUXER libavformat/img2enc.c libavformat/img2.c
2801+CONFIG_IMAGE2PIPE_MUXER libavformat/img2enc.c libavformat/img2.c
2802+CONFIG_IPOD_MUXER
2803+CONFIG_IRCAM_MUXER libavformat/ircamenc.c libavformat/ircam.c libavformat/rawenc.c
2804+CONFIG_ISMV_MUXER
2805+CONFIG_IVF_MUXER libavformat/ivfenc.c
2806+CONFIG_JACOSUB_MUXER libavformat/jacosubenc.c libavformat/rawenc.c
2807+CONFIG_KVAG_MUXER libavformat/kvag.c libavformat/rawenc.c
2808+CONFIG_LATM_MUXER libavformat/latmenc.c libavformat/rawenc.c
2809+CONFIG_LRC_MUXER libavformat/lrcenc.c libavformat/lrc.c
2810+CONFIG_M4V_MUXER libavformat/rawenc.c
2811+CONFIG_MD5_MUXER libavformat/hashenc.c
2812+CONFIG_MATROSKA_MUXER libavformat/matroskaenc.c libavformat/matroska.c libavformat/av1.c libavformat/avc.c libavformat/hevc.c libavformat/vvc.c libavformat/flacenc_header.c libavformat/avlanguage.c libavformat/vorbiscomment.c libavformat/wv.c libavformat/dovi_isom.c
2813+CONFIG_MATROSKA_AUDIO_MUXER
2814+CONFIG_MICRODVD_MUXER libavformat/microdvdenc.c
2815+CONFIG_MJPEG_MUXER libavformat/rawenc.c
2816+CONFIG_MLP_MUXER libavformat/rawenc.c
2817+CONFIG_MMF_MUXER libavformat/mmf.c libavformat/rawenc.c
2818+CONFIG_MOV_MUXER libavformat/movenc.c libavformat/av1.c libavformat/avc.c libavformat/hevc.c libavformat/vvc.c libavformat/vpcc.c libavformat/movenchint.c libavformat/mov_chan.c libavformat/rtp.c libavformat/movenccenc.c libavformat/movenc_ttml.c libavformat/rawutils.c libavformat/dovi_isom.c libavformat/evc.c
2819+CONFIG_MP2_MUXER libavformat/rawenc.c
2820+CONFIG_MP3_MUXER libavformat/mp3enc.c libavformat/rawenc.c libavformat/id3v2enc.c
2821+CONFIG_MP4_MUXER
2822+CONFIG_MPEG1SYSTEM_MUXER libavformat/mpegenc.c
2823+CONFIG_MPEG1VCD_MUXER libavformat/mpegenc.c
2824+CONFIG_MPEG1VIDEO_MUXER libavformat/rawenc.c
2825+CONFIG_MPEG2DVD_MUXER libavformat/mpegenc.c
2826+CONFIG_MPEG2SVCD_MUXER libavformat/mpegenc.c
2827+CONFIG_MPEG2VIDEO_MUXER libavformat/rawenc.c
2828+CONFIG_MPEG2VOB_MUXER libavformat/mpegenc.c
2829+CONFIG_MPEGTS_MUXER libavformat/mpegtsenc.c
2830+CONFIG_MPJPEG_MUXER libavformat/mpjpeg.c
2831+CONFIG_MXF_MUXER libavformat/mxfenc.c libavformat/mxf.c libavformat/avc.c
2832+CONFIG_MXF_D10_MUXER
2833+CONFIG_MXF_OPATOM_MUXER
2834+CONFIG_NULL_MUXER libavformat/nullenc.c
2835+CONFIG_NUT_MUXER libavformat/nutenc.c libavformat/nut.c
2836+CONFIG_OBU_MUXER libavformat/rawenc.c
2837+CONFIG_OGA_MUXER libavformat/oggenc.c libavformat/vorbiscomment.c
2838+CONFIG_OGG_MUXER libavformat/oggenc.c libavformat/vorbiscomment.c
2839+CONFIG_OGV_MUXER libavformat/oggenc.c libavformat/vorbiscomment.c
2840+CONFIG_OMA_MUXER libavformat/omaenc.c libavformat/rawenc.c libavformat/oma.c libavformat/id3v2enc.c
2841+CONFIG_OPUS_MUXER libavformat/oggenc.c libavformat/vorbiscomment.c
2842+CONFIG_PCM_ALAW_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2843+CONFIG_PCM_MULAW_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2844+CONFIG_PCM_VIDC_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2845+CONFIG_PCM_F64BE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2846+CONFIG_PCM_F64LE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2847+CONFIG_PCM_F32BE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2848+CONFIG_PCM_F32LE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2849+CONFIG_PCM_S32BE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2850+CONFIG_PCM_S32LE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2851+CONFIG_PCM_S24BE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2852+CONFIG_PCM_S24LE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2853+CONFIG_PCM_S16BE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2854+CONFIG_PCM_S16LE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2855+CONFIG_PCM_S8_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2856+CONFIG_PCM_U32BE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2857+CONFIG_PCM_U32LE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2858+CONFIG_PCM_U24BE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2859+CONFIG_PCM_U24LE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2860+CONFIG_PCM_U16BE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2861+CONFIG_PCM_U16LE_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2862+CONFIG_PCM_U8_MUXER libavformat/pcmenc.c libavformat/rawenc.c
2863+CONFIG_PSP_MUXER
2864+CONFIG_RAWVIDEO_MUXER libavformat/rawenc.c
2865+CONFIG_RCWT_MUXER libavformat/rcwtenc.c libavformat/subtitles.c
2866+CONFIG_RM_MUXER libavformat/rmenc.c libavformat/rm.c
2867+CONFIG_ROQ_MUXER libavformat/idroqenc.c libavformat/rawenc.c
2868+CONFIG_RSO_MUXER libavformat/rsoenc.c libavformat/rso.c libavformat/rawenc.c
2869+CONFIG_RTP_MUXER libavformat/rtp.c libavformat/rtpenc_aac.c libavformat/rtpenc_latm.c libavformat/rtpenc_amr.c libavformat/rtpenc_h261.c libavformat/rtpenc_h263.c libavformat/rtpenc_h263_rfc2190.c libavformat/rtpenc_h264_hevc.c libavformat/rtpenc_jpeg.c libavformat/rtpenc_mpv.c libavformat/rtpenc.c libavformat/rtpenc_rfc4175.c libavformat/rtpenc_vc2hq.c libavformat/rtpenc_vp8.c libavformat/rtpenc_vp9.c libavformat/rtpenc_xiph.c libavformat/avc.c libavformat/hevc.c libavformat/vvc.c
2870+CONFIG_RTP_MPEGTS_MUXER libavformat/rtpenc_mpegts.c
2871+CONFIG_RTSP_MUXER libavformat/rtsp.c libavformat/rtspenc.c libavformat/httpauth.c libavformat/urldecode.c
2872+CONFIG_SAP_MUXER libavformat/sapenc.c
2873+CONFIG_SBC_MUXER libavformat/rawenc.c
2874+CONFIG_SCC_MUXER libavformat/sccenc.c
2875+CONFIG_SEGAFILM_MUXER libavformat/segafilmenc.c
2876+CONFIG_SEGMENT_MUXER libavformat/segment.c
2877+CONFIG_STREAM_SEGMENT_MUXER libavformat/segment.c
2878+CONFIG_SMJPEG_MUXER libavformat/smjpegenc.c libavformat/smjpeg.c
2879+CONFIG_SMOOTHSTREAMING_MUXER libavformat/smoothstreamingenc.c
2880+CONFIG_SOX_MUXER libavformat/soxenc.c libavformat/rawenc.c
2881+CONFIG_SPX_MUXER
2882+CONFIG_SPDIF_MUXER libavformat/spdif.c libavformat/spdifenc.c
2883+CONFIG_SRT_MUXER libavformat/srtenc.c
2884+CONFIG_STREAMHASH_MUXER libavformat/hashenc.c
2885+CONFIG_SUP_MUXER libavformat/supenc.c
2886+CONFIG_SWF_MUXER libavformat/swfenc.c libavformat/swf.c
2887+CONFIG_TEE_MUXER libavformat/tee.c libavformat/tee_common.c
2888+CONFIG_TG2_MUXER
2889+CONFIG_TGP_MUXER
2890+CONFIG_MKVTIMESTAMP_V2_MUXER libavformat/mkvtimestamp_v2.c
2891+CONFIG_TRUEHD_MUXER libavformat/rawenc.c
2892+CONFIG_TTA_MUXER libavformat/ttaenc.c libavformat/apetag.c libavformat/img2.c
2893+CONFIG_TTML_MUXER libavformat/ttmlenc.c
2894+CONFIG_UNCODEDFRAMECRC_MUXER libavformat/uncodedframecrcenc.c libavformat/framehash.c
2895+CONFIG_VC1_MUXER libavformat/rawenc.c
2896+CONFIG_VC1T_MUXER libavformat/vc1testenc.c
2897+CONFIG_VOC_MUXER libavformat/vocenc.c libavformat/voc.c
2898+CONFIG_VVC_MUXER libavformat/rawenc.c
2899+CONFIG_W64_MUXER libavformat/wavenc.c libavformat/w64.c
2900+CONFIG_WAV_MUXER libavformat/wavenc.c
2901+CONFIG_WEBM_MUXER libavformat/matroskaenc.c libavformat/matroska.c libavformat/av1.c libavformat/avlanguage.c
2902+CONFIG_WEBM_DASH_MANIFEST_MUXER libavformat/webmdashenc.c
2903+CONFIG_WEBM_CHUNK_MUXER libavformat/webm_chunk.c
2904+CONFIG_WEBP_MUXER libavformat/webpenc.c
2905+CONFIG_WEBVTT_MUXER libavformat/webvttenc.c
2906+CONFIG_WSAUD_MUXER libavformat/westwood_audenc.c
2907+CONFIG_WTV_MUXER libavformat/wtvenc.c libavformat/wtv_common.c libavformat/asf.c
2908+CONFIG_WV_MUXER libavformat/wvenc.c libavformat/wv.c libavformat/apetag.c libavformat/img2.c
2909+CONFIG_YUV4MPEGPIPE_MUXER libavformat/yuv4mpegenc.c
2910+CONFIG_CHROMAPRINT_MUXER libavformat/chromaprint.c
2911+CONFIG_ANDROID_CONTENT_PROTOCOL libavformat/file.c
2912+CONFIG_ASYNC_PROTOCOL libavformat/async.c
2913+CONFIG_BLURAY_PROTOCOL libavformat/bluray.c
2914+CONFIG_CACHE_PROTOCOL libavformat/cache.c
2915+CONFIG_CONCAT_PROTOCOL libavformat/concat.c
2916+CONFIG_CONCATF_PROTOCOL libavformat/concat.c
2917+CONFIG_CRYPTO_PROTOCOL libavformat/crypto.c
2918+CONFIG_DATA_PROTOCOL libavformat/data_uri.c
2919+CONFIG_FD_PROTOCOL libavformat/file.c
2920+CONFIG_FFRTMPCRYPT_PROTOCOL libavformat/rtmpcrypt.c libavformat/rtmpdigest.c libavformat/rtmpdh.c
2921+CONFIG_FFRTMPHTTP_PROTOCOL libavformat/rtmphttp.c
2922+CONFIG_FILE_PROTOCOL libavformat/file.c
2923+CONFIG_FTP_PROTOCOL libavformat/ftp.c libavformat/urldecode.c
2924+CONFIG_GOPHER_PROTOCOL libavformat/gopher.c
2925+CONFIG_GOPHERS_PROTOCOL libavformat/gopher.c
2926+CONFIG_HLS_PROTOCOL libavformat/hlsproto.c
2927+CONFIG_HTTP_PROTOCOL libavformat/http.c libavformat/httpauth.c libavformat/urldecode.c
2928+CONFIG_HTTPPROXY_PROTOCOL libavformat/http.c libavformat/httpauth.c libavformat/urldecode.c
2929+CONFIG_HTTPS_PROTOCOL libavformat/http.c libavformat/httpauth.c libavformat/urldecode.c
2930+CONFIG_ICECAST_PROTOCOL libavformat/icecast.c
2931+CONFIG_MMSH_PROTOCOL libavformat/mmsh.c libavformat/mms.c libavformat/asf_tags.c
2932+CONFIG_MMST_PROTOCOL libavformat/mmst.c libavformat/mms.c libavformat/asf_tags.c
2933+CONFIG_MD5_PROTOCOL libavformat/md5proto.c
2934+CONFIG_PIPE_PROTOCOL libavformat/file.c
2935+CONFIG_PROMPEG_PROTOCOL libavformat/prompeg.c
2936+CONFIG_RTMP_PROTOCOL libavformat/rtmpproto.c libavformat/rtmpdigest.c libavformat/rtmppkt.c
2937+CONFIG_RTMPE_PROTOCOL libavformat/rtmpproto.c libavformat/rtmpdigest.c libavformat/rtmppkt.c
2938+CONFIG_RTMPS_PROTOCOL libavformat/rtmpproto.c libavformat/rtmpdigest.c libavformat/rtmppkt.c
2939+CONFIG_RTMPT_PROTOCOL libavformat/rtmpproto.c libavformat/rtmpdigest.c libavformat/rtmppkt.c
2940+CONFIG_RTMPTE_PROTOCOL libavformat/rtmpproto.c libavformat/rtmpdigest.c libavformat/rtmppkt.c
2941+CONFIG_RTMPTS_PROTOCOL libavformat/rtmpproto.c libavformat/rtmpdigest.c libavformat/rtmppkt.c
2942+CONFIG_RTP_PROTOCOL libavformat/rtpproto.c libavformat/ip.c
2943+CONFIG_SCTP_PROTOCOL libavformat/sctp.c
2944+CONFIG_SRTP_PROTOCOL libavformat/srtpproto.c libavformat/srtp.c
2945+CONFIG_SUBFILE_PROTOCOL libavformat/subfile.c
2946+CONFIG_TEE_PROTOCOL libavformat/teeproto.c libavformat/tee_common.c
2947+CONFIG_TCP_PROTOCOL libavformat/tcp.c
2948+CONFIG_TLS_PROTOCOL libavformat/tls.c
2949+CONFIG_UDP_PROTOCOL libavformat/udp.c libavformat/ip.c
2950+CONFIG_UDPLITE_PROTOCOL libavformat/udp.c libavformat/ip.c
2951+CONFIG_UNIX_PROTOCOL libavformat/unix.c
2952+CONFIG_LIBAMQP_PROTOCOL libavformat/libamqp.c libavformat/urldecode.c
2953+CONFIG_LIBRIST_PROTOCOL libavformat/librist.c
2954+CONFIG_LIBRTMP_PROTOCOL libavformat/librtmp.c
2955+CONFIG_LIBRTMPE_PROTOCOL libavformat/librtmp.c
2956+CONFIG_LIBRTMPS_PROTOCOL libavformat/librtmp.c
2957+CONFIG_LIBRTMPT_PROTOCOL libavformat/librtmp.c
2958+CONFIG_LIBRTMPTE_PROTOCOL libavformat/librtmp.c
2959+CONFIG_LIBSRT_PROTOCOL libavformat/libsrt.c libavformat/urldecode.c
2960+CONFIG_LIBSSH_PROTOCOL libavformat/libssh.c
2961+CONFIG_LIBSMBCLIENT_PROTOCOL libavformat/libsmbclient.c
2962+CONFIG_LIBZMQ_PROTOCOL libavformat/libzmq.c
2963+CONFIG_IPFS_GATEWAY_PROTOCOL libavformat/ipfsgateway.c
2964+CONFIG_IPNS_GATEWAY_PROTOCOL libavformat/ipfsgateway.c
+1, -0
1@@ -0,0 +1 @@
2+Subproject commit e3a61e91030696348b56361bdf80ea358aef4a19
+1, -0
1@@ -0,0 +1 @@
2+7.0.2 r0
+1, -0
1@@ -0,0 +1 @@
2+/tools.ninja
+6, -0
1@@ -0,0 +1,6 @@
2+# fribidi
3+
4+## config.h
5+Generated with
6+
7+	meson --buildtype release -Ddeprecated=false -Ddocs=false ..
+11, -0
 1@@ -0,0 +1,11 @@
 2+#define FRIBIDI_NO_DEPRECATED
 3+#define HAVE_MEMMOVE 1
 4+#define HAVE_MEMORY_H 1
 5+#define HAVE_MEMSET 1
 6+#define HAVE_STDLIB_H 1
 7+#define HAVE_STRDUP 1
 8+#define HAVE_STRINGIZE 1
 9+#define HAVE_STRINGS_H 1
10+#define HAVE_STRING_H 1
11+#define HAVE_SYS_TIMES_H 1
12+#define STDC_HEADERS 1
+14, -0
 1@@ -0,0 +1,14 @@
 2+#ifndef FRIBIDI_CONFIG_H
 3+#define FRIBIDI_CONFIG_H
 4+#define FRIBIDI "fribidi"
 5+#define FRIBIDI_NAME "GNU FriBidi"
 6+#define FRIBIDI_BUGREPORT "https://github.com/fribidi/fribidi/issues/new"
 7+#define FRIBIDI_VERSION "1.0.11"
 8+#define FRIBIDI_MAJOR_VERSION 1
 9+#define FRIBIDI_MINOR_VERSION 0
10+#define FRIBIDI_MICRO_VERSION 11
11+#define FRIBIDI_INTERFACE_VERSION 4
12+#define FRIBIDI_INTERFACE_VERSION_STRING "4"
13+#define FRIBIDI_SIZEOF_INT 4
14+#undef FRIBIDI_BUILT_WITH_MSVC
15+#endif /* FRIBIDI_CONFIG_H */
+109, -0
  1@@ -0,0 +1,109 @@
  2+cflags{
  3+	'-D HAVE_CONFIG_H',
  4+	'-D FRIBIDI_LIB_STATIC',
  5+	'-I $dir',
  6+	'-I $outdir',
  7+	'-I $outdir/include',
  8+	'-I $srcdir/lib',
  9+}
 10+
 11+sub('tools.ninja', function()
 12+	toolchain(config.host)
 13+	cflags{
 14+		'-D HAVE_STRINGIZE',
 15+		'-D DONT_HAVE_FRIBIDI_CONFIG_H',
 16+		'-D HAVE_STDLIB_H',
 17+		'-D HAVE_STRING_H',
 18+		'-D HAVE_STRINGS_H',
 19+		'-D STDC_HEADERS',
 20+		'-I $outdir/include',
 21+		'-I $srcdir/lib',
 22+	}
 23+	cc('gen.tab/packtab.c')
 24+	exe('gen-unicode-version', {'gen.tab/gen-unicode-version.c'})
 25+	for _, t in ipairs{'arabic-shaping', 'bidi-type', 'joining-type', 'mirroring', 'brackets', 'brackets-type'} do
 26+		exe('gen-'..t..'-tab', expand{'gen.tab/', {
 27+			'gen-'..t..'-tab.c',
 28+			'packtab.c.o',
 29+		}}, {'$gendir/headers'})
 30+	end
 31+end)
 32+
 33+set('compression', '2')
 34+
 35+rule('gentool', '$outdir/$tool $args $in >$out')
 36+local function gentool(tool, out, srcs, args)
 37+	build('gentool', '$outdir/'..out, {expand{'$srcdir/gen.tab/unidata/', srcs}, '|', '$outdir/gen-'..tool}, {
 38+		tool='gen-'..tool,
 39+		args=args,
 40+	})
 41+end
 42+
 43+gentool('unicode-version', 'include/fribidi-unicode-version.h', {'BidiMirroring.txt'})
 44+gentool('arabic-shaping-tab', 'arabic-shaping.tab.i', {'UnicodeData.txt'}, '$compression')
 45+gentool('bidi-type-tab', 'bidi-type.tab.i', {'UnicodeData.txt'}, '$compression')
 46+gentool('joining-type-tab', 'joining-type.tab.i', {'UnicodeData.txt', 'ArabicShaping.txt'}, '$compression')
 47+gentool('mirroring-tab', 'mirroring.tab.i', {'BidiMirroring.txt'}, '$compression')
 48+gentool('brackets-tab', 'brackets.tab.i', {'BidiBrackets.txt', 'UnicodeData.txt'}, '$compression')
 49+gentool('brackets-type-tab', 'brackets-type.tab.i', {'BidiBrackets.txt'}, '$compression')
 50+
 51+pkg.hdrs = {
 52+	copy('$outdir/include', '$srcdir/lib', {
 53+		'fribidi-arabic.h',
 54+		'fribidi-begindecls.h',
 55+		'fribidi-bidi.h',
 56+		'fribidi-bidi-types.h',
 57+		'fribidi-bidi-types-list.h',
 58+		'fribidi-common.h',
 59+		'fribidi-char-sets.h',
 60+		'fribidi-char-sets-list.h',
 61+		'fribidi-deprecated.h',
 62+		'fribidi-enddecls.h',
 63+		'fribidi-flags.h',
 64+		'fribidi-joining.h',
 65+		'fribidi-joining-types.h',
 66+		'fribidi-joining-types-list.h',
 67+		'fribidi-mirroring.h',
 68+		'fribidi-brackets.h',
 69+		'fribidi-shape.h',
 70+		'fribidi-types.h',
 71+		'fribidi-unicode.h',
 72+		'fribidi.h',
 73+	}),
 74+	copy('$outdir/include', '$dir', {'fribidi-config.h'}),
 75+	'$outdir/include/fribidi-unicode-version.h',
 76+}
 77+pkg.deps = {
 78+	'$outdir/bidi-type.tab.i',
 79+	'$outdir/joining-type.tab.i',
 80+	'$outdir/arabic-shaping.tab.i',
 81+	'$outdir/mirroring.tab.i',
 82+	'$outdir/brackets.tab.i',
 83+	'$outdir/brackets-type.tab.i',
 84+	'$gendir/headers',
 85+}
 86+
 87+lib('libfribidi.a', [[
 88+	lib/(
 89+		fribidi.c
 90+		fribidi-arabic.c
 91+		fribidi-bidi.c
 92+		fribidi-bidi-types.c
 93+		fribidi-deprecated.c
 94+		fribidi-char-sets.c
 95+		fribidi-char-sets-cap-rtl.c
 96+		fribidi-char-sets-cp1255.c
 97+		fribidi-char-sets-cp1256.c
 98+		fribidi-char-sets-iso8859-6.c
 99+		fribidi-char-sets-iso8859-8.c
100+		fribidi-char-sets-utf8.c
101+		fribidi-joining.c
102+		fribidi-joining-types.c
103+		fribidi-mirroring.c
104+		fribidi-brackets.c
105+		fribidi-run.c
106+		fribidi-shape.c
107+	)
108+]])
109+
110+fetch 'git'
+1, -0
1@@ -0,0 +1 @@
2+Subproject commit 247fddc3599e3fe7b1b5cc21020c9eb51e662637
+1, -0
1@@ -0,0 +1 @@
2+1.0.11 r0
+9, -0
 1@@ -1,5 +1,6 @@
 2 subgen 'awk'
 3 subgen 'adobe-source-fonts'
 4+subgen 'alsa-lib'
 5 subgen 'b3sum'
 6 subgen 'bc'
 7 subgen 'bearssl'
 8@@ -10,15 +11,18 @@ subgen 'cacert'
 9 subgen 'catgirl'
10 subgen 'cproc'
11 subgen 'curl'
12+subgen 'dav1d'
13 subgen 'dmenu'
14 subgen 'dosfstools'
15 subgen 'e2fsprogs'
16 subgen 'elftoolchain'
17 subgen 'expat'
18+subgen 'ffmpeg'
19 subgen 'file'
20 subgen 'flex'
21 subgen 'fontconfig'
22 subgen 'freetype'
23+subgen 'fribidi'
24 subgen 'fspec-sync'
25 subgen 'git'
26 subgen 'hotplugd'
27@@ -26,6 +30,7 @@ subgen 'iproute2'
28 subgen 'jbig2dec'
29 subgen 'kiss'
30 subgen 'less'
31+subgen 'libass'
32 subgen 'libcbor'
33 subgen 'libdrm'
34 subgen 'liberation-fonts'
35@@ -36,6 +41,7 @@ subgen 'libfido2'
36 subgen 'libinput'
37 subgen 'libjpeg-turbo'
38 subgen 'libnl'
39+subgen 'libplacebo'
40 subgen 'libpng'
41 subgen 'libtermkey'
42 subgen 'libtls-bearssl'
43@@ -47,6 +53,7 @@ subgen 'lua'
44 subgen 'make'
45 subgen 'man-pages-posix'
46 subgen 'mandoc'
47+subgen 'mpv'
48 subgen 'mtdev'
49 subgen 'mupdf'
50 subgen 'musl'
51@@ -57,6 +64,7 @@ subgen 'oksh'
52 subgen 'openbsd'
53 subgen 'openntpd'
54 subgen 'openssh'
55+subgen 'opus'
56 subgen 'pcre'
57 subgen 'pigz'
58 subgen 'pixman'
59@@ -74,6 +82,7 @@ subgen 'st'
60 subgen 'strace'
61 subgen 'swc'
62 subgen 'tamzen-font'
63+subgen 'texi2mdoc'
64 subgen 'the_silver_searcher'
65 subgen 'tinyalsa'
66 subgen 'transmission'
+11, -0
 1@@ -0,0 +1,11 @@
 2+# libass
 3+
 4+## config.h
 5+Generated with
 6+
 7+	./configure \
 8+		--disable-require-system-font-provider \
 9+		FREETYPE_CFLAGS=-I/src/oasis/pkg/freetype/src/include \
10+		FREETYPE_LIBS=/src/oasis/out/pkg/freetype/libfreetype.a \
11+		FRIBIDI_CFLAGS=-I/src/oasis/out/pkg/fribidi/include \
12+		FRIBIDI_LIBS=/home/michael/src/oasis/out/pkg/fribidi/libfribidi.a
+36, -0
 1@@ -0,0 +1,36 @@
 2+#define CONFIG_ASM 1
 3+/* #undef CONFIG_CORETEXT */
 4+/* #undef CONFIG_DIRECTWRITE */
 5+/* #undef CONFIG_FONTCONFIG */
 6+#define CONFIG_FREETYPE 1
 7+#define CONFIG_FRIBIDI 1
 8+/* #undef CONFIG_HARFBUZZ */
 9+#define CONFIG_ICONV 1
10+/* #undef CONFIG_LARGE_TILES */
11+/* #undef CONFIG_LIBPNG */
12+#define HAVE_DLFCN_H 1
13+#define HAVE_ICONV_H 1
14+#define HAVE_INTTYPES_H 1
15+#define HAVE_LIBM 1
16+#define HAVE_MEMORY_H 1
17+#define HAVE_STDBOOL_H 1
18+#define HAVE_STDINT_H 1
19+#define HAVE_STDLIB_H 1
20+#define HAVE_STRDUP 1
21+#define HAVE_STRINGS_H 1
22+#define HAVE_STRING_H 1
23+#define HAVE_STRNDUP 1
24+#define HAVE_SYS_STAT_H 1
25+#define HAVE_SYS_TYPES_H 1
26+#define HAVE_UNISTD_H 1
27+#define HAVE__BOOL 1
28+#define LT_OBJDIR ".libs/"
29+#define PACKAGE "libass"
30+#define PACKAGE_BUGREPORT ""
31+#define PACKAGE_NAME "libass"
32+#define PACKAGE_STRING "libass 0.14.0"
33+#define PACKAGE_TARNAME "libass"
34+#define PACKAGE_URL ""
35+#define PACKAGE_VERSION "0.14.0"
36+#define STDC_HEADERS 1
37+#define VERSION "0.14.0"
+45, -0
 1@@ -0,0 +1,45 @@
 2+cflags{
 3+	'-I $dir',
 4+	'-isystem $builddir/pkg/freetype/include',
 5+	'-isystem $builddir/pkg/fribidi/include',
 6+}
 7+nasmflags{
 8+	'-D ARCH_X86_64=1',
 9+	'-D HAVE_ALIGNED_STACK=1',
10+	'-D HAVE_CPUNOP=0',
11+	'-D private_prefix=ass',
12+	'-i $srcdir/libass/',
13+	'-f elf64',
14+	'-P $outdir/PIC.asm',
15+}
16+
17+pkg.hdrs = copy('$outdir/include/ass', '$srcdir/libass', {'ass.h', 'ass_types.h'})
18+pkg.deps = {
19+	'pkg/freetype/headers',
20+	'pkg/fribidi/headers',
21+	'$outdir/PIC.asm',
22+}
23+
24+build('sed', '$outdir/PIC.asm', '$builddir/probe/PIC', {expr='s,#define,%define,'})
25+
26+lib('libass.a', [[
27+	libass/(
28+		ass.c ass_utils.c
29+		ass_string.c ass_strtod.c
30+		ass_library.c ass_cache.c
31+		ass_font.c ass_fontselect.c
32+		ass_render.c ass_render_api.c
33+		ass_parse.c ass_shaper.c
34+		ass_outline.c ass_drawing.c
35+		ass_rasterizer.c ass_rasterizer_c.c
36+		ass_bitmap.c ass_blur.c
37+		x86/(
38+			rasterizer.asm blend_bitmaps.asm blur.asm cpuid.asm
39+			be_blur.asm
40+		)
41+	)
42+	$builddir/pkg/freetype/libfreetype.a.d
43+	$builddir/pkg/fribidi/libfribidi.a
44+]])
45+
46+fetch 'git'
+49, -0
 1@@ -0,0 +1,49 @@
 2+From 4988f2d5bf0ecb941320cfe2cde517c860b792a0 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Sun, 16 Jun 2019 22:59:39 -0700
 5+Subject: [PATCH] Avoid unnecessary VLAs
 6+Upstream: Equivalent patches applied upstream (891ada89c9 and c80f332798)
 7+
 8+---
 9+ libass/ass_outline.c | 4 ++--
10+ libass/ass_render.c  | 2 +-
11+ 2 files changed, 3 insertions(+), 3 deletions(-)
12+
13+diff --git a/libass/ass_outline.c b/libass/ass_outline.c
14+index 74b791c..d06654a 100644
15+--- a/libass/ass_outline.c
16++++ b/libass/ass_outline.c
17+@@ -517,7 +517,7 @@ static bool process_arc(StrokerState *str, ASS_Vector pt,
18+ static bool draw_arc(StrokerState *str, ASS_Vector pt,
19+                      ASS_DVector normal0, ASS_DVector normal1, double c, int dir)
20+ {
21+-    const int max_subdiv = 15;
22++    enum { max_subdiv = 15 };
23+     double mul[max_subdiv + 1];
24+ 
25+     ASS_DVector center;
26+@@ -553,7 +553,7 @@ static bool draw_arc(StrokerState *str, ASS_Vector pt,
27+  */
28+ static bool draw_circle(StrokerState *str, ASS_Vector pt, int dir)
29+ {
30+-    const int max_subdiv = 15;
31++    enum { max_subdiv = 15 };
32+     double mul[max_subdiv + 1], c = 0;
33+ 
34+     int pos = max_subdiv;
35+diff --git a/libass/ass_render.c b/libass/ass_render.c
36+index be76f76..5eb38fd 100644
37+--- a/libass/ass_render.c
38++++ b/libass/ass_render.c
39+@@ -1234,7 +1234,7 @@ get_bitmap_glyph(ASS_Renderer *render_priv, GlyphInfo *info)
40+         return;
41+     }
42+ 
43+-    const int n_outlines = 3;
44++    enum { n_outlines = 3 };
45+     ASS_Outline outline[n_outlines];
46+     outline_copy(&outline[0], info->outline);
47+     outline_copy(&outline[1], info->border[0]);
48+-- 
49+2.20.1
50+
+1, -0
1@@ -0,0 +1 @@
2+Subproject commit 73284b676b12b47e17af2ef1b430527299e10c17
+1, -0
1@@ -0,0 +1 @@
2+0.14.0 r1
+9, -0
 1@@ -0,0 +1,9 @@
 2+#define BUILD_API_VER 349
 3+#define BUILD_FIX_VER 0
 4+#undef PL_DEBUG_ABORT
 5+#undef PL_HAVE_DBGHELP
 6+#undef PL_HAVE_EXECINFO
 7+#undef PL_HAVE_UNWIND
 8+
 9+#define PL_HAVE_PTHREAD 1
10+#define PTHREAD_HAS_SETCLOCK 1
+73, -0
 1@@ -0,0 +1,73 @@
 2+cflags{
 3+	'-std=c11', '-Wall',
 4+	'-D _XOPEN_SOURCE=700',
 5+	'-I $srcdir/src',
 6+	'-I $srcdir/src/include',
 7+	'-I $outdir/include',
 8+	'-I $outdir',
 9+	'-I $dir',
10+}
11+
12+pkg.hdrs = copy('$outdir/include/libplacebo', '$srcdir/src/include/libplacebo', {
13+	-- src/src/meson.build:/^headers =/
14+	'cache.h',
15+	'colorspace.h',
16+	'common.h',
17+	'd3d11.h',
18+	'dispatch.h',
19+	'dither.h',
20+	'dummy.h',
21+	'filters.h',
22+	'gamut_mapping.h',
23+	'gpu.h',
24+	'log.h',
25+	'opengl.h',
26+	'options.h',
27+	'renderer.h',
28+	'shaders/colorspace.h',
29+	'shaders/custom.h',
30+	'shaders/deinterlacing.h',
31+	'shaders/dithering.h',
32+	'shaders/film_grain.h',
33+	'shaders/icc.h',
34+	'shaders/lut.h',
35+	'shaders/sampling.h',
36+	'shaders.h',
37+	'swapchain.h',
38+	'tone_mapping.h',
39+	'utils/dav1d.h',
40+	'utils/dav1d_internal.h',
41+	'utils/dolbyvision.h',
42+	'utils/frame_queue.h',
43+	'utils/libav.h',
44+	'utils/libav_internal.h',
45+	'utils/upload.h',
46+	'vulkan.h',
47+})
48+pkg.deps = {
49+	'$gendir/headers',
50+	'$outdir/version.h',
51+	'$outdir/include/libplacebo/config.h',
52+}
53+
54+build('awk', '$outdir/version.h', '$dir/ver', {
55+	expr=[['{printf "#define BUILD_VERSION \"%s\"\n", $$1}']],
56+})
57+build('sed', '$outdir/include/libplacebo/config.h', '$srcdir/src/include/libplacebo/config.h.in', {
58+	expr={
59+		'-e s,@majorver@,7,',
60+		'-e s,@apiver@,349,',
61+		'-e /@extra_defs@/d',
62+	}
63+})
64+
65+-- just enough to build mpv
66+lib('libplacebo.a', [[
67+	src/(
68+		colorspace.c
69+		common.c
70+	)
71+
72+]])
73+
74+fetch 'git'
+1, -0
1@@ -0,0 +1 @@
2+Subproject commit 1fd3c7bde7b943fe8985c893310b5269a09b46c5
+1, -0
1@@ -0,0 +1 @@
2+7.349.0 r0
+2, -0
1@@ -0,0 +1,2 @@
2+/tools.ninja
3+/mpv.1.gz
+133, -0
  1@@ -0,0 +1,133 @@
  2+#define CONFIGURATION ""
  3+#define DEFAULT_CDROM_DEVICE "/dev/sr0"
  4+#define DEFAULT_DVD_DEVICE "/dev/sr0"
  5+#define FULLCONFIG ""
  6+#define HAVE_ALSA 1
  7+#define HAVE_ANDROID 0
  8+#define HAVE_ANDROID_MEDIA_NDK 0
  9+#define HAVE_ASM 1
 10+#define HAVE_AUDIOUNIT 0
 11+#define HAVE_AVFOUNDATION 0
 12+#define HAVE_AVIF_MUXER 1
 13+#define HAVE_AV_CHANNEL_LAYOUT 1
 14+#define HAVE_BSD_FSTATFS 0
 15+#define HAVE_BSD_THREAD_NAME 0
 16+#define HAVE_BUILD_DATE 0
 17+#define HAVE_CACA 0
 18+#define HAVE_CDDA 0
 19+#define HAVE_COCOA 0
 20+#define HAVE_CONSIO_H 0
 21+#define HAVE_COREAUDIO 0
 22+#define HAVE_CPLUGINS 0
 23+#define HAVE_CUDA_HWACCEL 0
 24+#define HAVE_CUDA_INTEROP 0
 25+#define HAVE_D3D11 0
 26+#define HAVE_D3D9_HWACCEL 0
 27+#define HAVE_D3D_HWACCEL 0
 28+#define HAVE_DARWIN 0
 29+#define HAVE_DEBUG 0
 30+#define HAVE_DIRECT3D 0
 31+#define HAVE_DMABUF_INTEROP_GL 0
 32+#define HAVE_DMABUF_WAYLAND 0
 33+#define HAVE_DOS_PATHS 0
 34+#define HAVE_DRM 1
 35+#define HAVE_DVBIN 0
 36+#define HAVE_DVDNAV 0
 37+#define HAVE_EGL 0
 38+#define HAVE_EGL_ANDROID 0
 39+#define HAVE_EGL_ANGLE 0
 40+#define HAVE_EGL_ANGLE_LIB 0
 41+#define HAVE_EGL_ANGLE_WIN32 0
 42+#define HAVE_EGL_DRM 0
 43+#define HAVE_EGL_WAYLAND 0
 44+#define HAVE_EGL_X11 0
 45+#define HAVE_FFMPEG 1
 46+#define HAVE_FFNVCODEC 0
 47+#define HAVE_GBM 0
 48+#define HAVE_GL 0
 49+#define HAVE_GLIBC_THREAD_NAME 1
 50+#define HAVE_GLOB 1
 51+#define HAVE_GLOB_POSIX 1
 52+#define HAVE_GLOB_WIN32 0
 53+#define HAVE_GL_COCOA 0
 54+#define HAVE_GL_DXINTEROP 0
 55+#define HAVE_GL_DXINTEROP_D3D9 0
 56+#define HAVE_GL_WIN32 0
 57+#define HAVE_GL_X11 0
 58+#define HAVE_GPL 1
 59+#define HAVE_ICONV 1
 60+#define HAVE_IOS_GL 0
 61+#define HAVE_JACK 0
 62+#define HAVE_JAVASCRIPT 0
 63+#define HAVE_JPEG 0
 64+#define HAVE_JPEGXL 0
 65+#define HAVE_LAVU_UUID 1
 66+#define HAVE_LCMS2 0
 67+#define HAVE_LIBARCHIVE 0
 68+#define HAVE_LIBASS 1
 69+#define HAVE_LIBAVDEVICE 1
 70+#define HAVE_LIBBLURAY 0
 71+#define HAVE_LIBDL 0
 72+#define HAVE_LIBPLACEBO 0
 73+#define HAVE_LINUX_FSTATFS 1
 74+#define HAVE_LUA 1
 75+#define HAVE_MACOS_COCOA_CB 0
 76+#define HAVE_MACOS_MEDIA_PLAYER 0
 77+#define HAVE_MACOS_TOUCHBAR 0
 78+#define HAVE_MAC_THREAD_NAME 0
 79+#define HAVE_MEMFD_CREATE 1
 80+#define HAVE_OPENAL 0
 81+#define HAVE_OPENSLES 0
 82+#define HAVE_OSS_AUDIO 0
 83+#define HAVE_PIPEWIRE 0
 84+#define HAVE_POSIX 1
 85+#define HAVE_POSIX_SHM 1
 86+#define HAVE_PPOLL 1
 87+#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1
 88+#define HAVE_PTHREAD_DEBUG 0
 89+#define HAVE_PULSE 0
 90+#define HAVE_RUBBERBAND 0
 91+#define HAVE_RUBBERBAND_3 0
 92+#define HAVE_SDL2 0
 93+#define HAVE_SDL2_AUDIO 0
 94+#define HAVE_SDL2_GAMEPAD 0
 95+#define HAVE_SDL2_VIDEO 0
 96+#define HAVE_SHADERC 0
 97+#define HAVE_SIXEL 0
 98+#define HAVE_SNDIO 0
 99+#define HAVE_SNDIO_1_9 0
100+#define HAVE_SPIRV_CROSS 0
101+#define HAVE_SWIFT 0
102+#define HAVE_TA_LEAK_REPORT 0
103+#define HAVE_UCHARDET 0
104+#define HAVE_UWP 0
105+#define HAVE_VAAPI 0
106+#define HAVE_VAAPI_DRM 0
107+#define HAVE_VAAPI_WAYLAND 0
108+#define HAVE_VAAPI_WIN32 0
109+#define HAVE_VAAPI_X11 0
110+#define HAVE_VAPOURSYNTH 0
111+#define HAVE_VDPAU 0
112+#define HAVE_VDPAU_GL_X11 0
113+#define HAVE_VECTOR 1
114+#define HAVE_VIDEOTOOLBOX_GL 0
115+#define HAVE_VIDEOTOOLBOX_PL 0
116+#define HAVE_VK_KHR_DISPLAY 0
117+#define HAVE_VT_H 1
118+#define HAVE_VULKAN 0
119+#define HAVE_VULKAN_INTEROP 0
120+#define HAVE_WASAPI 0
121+#define HAVE_WAYLAND 1
122+#define HAVE_WAYLAND_PROTOCOLS_1_27 1
123+#define HAVE_WAYLAND_PROTOCOLS_1_31 1
124+#define HAVE_WAYLAND_PROTOCOLS_1_32 0
125+#define HAVE_WIN32 0
126+#define HAVE_WIN32_DESKTOP 0
127+#define HAVE_WIN32_EXECUTABLE 0
128+#define HAVE_WIN32_THREADS 0
129+#define HAVE_X11 0
130+#define HAVE_XV 0
131+#define HAVE_ZIMG 0
132+#define HAVE_ZLIB 1
133+#define MPV_CONFDIR "/etc/mpv"
134+#define PLATFORM "linux"
+38, -0
 1@@ -0,0 +1,38 @@
 2+#include <errno.h>
 3+#include <stdint.h>
 4+#include <stdio.h>
 5+#include <string.h>
 6+
 7+static const char safe[] =
 8+	"][ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#%&'()*+,./:;<=>^_{|}~ -";
 9+
10+int main(int argc, char *argv[]) {
11+	FILE *f;
12+	char *line = NULL, *s;
13+	size_t size = 0;
14+	ssize_t n;
15+
16+	f = fopen(argv[1], "r");
17+	if (!f) {
18+		fprintf(stderr, "fopen %s: %s\n", argv[1], strerror(errno));
19+		return 1;
20+	}
21+
22+	printf("/* Generated from %s */\n", argv[1]);
23+	while ((n = getline(&line, &size, f)) >= 0) {
24+		printf("\"");
25+		for (s = line; s < line + n; ++s) {
26+			if (memchr(safe, *s, sizeof(safe) - 1))
27+				fputc(*s, stdout);
28+			else
29+				printf("\\%03hho", *s);
30+		}
31+		printf("\"\n");
32+	}
33+	if (ferror(f)) {
34+		fprintf(stderr, "ferror: %s\n", strerror(errno));
35+		return 1;
36+	}
37+
38+	return 0;
39+}
+368, -0
  1@@ -0,0 +1,368 @@
  2+build('awk', '$outdir/version.h', {'$srcdir/VERSION', '|', '$dir/version.awk'}, {
  3+	expr='-f $dir/version.awk',
  4+})
  5+
  6+sub('tools.ninja', function()
  7+	toolchain(config.host)
  8+	set('srcdir', '$dir')
  9+	exe('file2string', {'file2string.c'})
 10+end)
 11+
 12+cflags{
 13+	'-D _GNU_SOURCE',
 14+	'-I $dir',
 15+	'-I $outdir',
 16+	'-I $srcdir',
 17+	'-isystem $basedir/pkg/ffmpeg/src',
 18+	'-isystem $builddir/pkg/ffmpeg/include',
 19+	'-isystem $builddir/pkg/libplacebo/include',
 20+	'-isystem $builddir/pkg/linux-headers/include',
 21+	'-isystem $builddir/pkg/zlib/include',
 22+}
 23+local libs = {
 24+	'ffmpeg/libavcodec.a.d',
 25+	'ffmpeg/libavdevice.a.d',
 26+	'ffmpeg/libavfilter.a.d',
 27+	'ffmpeg/libavformat.a.d',
 28+	'ffmpeg/libavutil.a',
 29+	'ffmpeg/libswresample.a.d',
 30+	'ffmpeg/libswscale.a.d',
 31+	'libplacebo/libplacebo.a',
 32+	'zlib/libz.a',
 33+}
 34+pkg.deps = {
 35+	'$outdir/version.h',
 36+	'pkg/ffmpeg/headers',
 37+	'pkg/ffmpeg/fetch',
 38+	'pkg/libplacebo/headers',
 39+	'pkg/linux-headers/headers',
 40+	'pkg/zlib/headers',
 41+}
 42+
 43+build('copy', '$outdir/content-type-v1.h', '$builddir/pkg/wayland-protocols/include/content-type-v1-client-protocol.h')
 44+build('copy', '$outdir/fractional-scale-v1.h', '$builddir/pkg/wayland-protocols/include/fractional-scale-v1-client-protocol.h')
 45+build('copy', '$outdir/idle-inhibit-unstable-v1.h', '$builddir/pkg/wayland-protocols/include/idle-inhibit-unstable-v1-client-protocol.h')
 46+build('copy', '$outdir/linux-dmabuf-unstable-v1.h', '$builddir/pkg/wayland-protocols/include/linux-dmabuf-unstable-v1-client-protocol.h')
 47+build('copy', '$outdir/presentation-time.h', '$builddir/pkg/wayland-protocols/include/presentation-time-client-protocol.h')
 48+build('copy', '$outdir/single-pixel-buffer-v1.h', '$builddir/pkg/wayland-protocols/include/single-pixel-buffer-v1-client-protocol.h')
 49+build('copy', '$outdir/viewporter.h', '$builddir/pkg/wayland-protocols/include/viewporter-client-protocol.h')
 50+build('copy', '$outdir/xdg-decoration-unstable-v1.h', '$builddir/pkg/wayland-protocols/include/xdg-decoration-unstable-v1-client-protocol.h')
 51+build('copy', '$outdir/xdg-shell.h', '$builddir/pkg/wayland-protocols/include/xdg-shell-client-protocol.h')
 52+
 53+rule('file2string', '$outdir/file2string $in >$out')
 54+local function file2string(src)
 55+	local out = '$outdir/'..src..'.inc'
 56+	build('file2string', out, {'$srcdir/'..src, '|', '$outdir/file2string'})
 57+	table.insert(pkg.deps, out)
 58+end
 59+
 60+file2string('etc/input.conf')
 61+file2string('etc/builtin.conf')
 62+file2string('sub/osd_font.otf')
 63+local lua = {
 64+	'defaults.lua', 'assdraw.lua', 'options.lua', 'osc.lua',
 65+	'ytdl_hook.lua', 'stats.lua', 'console.lua', 'auto_profiles.lua',
 66+	'input.lua',
 67+}
 68+for _, f in ipairs(lua) do
 69+	file2string('player/lua/'..f)
 70+end
 71+
 72+local options = {}
 73+for line in iterlines('config.h', 1) do
 74+	local var, val = line:match('^#define ([^ ]+) ([^ ]+)')
 75+	if var and val == '1' then
 76+		options[var] = true
 77+	end
 78+end
 79+table.insert(pkg.inputs.gen, '$dir/config.h')
 80+
 81+local srcs = {
 82+	-- src/meson.build:/^sources =/
 83+	'audio/aframe.c',
 84+	'audio/chmap.c',
 85+	'audio/chmap_sel.c',
 86+	'audio/decode/ad_lavc.c',
 87+	'audio/decode/ad_spdif.c',
 88+	'audio/filter/af_drop.c',
 89+	'audio/filter/af_format.c',
 90+	'audio/filter/af_lavcac3enc.c',
 91+	'audio/filter/af_scaletempo.c',
 92+	'audio/filter/af_scaletempo2.c',
 93+	'audio/filter/af_scaletempo2_internals.c',
 94+	'audio/fmt-conversion.c',
 95+	'audio/format.c',
 96+	'audio/out/ao.c',
 97+	'audio/out/ao_lavc.c',
 98+	'audio/out/ao_null.c',
 99+	'audio/out/ao_pcm.c',
100+	'audio/out/buffer.c',
101+
102+	'common/av_common.c',
103+	'common/av_log.c',
104+	'common/codecs.c',
105+	'common/common.c',
106+	'common/encode_lavc.c',
107+	'common/msg.c',
108+	'common/playlist.c',
109+	'common/recorder.c',
110+	'common/stats.c',
111+	'common/tags.c',
112+	'common/version.c',
113+
114+	'demux/codec_tags.c',
115+	'demux/cue.c',
116+	'demux/cache.c',
117+	'demux/demux.c',
118+	'demux/demux_cue.c',
119+	'demux/demux_disc.c',
120+	'demux/demux_edl.c',
121+	'demux/demux_lavf.c',
122+	'demux/demux_mf.c',
123+	'demux/demux_mkv.c',
124+	'demux/demux_mkv_timeline.c',
125+	'demux/demux_null.c',
126+	'demux/demux_playlist.c',
127+	'demux/demux_raw.c',
128+	'demux/demux_timeline.c',
129+	'demux/ebml.c',
130+	'demux/packet.c',
131+	'demux/timeline.c',
132+
133+	'filters/f_async_queue.c',
134+	'filters/f_autoconvert.c',
135+	'filters/f_auto_filters.c',
136+	'filters/f_decoder_wrapper.c',
137+	'filters/f_demux_in.c',
138+	'filters/f_hwtransfer.c',
139+	'filters/f_lavfi.c',
140+	'filters/f_output_chain.c',
141+	'filters/f_swresample.c',
142+	'filters/f_swscale.c',
143+	'filters/f_utils.c',
144+	'filters/filter.c',
145+	'filters/frame.c',
146+	'filters/user_filters.c',
147+
148+	'input/cmd.c',
149+	'input/event.c',
150+	'input/input.c',
151+	'input/ipc.c',
152+	'input/keycodes.c',
153+
154+	'misc/bstr.c',
155+	'misc/charset_conv.c',
156+	'misc/dispatch.c',
157+	'misc/io_utils.c',
158+	'misc/json.c',
159+	'misc/language.c',
160+	'misc/natural_sort.c',
161+	'misc/node.c',
162+	'misc/path_utils.c',
163+	'misc/random.c',
164+	'misc/rendezvous.c',
165+	'misc/thread_pool.c',
166+	'misc/thread_tools.c',
167+
168+	'options/m_config_core.c',
169+	'options/m_config_frontend.c',
170+	'options/m_option.c',
171+	'options/m_property.c',
172+	'options/options.c',
173+	'options/parse_commandline.c',
174+	'options/parse_configfile.c',
175+	'options/path.c',
176+
177+	'player/audio.c',
178+	'player/client.c',
179+	'player/command.c',
180+	'player/configfiles.c',
181+	'player/external_files.c',
182+	'player/loadfile.c',
183+	'player/main.c',
184+	'player/misc.c',
185+	'player/osd.c',
186+	'player/playloop.c',
187+	'player/screenshot.c',
188+	'player/scripting.c',
189+	'player/sub.c',
190+	'player/video.c',
191+
192+	'stream/cookies.c',
193+	'stream/stream.c',
194+	'stream/stream_avdevice.c',
195+	'stream/stream_cb.c',
196+	'stream/stream_concat.c',
197+	'stream/stream_edl.c',
198+	'stream/stream_file.c',
199+	'stream/stream_lavf.c',
200+	'stream/stream_memory.c',
201+	'stream/stream_mf.c',
202+	'stream/stream_null.c',
203+	'stream/stream_slice.c',
204+
205+	'sub/ass_mp.c',
206+	'sub/dec_sub.c',
207+	'sub/draw_bmp.c',
208+	'sub/filter_sdh.c',
209+	'sub/img_convert.c',
210+	'sub/lavc_conv.c',
211+	'sub/osd.c',
212+	'sub/osd_libass.c',
213+	'sub/sd_ass.c',
214+	'sub/sd_lavc.c',
215+
216+	'video/csputils.c',
217+	'video/decode/vd_lavc.c',
218+	'video/filter/refqueue.c',
219+	'video/filter/vf_format.c',
220+	'video/filter/vf_sub.c',
221+	'video/fmt-conversion.c',
222+	'video/hwdec.c',
223+	'video/image_loader.c',
224+	'video/image_writer.c',
225+	'video/img_format.c',
226+	'video/mp_image.c',
227+	'video/mp_image_pool.c',
228+	'video/out/aspect.c',
229+	'video/out/bitmap_packer.c',
230+	'video/out/dither.c',
231+	'video/out/dr_helper.c',
232+	'video/out/filter_kernels.c',
233+	--'video/out/gpu/context.c',
234+	--'video/out/gpu/error_diffusion.c',
235+	'video/out/gpu/hwdec.c',
236+	--'video/out/gpu/lcms.c',
237+	--'video/out/gpu/libmpv_gpu.c',
238+	--'video/out/gpu/osd.c',
239+	'video/out/gpu/ra.c',
240+	--'video/out/gpu/shader_cache.c',
241+	--'video/out/gpu/spirv.c',
242+	--'video/out/gpu/user_shaders.c',
243+	--'video/out/gpu/utils.c',
244+	--'video/out/gpu/video.c',
245+	--'video/out/gpu/video_shaders.c',
246+	'video/out/libmpv_sw.c',
247+	'video/out/vo.c',
248+	--'video/out/vo_gpu.c',
249+	'video/out/vo_image.c',
250+	'video/out/vo_lavc.c',
251+	'video/out/vo_libmpv.c',
252+	'video/out/vo_null.c',
253+	'video/out/vo_tct.c',
254+	'video/out/vo_kitty.c',
255+	'video/out/win_state.c',
256+	'video/repack.c',
257+	'video/sws_utils.c',
258+
259+	--'video/out/placebo/ra_pl.c',
260+	--'video/out/placebo/utils.c',
261+	--'video/out/vo_gpu_next.c',
262+	--'video/out/gpu_next/context.c',
263+
264+	'osdep/io.c',
265+	'osdep/semaphore-mac.c',
266+	'osdep/subprocess.c',
267+	'osdep/timer.c',
268+
269+	'ta/ta.c',
270+	'ta/ta_talloc.c',
271+	'ta/ta_utils.c',
272+
273+	'osdep/language-posix.c',
274+	'osdep/subprocess-posix.c',
275+	'osdep/threads-posix.c',
276+	'osdep/path-unix.c',
277+	'osdep/terminal-unix.c',
278+	'osdep/timer-linux.c',
279+	'input/ipc-unix.c',
280+	'osdep/poll_wrapper.c',
281+
282+	'sub/filter_regex.c',
283+}
284+if options.HAVE_AV_CHANNEL_LAYOUT then
285+	table.insert(srcs, 'audio/chmap_avchannel.c')
286+end
287+if options.HAVE_ALSA then
288+	cflags{'-isystem $builddir/pkg/alsa-lib/include'}
289+	table.insert(srcs, 'audio/out/ao_alsa.c')
290+	table.insert(libs, 'alsa-lib/libasound.a')
291+	table.insert(pkg.deps, 'pkg/alsa-lib/headers')
292+end
293+if options.HAVE_SNDIO then
294+	cflags{'-isystem $builddir/pkg/sndio/include'}
295+	table.insert(srcs, 'audio/out/ao_sndio.c')
296+	table.insert(libs, 'sndio/libsndio.a')
297+	table.insert(pkg.deps, 'pkg/sndio/headers')
298+end
299+if options.HAVE_DRM then
300+	cflags{'-isystem $builddir/pkg/libdrm/include'}
301+	table.insert(srcs, {
302+		'video/drmprime.c',
303+		'video/out/drm_atomic.c',
304+		'video/out/drm_common.c',
305+		'video/out/drm_prime.c',
306+		'video/out/hwdec/hwdec_drmprime.c',
307+		'video/out/hwdec/hwdec_drmprime_overlay.c',
308+		'video/out/vo_drm.c',
309+	})
310+	table.insert(libs, 'libdrm/libdrm.a')
311+	table.insert(pkg.deps, 'pkg/libdrm/headers')
312+end
313+if options.HAVE_LIBASS then
314+	cflags{'-isystem $builddir/pkg/libass/include'}
315+	table.insert(libs, 'libass/libass.a.d')
316+	table.insert(pkg.deps, 'pkg/libass/headers')
317+end
318+if options.HAVE_LUA then
319+	cflags{'-isystem $builddir/pkg/lua/include'}
320+	table.insert(srcs, 'player/lua.c')
321+	table.insert(libs, 'lua/liblua.a')
322+	table.insert(pkg.deps, 'pkg/lua/headers')
323+end
324+if options.HAVE_WAYLAND or options.HAVE_DRM then
325+	table.insert(srcs, 'video/out/present_sync.c')
326+end
327+if options.HAVE_WAYLAND then
328+	cflags{
329+		'-isystem $builddir/pkg/libxkbcommon/include',
330+		'-isystem $builddir/pkg/wayland/include',
331+	}
332+	table.insert(srcs, {
333+		'video/out/vo_wlshm.c',
334+		'video/out/wayland_common.c',
335+		'$builddir/pkg/wayland-protocols/content-type-v1-protocol.c.o',
336+		'$builddir/pkg/wayland-protocols/fractional-scale-v1-protocol.c.o',
337+		'$builddir/pkg/wayland-protocols/idle-inhibit-unstable-v1-protocol.c.o',
338+		'$builddir/pkg/wayland-protocols/linux-dmabuf-unstable-v1-protocol.c.o',
339+		'$builddir/pkg/wayland-protocols/single-pixel-buffer-v1-protocol.c.o',
340+		'$builddir/pkg/wayland-protocols/presentation-time-protocol.c.o',
341+		'$builddir/pkg/wayland-protocols/viewporter-protocol.c.o',
342+		'$builddir/pkg/wayland-protocols/xdg-decoration-unstable-v1-protocol.c.o',
343+		'$builddir/pkg/wayland-protocols/xdg-shell-protocol.c.o',
344+	})
345+	table.insert(libs, {
346+		'wayland/libwayland-client.a.d',
347+		'wayland/libwayland-cursor.a.d',
348+		'libxkbcommon/libxkbcommon.a',
349+	})
350+	table.insert(pkg.deps, {
351+		'$outdir/content-type-v1.h',
352+		'$outdir/fractional-scale-v1.h',
353+		'$outdir/idle-inhibit-unstable-v1.h',
354+		'$outdir/linux-dmabuf-unstable-v1.h',
355+		'$outdir/single-pixel-buffer-v1.h',
356+		'$outdir/presentation-time.h',
357+		'$outdir/viewporter.h',
358+		'$outdir/xdg-decoration-unstable-v1.h',
359+		'$outdir/xdg-shell.h',
360+		'pkg/libxkbcommon/headers',
361+		'pkg/wayland/headers',
362+	})
363+end
364+
365+exe('mpv', {'osdep/main-fn-unix.c', srcs, expand{'$builddir/pkg/', libs}})
366+file('bin/mpv', '755', '$outdir/mpv')
367+man{'$dir/mpv.1'}
368+
369+fetch 'git'
+17528, -0
    1@@ -0,0 +1,17528 @@
    2+.\" Man page generated from reStructuredText.
    3+.
    4+.TH MPV 1 "" "" "multimedia"
    5+.SH NAME
    6+mpv \- a media player
    7+.
    8+.nr rst2man-indent-level 0
    9+.
   10+.de1 rstReportMargin
   11+\\$1 \\n[an-margin]
   12+level \\n[rst2man-indent-level]
   13+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
   14+-
   15+\\n[rst2man-indent0]
   16+\\n[rst2man-indent1]
   17+\\n[rst2man-indent2]
   18+..
   19+.de1 INDENT
   20+.\" .rstReportMargin pre:
   21+. RS \\$1
   22+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
   23+. nr rst2man-indent-level +1
   24+.\" .rstReportMargin post:
   25+..
   26+.de UNINDENT
   27+. RE
   28+.\" indent \\n[an-margin]
   29+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
   30+.nr rst2man-indent-level -1
   31+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
   32+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
   33+..
   34+.SH SYNOPSIS
   35+.nf
   36+\fBmpv\fP [options] [file|URL|PLAYLIST|\-]
   37+\fBmpv\fP [options] files
   38+.fi
   39+.sp
   40+.SH DESCRIPTION
   41+.sp
   42+\fBmpv\fP is a media player based on MPlayer and mplayer2. It supports a wide variety of video
   43+file formats, audio and video codecs, and subtitle types. Special input URL
   44+types are available to read input from a variety of sources other than disk
   45+files. Depending on platform, a variety of different video and audio output
   46+methods are supported.
   47+.sp
   48+Usage examples to get you started quickly can be found at the end of this man
   49+page.
   50+.SH INTERACTIVE CONTROL
   51+.sp
   52+mpv has a fully configurable, command\-driven control layer which allows you
   53+to control mpv using keyboard, mouse, or remote control (there is no
   54+LIRC support \- configure remotes as input devices instead).
   55+.sp
   56+See the \fB\-\-input\-\fP options for ways to customize it.
   57+.sp
   58+The following listings are not necessarily complete. See \fBetc/input.conf\fP for
   59+a list of default bindings. User \fBinput.conf\fP files and Lua scripts can
   60+define additional key bindings.
   61+.SS Keyboard Control
   62+.INDENT 0.0
   63+.TP
   64+.B LEFT and RIGHT
   65+Seek backward/forward 5 seconds. Shift+arrow does a 1 second exact seek
   66+(see \fB\-\-hr\-seek\fP).
   67+.TP
   68+.B UP and DOWN
   69+Seek forward/backward 1 minute. Shift+arrow does a 5 second exact seek (see
   70+\fB\-\-hr\-seek\fP).
   71+.TP
   72+.B Ctrl+LEFT and Ctrl+RIGHT
   73+Seek to the previous/next subtitle. Subject to some restrictions and
   74+might not always work; see \fBsub\-seek\fP command.
   75+.TP
   76+.B Ctrl+Shift+Left and Ctrl+Shift+Right
   77+Adjust subtitle delay so that the next or previous subtitle is displayed
   78+now. This is especially useful to sync subtitles to audio.
   79+.TP
   80+.B [ and ]
   81+Decrease/increase current playback speed by 10%.
   82+.TP
   83+.B { and }
   84+Halve/double current playback speed.
   85+.TP
   86+.B BACKSPACE
   87+Reset playback speed to normal.
   88+.TP
   89+.B Shift+BACKSPACE
   90+Undo the last seek. This works only if the playlist entry was not changed.
   91+Hitting it a second time will go back to the original position.
   92+See \fBrevert\-seek\fP command for details.
   93+.TP
   94+.B Shift+Ctrl+BACKSPACE
   95+Mark the current position. This will then be used by \fBShift+BACKSPACE\fP
   96+as revert position (once you seek back, the marker will be reset). You can
   97+use this to seek around in the file and then return to the exact position
   98+where you left off.
   99+.TP
  100+.B < and >
  101+Go backward/forward in the playlist.
  102+.TP
  103+.B ENTER
  104+Go forward in the playlist.
  105+.TP
  106+.B p / SPACE
  107+Pause (pressing again unpauses).
  108+.TP
  109+.B \&.
  110+Step forward. Pressing once will pause, every consecutive press will
  111+play one frame and then go into pause mode again.
  112+.UNINDENT
  113+.INDENT 0.0
  114+.TP
  115+.B ,
  116+Step backward. Pressing once will pause, every consecutive press will
  117+play one frame in reverse and then go into pause mode again.
  118+.TP
  119+.B q
  120+Stop playing and quit.
  121+.TP
  122+.B Q
  123+Like \fBq\fP, but store the current playback position. Playing the same file
  124+later will resume at the old playback position if possible.
  125+.TP
  126+.B / and *
  127+Decrease/increase volume.
  128+.TP
  129+.B 9 and 0
  130+Decrease/increase volume.
  131+.TP
  132+.B m
  133+Mute sound.
  134+.TP
  135+.B _
  136+Cycle through the available video tracks.
  137+.TP
  138+.B #
  139+Cycle through the available audio tracks.
  140+.TP
  141+.B f
  142+Toggle fullscreen (see also \fB\-\-fs\fP).
  143+.TP
  144+.B ESC
  145+Exit fullscreen mode.
  146+.TP
  147+.B T
  148+Toggle stay\-on\-top (see also \fB\-\-ontop\fP).
  149+.TP
  150+.B w and W
  151+Decrease/increase pan\-and\-scan range. The \fBe\fP key does the same as
  152+\fBW\fP currently, but use is discouraged.
  153+.TP
  154+.B o (also P)
  155+Show progression bar, elapsed time and total duration on the OSD.
  156+.TP
  157+.B O
  158+Toggle OSD states between normal and playback time/duration.
  159+.TP
  160+.B v
  161+Toggle subtitle visibility.
  162+.TP
  163+.B j and J
  164+Cycle through the available subtitles.
  165+.TP
  166+.B z and Z
  167+Adjust subtitle delay by +/\- 0.1 seconds. The \fBx\fP key does the same as
  168+\fBZ\fP currently, but use is discouraged.
  169+.TP
  170+.B l
  171+Set/clear A\-B loop points. See \fBab\-loop\fP command for details.
  172+.TP
  173+.B L
  174+Toggle infinite looping.
  175+.TP
  176+.B Ctrl + and Ctrl \-
  177+Adjust audio delay (A/V sync) by +/\- 0.1 seconds.
  178+.TP
  179+.B u
  180+Switch between applying no style overrides to SSA/ASS subtitles, and
  181+overriding them almost completely with the normal subtitle style. See
  182+\fB\-\-sub\-ass\-override\fP for more info.
  183+.TP
  184+.B V
  185+Toggle subtitle VSFilter aspect compatibility mode. See
  186+\fB\-\-sub\-ass\-vsfilter\-aspect\-compat\fP for more info.
  187+.TP
  188+.B r and R
  189+Move subtitles up/down. The \fBt\fP key does the same as \fBR\fP currently, but
  190+use is discouraged.
  191+.TP
  192+.B s
  193+Take a screenshot.
  194+.TP
  195+.B S
  196+Take a screenshot, without subtitles. (Whether this works depends on VO
  197+driver support.)
  198+.TP
  199+.B Ctrl s
  200+Take a screenshot, as the window shows it (with subtitles, OSD, and scaled
  201+video).
  202+.TP
  203+.B PGUP and PGDWN
  204+Seek to the beginning of the previous/next chapter. In most cases,
  205+"previous" will actually go to the beginning of the current chapter; see
  206+\fB\-\-chapter\-seek\-threshold\fP\&.
  207+.TP
  208+.B Shift+PGUP and Shift+PGDWN
  209+Seek backward or forward by 10 minutes. (This used to be mapped to
  210+PGUP/PGDWN without Shift.)
  211+.TP
  212+.B d
  213+Activate/deactivate deinterlacer.
  214+.TP
  215+.B A
  216+Cycle aspect ratio override.
  217+.TP
  218+.B Ctrl h
  219+Toggle hardware video decoding on/off.
  220+.TP
  221+.B Alt+LEFT, Alt+RIGHT, Alt+UP, Alt+DOWN
  222+Move the video rectangle (panning).
  223+.TP
  224+.B Alt + and Alt \-
  225+Combining \fBAlt\fP with the \fB+\fP or \fB\-\fP keys changes video zoom.
  226+.TP
  227+.B Alt+BACKSPACE
  228+Reset the pan/zoom settings.
  229+.TP
  230+.B F8
  231+Show the playlist and the current position in it (useful only if a UI window
  232+is used, broken on the terminal).
  233+.TP
  234+.B F9
  235+Show the list of audio and subtitle streams (useful only if a UI window  is
  236+used, broken on the terminal).
  237+.TP
  238+.B i and I
  239+Show/toggle an overlay displaying statistics about the currently playing
  240+file such as codec, framerate, number of dropped frames and so on. See
  241+\fI\%STATS\fP for more information.
  242+.TP
  243+.B del
  244+Cycles visibility between never / auto (mouse\-move) / always
  245+.TP
  246+.B \(ga
  247+Show the console. (ESC closes it again. See \fI\%CONSOLE\fP\&.)
  248+.UNINDENT
  249+.sp
  250+(The following keys are valid only when using a video output that supports the
  251+corresponding adjustment.)
  252+.INDENT 0.0
  253+.TP
  254+.B 1 and 2
  255+Adjust contrast.
  256+.TP
  257+.B 3 and 4
  258+Adjust brightness.
  259+.TP
  260+.B 5 and 6
  261+Adjust gamma.
  262+.TP
  263+.B 7 and 8
  264+Adjust saturation.
  265+.TP
  266+.B Alt+0 (and command+0 on OSX)
  267+Resize video window to half its original size.
  268+.TP
  269+.B Alt+1 (and command+1 on OSX)
  270+Resize video window to its original size.
  271+.TP
  272+.B Alt+2 (and command+2 on OSX)
  273+Resize video window to double its original size.
  274+.TP
  275+.B command + f (OSX only)
  276+Toggle fullscreen (see also \fB\-\-fs\fP).
  277+.UNINDENT
  278+.sp
  279+(The following keys are valid if you have a keyboard with multimedia keys.)
  280+.INDENT 0.0
  281+.TP
  282+.B PAUSE
  283+Pause.
  284+.TP
  285+.B STOP
  286+Stop playing and quit.
  287+.TP
  288+.B PREVIOUS and NEXT
  289+Seek backward/forward 1 minute.
  290+.UNINDENT
  291+.sp
  292+If you miss some older key bindings, look at \fBetc/restore\-old\-bindings.conf\fP
  293+in the mpv git repository.
  294+.SS Mouse Control
  295+.INDENT 0.0
  296+.TP
  297+.B Left double click
  298+Toggle fullscreen on/off.
  299+.TP
  300+.B Right click
  301+Toggle pause on/off.
  302+.TP
  303+.B Forward/Back button
  304+Skip to next/previous entry in playlist.
  305+.TP
  306+.B Wheel up/down
  307+Seek forward/backward 10 seconds.
  308+.TP
  309+.B Wheel left/right
  310+Decrease/increase volume.
  311+.UNINDENT
  312+.SH USAGE
  313+.sp
  314+Command line arguments starting with \fB\-\fP are interpreted as options,
  315+everything else as filenames or URLs. All options except \fIflag\fP options (or
  316+choice options which include \fByes\fP) require a parameter in the form
  317+\fB\-\-option=value\fP\&.
  318+.sp
  319+One exception is the lone \fB\-\fP (without anything else), which means media data
  320+will be read from stdin. Also, \fB\-\-\fP (without anything else) will make the
  321+player interpret all following arguments as filenames, even if they start with
  322+\fB\-\fP\&. (To play a file named \fB\-\fP, you need to use \fB\&./\-\fP\&.)
  323+.sp
  324+Every \fIflag\fP option has a \fIno\-flag\fP counterpart, e.g. the opposite of the
  325+\fB\-\-fs\fP option is \fB\-\-no\-fs\fP\&. \fB\-\-fs=yes\fP is same as \fB\-\-fs\fP, \fB\-\-fs=no\fP
  326+is the same as \fB\-\-no\-fs\fP\&.
  327+.sp
  328+If an option is marked as \fI(XXX only)\fP, it will only work in combination with
  329+the \fIXXX\fP option or if \fIXXX\fP is compiled in.
  330+.SS Legacy option syntax
  331+.sp
  332+The \fB\-\-option=value\fP syntax is not strictly enforced, and the alternative
  333+legacy syntax \fB\-option value\fP and \fB\-option=value\fP will also work. This is
  334+mostly  for compatibility with MPlayer. Using these should be avoided. Their
  335+semantics can change any time in the future.
  336+.sp
  337+For example, the alternative syntax will consider an argument following the
  338+option a filename. \fBmpv \-fs no\fP will attempt to play a file named \fBno\fP,
  339+because \fB\-\-fs\fP is a flag option that requires no parameter. If an option
  340+changes and its parameter becomes optional, then a command line using the
  341+alternative syntax will break.
  342+.sp
  343+Until mpv 0.31.0, there was no difference whether an option started with \fB\-\-\fP
  344+or a single \fB\-\fP\&. Newer mpv releases strictly expect that you pass the option
  345+value after a \fB=\fP\&. For example, before \fBmpv \-\-log\-file f.txt\fP would write
  346+a log to \fBf.txt\fP, but now this command line fails, as \fB\-\-log\-file\fP expects
  347+an option value, and \fBf.txt\fP is simply considered a normal file to be played
  348+(as in \fBmpv f.txt\fP).
  349+.sp
  350+The future plan is that \fB\-option value\fP will not work anymore, and options
  351+with a single \fB\-\fP behave the same as \fB\-\-\fP options.
  352+.SS Escaping spaces and other special characters
  353+.sp
  354+Keep in mind that the shell will partially parse and mangle the arguments you
  355+pass to mpv. For example, you might need to quote or escape options and
  356+filenames:
  357+.INDENT 0.0
  358+.INDENT 3.5
  359+\fBmpv "filename with spaces.mkv" \-\-title="window title"\fP
  360+.UNINDENT
  361+.UNINDENT
  362+.sp
  363+It gets more complicated if the suboption parser is involved. The suboption
  364+parser puts several options into a single string, and passes them to a
  365+component at once, instead of using multiple options on the level of the
  366+command line.
  367+.sp
  368+The suboption parser can quote strings with \fB"\fP and \fB[...]\fP\&.
  369+Additionally, there is a special form of quoting with \fB%n%\fP described below.
  370+.sp
  371+For example, assume the hypothetical \fBfoo\fP filter can take multiple options:
  372+.INDENT 0.0
  373+.INDENT 3.5
  374+\fBmpv test.mkv \-\-vf=foo:option1=value1:option2:option3=value3,bar\fP
  375+.UNINDENT
  376+.UNINDENT
  377+.sp
  378+This passes \fBoption1\fP and \fBoption3\fP to the \fBfoo\fP filter, with \fBoption2\fP
  379+as flag (implicitly \fBoption2=yes\fP), and adds a \fBbar\fP filter after that. If
  380+an option contains spaces or characters like \fB,\fP or \fB:\fP, you need to quote
  381+them:
  382+.INDENT 0.0
  383+.INDENT 3.5
  384+\fBmpv \(aq\-\-vf=foo:option1="option value with spaces",bar\(aq\fP
  385+.UNINDENT
  386+.UNINDENT
  387+.sp
  388+Shells may actually strip some quotes from the string passed to the commandline,
  389+so the example quotes the string twice, ensuring that mpv receives the \fB"\fP
  390+quotes.
  391+.sp
  392+The \fB[...]\fP form of quotes wraps everything between \fB[\fP and \fB]\fP\&. It\(aqs
  393+useful with shells that don\(aqt interpret these characters in the middle of
  394+an argument (like bash). These quotes are balanced (since mpv 0.9.0): the \fB[\fP
  395+and \fB]\fP nest, and the quote terminates on the last \fB]\fP that has no matching
  396+\fB[\fP within the string. (For example, \fB[a[b]c]\fP results in \fBa[b]c\fP\&.)
  397+.sp
  398+The fixed\-length quoting syntax is intended for use with external
  399+scripts and programs.
  400+.sp
  401+It is started with \fB%\fP and has the following format:
  402+.INDENT 0.0
  403+.INDENT 3.5
  404+.sp
  405+.nf
  406+.ft C
  407+%n%string_of_length_n
  408+.ft P
  409+.fi
  410+.UNINDENT
  411+.UNINDENT
  412+.INDENT 0.0
  413+.INDENT 3.5
  414+.IP "Examples"
  415+.sp
  416+\fBmpv \(aq\-\-vf=foo:option1=%11%quoted text\(aq test.avi\fP
  417+.sp
  418+Or in a script:
  419+.sp
  420+\fBmpv \-\-vf=foo:option1=%\(gaexpr length "$NAME"\(ga%"$NAME" test.avi\fP
  421+.UNINDENT
  422+.UNINDENT
  423+.sp
  424+Suboptions passed to the client API are also subject to escaping. Using
  425+\fBmpv_set_option_string()\fP is exactly like passing \fB\-\-name=data\fP to the
  426+command line (but without shell processing of the string). Some options
  427+support passing values in a more structured way instead of flat strings, and
  428+can avoid the suboption parsing mess. For example, \fB\-\-vf\fP supports
  429+\fBMPV_FORMAT_NODE\fP, which lets you pass suboptions as a nested data structure
  430+of maps and arrays.
  431+.SS Paths
  432+.sp
  433+Some care must be taken when passing arbitrary paths and filenames to mpv. For
  434+example, paths starting with \fB\-\fP will be interpreted as options. Likewise,
  435+if a path contains the sequence \fB://\fP, the string before that might be
  436+interpreted as protocol prefix, even though \fB://\fP can be part of a legal
  437+UNIX path. To avoid problems with arbitrary paths, you should be sure that
  438+absolute paths passed to mpv start with \fB/\fP, and prefix relative paths with
  439+\fB\&./\fP\&.
  440+.sp
  441+Using the \fBfile://\fP pseudo\-protocol is discouraged, because it involves
  442+strange URL unescaping rules.
  443+.sp
  444+The name \fB\-\fP itself is interpreted as stdin, and will cause mpv to disable
  445+console controls. (Which makes it suitable for playing data piped to stdin.)
  446+.sp
  447+The special argument \fB\-\-\fP can be used to stop mpv from interpreting the
  448+following arguments as options.
  449+.sp
  450+When using the client API, you should strictly avoid using \fBmpv_command_string\fP
  451+for invoking the \fBloadfile\fP command, and instead prefer e.g. \fBmpv_command\fP
  452+to avoid the need for filename escaping.
  453+.sp
  454+For paths passed to suboptions, the situation is further complicated by the
  455+need to escape special characters. To work this around, the path can be
  456+additionally wrapped in the fixed\-length syntax, e.g. \fB%n%string_of_length_n\fP
  457+(see above).
  458+.sp
  459+Some mpv options interpret paths starting with \fB~\fP\&. Currently, the prefix
  460+\fB~~/\fP expands to the mpv configuration directory (usually \fB~/.config/mpv/\fP).
  461+\fB~/\fP expands to the user\(aqs home directory. (The trailing \fB/\fP is always
  462+required.) There are the following paths as well:
  463+.TS
  464+center;
  465+|l|l|.
  466+_
  467+T{
  468+Name
  469+T}	T{
  470+Meaning
  471+T}
  472+_
  473+T{
  474+\fB~~home/\fP
  475+T}	T{
  476+same as \fB~~/\fP
  477+T}
  478+_
  479+T{
  480+\fB~~global/\fP
  481+T}	T{
  482+the global config path, if available (not on win32)
  483+T}
  484+_
  485+T{
  486+\fB~~osxbundle/\fP
  487+T}	T{
  488+the OSX bundle resource path (OSX only)
  489+T}
  490+_
  491+T{
  492+\fB~~desktop/\fP
  493+T}	T{
  494+the path to the desktop (win32, OSX)
  495+T}
  496+_
  497+.TE
  498+.SS Per\-File Options
  499+.sp
  500+When playing multiple files, any option given on the command line usually
  501+affects all files. Example:
  502+.INDENT 0.0
  503+.INDENT 3.5
  504+.sp
  505+.nf
  506+.ft C
  507+mpv \-\-a file1.mkv \-\-b file2.mkv \-\-c
  508+.ft P
  509+.fi
  510+.UNINDENT
  511+.UNINDENT
  512+.TS
  513+center;
  514+|l|l|.
  515+_
  516+T{
  517+File
  518+T}	T{
  519+Active options
  520+T}
  521+_
  522+T{
  523+file1.mkv
  524+T}	T{
  525+\fB\-\-a \-\-b \-\-c\fP
  526+T}
  527+_
  528+T{
  529+file2.mkv
  530+T}	T{
  531+\fB\-\-a \-\-b \-\-c\fP
  532+T}
  533+_
  534+.TE
  535+.sp
  536+(This is different from MPlayer and mplayer2.)
  537+.sp
  538+Also, if any option is changed at runtime (via input commands), they are not
  539+reset when a new file is played.
  540+.sp
  541+Sometimes, it is useful to change options per\-file. This can be achieved by
  542+adding the special per\-file markers \fB\-\-{\fP and \fB\-\-}\fP\&. (Note that you must
  543+escape these on some shells.) Example:
  544+.INDENT 0.0
  545+.INDENT 3.5
  546+.sp
  547+.nf
  548+.ft C
  549+mpv \-\-a file1.mkv \-\-b \-\-\e{ \-\-c file2.mkv \-\-d file3.mkv \-\-e \-\-\e} file4.mkv \-\-f
  550+.ft P
  551+.fi
  552+.UNINDENT
  553+.UNINDENT
  554+.TS
  555+center;
  556+|l|l|.
  557+_
  558+T{
  559+File
  560+T}	T{
  561+Active options
  562+T}
  563+_
  564+T{
  565+file1.mkv
  566+T}	T{
  567+\fB\-\-a \-\-b \-\-f\fP
  568+T}
  569+_
  570+T{
  571+file2.mkv
  572+T}	T{
  573+\fB\-\-a \-\-b \-\-f \-\-c \-\-d \-\-e\fP
  574+T}
  575+_
  576+T{
  577+file3.mkv
  578+T}	T{
  579+\fB\-\-a \-\-b \-\-f \-\-c \-\-d \-\-e\fP
  580+T}
  581+_
  582+T{
  583+file4.mkv
  584+T}	T{
  585+\fB\-\-a \-\-b \-\-f\fP
  586+T}
  587+_
  588+.TE
  589+.sp
  590+Additionally, any file\-local option changed at runtime is reset when the current
  591+file stops playing. If option \fB\-\-c\fP is changed during playback of
  592+\fBfile2.mkv\fP, it is reset when advancing to \fBfile3.mkv\fP\&. This only affects
  593+file\-local options. The option \fB\-\-a\fP is never reset here.
  594+.SS List Options
  595+.sp
  596+Some options which store lists of option values can have action suffixes. For
  597+example, the \fB\-\-display\-tags\fP option takes a \fB,\fP\-separated list of tags, but
  598+the option also allows you to append a single tag with \fB\-\-display\-tags\-append\fP,
  599+and the tag name can for example contain a literal \fB,\fP without the need for
  600+escaping.
  601+.SS String list and path list options
  602+.sp
  603+String lists are separated by \fB,\fP\&. The strings are not parsed or interpreted
  604+by the option system itself. However, most
  605+.sp
  606+Path or file list options use \fB:\fP (Unix) or \fB;\fP (Windows) as separator,
  607+instead of \fB,\fP\&.
  608+.sp
  609+They support the following operations:
  610+.TS
  611+center;
  612+|l|l|.
  613+_
  614+T{
  615+Suffix
  616+T}	T{
  617+Meaning
  618+T}
  619+_
  620+T{
  621+\-set
  622+T}	T{
  623+Set a list of items (using the list separator, interprets escapes)
  624+T}
  625+_
  626+T{
  627+\-append
  628+T}	T{
  629+Append single item (does not interpret escapes)
  630+T}
  631+_
  632+T{
  633+\-add
  634+T}	T{
  635+Append 1 or more items (same syntax as \-set)
  636+T}
  637+_
  638+T{
  639+\-pre
  640+T}	T{
  641+Prepend 1 or more items (same syntax as \-set)
  642+T}
  643+_
  644+T{
  645+\-clr
  646+T}	T{
  647+Clear the option (remove all items)
  648+T}
  649+_
  650+T{
  651+\-remove
  652+T}	T{
  653+Delete item if present (does not interpret escapes)
  654+T}
  655+_
  656+T{
  657+\-del
  658+T}	T{
  659+Delete 1 or more items by integer index (deprecated)
  660+T}
  661+_
  662+T{
  663+\-toggle
  664+T}	T{
  665+Append an item, or remove if if it already exists (no escapes)
  666+T}
  667+_
  668+.TE
  669+.sp
  670+\fB\-append\fP is meant as a simple way to append a single item without having
  671+to escape the argument (you may still need to escape on the shell level).
  672+.SS Key/value list options
  673+.sp
  674+A key/value list is a list of key/value string pairs. In programming languages,
  675+this type of data structure is often called a map or a dictionary. The order
  676+normally does not matter, although in some cases the order might matter.
  677+.sp
  678+They support the following operations:
  679+.TS
  680+center;
  681+|l|l|.
  682+_
  683+T{
  684+Suffix
  685+T}	T{
  686+Meaning
  687+T}
  688+_
  689+T{
  690+\-set
  691+T}	T{
  692+Set a list of items (using \fB,\fP as separator)
  693+T}
  694+_
  695+T{
  696+\-append
  697+T}	T{
  698+Append a single item (escapes for the key, no escapes for the value)
  699+T}
  700+_
  701+T{
  702+\-add
  703+T}	T{
  704+Append 1 or more items (same syntax as \-set)
  705+T}
  706+_
  707+T{
  708+\-remove
  709+T}	T{
  710+Delete item by key if present (does not interpret escapes)
  711+T}
  712+_
  713+.TE
  714+.sp
  715+Keys are unique within the list. If an already present key is set, the existing
  716+key is removed before the new value is appended.
  717+.SS Filter options
  718+.sp
  719+This is a very complex option type for the \fB\-\-af\fP and \fB\-\-vf\fP options only.
  720+They often require complicated escaping. See \fI\%VIDEO FILTERS\fP for details. They
  721+support the following operations:
  722+.TS
  723+center;
  724+|l|l|.
  725+_
  726+T{
  727+Suffix
  728+T}	T{
  729+Meaning
  730+T}
  731+_
  732+T{
  733+\-set
  734+T}	T{
  735+Set a list of filters (using \fB,\fP as separator)
  736+T}
  737+_
  738+T{
  739+\-append
  740+T}	T{
  741+Append single filter
  742+T}
  743+_
  744+T{
  745+\-add
  746+T}	T{
  747+Append 1 or more filters (same syntax as \-set)
  748+T}
  749+_
  750+T{
  751+\-pre
  752+T}	T{
  753+Prepend 1 or more filters (same syntax as \-set)
  754+T}
  755+_
  756+T{
  757+\-clr
  758+T}	T{
  759+Clear the option (remove all filters)
  760+T}
  761+_
  762+T{
  763+\-remove
  764+T}	T{
  765+Delete filter if present
  766+T}
  767+_
  768+T{
  769+\-del
  770+T}	T{
  771+Delete 1 or more filters by integer index or filter label (deprecated)
  772+T}
  773+_
  774+T{
  775+\-toggle
  776+T}	T{
  777+Append a filter, or remove if if it already exists
  778+T}
  779+_
  780+T{
  781+\-help
  782+T}	T{
  783+Pseudo operation that prints a help text to the terminal
  784+T}
  785+_
  786+.TE
  787+.SS General
  788+.sp
  789+Without suffix, the operation used is normally \fB\-set\fP\&.
  790+.sp
  791+Although some operations allow specifying multiple items, using this is strongly
  792+discouraged and deprecated, except for \fB\-set\fP\&. There is a chance that
  793+operations like \fB\-add\fP and \fB\-pre\fP will work like \fB\-append\fP and accept a
  794+single, unescaped item only (so the \fB,\fP separator will not be interpreted and
  795+is passed on as part of the value).
  796+.sp
  797+Some options (like \fB\-\-sub\-file\fP, \fB\-\-audio\-file\fP, \fB\-\-glsl\-shader\fP) are
  798+aliases for the proper option with \fB\-append\fP action. For example,
  799+\fB\-\-sub\-file\fP is an alias for \fB\-\-sub\-files\-append\fP\&.
  800+.sp
  801+Options of this type can be changed at runtime using the \fBchange\-list\fP
  802+command, which takes the suffix (without the \fB\-\fP) as separate operation
  803+parameter.
  804+.SH CONFIGURATION FILES
  805+.SS Location and Syntax
  806+.sp
  807+You can put all of the options in configuration files which will be read every
  808+time mpv is run. The system\-wide configuration file \(aqmpv.conf\(aq is in your
  809+configuration directory (e.g. \fB/etc/mpv\fP or \fB/usr/local/etc/mpv\fP), the
  810+user\-specific one is \fB~/.config/mpv/mpv.conf\fP\&. For details and platform
  811+specifics (in particular Windows paths) see the \fI\%FILES\fP section.
  812+.sp
  813+User\-specific options override system\-wide options and options given on the
  814+command line override either. The syntax of the configuration files is
  815+\fBoption=value\fP\&. Everything after a \fI#\fP is considered a comment. Options
  816+that work without values can be enabled by setting them to \fIyes\fP and disabled by
  817+setting them to \fIno\fP\&. Even suboptions can be specified in this way.
  818+.INDENT 0.0
  819+.INDENT 3.5
  820+.IP "Example configuration file"
  821+.INDENT 0.0
  822+.INDENT 3.5
  823+.sp
  824+.nf
  825+.ft C
  826+# Use GPU\-accelerated video output by default.
  827+vo=gpu
  828+# Use quotes for text that can contain spaces:
  829+status\-msg="Time: ${time\-pos}"
  830+.ft P
  831+.fi
  832+.UNINDENT
  833+.UNINDENT
  834+.UNINDENT
  835+.UNINDENT
  836+.SS Escaping spaces and special characters
  837+.sp
  838+This is done like with command line options. The shell is not involved here,
  839+but option values still need to be quoted as a whole if it contains certain
  840+characters like spaces. A config entry can be quoted with \fB"\fP,
  841+as well as with the fixed\-length syntax (\fB%n%\fP) mentioned before. This is like
  842+passing the exact contents of the quoted string as command line option. C\-style
  843+escapes are currently _not_ interpreted on this level, although some options do
  844+this manually. (This is a mess and should probably be changed at some point.)
  845+.SS Putting Command Line Options into the Configuration File
  846+.sp
  847+Almost all command line options can be put into the configuration file. Here
  848+is a small guide:
  849+.TS
  850+center;
  851+|l|l|.
  852+_
  853+T{
  854+Option
  855+T}	T{
  856+Configuration file entry
  857+T}
  858+_
  859+T{
  860+\fB\-\-flag\fP
  861+T}	T{
  862+\fBflag\fP
  863+T}
  864+_
  865+T{
  866+\fB\-opt val\fP
  867+T}	T{
  868+\fBopt=val\fP
  869+T}
  870+_
  871+T{
  872+\fB\-\-opt=val\fP
  873+T}	T{
  874+\fBopt=val\fP
  875+T}
  876+_
  877+T{
  878+\fB\-opt "has spaces"\fP
  879+T}	T{
  880+\fBopt="has spaces"\fP
  881+T}
  882+_
  883+.TE
  884+.SS File\-specific Configuration Files
  885+.sp
  886+You can also write file\-specific configuration files. If you wish to have a
  887+configuration file for a file called \(aqvideo.avi\(aq, create a file named
  888+\(aqvideo.avi.conf\(aq with the file\-specific options in it and put it in
  889+\fB~/.config/mpv/\fP\&. You can also put the configuration file in the same directory
  890+as the file to be played. Both require you to set the \fB\-\-use\-filedir\-conf\fP
  891+option (either on the command line or in your global config file). If a
  892+file\-specific configuration file is found in the same directory, no
  893+file\-specific configuration is loaded from \fB~/.config/mpv\fP\&. In addition, the
  894+\fB\-\-use\-filedir\-conf\fP option enables directory\-specific configuration files.
  895+For this, mpv first tries to load a mpv.conf from the same directory
  896+as the file played and then tries to load any file\-specific configuration.
  897+.SS Profiles
  898+.sp
  899+To ease working with different configurations, profiles can be defined in the
  900+configuration files. A profile starts with its name in square brackets,
  901+e.g. \fB[my\-profile]\fP\&. All following options will be part of the profile. A
  902+description (shown by \fB\-\-profile=help\fP) can be defined with the
  903+\fBprofile\-desc\fP option. To end the profile, start another one or use the
  904+profile name \fBdefault\fP to continue with normal options.
  905+.sp
  906+You can list profiles with \fB\-\-profile=help\fP, and show the contents of a
  907+profile with \fB\-\-show\-profile=<name>\fP (replace \fB<name>\fP with the profile
  908+name). You can apply profiles on start with the \fB\-\-profile=<name>\fP option,
  909+or at runtime with the \fBapply\-profile <name>\fP command.
  910+.INDENT 0.0
  911+.INDENT 3.5
  912+.IP "Example mpv config file with profiles"
  913+.INDENT 0.0
  914+.INDENT 3.5
  915+.sp
  916+.nf
  917+.ft C
  918+# normal top\-level option
  919+fullscreen=yes
  920+
  921+# a profile that can be enabled with \-\-profile=big\-cache
  922+[big\-cache]
  923+cache=yes
  924+demuxer\-max\-bytes=123400KiB
  925+demuxer\-readahead\-secs=20
  926+
  927+[slow]
  928+profile\-desc="some profile name"
  929+# reference a builtin profile
  930+profile=gpu\-hq
  931+
  932+[fast]
  933+vo=vdpau
  934+
  935+# using a profile again extends it
  936+[slow]
  937+framedrop=no
  938+# you can also include other profiles
  939+profile=big\-cache
  940+.ft P
  941+.fi
  942+.UNINDENT
  943+.UNINDENT
  944+.UNINDENT
  945+.UNINDENT
  946+.SS Auto profiles
  947+.sp
  948+Some profiles are loaded automatically. The following example demonstrates this:
  949+.INDENT 0.0
  950+.INDENT 3.5
  951+.IP "Auto profile loading"
  952+.INDENT 0.0
  953+.INDENT 3.5
  954+.sp
  955+.nf
  956+.ft C
  957+[extension.mkv]
  958+profile\-desc="profile for .mkv files"
  959+vf=flip
  960+.ft P
  961+.fi
  962+.UNINDENT
  963+.UNINDENT
  964+.UNINDENT
  965+.UNINDENT
  966+.sp
  967+The profile name follows the schema \fBtype.name\fP, where type can be
  968+\fBprotocol\fP for the input/output protocol in use (see \fB\-\-list\-protocols\fP),
  969+and \fBextension\fP for the extension of the path of the currently played file
  970+(\fInot\fP the file format).
  971+.sp
  972+This feature is very limited, and there are no other auto profiles.
  973+.SH USING MPV FROM OTHER PROGRAMS OR SCRIPTS
  974+.sp
  975+There are three choices for using mpv from other programs or scripts:
  976+.INDENT 0.0
  977+.INDENT 3.5
  978+.INDENT 0.0
  979+.IP 1. 3
  980+Calling it as UNIX process. If you do this, \fIdo not parse terminal output\fP\&.
  981+The terminal output is intended for humans, and may change any time. In
  982+addition, terminal behavior itself may change any time. Compatibility
  983+cannot be guaranteed.
  984+.sp
  985+Your code should work even if you pass \fB\-\-no\-terminal\fP\&. Do not attempt
  986+to simulate user input by sending terminal control codes to mpv\(aqs stdin.
  987+If you need interactive control, using \fB\-\-input\-ipc\-server\fP is
  988+recommended. This gives you access to the \fI\%JSON IPC\fP  over unix domain
  989+sockets (or named pipes on Windows).
  990+.sp
  991+Depending on what you do, passing \fB\-\-no\-config\fP or \fB\-\-config\-dir\fP may
  992+be a good idea to avoid conflicts with the normal mpv user configuration
  993+intended for CLI playback.
  994+.sp
  995+Using \fB\-\-input\-ipc\-server\fP is also suitable for purposes like remote
  996+control (however, the IPC protocol itself is not "secure" and not
  997+intended to be so).
  998+.IP 2. 3
  999+Using libmpv. This is generally recommended when mpv is used as playback
 1000+backend for a completely different application. The provided C API is
 1001+very close to CLI mechanisms and the scripting API.
 1002+.sp
 1003+Note that even though libmpv has different defaults, it can be configured
 1004+to work exactly like the CLI player (except command line parsing is
 1005+unavailable).
 1006+.sp
 1007+See \fI\%EMBEDDING INTO OTHER PROGRAMS (LIBMPV)\fP\&.
 1008+.IP 3. 3
 1009+As a user script (\fI\%LUA SCRIPTING\fP, \fI\%JAVASCRIPT\fP, \fI\%C PLUGINS\fP). This is
 1010+recommended when the goal is to "enhance" the CLI player. Scripts get
 1011+access to the entire client API of mpv.
 1012+.sp
 1013+This is the standard way to create third\-party extensions for the player.
 1014+.UNINDENT
 1015+.UNINDENT
 1016+.UNINDENT
 1017+.sp
 1018+All these access the client API, which is the sum of the various mechanisms
 1019+provided by the player core, as documented here: \fI\%OPTIONS\fP,
 1020+\fI\%List of Input Commands\fP, \fI\%Properties\fP, \fI\%List of events\fP (also see C API),
 1021+\fI\%Hooks\fP\&.
 1022+.SH TAKING SCREENSHOTS
 1023+.sp
 1024+Screenshots of the currently played file can be taken using the \(aqscreenshot\(aq
 1025+input mode command, which is by default bound to the \fBs\fP key. Files named
 1026+\fBmpv\-shotNNNN.jpg\fP will be saved in the working directory, using the first
 1027+available number \- no files will be overwritten. In pseudo\-GUI mode, the
 1028+screenshot will be saved somewhere else. See \fI\%PSEUDO GUI MODE\fP\&.
 1029+.sp
 1030+A screenshot will usually contain the unscaled video contents at the end of the
 1031+video filter chain and subtitles. By default, \fBS\fP takes screenshots without
 1032+subtitles, while \fBs\fP includes subtitles.
 1033+.sp
 1034+Unlike with MPlayer, the \fBscreenshot\fP video filter is not required. This
 1035+filter was never required in mpv, and has been removed.
 1036+.SH TERMINAL STATUS LINE
 1037+.sp
 1038+During playback, mpv shows the playback status on the terminal. It looks like
 1039+something like this:
 1040+.INDENT 0.0
 1041+.INDENT 3.5
 1042+\fBAV: 00:03:12 / 00:24:25 (13%) A\-V: \-0.000\fP
 1043+.UNINDENT
 1044+.UNINDENT
 1045+.sp
 1046+The status line can be overridden with the \fB\-\-term\-status\-msg\fP option.
 1047+.sp
 1048+The following is a list of things that can show up in the status line. Input
 1049+properties, that can be used to get the same information manually, are also
 1050+listed.
 1051+.INDENT 0.0
 1052+.IP \(bu 2
 1053+\fBAV:\fP or \fBV:\fP (video only) or \fBA:\fP (audio only)
 1054+.IP \(bu 2
 1055+The current time position in \fBHH:MM:SS\fP format (\fBplayback\-time\fP property)
 1056+.IP \(bu 2
 1057+The total file duration (absent if unknown) (\fBlength\fP property)
 1058+.IP \(bu 2
 1059+Playback speed, e.g. \(ga\(ga x2.0\(ga\(ga. Only visible if the speed is not normal. This
 1060+is the user\-requested speed, and not the actual speed  (usually they should
 1061+be the same, unless playback is too slow). (\fBspeed\fP property.)
 1062+.IP \(bu 2
 1063+Playback percentage, e.g. \fB(13%)\fP\&. How much of the file has been played.
 1064+Normally calculated out of playback position and duration, but can fallback
 1065+to other methods (like byte position) if these are not available.
 1066+(\fBpercent\-pos\fP property.)
 1067+.IP \(bu 2
 1068+The audio/video sync as \fBA\-V:  0.000\fP\&. This is the difference between
 1069+audio and video time. Normally it should be 0 or close to 0. If it\(aqs growing,
 1070+it might indicate a playback problem. (\fBavsync\fP property.)
 1071+.IP \(bu 2
 1072+Total A/V sync change, e.g. \fBct: \-0.417\fP\&. Normally invisible. Can show up
 1073+if there is audio "missing", or not enough frames can be dropped. Usually
 1074+this will indicate a problem. (\fBtotal\-avsync\-change\fP property.)
 1075+.IP \(bu 2
 1076+Encoding state in \fB{...}\fP, only shown in encoding mode.
 1077+.IP \(bu 2
 1078+Display sync state. If display sync is active (\fBdisplay\-sync\-active\fP
 1079+property), this shows \fBDS: 2.500/13\fP, where the first number is average
 1080+number of vsyncs per video frame (e.g. 2.5 when playing 24Hz videos on 60Hz
 1081+screens), which might jitter if the ratio doesn\(aqt round off, or there are
 1082+mistimed frames (\fBvsync\-ratio\fP), and the second number of estimated number
 1083+of vsyncs which took too long (\fBvo\-delayed\-frame\-count\fP property). The
 1084+latter is a heuristic, as it\(aqs generally not possible to determine this with
 1085+certainty.
 1086+.IP \(bu 2
 1087+Dropped frames, e.g. \fBDropped: 4\fP\&. Shows up only if the count is not 0. Can
 1088+grow if the video framerate is higher than that of the display, or if video
 1089+rendering is too slow. May also be incremented on "hiccups" and when the video
 1090+frame couldn\(aqt be displayed on time. (\fBvo\-drop\-frame\-count\fP property.)
 1091+If the decoder drops frames, the number of decoder\-dropped frames is appended
 1092+to the display as well, e.g.: \fBDropped: 4/34\fP\&. This happens only if
 1093+decoder frame dropping is enabled with the \fB\-\-framedrop\fP options.
 1094+(\fBdrop\-frame\-count\fP property.)
 1095+.IP \(bu 2
 1096+Cache state, e.g. \fBCache:  2s/134KB\fP\&. Visible if the stream cache is enabled.
 1097+The first value shows the amount of video buffered in the demuxer in seconds,
 1098+the second value shows the estimated size of the buffered amount in kilobytes.
 1099+(\fBdemuxer\-cache\-duration\fP and \fBdemuxer\-cache\-state\fP properties.)
 1100+.UNINDENT
 1101+.SH LOW LATENCY PLAYBACK
 1102+.sp
 1103+mpv is optimized for normal video playback, meaning it actually tries to buffer
 1104+as much data as it seems to make sense. This will increase latency. Reducing
 1105+latency is possible only by specifically disabling features which increase
 1106+latency.
 1107+.sp
 1108+The builtin \fBlow\-latency\fP profile tries to apply some of the options which can
 1109+reduce latency. You can use  \fB\-\-profile=low\-latency\fP to apply all of them. You
 1110+can list the contents with \fB\-\-show\-profile=low\-latency\fP (some of the options
 1111+are quite obscure, and may change every mpv release).
 1112+.sp
 1113+Be aware that some of the options can reduce playback quality.
 1114+.sp
 1115+Most latency is actually caused by inconvenient timing behavior. You can disable
 1116+this with \fB\-\-untimed\fP, but it will likely break, unless the stream has no
 1117+audio, and the input feeds data to the player at a constant rate.
 1118+.sp
 1119+Another common problem is with MJPEG streams. These do not signal the correct
 1120+framerate. Using \fB\-\-untimed\fP or \fB\-\-no\-correct\-pts \-\-fps=60\fP might help.
 1121+.sp
 1122+For livestreams, data can build up due to pausing the stream, due to slightly
 1123+lower playback rate, or "buffering" pauses. If the demuxer cache is enabled,
 1124+these can be skipped manually. The experimental \fBdrop\-buffers\fP command can
 1125+be used to discard any buffered data, though it\(aqs very disruptive.
 1126+.sp
 1127+In some cases, manually tuning TCP buffer sizes and such can help to reduce
 1128+latency.
 1129+.sp
 1130+Additional options that can be tried:
 1131+.INDENT 0.0
 1132+.IP \(bu 2
 1133+\fB\-\-opengl\-glfinish=yes\fP, can reduce buffering in the graphics driver
 1134+.IP \(bu 2
 1135+\fB\-\-opengl\-swapinterval=0\fP, same
 1136+.IP \(bu 2
 1137+\fB\-\-vo=xv\fP, same
 1138+.IP \(bu 2
 1139+without audio \fB\-\-framedrop=no \-\-speed=1.01\fP may help for live sources
 1140+(results can be mixed)
 1141+.UNINDENT
 1142+.SH PROTOCOLS
 1143+.sp
 1144+\fBhttp://...\fP, \fBhttps://\fP, ...
 1145+.INDENT 0.0
 1146+.INDENT 3.5
 1147+Many network protocols are supported, but the protocol prefix must always
 1148+be specified. mpv will never attempt to guess whether a filename is
 1149+actually a network address. A protocol prefix is always required.
 1150+.sp
 1151+Note that not all prefixes are documented here. Undocumented prefixes are
 1152+either aliases to documented protocols, or are just redirections to
 1153+protocols implemented and documented in FFmpeg.
 1154+.sp
 1155+\fBdata:\fP is supported in FFmpeg (not in Libav), but needs to be in the
 1156+format \fBdata://\fP\&. This is done to avoid ambiguity with filenames. You
 1157+can also prefix it with \fBlavf://\fP or \fBffmpeg://\fP\&.
 1158+.UNINDENT
 1159+.UNINDENT
 1160+.sp
 1161+\fBytdl://...\fP
 1162+.INDENT 0.0
 1163+.INDENT 3.5
 1164+By default, the youtube\-dl hook script only looks at http(s) URLs. Prefixing
 1165+an URL with \fBytdl://\fP forces it to be always processed by the script. This
 1166+can also be used to invoke special youtube\-dl functionality like playing a
 1167+video by ID or invoking search.
 1168+.sp
 1169+Keep in mind that you can\(aqt pass youtube\-dl command line options by this,
 1170+and you have to use \fB\-\-ytdl\-raw\-options\fP instead.
 1171+.UNINDENT
 1172+.UNINDENT
 1173+.sp
 1174+\fB\-\fP
 1175+.INDENT 0.0
 1176+.INDENT 3.5
 1177+Play data from stdin.
 1178+.UNINDENT
 1179+.UNINDENT
 1180+.sp
 1181+\fBsmb://PATH\fP
 1182+.INDENT 0.0
 1183+.INDENT 3.5
 1184+Play a path from  Samba share.
 1185+.UNINDENT
 1186+.UNINDENT
 1187+.sp
 1188+\fBbd://[title][/device]\fP \fB\-\-bluray\-device=PATH\fP
 1189+.INDENT 0.0
 1190+.INDENT 3.5
 1191+Play a Blu\-ray disc. Since libbluray 1.0.1, you can read from ISO files
 1192+by passing them to \fB\-\-bluray\-device\fP\&.
 1193+.sp
 1194+\fBtitle\fP can be: \fBlongest\fP or \fBfirst\fP (selects the default
 1195+playlist); \fBmpls/<number>\fP (selects <number>.mpls playlist);
 1196+\fB<number>\fP (select playlist with the same index). mpv will list
 1197+the available playlists on loading.
 1198+.sp
 1199+\fBbluray://\fP is an alias.
 1200+.UNINDENT
 1201+.UNINDENT
 1202+.sp
 1203+\fBdvd://[title][/device]\fP \fB\-\-dvd\-device=PATH\fP
 1204+.INDENT 0.0
 1205+.INDENT 3.5
 1206+Play a DVD. DVD menus are not supported. If no title is given, the longest
 1207+title is auto\-selected. Without \fB\-\-dvd\-device\fP, it will probably try
 1208+to open an actual optical drive, if available and implemented for the OS.
 1209+.sp
 1210+\fBdvdnav://\fP is an old alias for \fBdvd://\fP and does exactly the same
 1211+thing.
 1212+.UNINDENT
 1213+.UNINDENT
 1214+.sp
 1215+\fBdvb://[cardnumber@]channel\fP \fB\-\-dvbin\-...\fP
 1216+.INDENT 0.0
 1217+.INDENT 3.5
 1218+Digital TV via DVB. (Linux only.)
 1219+.UNINDENT
 1220+.UNINDENT
 1221+.sp
 1222+\fBmf://[filemask|@listfile]\fP \fB\-\-mf\-...\fP
 1223+.INDENT 0.0
 1224+.INDENT 3.5
 1225+Play a series of images as video.
 1226+.UNINDENT
 1227+.UNINDENT
 1228+.sp
 1229+\fBcdda://[device]\fP \fB\-\-cdrom\-device=PATH\fP \fB\-\-cdda\-...\fP
 1230+.INDENT 0.0
 1231+.INDENT 3.5
 1232+Play CD.
 1233+.UNINDENT
 1234+.UNINDENT
 1235+.sp
 1236+\fBlavf://...\fP
 1237+.INDENT 0.0
 1238+.INDENT 3.5
 1239+Access any FFmpeg/Libav libavformat protocol. Basically, this passed the
 1240+string after the \fB//\fP directly to libavformat.
 1241+.UNINDENT
 1242+.UNINDENT
 1243+.sp
 1244+\fBav://type:options\fP
 1245+.INDENT 0.0
 1246+.INDENT 3.5
 1247+This is intended for using libavdevice inputs. \fBtype\fP is the libavdevice
 1248+demuxer name, and \fBoptions\fP is the (pseudo\-)filename passed to the
 1249+demuxer.
 1250+.INDENT 0.0
 1251+.INDENT 3.5
 1252+.IP "Example"
 1253+.INDENT 0.0
 1254+.INDENT 3.5
 1255+.sp
 1256+.nf
 1257+.ft C
 1258+mpv av://v4l2:/dev/video0 \-\-profile=low\-latency \-\-untimed
 1259+.ft P
 1260+.fi
 1261+.UNINDENT
 1262+.UNINDENT
 1263+.sp
 1264+This plays video from the first v4l input with nearly the lowest latency
 1265+possible. It\(aqs a good replacement for the removed \fBtv://\fP input.
 1266+Using \fB\-\-untimed\fP is a hack to output a captured frame immediately,
 1267+instead of respecting the input framerate. (There may be better ways to
 1268+handle this in the future.)
 1269+.UNINDENT
 1270+.UNINDENT
 1271+.sp
 1272+\fBavdevice://\fP is an alias.
 1273+.UNINDENT
 1274+.UNINDENT
 1275+.sp
 1276+\fBfile://PATH\fP
 1277+.INDENT 0.0
 1278+.INDENT 3.5
 1279+A local path as URL. Might be useful in some special use\-cases. Note that
 1280+\fBPATH\fP itself should start with a third \fB/\fP to make the path an
 1281+absolute path.
 1282+.UNINDENT
 1283+.UNINDENT
 1284+.sp
 1285+\fBappending://PATH\fP
 1286+.INDENT 0.0
 1287+.INDENT 3.5
 1288+Play a local file, but assume it\(aqs being appended to. This is useful for
 1289+example for files that are currently being downloaded to disk. This will
 1290+block playback, and stop playback only if no new data was appended after
 1291+a timeout of about 2 seconds.
 1292+.sp
 1293+Using this is still a bit of a bad idea, because there is no way to detect
 1294+if a file is actually being appended, or if it\(aqs still written. If you\(aqre
 1295+trying to play the  output of some program, consider using a pipe
 1296+(\fBsomething | mpv \-\fP). If it really has to be a file on disk, use tail to
 1297+make it wait forever, e.g. \fBtail \-f \-c +0 file.mkv | mpv \-\fP\&.
 1298+.UNINDENT
 1299+.UNINDENT
 1300+.sp
 1301+\fBfd://123\fP
 1302+.INDENT 0.0
 1303+.INDENT 3.5
 1304+Read data from the given file descriptor (for example 123). This is similar
 1305+to piping data to stdin via \fB\-\fP, but can use an arbitrary file descriptor.
 1306+mpv may modify some file descriptor properties when the stream layer "opens"
 1307+it.
 1308+.UNINDENT
 1309+.UNINDENT
 1310+.sp
 1311+\fBfdclose://123\fP
 1312+.INDENT 0.0
 1313+.INDENT 3.5
 1314+Like \fBfd://\fP, but the file descriptor is closed after use. When using this
 1315+you need to ensure that the same fd URL will only be used once.
 1316+.UNINDENT
 1317+.UNINDENT
 1318+.sp
 1319+\fBedl://[edl specification as in edl\-mpv.rst]\fP
 1320+.INDENT 0.0
 1321+.INDENT 3.5
 1322+Stitch together parts of multiple files and play them.
 1323+.UNINDENT
 1324+.UNINDENT
 1325+.sp
 1326+\fBnull://\fP
 1327+.INDENT 0.0
 1328+.INDENT 3.5
 1329+Simulate an empty file. If opened for writing, it will discard all data.
 1330+The \fBnull\fP demuxer will specifically pass autoprobing if this protocol
 1331+is used (while it\(aqs not automatically invoked for empty files).
 1332+.UNINDENT
 1333+.UNINDENT
 1334+.sp
 1335+\fBmemory://data\fP
 1336+.INDENT 0.0
 1337+.INDENT 3.5
 1338+Use the \fBdata\fP part as source data.
 1339+.UNINDENT
 1340+.UNINDENT
 1341+.sp
 1342+\fBhex://data\fP
 1343+.INDENT 0.0
 1344+.INDENT 3.5
 1345+Like \fBmemory://\fP, but the string is interpreted as hexdump.
 1346+.UNINDENT
 1347+.UNINDENT
 1348+.SH PSEUDO GUI MODE
 1349+.sp
 1350+mpv has no official GUI, other than the OSC (\fI\%ON SCREEN CONTROLLER\fP), which
 1351+is not a full GUI and is not meant to be. However, to compensate for the lack
 1352+of expected GUI behavior, mpv will in some cases start with some settings
 1353+changed to behave slightly more like a GUI mode.
 1354+.sp
 1355+Currently this happens only in the following cases:
 1356+.INDENT 0.0
 1357+.IP \(bu 2
 1358+if started using the \fBmpv.desktop\fP file on Linux (e.g. started from menus
 1359+or file associations provided by desktop environments)
 1360+.IP \(bu 2
 1361+if started from explorer.exe on Windows (technically, if it was started on
 1362+Windows, and all of the stdout/stderr/stdin handles are unset)
 1363+.IP \(bu 2
 1364+started out of the bundle on OSX
 1365+.IP \(bu 2
 1366+if you manually use \fB\-\-player\-operation\-mode=pseudo\-gui\fP on the command line
 1367+.UNINDENT
 1368+.sp
 1369+This mode applies options from the builtin profile \fBbuiltin\-pseudo\-gui\fP, but
 1370+only if these haven\(aqt been set in the user\(aqs config file or on the command line.
 1371+Also, for compatibility with the old pseudo\-gui behavior, the options in the
 1372+\fBpseudo\-gui\fP profile are applied unconditionally. In addition, the profile
 1373+makes sure to enable the pseudo\-GUI mode, so that \fB\-\-profile=pseudo\-gui\fP
 1374+works like in older mpv releases. The profiles are currently defined as follows:
 1375+.INDENT 0.0
 1376+.INDENT 3.5
 1377+.sp
 1378+.nf
 1379+.ft C
 1380+[builtin\-pseudo\-gui]
 1381+terminal=no
 1382+force\-window=yes
 1383+idle=once
 1384+screenshot\-directory=~~desktop/
 1385+[pseudo\-gui]
 1386+player\-operation\-mode=pseudo\-gui
 1387+.ft P
 1388+.fi
 1389+.UNINDENT
 1390+.UNINDENT
 1391+.sp
 1392+\fBWARNING:\fP
 1393+.INDENT 0.0
 1394+.INDENT 3.5
 1395+Currently, you can extend the \fBpseudo\-gui\fP profile in the config file the
 1396+normal way. This is deprecated. In future mpv releases, the behavior might
 1397+change, and not apply your additional settings, and/or use a different
 1398+profile name.
 1399+.UNINDENT
 1400+.UNINDENT
 1401+.SH OPTIONS
 1402+.SS Track Selection
 1403+.INDENT 0.0
 1404+.TP
 1405+.B \fB\-\-alang=<languagecode[,languagecode,...]>\fP
 1406+Specify a priority list of audio languages to use. Different container
 1407+formats employ different language codes. DVDs use ISO 639\-1 two\-letter
 1408+language codes, Matroska, MPEG\-TS and NUT use ISO 639\-2 three\-letter
 1409+language codes, while OGM uses a free\-form identifier. See also \fB\-\-aid\fP\&.
 1410+.sp
 1411+This is a string list option. See \fI\%List Options\fP for details.
 1412+.INDENT 7.0
 1413+.INDENT 3.5
 1414+.IP "Examples"
 1415+.INDENT 0.0
 1416+.IP \(bu 2
 1417+\fBmpv dvd://1 \-\-alang=hu,en\fP chooses the Hungarian language track
 1418+on a DVD and falls back on English if Hungarian is not available.
 1419+.IP \(bu 2
 1420+\fBmpv \-\-alang=jpn example.mkv\fP plays a Matroska file with Japanese
 1421+audio.
 1422+.UNINDENT
 1423+.UNINDENT
 1424+.UNINDENT
 1425+.TP
 1426+.B \fB\-\-slang=<languagecode[,languagecode,...]>\fP
 1427+Specify a priority list of subtitle languages to use. Different container
 1428+formats employ different language codes. DVDs use ISO 639\-1 two letter
 1429+language codes, Matroska uses ISO 639\-2 three letter language codes while
 1430+OGM uses a free\-form identifier. See also \fB\-\-sid\fP\&.
 1431+.sp
 1432+This is a string list option. See \fI\%List Options\fP for details.
 1433+.INDENT 7.0
 1434+.INDENT 3.5
 1435+.IP "Examples"
 1436+.INDENT 0.0
 1437+.IP \(bu 2
 1438+\fBmpv dvd://1 \-\-slang=hu,en\fP chooses the Hungarian subtitle track on
 1439+a DVD and falls back on English if Hungarian is not available.
 1440+.IP \(bu 2
 1441+\fBmpv \-\-slang=jpn example.mkv\fP plays a Matroska file with Japanese
 1442+subtitles.
 1443+.UNINDENT
 1444+.UNINDENT
 1445+.UNINDENT
 1446+.TP
 1447+.B \fB\-\-vlang=<...>\fP
 1448+Equivalent to \fB\-\-alang\fP and \fB\-\-slang\fP, for video tracks.
 1449+.sp
 1450+This is a string list option. See \fI\%List Options\fP for details.
 1451+.TP
 1452+.B \fB\-\-aid=<ID|auto|no>\fP
 1453+Select audio track. \fBauto\fP selects the default, \fBno\fP disables audio.
 1454+See also \fB\-\-alang\fP\&. mpv normally prints available audio tracks on the
 1455+terminal when starting playback of a file.
 1456+.sp
 1457+\fB\-\-audio\fP is an alias for \fB\-\-aid\fP\&.
 1458+.sp
 1459+\fB\-\-aid=no\fP or \fB\-\-audio=no\fP or \fB\-\-no\-audio\fP disables audio playback.
 1460+(The latter variant does not work with the client API.)
 1461+.TP
 1462+.B \fB\-\-sid=<ID|auto|no>\fP
 1463+Display the subtitle stream specified by \fB<ID>\fP\&. \fBauto\fP selects
 1464+the default, \fBno\fP disables subtitles.
 1465+.sp
 1466+\fB\-\-sub\fP is an alias for \fB\-\-sid\fP\&.
 1467+.sp
 1468+\fB\-\-sid=no\fP or \fB\-\-sub=no\fP or \fB\-\-no\-sub\fP disables subtitle decoding.
 1469+(The latter variant does not work with the client API.)
 1470+.TP
 1471+.B \fB\-\-vid=<ID|auto|no>\fP
 1472+Select video channel. \fBauto\fP selects the default, \fBno\fP disables video.
 1473+.sp
 1474+\fB\-\-video\fP is an alias for \fB\-\-vid\fP\&.
 1475+.sp
 1476+\fB\-\-vid=no\fP or \fB\-\-video=no\fP or \fB\-\-no\-video\fP disables video playback.
 1477+(The latter variant does not work with the client API.)
 1478+.sp
 1479+If video is disabled, mpv will try to download the audio only if media is
 1480+streamed with youtube\-dl, because it saves bandwidth. This is done by
 1481+setting the ytdl_format to "bestaudio/best" in the ytdl_hook.lua script.
 1482+.TP
 1483+.B \fB\-\-edition=<ID|auto>\fP
 1484+(Matroska files only)
 1485+Specify the edition (set of chapters) to use, where 0 is the first. If set
 1486+to \fBauto\fP (the default), mpv will choose the first edition declared as a
 1487+default, or if there is no default, the first edition defined.
 1488+.TP
 1489+.B \fB\-\-track\-auto\-selection=<yes|no>\fP
 1490+Enable the default track auto\-selection (default: yes). Enabling this will
 1491+make the player select streams according to \fB\-\-aid\fP, \fB\-\-alang\fP, and
 1492+others. If it is disabled, no tracks are selected. In addition, the player
 1493+will not exit if no tracks are selected, and wait instead (this wait mode
 1494+is similar to pausing, but the pause option is not set).
 1495+.sp
 1496+This is useful with \fB\-\-lavfi\-complex\fP: you can start playback in this
 1497+mode, and then set select tracks at runtime by setting the filter graph.
 1498+Note that if \fB\-\-lavfi\-complex\fP is set before playback is started, the
 1499+referenced tracks are always selected.
 1500+.UNINDENT
 1501+.SS Playback Control
 1502+.INDENT 0.0
 1503+.TP
 1504+.B \fB\-\-start=<relative time>\fP
 1505+Seek to given time position.
 1506+.sp
 1507+The general format for times is \fB[+|\-][[hh:]mm:]ss[.ms]\fP\&. If the time is
 1508+prefixed with \fB\-\fP, the time is considered relative from the end of the
 1509+file (as signaled by the demuxer/the file). A \fB+\fP is usually ignored (but
 1510+see below).
 1511+.sp
 1512+The following alternative time specifications are recognized:
 1513+.sp
 1514+\fBpp%\fP seeks to percent position pp (0\-100).
 1515+.sp
 1516+\fB#c\fP seeks to chapter number c. (Chapters start from 1.)
 1517+.sp
 1518+\fBnone\fP resets any previously set option (useful for libmpv).
 1519+.sp
 1520+If \fB\-\-rebase\-start\-time=no\fP is given, then prefixing times with \fB+\fP
 1521+makes the time relative to the start of the file. A timestamp without
 1522+prefix is considered an absolute time, i.e. should seek to a frame with a
 1523+timestamp as the file contains it. As a bug, but also a hidden feature,
 1524+putting 1 or more spaces before the \fB+\fP or \fB\-\fP always interprets the
 1525+time as absolute, which can be used to seek to negative timestamps (useful
 1526+for debugging at most).
 1527+.INDENT 7.0
 1528+.INDENT 3.5
 1529+.IP "Examples"
 1530+.INDENT 0.0
 1531+.TP
 1532+.B \fB\-\-start=+56\fP, \fB\-\-start=00:56\fP
 1533+Seeks to the start time + 56 seconds.
 1534+.TP
 1535+.B \fB\-\-start=\-56\fP, \fB\-\-start=\-00:56\fP
 1536+Seeks to the end time \- 56 seconds.
 1537+.TP
 1538+.B \fB\-\-start=01:10:00\fP
 1539+Seeks to 1 hour 10 min.
 1540+.TP
 1541+.B \fB\-\-start=50%\fP
 1542+Seeks to the middle of the file.
 1543+.TP
 1544+.B \fB\-\-start=30 \-\-end=40\fP
 1545+Seeks to 30 seconds, plays 10 seconds, and exits.
 1546+.TP
 1547+.B \fB\-\-start=\-3:20 \-\-length=10\fP
 1548+Seeks to 3 minutes and 20 seconds before the end of the file, plays
 1549+10 seconds, and exits.
 1550+.TP
 1551+.B \fB\-\-start=\(aq#2\(aq \-\-end=\(aq#4\(aq\fP
 1552+Plays chapters 2 and 3, and exits.
 1553+.UNINDENT
 1554+.UNINDENT
 1555+.UNINDENT
 1556+.TP
 1557+.B \fB\-\-end=<relative time>\fP
 1558+Stop at given time. Use \fB\-\-length\fP if the time should be relative
 1559+to \fB\-\-start\fP\&. See \fB\-\-start\fP for valid option values and examples.
 1560+.TP
 1561+.B \fB\-\-length=<relative time>\fP
 1562+Stop after a given time relative to the start time.
 1563+See \fB\-\-start\fP for valid option values and examples.
 1564+.sp
 1565+If both \fB\-\-end\fP and \fB\-\-length\fP are provided, playback will stop when it
 1566+reaches either of the two endpoints.
 1567+.sp
 1568+Obscurity note: this does not work correctly if \fB\-\-rebase\-start\-time=no\fP,
 1569+and the specified time is not an "absolute" time, as defined in the
 1570+\fB\-\-start\fP option description.
 1571+.TP
 1572+.B \fB\-\-rebase\-start\-time=<yes|no>\fP
 1573+Whether to move the file start time to \fB00:00:00\fP (default: yes). This
 1574+is less awkward for files which start at a random timestamp, such as
 1575+transport streams. On the other hand, if there are timestamp resets, the
 1576+resulting behavior can be rather weird. For this reason, and in case you
 1577+are actually interested in the real timestamps, this behavior can be
 1578+disabled with \fBno\fP\&.
 1579+.TP
 1580+.B \fB\-\-speed=<0.01\-100>\fP
 1581+Slow down or speed up playback by the factor given as parameter.
 1582+.sp
 1583+If \fB\-\-audio\-pitch\-correction\fP (on by default) is used, playing with a
 1584+speed higher than normal automatically inserts the \fBscaletempo\fP audio
 1585+filter.
 1586+.TP
 1587+.B \fB\-\-pause\fP
 1588+Start the player in paused state.
 1589+.TP
 1590+.B \fB\-\-shuffle\fP
 1591+Play files in random order.
 1592+.TP
 1593+.B \fB\-\-playlist\-start=<auto|index>\fP
 1594+Set which file on the internal playlist to start playback with. The index
 1595+is an integer, with 0 meaning the first file. The value \fBauto\fP means that
 1596+the selection of the entry to play is left to the playback resume mechanism
 1597+(default). If an entry with the given index doesn\(aqt exist, the behavior is
 1598+unspecified and might change in future mpv versions. The same applies if
 1599+the playlist contains further playlists (don\(aqt expect any reasonable
 1600+behavior). Passing a playlist file to mpv should work with this option,
 1601+though. E.g. \fBmpv playlist.m3u \-\-playlist\-start=123\fP will work as expected,
 1602+as long as \fBplaylist.m3u\fP does not link to further playlists.
 1603+.sp
 1604+The value \fBno\fP is a deprecated alias for \fBauto\fP\&.
 1605+.TP
 1606+.B \fB\-\-playlist=<filename>\fP
 1607+Play files according to a playlist file (Supports some common formats. If
 1608+no format is detected, it will be treated as list of files, separated by
 1609+newline characters. Note that XML playlist formats are not supported.)
 1610+.sp
 1611+You can play playlists directly and without this option, however, this
 1612+option disables any security mechanisms that might be in place. You may
 1613+also need this option to load plaintext files as playlist.
 1614+.sp
 1615+\fBWARNING:\fP
 1616+.INDENT 7.0
 1617+.INDENT 3.5
 1618+The way mpv uses playlist files via \fB\-\-playlist\fP is not safe against
 1619+maliciously constructed files. Such files may trigger harmful actions.
 1620+This has been the case for all mpv and MPlayer versions, but
 1621+unfortunately this fact was not well documented earlier, and some people
 1622+have even misguidedly recommended use of \fB\-\-playlist\fP with untrusted
 1623+sources. Do NOT use \fB\-\-playlist\fP with random internet sources or files
 1624+you do not trust!
 1625+.sp
 1626+Playlist can contain entries using other protocols, such as local files,
 1627+or (most severely), special protocols like \fBavdevice://\fP, which are
 1628+inherently unsafe.
 1629+.UNINDENT
 1630+.UNINDENT
 1631+.TP
 1632+.B \fB\-\-chapter\-merge\-threshold=<number>\fP
 1633+Threshold for merging almost consecutive ordered chapter parts in
 1634+milliseconds (default: 100). Some Matroska files with ordered chapters
 1635+have inaccurate chapter end timestamps, causing a small gap between the
 1636+end of one chapter and the start of the next one when they should match.
 1637+If the end of one playback part is less than the given threshold away from
 1638+the start of the next one then keep playing video normally over the
 1639+chapter change instead of doing a seek.
 1640+.TP
 1641+.B \fB\-\-chapter\-seek\-threshold=<seconds>\fP
 1642+Distance in seconds from the beginning of a chapter within which a backward
 1643+chapter seek will go to the previous chapter (default: 5.0). Past this
 1644+threshold, a backward chapter seek will go to the beginning of the current
 1645+chapter instead. A negative value means always go back to the previous
 1646+chapter.
 1647+.TP
 1648+.B \fB\-\-hr\-seek=<no|absolute|yes>\fP
 1649+Select when to use precise seeks that are not limited to keyframes. Such
 1650+seeks require decoding video from the previous keyframe up to the target
 1651+position and so can take some time depending on decoding performance. For
 1652+some video formats, precise seeks are disabled. This option selects the
 1653+default choice to use for seeks; it is possible to explicitly override that
 1654+default in the definition of key bindings and in input commands.
 1655+.INDENT 7.0
 1656+.TP
 1657+.B no
 1658+Never use precise seeks.
 1659+.TP
 1660+.B absolute
 1661+Use precise seeks if the seek is to an absolute position in the
 1662+file, such as a chapter seek, but not for relative seeks like
 1663+the default behavior of arrow keys (default).
 1664+.TP
 1665+.B yes
 1666+Use precise seeks whenever possible.
 1667+.TP
 1668+.B always
 1669+Same as \fByes\fP (for compatibility).
 1670+.UNINDENT
 1671+.TP
 1672+.B \fB\-\-hr\-seek\-demuxer\-offset=<seconds>\fP
 1673+This option exists to work around failures to do precise seeks (as in
 1674+\fB\-\-hr\-seek\fP) caused by bugs or limitations in the demuxers for some file
 1675+formats. Some demuxers fail to seek to a keyframe before the given target
 1676+position, going to a later position instead. The value of this option is
 1677+subtracted from the time stamp given to the demuxer. Thus, if you set this
 1678+option to 1.5 and try to do a precise seek to 60 seconds, the demuxer is
 1679+told to seek to time 58.5, which hopefully reduces the chance that it
 1680+erroneously goes to some time later than 60 seconds. The downside of
 1681+setting this option is that precise seeks become slower, as video between
 1682+the earlier demuxer position and the real target may be unnecessarily
 1683+decoded.
 1684+.TP
 1685+.B \fB\-\-hr\-seek\-framedrop=<yes|no>\fP
 1686+Allow the video decoder to drop frames during seek, if these frames are
 1687+before the seek target. If this is enabled, precise seeking can be faster,
 1688+but if you\(aqre using video filters which modify timestamps or add new
 1689+frames, it can lead to precise seeking skipping the target frame. This
 1690+e.g. can break frame backstepping when deinterlacing is enabled.
 1691+.sp
 1692+Default: \fByes\fP
 1693+.TP
 1694+.B \fB\-\-index=<mode>\fP
 1695+Controls how to seek in files. Note that if the index is missing from a
 1696+file, it will be built on the fly by default, so you don\(aqt need to change
 1697+this. But it might help with some broken files.
 1698+.INDENT 7.0
 1699+.TP
 1700+.B default
 1701+use an index if the file has one, or build it if missing
 1702+.TP
 1703+.B recreate
 1704+don\(aqt read or use the file\(aqs index
 1705+.UNINDENT
 1706+.sp
 1707+\fBNOTE:\fP
 1708+.INDENT 7.0
 1709+.INDENT 3.5
 1710+This option only works if the underlying media supports seeking
 1711+(i.e. not with stdin, pipe, etc).
 1712+.UNINDENT
 1713+.UNINDENT
 1714+.TP
 1715+.B \fB\-\-load\-unsafe\-playlists\fP
 1716+Load URLs from playlists which are considered unsafe (default: no). This
 1717+includes special protocols and anything that doesn\(aqt refer to normal files.
 1718+Local files and HTTP links on the other hand are always considered safe.
 1719+.sp
 1720+In addition, if a playlist is loaded while this is set, the added playlist
 1721+entries are not marked as originating from network or potentially unsafe
 1722+location. (Instead, the behavior is as if the playlist entries were provided
 1723+directly to mpv command line or \fBloadfile\fP command.)
 1724+.sp
 1725+Note that \fB\-\-playlist\fP always loads all entries, so you use that instead
 1726+if you really have the need for this functionality.
 1727+.TP
 1728+.B \fB\-\-access\-references=<yes|no>\fP
 1729+Follow any references in the file being opened (default: yes). Disabling
 1730+this is helpful if the file is automatically scanned (e.g. thumbnail
 1731+generation). If the thumbnail scanner for example encounters a playlist
 1732+file, which contains network URLs, and the scanner should not open these,
 1733+enabling this option will prevent it. This option also disables ordered
 1734+chapters, mov reference files, opening of archives, and a number of other
 1735+features.
 1736+.sp
 1737+On older FFmpeg versions, this will not work in some cases. Some FFmpeg
 1738+demuxers might not respect this option.
 1739+.sp
 1740+This option does not prevent opening of paired subtitle files and such. Use
 1741+\fB\-\-autoload\-files=no\fP to prevent this.
 1742+.sp
 1743+This option does not always work if you open non\-files (for example using
 1744+\fBdvd://directory\fP would open a whole bunch of files in the given
 1745+directory). Prefixing the filename with \fB\&./\fP if it doesn\(aqt start with
 1746+a \fB/\fP will avoid this.
 1747+.TP
 1748+.B \fB\-\-loop\-playlist=<N|inf|force|no>\fP, \fB\-\-loop\-playlist\fP
 1749+Loops playback \fBN\fP times. A value of \fB1\fP plays it one time (default),
 1750+\fB2\fP two times, etc. \fBinf\fP means forever. \fBno\fP is the same as \fB1\fP and
 1751+disables looping. If several files are specified on command line, the
 1752+entire playlist is looped. \fB\-\-loop\-playlist\fP is the same as
 1753+\fB\-\-loop\-playlist=inf\fP\&.
 1754+.sp
 1755+The \fBforce\fP mode is like \fBinf\fP, but does not skip playlist entries
 1756+which have been marked as failing. This means the player might waste CPU
 1757+time trying to loop a file that doesn\(aqt exist. But it might be useful for
 1758+playing webradios under very bad network conditions.
 1759+.TP
 1760+.B \fB\-\-loop\-file=<N|inf|no>\fP, \fB\-\-loop=<N|inf|no>\fP
 1761+Loop a single file N times. \fBinf\fP means forever, \fBno\fP means normal
 1762+playback. For compatibility, \fB\-\-loop\-file\fP and \fB\-\-loop\-file=yes\fP are
 1763+also accepted, and are the same as \fB\-\-loop\-file=inf\fP\&.
 1764+.sp
 1765+The difference to \fB\-\-loop\-playlist\fP is that this doesn\(aqt loop the playlist,
 1766+just the file itself. If the playlist contains only a single file, the
 1767+difference between the two option is that this option performs a seek on
 1768+loop, instead of reloading the file.
 1769+.sp
 1770+\fB\-\-loop\fP is an alias for this option.
 1771+.TP
 1772+.B \fB\-\-ab\-loop\-a=<time>\fP, \fB\-\-ab\-loop\-b=<time>\fP
 1773+Set loop points. If playback passes the \fBb\fP timestamp, it will seek to
 1774+the \fBa\fP timestamp. Seeking past the \fBb\fP point doesn\(aqt loop (this is
 1775+intentional).
 1776+.sp
 1777+If \fBa\fP is after \fBb\fP, the behavior is as if the points were given in
 1778+the right order, and the player will seek to \fBb\fP after crossing through
 1779+\fBa\fP\&. This is different from old behavior, where looping was disabled (and
 1780+as a bug, looped back to \fBa\fP on the end of the file).
 1781+.sp
 1782+If either options are set to \fBno\fP (or unset), looping is disabled. This
 1783+is different from old behavior, where an unset \fBa\fP implied the start of
 1784+the file, and an unset \fBb\fP the end of the file.
 1785+.sp
 1786+The loop\-points can be adjusted at runtime with the corresponding
 1787+properties. See also \fBab\-loop\fP command.
 1788+.TP
 1789+.B \fB\-\-ordered\-chapters\fP, \fB\-\-no\-ordered\-chapters\fP
 1790+Enabled by default.
 1791+Disable support for Matroska ordered chapters. mpv will not load or
 1792+search for video segments from other files, and will also ignore any
 1793+chapter order specified for the main file.
 1794+.TP
 1795+.B \fB\-\-ordered\-chapters\-files=<playlist\-file>\fP
 1796+Loads the given file as playlist, and tries to use the files contained in
 1797+it as reference files when opening a Matroska file that uses ordered
 1798+chapters. This overrides the normal mechanism for loading referenced
 1799+files by scanning the same directory the main file is located in.
 1800+.sp
 1801+Useful for loading ordered chapter files that are not located on the local
 1802+filesystem, or if the referenced files are in different directories.
 1803+.sp
 1804+Note: a playlist can be as simple as a text file containing filenames
 1805+separated by newlines.
 1806+.TP
 1807+.B \fB\-\-chapters\-file=<filename>\fP
 1808+Load chapters from this file, instead of using the chapter metadata found
 1809+in the main file.
 1810+.sp
 1811+This accepts a media file (like mkv) or even a pseudo\-format like ffmetadata
 1812+and uses its chapters to replace the current file\(aqs chapters. This doesn\(aqt
 1813+work with OGM or XML chapters directly.
 1814+.TP
 1815+.B \fB\-\-sstep=<sec>\fP
 1816+Skip <sec> seconds after every frame.
 1817+.sp
 1818+\fBNOTE:\fP
 1819+.INDENT 7.0
 1820+.INDENT 3.5
 1821+Without \fB\-\-hr\-seek\fP, skipping will snap to keyframes.
 1822+.UNINDENT
 1823+.UNINDENT
 1824+.TP
 1825+.B \fB\-\-stop\-playback\-on\-init\-failure=<yes|no>\fP
 1826+Stop playback if either audio or video fails to initialize (default: no).
 1827+With \fBno\fP, playback will continue in video\-only or audio\-only mode if one
 1828+of them fails. This doesn\(aqt affect playback of audio\-only or video\-only
 1829+files.
 1830+.TP
 1831+.B \fB\-\-play\-dir=<forward|+|backward|\->\fP
 1832+Control the playback direction (default: forward). Setting \fBbackward\fP
 1833+will attempt to play the file in reverse direction, with decreasing
 1834+playback time. If this is set on playback starts, playback will start from
 1835+the end of the file. If this is changed at during playback, a hr\-seek will
 1836+be issued to change the direction.
 1837+.sp
 1838+\fB+\fP and \fB\-\fP are aliases for \fBforward\fP and \fBbackward\fP\&.
 1839+.sp
 1840+The rest of this option description pertains to the \fBbackward\fP mode.
 1841+.sp
 1842+\fBNOTE:\fP
 1843+.INDENT 7.0
 1844+.INDENT 3.5
 1845+Backward playback is extremely fragile. It may not always work, is much
 1846+slower than forward playback, and breaks certain other features. How
 1847+well it works depends mainly on the file being played. Generally, it
 1848+will show good results (or results at all) only if the stars align.
 1849+.UNINDENT
 1850+.UNINDENT
 1851+.sp
 1852+mpv, as well as most media formats, were designed for forward playback
 1853+only. Backward playback is bolted on top of mpv, and tries to make a medium
 1854+effort to make backward playback work. Depending on your use\-case, another
 1855+tool may work much better.
 1856+.sp
 1857+Backward playback is not exactly a 1st class feature. Implementation
 1858+tradeoffs were made, that are bad for backward playback, but in turn do not
 1859+cause disadvantages for normal playback. Various possible optimizations are
 1860+not implemented in order to keep the complexity down. Normally, a media
 1861+player is highly pipelined (future data is prepared in separate threads, so
 1862+it is available in realtime when the next stage needs it), but backward
 1863+playback will essentially stall the pipeline at various random points.
 1864+.sp
 1865+For example, for intra\-only codecs are trivially backward playable, and
 1866+tools built around them may make efficient use of them (consider video
 1867+editors or camera viewers). mpv won\(aqt be efficient in this case, because it
 1868+uses its generic backward playback algorithm, that on top of it is not very
 1869+optimized.
 1870+.sp
 1871+If you just want to quickly go backward through the video and just show
 1872+"keyframes", just use forward playback, and hold down the left cursor key
 1873+(which on CLI with default config sends many small relative seek commands).
 1874+.sp
 1875+The implementation consists of mostly 3 parts:
 1876+.INDENT 7.0
 1877+.IP \(bu 2
 1878+Backward demuxing. This relies on the demuxer cache, so the demuxer cache
 1879+should (or must, didn\(aqt test it) be enabled, and its size will affect
 1880+performance. If the cache is too small or too large, quadratic runtime
 1881+behavior may result.
 1882+.IP \(bu 2
 1883+Backward decoding. The decoder library used (libavcodec) does not support
 1884+this. It is emulated by feeding bits of data in forward, putting the
 1885+result in a queue, returning the queue data to the VO in reverse, and
 1886+then starting over at an earlier position. This can require buffering an
 1887+extreme amount of decoded data, and also completely breaks pipelining.
 1888+.IP \(bu 2
 1889+Backward output. This is relatively simple, because the decoder returns
 1890+the frames in the needed order. However, this may cause various problems
 1891+because filters see audio and video going backward.
 1892+.UNINDENT
 1893+.sp
 1894+Known problems:
 1895+.INDENT 7.0
 1896+.IP \(bu 2
 1897+It\(aqs fragile. If anything doesn\(aqt work, random non\-useful behavior may
 1898+occur. In simple cases, the player will just play nonsense and artifacts.
 1899+In other cases, it may get stuck or heat the CPU. (Exceeding memory usage
 1900+significantly beyond the user\-set limits would be a bug, though.)
 1901+.IP \(bu 2
 1902+Performance and resource usage isn\(aqt good. In part this is inherent to
 1903+backward playback of normal media formats, and in parts due to
 1904+implementation choices and tradeoffs.
 1905+.IP \(bu 2
 1906+This is extremely reliant on good demuxer behavior. Although backward
 1907+demuxing requires no special demuxer support, it is required that the
 1908+demuxer performs seeks reliably, fulfills some specific requirements
 1909+about packet metadata, and has deterministic behavior.
 1910+.IP \(bu 2
 1911+Starting playback exactly from the end may or may not work, depending on
 1912+seeking behavior and file duration detection.
 1913+.IP \(bu 2
 1914+Some container formats, audio, and video codecs are not supported due to
 1915+their behavior. There is no list, and the player usually does not detect
 1916+them. Certain live streams (including TV captures) may exhibit problems
 1917+in particular, as well as some lossy audio codecs. h264 intra\-refresh is
 1918+known not to work due to problems with libavcodec. WAV and some other raw
 1919+audio formats tend to have problems \- there are hacks for dealing with
 1920+them, which may or may not work.
 1921+.IP \(bu 2
 1922+Backward demuxing of subtitles is not supported. Subtitle display still
 1923+works for some external text subtitle formats. (These are fully read into
 1924+memory, and only backward display is needed.) Text subtitles that are
 1925+cached in the subtitle renderer also have a chance to be displayed
 1926+correctly.
 1927+.IP \(bu 2
 1928+Some features dealing with playback of broken or hard to deal with files
 1929+will not work fully (such as timestamp correction).
 1930+.IP \(bu 2
 1931+If demuxer low level seeks (i.e. seeking the actual demuxer instead of
 1932+just within the demuxer cache) are performed by backward playback, the
 1933+created seek ranges may not join, because not enough overlap is achieved.
 1934+.IP \(bu 2
 1935+Trying to use this with hardware video decoding will probably exhaust all
 1936+your GPU memory and then crash a thing or two. Or it will fail because
 1937+\fB\-\-hwdec\-extra\-frames\fP will certainly be set too low.
 1938+.IP \(bu 2
 1939+Stream recording is broken. \fB\-\-stream\-record\fP may keep working if you
 1940+backward play within a cached region only.
 1941+.IP \(bu 2
 1942+Relative seeks may behave weird. Small seeks backward (towards smaller
 1943+time, i.e. \fBseek \-1\fP) may not really seek properly, and audio will
 1944+remain muted for a while. Using hr\-seek is recommended, which should have
 1945+none of these problems.
 1946+.IP \(bu 2
 1947+Some things are just weird. For example, while seek commands manipulate
 1948+playback time in the expected way (provided they work correctly), the
 1949+framestep commands are transposed. Backstepping will perform very
 1950+expensive work to step forward by 1 frame.
 1951+.UNINDENT
 1952+.sp
 1953+Tuning:
 1954+.INDENT 7.0
 1955+.IP \(bu 2
 1956+Remove all \fB\-\-vf\fP/\fB\-\-af\fP filters you have set. Disable hardware
 1957+decoding. Disable idiotic nonsense like SPDIF passthrough.
 1958+.IP \(bu 2
 1959+Increasing \fB\-\-video\-reversal\-buffer\fP might help if reversal queue
 1960+overflow is reported, which may happen in high bitrate video, or video
 1961+with large GOP. Hardware decoding mostly ignores this, and you need to
 1962+increase \fB\-\-hwdec\-extra\-frames\fP instead (until you get playback without
 1963+logged errors).
 1964+.IP \(bu 2
 1965+The demuxer cache is essential for backward demuxing. Make sure to set
 1966+\fB\-\-demuxer\-seekable\-cache\fP (or just use \fB\-\-cache\fP). The cache size
 1967+might matter. If it\(aqs too small, a queue overflow will be logged, and
 1968+backward playback cannot continue, or it performs too many low level
 1969+seeks. If it\(aqs too large, implementation tradeoffs may cause general
 1970+performance issues. Use \fB\-\-demuxer\-max\-bytes\fP to potentially increase
 1971+the amount of packets the demuxer layer can queue for reverse demuxing
 1972+(basically it\(aqs the \fB\-\-video\-reversal\-buffer\fP equivalent for the
 1973+demuxer layer).
 1974+.IP \(bu 2
 1975+\fB\-\-demuxer\-backward\-playback\-step\fP also factors into how many seeks may
 1976+be performed, and whether backward demuxing could break due to queue
 1977+overflow. If it\(aqs set too high, the backstep operation needs to search
 1978+through more packets all the time, even if the cache is large enough.
 1979+.IP \(bu 2
 1980+Setting \fB\-\-demuxer\-cache\-wait\fP may be useful to cache the entire file
 1981+into the demuxer cache. Set \fB\-\-demuxer\-max\-bytes\fP to a large size to
 1982+make sure it can read the entire cache; \fB\-\-demuxer\-max\-back\-bytes\fP
 1983+should also be set to a large size to prevent that tries to trim the
 1984+cache.
 1985+.IP \(bu 2
 1986+If audio artifacts are audible, even though the AO does not underrun,
 1987+increasing \fB\-\-audio\-backward\-overlap\fP might help in some cases.
 1988+.UNINDENT
 1989+.TP
 1990+.B \fB\-\-video\-reversal\-buffer=<bytesize>\fP, \fB\-\-audio\-reversal\-buffer=<bytesize>\fP
 1991+For backward decoding. Backward decoding decodes forward in steps, and then
 1992+reverses the decoder output. These options control the approximate maximum
 1993+amount of bytes that can be buffered. The main use of this is to avoid
 1994+unbounded resource usage; during normal backward playback, it\(aqs not supposed
 1995+to hit the limit, and if it does, it will drop frames and complain about it.
 1996+.sp
 1997+Use this option if you get reversal queue overflow errors during backward
 1998+playback. Increase the size until the warning disappears. Usually, the video
 1999+buffer will overflow first, especially if it\(aqs high resolution video.
 2000+.sp
 2001+This does not work correctly if video hardware decoding is used. The video
 2002+frame size will not include the referenced GPU and driver memory. Some
 2003+hardware decoders may also be limited by \fB\-\-hwdec\-extra\-frames\fP\&.
 2004+.sp
 2005+How large the queue size needs to be depends entirely on the way the media
 2006+was encoded. Audio typically requires a very small buffer, while video can
 2007+require excessively large buffers.
 2008+.sp
 2009+(Technically, this allows the last frame to exceed the limit. Also, this
 2010+does not account for other buffered frames, such as inside the decoder or
 2011+the video output.)
 2012+.sp
 2013+This does not affect demuxer cache behavior at all.
 2014+.sp
 2015+See \fB\-\-list\-options\fP for defaults and value range. \fB<bytesize>\fP options
 2016+accept suffixes such as \fBKiB\fP and \fBMiB\fP\&.
 2017+.TP
 2018+.B \fB\-\-video\-backward\-overlap=<auto|number>\fP, \fB\-\-audio\-backward\-overlap=<auto|number>\fP
 2019+Number of overlapping keyframe ranges to use for backward decoding (default:
 2020+auto) ("keyframe" to be understood as in the mpv/ffmpeg specific meaning).
 2021+Backward decoding works by forward decoding in small steps. Some codecs
 2022+cannot restart decoding from any packet (even if it\(aqs marked as seek point),
 2023+which becomes noticeable with backward decoding (in theory this is a problem
 2024+with seeking too, but \fB\-\-hr\-seek\-demuxer\-offset\fP can fix it for seeking).
 2025+In particular, MDCT based audio codecs are affected.
 2026+.sp
 2027+The solution is to feed a previous packet to the decoder each time, and then
 2028+discard the output. This option controls how many packets to feed. The
 2029+\fBauto\fP choice is currently hardcoded to 0 for video, and uses 1 for lossy
 2030+audio, 0 for lossless audio. For some specific lossy audio codecs, this is
 2031+set to 2.
 2032+.sp
 2033+\fB\-\-video\-backward\-overlap\fP can potentially handle intra\-refresh video,
 2034+depending on the exact conditions. You may have to use the
 2035+\fB\-\-vd\-lavc\-show\-all\fP option as well.
 2036+.TP
 2037+.B \fB\-\-video\-backward\-batch=<number>\fP, \fB\-\-audio\-backward\-batch=<number>\fP
 2038+Number of keyframe ranges to decode at once when backward decoding (default:
 2039+1 for video, 10 for audio). Another pointless tuning parameter nobody should
 2040+use. This should affect performance only. In theory, setting a number higher
 2041+than 1 for audio will reduce overhead due to less frequent backstep
 2042+operations and less redundant decoding work due to fewer decoded overlap
 2043+frames (see \fB\-\-audio\-backward\-overlap\fP). On the other hand, it requires
 2044+a larger reversal buffer, and could make playback less smooth due to
 2045+breaking pipelining (e.g. by decoding a lot, and then doing nothing for a
 2046+while).
 2047+.sp
 2048+It probably never makes sense to set \fB\-\-video\-backward\-batch\fP\&. But in
 2049+theory, it could help with intra\-only video codecs by reducing backstep
 2050+operations.
 2051+.TP
 2052+.B \fB\-\-demuxer\-backward\-playback\-step=<seconds>\fP
 2053+Number of seconds the demuxer should seek back to get new packets during
 2054+backward playback (default: 60). This is useful for tuning backward
 2055+playback, see \fB\-\-play\-dir\fP for details.
 2056+.sp
 2057+Setting this to a very low value or 0 may make the player think seeking is
 2058+broken, or may make it perform multiple seeks.
 2059+.sp
 2060+Setting this to a high value may lead to quadratic runtime behavior.
 2061+.UNINDENT
 2062+.SS Program Behavior
 2063+.INDENT 0.0
 2064+.TP
 2065+.B \fB\-\-help\fP, \fB\-\-h\fP
 2066+Show short summary of options.
 2067+.sp
 2068+You can also pass a string to this option, which will list all top\-level
 2069+options which contain the string in the name, e.g. \fB\-\-h=scale\fP for all
 2070+options that contain the word \fBscale\fP\&. The special string \fB*\fP lists
 2071+all top\-level options.
 2072+.TP
 2073+.B \fB\-v\fP
 2074+Increment verbosity level, one level for each \fB\-v\fP found on the command
 2075+line.
 2076+.TP
 2077+.B \fB\-\-version, \-V\fP
 2078+Print version string and exit.
 2079+.TP
 2080+.B \fB\-\-no\-config\fP
 2081+Do not load default configuration files. This prevents loading of both the
 2082+user\-level and system\-wide \fBmpv.conf\fP and \fBinput.conf\fP files. Other
 2083+configuration files are blocked as well, such as resume playback files.
 2084+.sp
 2085+\fBNOTE:\fP
 2086+.INDENT 7.0
 2087+.INDENT 3.5
 2088+Files explicitly requested by command line options, like
 2089+\fB\-\-include\fP or \fB\-\-use\-filedir\-conf\fP, will still be loaded.
 2090+.UNINDENT
 2091+.UNINDENT
 2092+.sp
 2093+See also: \fB\-\-config\-dir\fP\&.
 2094+.TP
 2095+.B \fB\-\-list\-options\fP
 2096+Prints all available options.
 2097+.TP
 2098+.B \fB\-\-list\-properties\fP
 2099+Print a list of the available properties.
 2100+.TP
 2101+.B \fB\-\-list\-protocols\fP
 2102+Print a list of the supported protocols.
 2103+.TP
 2104+.B \fB\-\-log\-file=<path>\fP
 2105+Opens the given path for writing, and print log messages to it. Existing
 2106+files will be truncated. The log level is at least \fB\-v \-v\fP, but
 2107+can be raised via \fB\-\-msg\-level\fP (the option cannot lower it below the
 2108+forced minimum log level).
 2109+.TP
 2110+.B \fB\-\-config\-dir=<path>\fP
 2111+Force a different configuration directory. If this is set, the given
 2112+directory is used to load configuration files, and all other configuration
 2113+directories are ignored. This means the global mpv configuration directory
 2114+as well as per\-user directories are ignored, and overrides through
 2115+environment variables (\fBMPV_HOME\fP) are also ignored.
 2116+.sp
 2117+Note that the \fB\-\-no\-config\fP option takes precedence over this option.
 2118+.TP
 2119+.B \fB\-\-save\-position\-on\-quit\fP
 2120+Always save the current playback position on quit. When this file is
 2121+played again later, the player will seek to the old playback position on
 2122+start. This does not happen if playback of a file is stopped in any other
 2123+way than quitting. For example, going to the next file in the playlist
 2124+will not save the position, and start playback at beginning the next time
 2125+the file is played.
 2126+.sp
 2127+This behavior is disabled by default, but is always available when quitting
 2128+the player with Shift+Q.
 2129+.TP
 2130+.B \fB\-\-watch\-later\-directory=<path>\fP
 2131+The directory in which to store the "watch later" temporary files.
 2132+.sp
 2133+The default is a subdirectory named "watch_later" underneath the
 2134+config directory (usually \fB~/.config/mpv/\fP).
 2135+.TP
 2136+.B \fB\-\-dump\-stats=<filename>\fP
 2137+Write certain statistics to the given file. The file is truncated on
 2138+opening. The file will contain raw samples, each with a timestamp. To
 2139+make this file into a readable, the script \fBTOOLS/stats\-conv.py\fP can be
 2140+used (which currently displays it as a graph).
 2141+.sp
 2142+This option is useful for debugging only.
 2143+.TP
 2144+.B \fB\-\-idle=<no|yes|once>\fP
 2145+Makes mpv wait idly instead of quitting when there is no file to play.
 2146+Mostly useful in input mode, where mpv can be controlled through input
 2147+commands. (Default: \fBno\fP)
 2148+.sp
 2149+\fBonce\fP will only idle at start and let the player close once the
 2150+first playlist has finished playing back.
 2151+.TP
 2152+.B \fB\-\-include=<configuration\-file>\fP
 2153+Specify configuration file to be parsed after the default ones.
 2154+.TP
 2155+.B \fB\-\-load\-scripts=<yes|no>\fP
 2156+If set to \fBno\fP, don\(aqt auto\-load scripts from the \fBscripts\fP
 2157+configuration subdirectory (usually \fB~/.config/mpv/scripts/\fP).
 2158+(Default: \fByes\fP)
 2159+.TP
 2160+.B \fB\-\-script=<filename>\fP, \fB\-\-scripts=file1.lua:file2.lua:...\fP
 2161+Load a Lua script. The second option allows you to load multiple scripts by
 2162+separating them with the path separator (\fB:\fP on Unix, \fB;\fP on Windows).
 2163+.sp
 2164+\fB\-\-scripts\fP is a path list option. See \fI\%List Options\fP for details.
 2165+.TP
 2166+.B \fB\-\-script\-opts=key1=value1,key2=value2,...\fP
 2167+Set options for scripts. A script can query an option by key. If an
 2168+option is used and what semantics the option value has depends entirely on
 2169+the loaded scripts. Values not claimed by any scripts are ignored.
 2170+.sp
 2171+This is a key/value list option. See \fI\%List Options\fP for details.
 2172+.TP
 2173+.B \fB\-\-merge\-files\fP
 2174+Pretend that all files passed to mpv are concatenated into a single, big
 2175+file. This uses timeline/EDL support internally.
 2176+.TP
 2177+.B \fB\-\-no\-resume\-playback\fP
 2178+Do not restore playback position from the \fBwatch_later\fP configuration
 2179+subdirectory (usually \fB~/.config/mpv/watch_later/\fP).
 2180+See \fBquit\-watch\-later\fP input command.
 2181+.TP
 2182+.B \fB\-\-resume\-playback\-check\-mtime\fP
 2183+Only restore the playback position from the \fBwatch_later\fP configuration
 2184+subdirectory (usually \fB~/.config/mpv/watch_later/\fP) if the file\(aqs
 2185+modification time is the same as at the time of saving. This may prevent
 2186+skipping forward in files with the same name which have different content.
 2187+(Default: \fBno\fP)
 2188+.TP
 2189+.B \fB\-\-profile=<profile1,profile2,...>\fP
 2190+Use the given profile(s), \fB\-\-profile=help\fP displays a list of the
 2191+defined profiles.
 2192+.TP
 2193+.B \fB\-\-reset\-on\-next\-file=<all|option1,option2,...>\fP
 2194+Normally, mpv will try to keep all settings when playing the next file on
 2195+the playlist, even if they were changed by the user during playback. (This
 2196+behavior is the opposite of MPlayer\(aqs, which tries to reset all settings
 2197+when starting next file.)
 2198+.sp
 2199+Default: Do not reset anything.
 2200+.sp
 2201+This can be changed with this option. It accepts a list of options, and
 2202+mpv will reset the value of these options on playback start to the initial
 2203+value. The initial value is either the default value, or as set by the
 2204+config file or command line.
 2205+.sp
 2206+In some cases, this might not work as expected. For example, \fB\-\-volume\fP
 2207+will only be reset if it is explicitly set in the config file or the
 2208+command line.
 2209+.sp
 2210+The special name \fBall\fP resets as many options as possible.
 2211+.sp
 2212+This is a string list option. See \fI\%List Options\fP for details.
 2213+.INDENT 7.0
 2214+.INDENT 3.5
 2215+.IP "Examples"
 2216+.INDENT 0.0
 2217+.IP \(bu 2
 2218+\fB\-\-reset\-on\-next\-file=pause\fP
 2219+Reset pause mode when switching to the next file.
 2220+.IP \(bu 2
 2221+\fB\-\-reset\-on\-next\-file=fullscreen,speed\fP
 2222+Reset fullscreen and playback speed settings if they were changed
 2223+during playback.
 2224+.IP \(bu 2
 2225+\fB\-\-reset\-on\-next\-file=all\fP
 2226+Try to reset all settings that were changed during playback.
 2227+.UNINDENT
 2228+.UNINDENT
 2229+.UNINDENT
 2230+.TP
 2231+.B \fB\-\-write\-filename\-in\-watch\-later\-config\fP
 2232+Prepend the watch later config files with the name of the file they refer
 2233+to. This is simply written as comment on the top of the file.
 2234+.sp
 2235+\fBWARNING:\fP
 2236+.INDENT 7.0
 2237+.INDENT 3.5
 2238+This option may expose privacy\-sensitive information and is thus
 2239+disabled by default.
 2240+.UNINDENT
 2241+.UNINDENT
 2242+.TP
 2243+.B \fB\-\-ignore\-path\-in\-watch\-later\-config\fP
 2244+Ignore path (i.e. use filename only) when using watch later feature.
 2245+(Default: disabled)
 2246+.TP
 2247+.B \fB\-\-show\-profile=<profile>\fP
 2248+Show the description and content of a profile. Lists all profiles if no
 2249+parameter is provided.
 2250+.TP
 2251+.B \fB\-\-use\-filedir\-conf\fP
 2252+Look for a file\-specific configuration file in the same directory as the
 2253+file that is being played. See \fI\%File\-specific Configuration Files\fP\&.
 2254+.sp
 2255+\fBWARNING:\fP
 2256+.INDENT 7.0
 2257+.INDENT 3.5
 2258+May be dangerous if playing from untrusted media.
 2259+.UNINDENT
 2260+.UNINDENT
 2261+.TP
 2262+.B \fB\-\-ytdl\fP, \fB\-\-no\-ytdl\fP
 2263+Enable the youtube\-dl hook\-script. It will look at the input URL, and will
 2264+play the video located on the website. This works with many streaming sites,
 2265+not just the one that the script is named after. This requires a recent
 2266+version of youtube\-dl to be installed on the system. (Enabled by default.)
 2267+.sp
 2268+If the script can\(aqt do anything with an URL, it will do nothing.
 2269+.sp
 2270+The \fBtry_ytdl_first\fP script option accepts a boolean \(aqyes\(aq or \(aqno\(aq, and if
 2271+\(aqyes\(aq will try parsing the URL with youtube\-dl first, instead of the default
 2272+where it\(aqs only after mpv failed to open it. This mostly depends on whether
 2273+most of your URLs need youtube\-dl parsing.
 2274+.sp
 2275+The \fBexclude\fP script option accepts a \fB|\fP\-separated list of URL patterns
 2276+which mpv should not use with youtube\-dl. The patterns are matched after
 2277+the \fBhttp(s)://\fP part of the URL.
 2278+.sp
 2279+\fB^\fP matches the beginning of the URL, \fB$\fP matches its end, and you
 2280+should use \fB%\fP before any of the characters \fB^$()%|,.[]*+\-?\fP to match
 2281+that character.
 2282+.INDENT 7.0
 2283+.INDENT 3.5
 2284+.IP "Examples"
 2285+.INDENT 0.0
 2286+.IP \(bu 2
 2287+\fB\-\-script\-opts=ytdl_hook\-exclude=\(aq^youtube%.com\(aq\fP
 2288+will exclude any URL that starts with \fBhttp://youtube.com\fP or
 2289+\fBhttps://youtube.com\fP\&.
 2290+.IP \(bu 2
 2291+\fB\-\-script\-opts=ytdl_hook\-exclude=\(aq%.mkv$|%.mp4$\(aq\fP
 2292+will exclude any URL that ends with \fB\&.mkv\fP or \fB\&.mp4\fP\&.
 2293+.UNINDENT
 2294+.UNINDENT
 2295+.UNINDENT
 2296+.sp
 2297+See more lua patterns here: \fI\%https://www.lua.org/manual/5.1/manual.html#5.4.1\fP
 2298+.sp
 2299+The \fBuse_manifests\fP script option makes mpv use the master manifest URL for
 2300+formats like HLS and DASH, if available, allowing for video/audio selection
 2301+in runtime. It\(aqs disabled ("no") by default for performance reasons.
 2302+.TP
 2303+.B \fB\-\-ytdl\-format=<best|worst|mp4|webm|...>\fP
 2304+Video format/quality that is directly passed to youtube\-dl. The possible
 2305+values are specific to the website and the video, for a given url the
 2306+available formats can be found with the command
 2307+\fByoutube\-dl \-\-list\-formats URL\fP\&. See youtube\-dl\(aqs documentation for
 2308+available aliases.
 2309+(Default: youtube\-dl\(aqs default, currently \fBbestvideo+bestaudio/best\fP)
 2310+.TP
 2311+.B \fB\-\-ytdl\-raw\-options=<key>=<value>[,<key>=<value>[,...]]\fP
 2312+Pass arbitrary options to youtube\-dl. Parameter and argument should be
 2313+passed as a key\-value pair. Options without argument must include \fB=\fP\&.
 2314+.sp
 2315+There is no sanity checking so it\(aqs possible to break things (i.e.
 2316+passing invalid parameters to youtube\-dl).
 2317+.sp
 2318+A proxy URL can be passed for youtube\-dl to use it in parsing the website.
 2319+This is useful for geo\-restricted URLs. After youtube\-dl parsing, some
 2320+URLs also require a proxy for playback, so this can pass that proxy
 2321+information to mpv. Take note that SOCKS proxies aren\(aqt supported and
 2322+https URLs also bypass the proxy. This is a limitation in FFmpeg.
 2323+.sp
 2324+This is a key/value list option. See \fI\%List Options\fP for details.
 2325+.INDENT 7.0
 2326+.INDENT 3.5
 2327+.IP "Example"
 2328+.INDENT 0.0
 2329+.IP \(bu 2
 2330+\fB\-\-ytdl\-raw\-options=username=user,password=pass\fP
 2331+.IP \(bu 2
 2332+\fB\-\-ytdl\-raw\-options=force\-ipv6=\fP
 2333+.IP \(bu 2
 2334+\fB\-\-ytdl\-raw\-options=proxy=[http://127.0.0.1:3128]\fP
 2335+.IP \(bu 2
 2336+\fB\-\-ytdl\-raw\-options\-append=proxy=http://127.0.0.1:3128\fP
 2337+.UNINDENT
 2338+.UNINDENT
 2339+.UNINDENT
 2340+.TP
 2341+.B \fB\-\-load\-stats\-overlay=<yes|no>\fP
 2342+Enable the builtin script that shows useful playback information on a key
 2343+binding (default: yes). By default, the \fBi\fP key is used (\fBI\fP to make
 2344+the overlay permanent).
 2345+.TP
 2346+.B \fB\-\-load\-osd\-console=<yes|no>\fP
 2347+Enable the builtin script that shows a console on a key binding and lets
 2348+you enter commands (default: yes). By default,. The \fB\'\fP key is used to
 2349+show the console, and \fBESC\fP to hide it again. (This is based on  a user
 2350+script called \fBrepl.lua\fP\&.)
 2351+.TP
 2352+.B \fB\-\-player\-operation\-mode=<cplayer|pseudo\-gui>\fP
 2353+For enabling "pseudo GUI mode", which means that the defaults for some
 2354+options are changed. This option should not normally be used directly, but
 2355+only by mpv internally, or mpv\-provided scripts, config files, or .desktop
 2356+files.
 2357+.UNINDENT
 2358+.SS Video
 2359+.INDENT 0.0
 2360+.TP
 2361+.B \fB\-\-vo=<driver>\fP
 2362+Specify the video output backend to be used. See \fI\%VIDEO OUTPUT DRIVERS\fP for
 2363+details and descriptions of available drivers.
 2364+.TP
 2365+.B \fB\-\-vd=<...>\fP
 2366+Specify a priority list of video decoders to be used, according to their
 2367+family and name. See \fB\-\-ad\fP for further details. Both of these options
 2368+use the same syntax and semantics; the only difference is that they
 2369+operate on different codec lists.
 2370+.sp
 2371+\fBNOTE:\fP
 2372+.INDENT 7.0
 2373+.INDENT 3.5
 2374+See \fB\-\-vd=help\fP for a full list of available decoders.
 2375+.UNINDENT
 2376+.UNINDENT
 2377+.TP
 2378+.B \fB\-\-vf=<filter1[=parameter1:parameter2:...],filter2,...>\fP
 2379+Specify a list of video filters to apply to the video stream. See
 2380+\fI\%VIDEO FILTERS\fP for details and descriptions of the available filters.
 2381+The option variants \fB\-\-vf\-add\fP, \fB\-\-vf\-pre\fP, \fB\-\-vf\-del\fP and
 2382+\fB\-\-vf\-clr\fP exist to modify a previously specified list, but you
 2383+should not need these for typical use.
 2384+.TP
 2385+.B \fB\-\-untimed\fP
 2386+Do not sleep when outputting video frames. Useful for benchmarks when used
 2387+with \fB\-\-no\-audio.\fP
 2388+.TP
 2389+.B \fB\-\-framedrop=<mode>\fP
 2390+Skip displaying some frames to maintain A/V sync on slow systems, or
 2391+playing high framerate video on video outputs that have an upper framerate
 2392+limit.
 2393+.sp
 2394+The argument selects the drop methods, and can be one of the following:
 2395+.INDENT 7.0
 2396+.TP
 2397+.B <no>
 2398+Disable any frame dropping. Not recommended, for testing only.
 2399+.TP
 2400+.B <vo>
 2401+Drop late frames on video output (default). This still decodes and
 2402+filters all frames, but doesn\(aqt render them on the VO. Drops are
 2403+indicated in the terminal status line as \fBDropped:\fP field.
 2404+.sp
 2405+In audio sync. mode, this drops frames that are outdated at the time of
 2406+display. If the decoder is too slow, in theory all frames would have to
 2407+be dropped (because all frames are too late) \- to avoid this, frame
 2408+dropping stops  if the effective framerate is below 10 FPS.
 2409+.sp
 2410+In display\-sync. modes (see \fB\-\-video\-sync\fP), this affects only how
 2411+A/V drops or repeats frames. If this mode is disabled, A/V desync will
 2412+in theory not affect video scheduling anymore (much like the
 2413+\fBdisplay\-resample\-desync\fP mode). However, even if disabled, frames
 2414+will still be skipped (i.e. dropped) according to the ratio between
 2415+video and display frequencies.
 2416+.sp
 2417+This is the recommended mode, and the default.
 2418+.TP
 2419+.B <decoder>
 2420+Old, decoder\-based framedrop mode. (This is the same as \fB\-\-framedrop=yes\fP
 2421+in mpv 0.5.x and before.) This tells the decoder to skip frames (unless
 2422+they are needed to decode future frames). May help with slow systems,
 2423+but can produce unwatchable choppy output, or even freeze the display
 2424+completely.
 2425+.sp
 2426+This uses a heuristic which may not make sense, and in  general cannot
 2427+achieve good results, because the decoder\(aqs frame dropping cannot be
 2428+controlled in a predictable manner. Not recommended.
 2429+.sp
 2430+Even if you want to use this, prefer \fBdecoder+vo\fP for better results.
 2431+.sp
 2432+The \fB\-\-vd\-lavc\-framedrop\fP option controls what frames to drop.
 2433+.TP
 2434+.B <decoder+vo>
 2435+Enable both modes. Not recommended. Better than just \fBdecoder\fP mode.
 2436+.UNINDENT
 2437+.sp
 2438+\fBNOTE:\fP
 2439+.INDENT 7.0
 2440+.INDENT 3.5
 2441+\fB\-\-vo=vdpau\fP has its own code for the \fBvo\fP framedrop mode. Slight
 2442+differences to other VOs are possible.
 2443+.UNINDENT
 2444+.UNINDENT
 2445+.TP
 2446+.B \fB\-\-video\-latency\-hacks=<yes|no>\fP
 2447+Enable some things which tend to reduce video latency by 1 or 2 frames
 2448+(default: no). Note that this option might be removed without notice once
 2449+the player\(aqs timing code does not inherently need to do these things
 2450+anymore.
 2451+.sp
 2452+This does:
 2453+.INDENT 7.0
 2454+.IP \(bu 2
 2455+Use the demuxer reported FPS for frame dropping. This avoids that the
 2456+player needs to decode 1 frame in advance, lowering total latency in
 2457+effect. This also means that if the demuxer reported FPS is wrong, or
 2458+the video filter chain changes FPS (e.g. deinterlacing), then it could
 2459+drop too many or not enough frames.
 2460+.IP \(bu 2
 2461+Disable waiting for the first video frame. Normally the player waits for
 2462+the first video frame to be fully rendered before starting playback
 2463+properly. Some VOs will lazily initialize stuff when rendering the first
 2464+frame, so if this is not done, there is some likeliness that the VO has
 2465+to drop some frames if rendering the first frame takes longer than needed.
 2466+.UNINDENT
 2467+.TP
 2468+.B \fB\-\-override\-display\-fps=<fps>\fP
 2469+Set the display FPS used with the \fB\-\-video\-sync=display\-*\fP modes. By
 2470+default, a detected value is used. Keep in mind that setting an incorrect
 2471+value (even if slightly incorrect) can ruin video playback. On multi\-monitor
 2472+systems, there is a chance that the detected value is from the wrong
 2473+monitor.
 2474+.sp
 2475+Set this option only if you have reason to believe the automatically
 2476+determined value is wrong.
 2477+.TP
 2478+.B \fB\-\-display\-fps=<fps>\fP
 2479+Deprecated alias for \fB\-\-override\-display\-fps\fP\&.
 2480+.TP
 2481+.B \fB\-\-hwdec=<api>\fP
 2482+Specify the hardware video decoding API that should be used if possible.
 2483+Whether hardware decoding is actually done depends on the video codec. If
 2484+hardware decoding is not possible, mpv will fall back on software decoding.
 2485+.sp
 2486+Hardware decoding is not enabled by default, because it is typically an
 2487+additional source of errors. It is worth using only if your CPU is too
 2488+slow to decode a specific video.
 2489+.sp
 2490+\fBNOTE:\fP
 2491+.INDENT 7.0
 2492+.INDENT 3.5
 2493+Use the \fBCtrl+h\fP shortcut to toggle hardware decoding at runtime. It
 2494+toggles this option between \fBauto\fP and \fBno\fP\&.
 2495+.sp
 2496+Always enabling HW decoding by putting it into the config file is
 2497+discouraged. If you use the Ubuntu package, delete \fB/etc/mpv/mpv.conf\fP,
 2498+as the package tries to enable HW decoding by default by setting
 2499+\fBhwdec=vaapi\fP (which is less than ideal, and may even cause
 2500+sub\-optimal wrappers to be used). Or at least change it to
 2501+\fBhwdec=auto\-safe\fP\&.
 2502+.UNINDENT
 2503+.UNINDENT
 2504+.sp
 2505+Use one of the auto modes if you want to enable hardware decoding.
 2506+Explicitly selecting the mode is mostly meant for testing and debugging.
 2507+It\(aqs a bad idea to put explicit selection into the config file if you
 2508+want thing to just keep working after updates and so on.
 2509+.sp
 2510+\fBNOTE:\fP
 2511+.INDENT 7.0
 2512+.INDENT 3.5
 2513+Even if enabled, hardware decoding is still only white\-listed for some
 2514+codecs. See \fB\-\-hwdec\-codecs\fP to enable hardware decoding in more cases.
 2515+.UNINDENT
 2516+.UNINDENT
 2517+.INDENT 7.0
 2518+.INDENT 3.5
 2519+.IP "Which method to choose?"
 2520+.INDENT 0.0
 2521+.IP \(bu 2
 2522+If you only want to enable hardware decoding at runtime, don\(aqt set the
 2523+parameter, or put \fBhwdec=no\fP into your \fBmpv.conf\fP (relevant on
 2524+distros which force\-enable it by default, such as on Ubuntu). Use the
 2525+\fBCtrl+h\fP default binding to enable it at runtime.
 2526+.IP \(bu 2
 2527+If you\(aqre not sure, but want hardware decoding always enabled by
 2528+default, put \fBhwdec=auto\-safe\fP into your \fBmpv.conf\fP, and
 2529+acknowledge that this use case is not "really" supported and may cause
 2530+problems.
 2531+.IP \(bu 2
 2532+If you want to test available hardware decoding methods, pass
 2533+\fB\-\-hwdec=auto \-\-hwdec\-codecs=all\fP and look at the terminal output.
 2534+.IP \(bu 2
 2535+If you\(aqre a developer, or want to perform elaborate tests, you may
 2536+need any of the other possible option values.
 2537+.UNINDENT
 2538+.UNINDENT
 2539+.UNINDENT
 2540+.sp
 2541+\fB<api>\fP can be one of the following:
 2542+.INDENT 7.0
 2543+.TP
 2544+.B no
 2545+always use software decoding (default)
 2546+.TP
 2547+.B auto
 2548+forcibly enable any hw decoder found (see below)
 2549+.TP
 2550+.B yes
 2551+exactly the same as \fBauto\fP
 2552+.TP
 2553+.B auto\-safe
 2554+enable any whitelisted hw decoder (see below)
 2555+.TP
 2556+.B auto\-copy
 2557+enable best hw decoder with copy\-back (see below)
 2558+.TP
 2559+.B vdpau
 2560+requires \fB\-\-vo=gpu\fP with X11, or \fB\-\-vo=vdpau\fP (Linux only)
 2561+.TP
 2562+.B vdpau\-copy
 2563+copies video back into system RAM (Linux with some GPUs only)
 2564+.TP
 2565+.B vaapi
 2566+requires \fB\-\-vo=gpu\fP or \fB\-\-vo=vaapi\fP (Linux only)
 2567+.TP
 2568+.B vaapi\-copy
 2569+copies video back into system RAM (Linux with some GPUs only)
 2570+.TP
 2571+.B videotoolbox
 2572+requires \fB\-\-vo=gpu\fP (OS X 10.8 and up),
 2573+or \fB\-\-vo=libmpv\fP (iOS 9.0 and up)
 2574+.TP
 2575+.B videotoolbox\-copy
 2576+copies video back into system RAM (OS X 10.8 or iOS 9.0 and up)
 2577+.TP
 2578+.B dxva2
 2579+requires \fB\-\-vo=gpu\fP with \fB\-\-gpu\-context=d3d11\fP,
 2580+\fB\-\-gpu\-context=angle\fP or \fB\-\-gpu\-context=dxinterop\fP
 2581+(Windows only)
 2582+.TP
 2583+.B dxva2\-copy
 2584+copies video back to system RAM (Windows only)
 2585+.TP
 2586+.B d3d11va
 2587+requires \fB\-\-vo=gpu\fP with \fB\-\-gpu\-context=d3d11\fP or
 2588+\fB\-\-gpu\-context=angle\fP (Windows 8+ only)
 2589+.TP
 2590+.B d3d11va\-copy
 2591+copies video back to system RAM (Windows 8+ only)
 2592+.TP
 2593+.B mediacodec
 2594+requires \fB\-\-vo=mediacodec_embed\fP (Android only)
 2595+.TP
 2596+.B mediacodec\-copy
 2597+copies video back to system RAM (Android only)
 2598+.TP
 2599+.B mmal
 2600+requires \fB\-\-vo=gpu\fP (Raspberry Pi only \- default if available)
 2601+.TP
 2602+.B mmal\-copy
 2603+copies video back to system RAM (Raspberry Pi only)
 2604+.TP
 2605+.B nvdec
 2606+requires \fB\-\-vo=gpu\fP (Any platform CUDA is available)
 2607+.TP
 2608+.B nvdec\-copy
 2609+copies video back to system RAM (Any platform CUDA is available)
 2610+.TP
 2611+.B cuda
 2612+requires \fB\-\-vo=gpu\fP (Any platform CUDA is available)
 2613+.TP
 2614+.B cuda\-copy
 2615+copies video back to system RAM (Any platform CUDA is available)
 2616+.TP
 2617+.B crystalhd
 2618+copies video back to system RAM (Any platform supported by hardware)
 2619+.TP
 2620+.B rkmpp
 2621+requires \fB\-\-vo=gpu\fP (some RockChip devices only)
 2622+.UNINDENT
 2623+.sp
 2624+\fBauto\fP tries to automatically enable hardware decoding using the first
 2625+available method. This still depends what VO you are using. For example,
 2626+if you are not using \fB\-\-vo=gpu\fP or \fB\-\-vo=vdpau\fP, vdpau decoding will
 2627+never be enabled. Also note that if the first found method doesn\(aqt actually
 2628+work, it will always fall back to software decoding, instead of trying the
 2629+next method (might matter on some Linux systems).
 2630+.sp
 2631+\fBauto\-safe\fP is similar to \fBauto\fP, but allows only whitelisted methods
 2632+that are considered "safe". This is supposed to be a reasonable way to
 2633+enable hardware decdoding by default in a config file (even though you
 2634+shouldn\(aqt do that anyway; prefer runtime enabling with \fBCtrl+h\fP). Unlike
 2635+\fBauto\fP, this will not try to enable unknown or known\-to\-be\-bad methods. In
 2636+addition, this may disable hardware decoding in other situations when it\(aqs
 2637+known to cause problems, but currently this mechanism is quite primitive.
 2638+(As an example for something that still causes problems: certain
 2639+combinations of HEVC and Intel chips on Windows tend to cause mpv to crash,
 2640+most likely due to driver bugs.)
 2641+.sp
 2642+\fBauto\-copy\-safe\fP selects the union of methods selected with \fBauto\-safe\fP
 2643+and \fBauto\-copy\fP\&.
 2644+.sp
 2645+\fBauto\-copy\fP selects only modes that copy the video data back to system
 2646+memory after decoding. This selects modes like \fBvaapi\-copy\fP (and so on).
 2647+If none of these work, hardware decoding is disabled. This mode is usually
 2648+guaranteed to incur no additional quality loss compared to software
 2649+decoding (assuming modern codecs and an error free video stream), and will
 2650+allow CPU processing with video filters. This mode works with all video
 2651+filters and VOs.
 2652+.sp
 2653+Because these copy the decoded video back to system RAM, they\(aqre often less
 2654+efficient than the direct modes, and may not help too much over software
 2655+decoding.
 2656+.sp
 2657+\fBNOTE:\fP
 2658+.INDENT 7.0
 2659+.INDENT 3.5
 2660+Most non\-copy methods only work with the OpenGL GPU backend. Currently,
 2661+only the \fBvaapi\fP, \fBnvdec\fP and \fBcuda\fP methods work with Vulkan.
 2662+.UNINDENT
 2663+.UNINDENT
 2664+.sp
 2665+The \fBvaapi\fP mode, if used with \fB\-\-vo=gpu\fP, requires Mesa 11, and most
 2666+likely works with Intel and AMD GPUs only. It also requires the opengl EGL
 2667+backend.
 2668+.sp
 2669+\fBnvdec\fP and \fBnvdec\-copy\fP are the newest, and recommended method to do
 2670+hardware decoding on Nvidia GPUs.
 2671+.sp
 2672+\fBcuda\fP and \fBcuda\-copy\fP are an older implementation of hardware decoding
 2673+on Nvidia GPUs that uses Nvidia\(aqs bitstream parsers rather than FFmpeg\(aqs.
 2674+This can lead to feature deficiencies, such as incorrect playback of HDR
 2675+content, and \fBnvdec\fP/\fBnvdec\-copy\fP should always be preferred unless you
 2676+specifically need Nvidia\(aqs deinterlacing algorithms. To use this
 2677+deinterlacing you must pass the option:
 2678+\fBvd\-lavc\-o=deint=[weave|bob|adaptive]\fP\&.
 2679+Pass \fBweave\fP (or leave the option unset) to not attempt any
 2680+deinterlacing.
 2681+.INDENT 7.0
 2682+.INDENT 3.5
 2683+.IP "Quality reduction with hardware decoding"
 2684+.sp
 2685+In theory, hardware decoding does not reduce video quality (at least
 2686+for the codecs h264 and HEVC). However, due to restrictions in video
 2687+output APIs, as well as bugs in the actual hardware decoders, there can
 2688+be some loss, or even blatantly incorrect results.
 2689+.sp
 2690+In some cases, RGB conversion is forced, which means the RGB conversion
 2691+is performed by the hardware decoding API, instead of the shaders
 2692+used by \fB\-\-vo=gpu\fP\&. This means certain colorspaces may not display
 2693+correctly, and certain filtering (such as debanding) cannot be applied
 2694+in an ideal way. This will also usually force the use of low quality
 2695+chroma scalers instead of the one specified by \fB\-\-cscale\fP\&. In other
 2696+cases, hardware decoding can also reduce the bit depth of the decoded
 2697+image, which can introduce banding or precision loss for 10\-bit files.
 2698+.sp
 2699+\fBvdpau\fP always does RGB conversion in hardware, which does not
 2700+support newer colorspaces like BT.2020 correctly. However, \fBvdpau\fP
 2701+doesn\(aqt support 10 bit or HDR encodings, so these limitations are
 2702+unlikely to be relevant.
 2703+.sp
 2704+\fBvaapi\fP and \fBd3d11va\fP are safe. Enabling deinterlacing (or simply
 2705+their respective post\-processing filters) will possibly at least reduce
 2706+color quality by converting the output to a 8 bit format.
 2707+.sp
 2708+\fBdxva2\fP is not safe. It appears to always use BT.601 for forced RGB
 2709+conversion, but actual behavior depends on the GPU drivers. Some drivers
 2710+appear to convert to limited range RGB, which gives a faded appearance.
 2711+In addition to driver\-specific behavior, global system settings might
 2712+affect this additionally. This can give incorrect results even with
 2713+completely ordinary video sources.
 2714+.sp
 2715+\fBrpi\fP always uses the hardware overlay renderer, even with
 2716+\fB\-\-vo=gpu\fP\&.
 2717+.sp
 2718+\fBcuda\fP should usually be safe, but depending on how a file/stream
 2719+has been mixed, it has been reported to corrupt the timestamps causing
 2720+glitched, flashing frames. It can also sometimes cause massive
 2721+framedrops for unknown reasons. Caution is advised, and \fBnvdec\fP
 2722+should always be preferred.
 2723+.sp
 2724+\fBcrystalhd\fP is not safe. It always converts to 4:2:2 YUV, which
 2725+may be lossy, depending on how chroma sub\-sampling is done during
 2726+conversion. It also discards the top left pixel of each frame for
 2727+some reason.
 2728+.sp
 2729+All other methods, in particular the copy\-back methods (like
 2730+\fBdxva2\-copy\fP etc.) should hopefully be safe, although they can still
 2731+cause random decoding issues. At the very least, they shouldn\(aqt affect
 2732+the colors of the image.
 2733+.sp
 2734+In particular, \fBauto\-copy\fP will only select "safe" modes
 2735+(although potentially slower than other methods), but there\(aqs still no
 2736+guarantee the chosen hardware decoder will actually work correctly.
 2737+.sp
 2738+In general, it\(aqs very strongly advised to avoid hardware decoding
 2739+unless \fBabsolutely\fP necessary, i.e. if your CPU is insufficient to
 2740+decode the file in questions. If you run into any weird decoding issues,
 2741+frame glitches or discoloration, and you have \fB\-\-hwdec\fP turned on,
 2742+the first thing you should try is disabling it.
 2743+.UNINDENT
 2744+.UNINDENT
 2745+.TP
 2746+.B \fB\-\-gpu\-hwdec\-interop=<auto|all|no|name>\fP
 2747+This option is for troubleshooting hwdec interop issues. Since it\(aqs a
 2748+debugging option, its semantics may change at any time.
 2749+.sp
 2750+This is useful for the \fBgpu\fP and \fBlibmpv\fP VOs for selecting which
 2751+hwdec interop context to use exactly. Effectively it also can be used
 2752+to block loading of certain backends.
 2753+.sp
 2754+If set to \fBauto\fP (default), the behavior depends on the VO: for \fBgpu\fP,
 2755+it does nothing, and the interop context is loaded on demand (when the
 2756+decoder probes for \fB\-\-hwdec\fP support). For \fBlibmpv\fP, which has
 2757+has no on\-demand loading, this is equivalent to \fBall\fP\&.
 2758+.sp
 2759+The empty string is equivalent to \fBauto\fP\&.
 2760+.sp
 2761+If set to \fBall\fP, it attempts to load all interop contexts at GL context
 2762+creation time.
 2763+.sp
 2764+Other than that, a specific backend can be set, and the list of them can
 2765+be queried with \fBhelp\fP (mpv CLI only).
 2766+.sp
 2767+Runtime changes to this are ignored (the current option value is used
 2768+whenever the renderer is created).
 2769+.sp
 2770+The old aliases \fB\-\-opengl\-hwdec\-interop\fP and \fB\-\-hwdec\-preload\fP are
 2771+barely related to this anymore, but will be somewhat compatible in some
 2772+cases.
 2773+.TP
 2774+.B \fB\-\-hwdec\-extra\-frames=<N>\fP
 2775+Number of GPU frames hardware decoding should preallocate (default: see
 2776+\fB\-\-list\-options\fP output). If this is too low, frame allocation may fail
 2777+during decoding, and video frames might get dropped and/or corrupted.
 2778+Setting it too high simply wastes GPU memory and has no advantages.
 2779+.sp
 2780+This value is used only for hardware decoding APIs which require
 2781+preallocating surfaces (known examples include \fBd3d11va\fP and \fBvaapi\fP).
 2782+For other APIs, frames are allocated as needed. The details depend on the
 2783+libavcodec implementations of the hardware decoders.
 2784+.sp
 2785+The required number of surfaces depends on dynamic runtime situations. The
 2786+default is a fixed value that is thought to be sufficient for most uses. But
 2787+in certain situations, it may not be enough.
 2788+.TP
 2789+.B \fB\-\-hwdec\-image\-format=<name>\fP
 2790+Set the internal pixel format used by hardware decoding via \fB\-\-hwdec\fP
 2791+(default \fBno\fP). The special value \fBno\fP selects an implementation
 2792+specific standard format. Most decoder implementations support only one
 2793+format, and will fail to initialize if the format is not supported.
 2794+.sp
 2795+Some implementations might support multiple formats. In particular,
 2796+videotoolbox is known to require \fBuyvy422\fP for good performance on some
 2797+older hardware. d3d11va can always use \fByuv420p\fP, which uses an opaque
 2798+format, with likely no advantages.
 2799+.TP
 2800+.B \fB\-\-cuda\-decode\-device=<auto|0..>\fP
 2801+Choose the GPU device used for decoding when using the \fBcuda\fP or
 2802+\fBnvdec\fP hwdecs with the OpenGL GPU backend, and with the \fBcuda\-copy\fP
 2803+or \fBnvdec\-copy\fP hwdecs in all cases.
 2804+.sp
 2805+For the OpenGL GPU backend, the default device used for decoding is the one
 2806+being used to provide \fBgpu\fP output (and in the vast majority of cases,
 2807+only one GPU will be present).
 2808+.sp
 2809+For the \fBcopy\fP hwdecs, the default device will be the first device
 2810+enumerated by the CUDA libraries \- however that is done.
 2811+.sp
 2812+For the Vulkan GPU backend, decoding must always happen on the display
 2813+device, and this option has no effect.
 2814+.TP
 2815+.B \fB\-\-vaapi\-device=<device file>\fP
 2816+Choose the DRM device for \fBvaapi\-copy\fP\&. This should be the path to a
 2817+DRM device file. (Default: \fB/dev/dri/renderD128\fP)
 2818+.TP
 2819+.B \fB\-\-panscan=<0.0\-1.0>\fP
 2820+Enables pan\-and\-scan functionality (cropping the sides of e.g. a 16:9
 2821+video to make it fit a 4:3 display without black bands). The range
 2822+controls how much of the image is cropped. May not work with all video
 2823+output drivers.
 2824+.sp
 2825+This option has no effect if \fB\-\-video\-unscaled\fP option is used.
 2826+.TP
 2827+.B \fB\-\-video\-aspect\-override=<ratio|no>\fP
 2828+Override video aspect ratio, in case aspect information is incorrect or
 2829+missing in the file being played.
 2830+.sp
 2831+These values have special meaning:
 2832+.INDENT 7.0
 2833+.TP
 2834+.B 0
 2835+disable aspect ratio handling, pretend the video has square pixels
 2836+.TP
 2837+.B no
 2838+same as \fB0\fP
 2839+.TP
 2840+.B \-1
 2841+use the video stream or container aspect (default)
 2842+.UNINDENT
 2843+.sp
 2844+But note that handling of these special values might change in the future.
 2845+.INDENT 7.0
 2846+.INDENT 3.5
 2847+.IP "Examples"
 2848+.INDENT 0.0
 2849+.IP \(bu 2
 2850+\fB\-\-video\-aspect\-override=4:3\fP  or \fB\-\-video\-aspect\-override=1.3333\fP
 2851+.IP \(bu 2
 2852+\fB\-\-video\-aspect\-override=16:9\fP or \fB\-\-video\-aspect\-override=1.7777\fP
 2853+.IP \(bu 2
 2854+\fB\-\-no\-video\-aspect\-override\fP or \fB\-\-video\-aspect\-override=no\fP
 2855+.UNINDENT
 2856+.UNINDENT
 2857+.UNINDENT
 2858+.TP
 2859+.B \fB\-\-video\-aspect\-method=<bitstream|container>\fP
 2860+This sets the default video aspect determination method (if the aspect is
 2861+_not_ overridden by the user with \fB\-\-video\-aspect\-override\fP or others).
 2862+.INDENT 7.0
 2863+.TP
 2864+.B container
 2865+Strictly prefer the container aspect ratio. This is apparently
 2866+the default behavior with VLC, at least with Matroska. Note that
 2867+if the container has no aspect ratio set, the behavior is the
 2868+same as with bitstream.
 2869+.TP
 2870+.B bitstream
 2871+Strictly prefer the bitstream aspect ratio, unless the bitstream
 2872+aspect ratio is not set. This is apparently the default behavior
 2873+with XBMC/kodi, at least with Matroska.
 2874+.UNINDENT
 2875+.sp
 2876+The current default for mpv is \fBcontainer\fP\&.
 2877+.sp
 2878+Normally you should not set this. Try the various choices if you encounter
 2879+video that has the wrong aspect ratio in mpv, but seems to be correct in
 2880+other players.
 2881+.TP
 2882+.B \fB\-\-video\-unscaled=<no|yes|downscale\-big>\fP
 2883+Disable scaling of the video. If the window is larger than the video,
 2884+black bars are added. Otherwise, the video is cropped, unless the option
 2885+is set to \fBdownscale\-big\fP, in which case the video is fit to window. The
 2886+video still can be influenced by the other \fB\-\-video\-...\fP options. This
 2887+option disables the effect of \fB\-\-panscan\fP\&.
 2888+.sp
 2889+Note that the scaler algorithm may still be used, even if the video isn\(aqt
 2890+scaled. For example, this can influence chroma conversion. The video will
 2891+also still be scaled in one dimension if the source uses non\-square pixels
 2892+(e.g. anamorphic widescreen DVDs).
 2893+.sp
 2894+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
 2895+.TP
 2896+.B \fB\-\-video\-pan\-x=<value>\fP, \fB\-\-video\-pan\-y=<value>\fP
 2897+Moves the displayed video rectangle by the given value in the X or Y
 2898+direction. The unit is in fractions of the size of the scaled video (the
 2899+full size, even if parts of the video are not visible due to panscan or
 2900+other options).
 2901+.sp
 2902+For example, displaying a 1280x720 video fullscreen on a 1680x1050 screen
 2903+with \fB\-\-video\-pan\-x=\-0.1\fP would move the video 168 pixels to the left
 2904+(making 128 pixels of the source video invisible).
 2905+.sp
 2906+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
 2907+.TP
 2908+.B \fB\-\-video\-rotate=<0\-359|no>\fP
 2909+Rotate the video clockwise, in degrees. Currently supports 90° steps only.
 2910+If \fBno\fP is given, the video is never rotated, even if the file has
 2911+rotation metadata. (The rotation value is added to the rotation metadata,
 2912+which means the value \fB0\fP would rotate the video according to the
 2913+rotation metadata.)
 2914+.TP
 2915+.B \fB\-\-video\-zoom=<value>\fP
 2916+Adjust the video display scale factor by the given value. The parameter is
 2917+given log 2. For example, \fB\-\-video\-zoom=0\fP is unscaled,
 2918+\fB\-\-video\-zoom=1\fP is twice the size, \fB\-\-video\-zoom=\-2\fP is one fourth of
 2919+the size, and so on.
 2920+.sp
 2921+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
 2922+.TP
 2923+.B \fB\-\-video\-align\-x=<\-1\-1>\fP, \fB\-\-video\-align\-y=<\-1\-1>\fP
 2924+Moves the video rectangle within the black borders, which are usually added
 2925+to pad the video to screen if video and screen aspect ratios are different.
 2926+\fB\-\-video\-align\-y=\-1\fP would move the video to the top of the screen
 2927+(leaving a border only on the bottom), a value of \fB0\fP centers it
 2928+(default), and a value of \fB1\fP would put the video at the bottom of the
 2929+screen.
 2930+.sp
 2931+If video and screen aspect match perfectly, these options do nothing.
 2932+.sp
 2933+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
 2934+.TP
 2935+.B \fB\-\-video\-margin\-ratio\-left=<val>\fP, \fB\-\-video\-margin\-ratio\-right=<val>\fP, \fB\-\-video\-margin\-ratio\-top=<val>\fP, \fB\-\-video\-margin\-ratio\-bottom=<val>\fP
 2936+Set extra video margins on each border (default: 0). Each value is a ratio
 2937+of the window size, using a range 0.0\-1.0. For example, setting the option
 2938+\fB\-\-video\-margin\-ratio\-right=0.2\fP at a window size of 1000 pixels will add
 2939+a 200 pixels border on the right side of the window.
 2940+.sp
 2941+The video is "boxed" by these margins. The window size is not changed. In
 2942+particular it does not enlarge the window, and the margins will cause the
 2943+video to be downscaled by default. This may or may not change in the future.
 2944+.sp
 2945+The margins are applied after 90° video rotation, but before any other video
 2946+transformations.
 2947+.sp
 2948+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
 2949+.sp
 2950+Subtitles still may use the margins, depending on \fB\-\-sub\-use\-margins\fP and
 2951+similar options.
 2952+.sp
 2953+These options were created for the OSC. Some odd decisions, such as making
 2954+the margin values a ratio (instead of pixels), were made for the sake of
 2955+the OSC. It\(aqs possible that these options may be replaced by ones that are
 2956+more generally useful. The behavior of these options may change to fit
 2957+OSC requirements better, too.
 2958+.TP
 2959+.B \fB\-\-correct\-pts\fP, \fB\-\-no\-correct\-pts\fP
 2960+\fB\-\-no\-correct\-pts\fP switches mpv to a mode where video timing is
 2961+determined using a fixed framerate value (either using the \fB\-\-fps\fP
 2962+option, or using file information). Sometimes, files with very broken
 2963+timestamps can be played somewhat well in this mode. Note that video
 2964+filters, subtitle rendering, seeking (including hr\-seeks and backstepping),
 2965+and audio synchronization can be completely broken in this mode.
 2966+.TP
 2967+.B \fB\-\-fps=<float>\fP
 2968+Override video framerate. Useful if the original value is wrong or missing.
 2969+.sp
 2970+\fBNOTE:\fP
 2971+.INDENT 7.0
 2972+.INDENT 3.5
 2973+Works in \fB\-\-no\-correct\-pts\fP mode only.
 2974+.UNINDENT
 2975+.UNINDENT
 2976+.TP
 2977+.B \fB\-\-deinterlace=<yes|no>\fP
 2978+Enable or disable interlacing (default: no).
 2979+Interlaced video shows ugly comb\-like artifacts, which are visible on
 2980+fast movement. Enabling this typically inserts the yadif video filter in
 2981+order to deinterlace the video, or lets the video output apply deinterlacing
 2982+if supported.
 2983+.sp
 2984+This behaves exactly like the \fBdeinterlace\fP input property (usually
 2985+mapped to \fBd\fP).
 2986+.sp
 2987+Keep in mind that this \fBwill\fP conflict with manually inserted
 2988+deinterlacing filters, unless you take care. (Since mpv 0.27.0, even the
 2989+hardware deinterlace filters will conflict. Also since that version,
 2990+\fB\-\-deinterlace=auto\fP was removed, which used to mean that the default
 2991+interlacing option of possibly inserted video filters was used.)
 2992+.sp
 2993+Note that this will make video look worse if it\(aqs not actually interlaced.
 2994+.TP
 2995+.B \fB\-\-frames=<number>\fP
 2996+Play/convert only first \fB<number>\fP video frames, then quit.
 2997+.sp
 2998+\fB\-\-frames=0\fP loads the file, but immediately quits before initializing
 2999+playback. (Might be useful for scripts which just want to determine some
 3000+file properties.)
 3001+.sp
 3002+For audio\-only playback, any value greater than 0 will quit playback
 3003+immediately after initialization. The value 0 works as with video.
 3004+.TP
 3005+.B \fB\-\-video\-output\-levels=<outputlevels>\fP
 3006+RGB color levels used with YUV to RGB conversion. Normally, output devices
 3007+such as PC monitors use full range color levels. However, some TVs and
 3008+video monitors expect studio RGB levels. Providing full range output to a
 3009+device expecting studio level input results in crushed blacks and whites,
 3010+the reverse in dim gray blacks and dim whites.
 3011+.sp
 3012+Not all VOs support this option. Some will silently ignore it.
 3013+.sp
 3014+Available color ranges are:
 3015+.INDENT 7.0
 3016+.TP
 3017+.B auto
 3018+automatic selection (equals to full range) (default)
 3019+.TP
 3020+.B limited
 3021+limited range (16\-235 per component), studio levels
 3022+.TP
 3023+.B full
 3024+full range (0\-255 per component), PC levels
 3025+.UNINDENT
 3026+.sp
 3027+\fBNOTE:\fP
 3028+.INDENT 7.0
 3029+.INDENT 3.5
 3030+It is advisable to use your graphics driver\(aqs color range option
 3031+instead, if available.
 3032+.UNINDENT
 3033+.UNINDENT
 3034+.TP
 3035+.B \fB\-\-hwdec\-codecs=<codec1,codec2,...|all>\fP
 3036+Allow hardware decoding for a given list of codecs only. The special value
 3037+\fBall\fP always allows all codecs.
 3038+.sp
 3039+You can get the list of allowed codecs with \fBmpv \-\-vd=help\fP\&. Remove the
 3040+prefix, e.g. instead of \fBlavc:h264\fP use \fBh264\fP\&.
 3041+.sp
 3042+By default, this is set to \fBh264,vc1,hevc,vp9\fP\&. Note that
 3043+the hardware acceleration special codecs like \fBh264_vdpau\fP are not
 3044+relevant anymore, and in fact have been removed from Libav in this form.
 3045+.sp
 3046+This is usually only needed with broken GPUs, where a codec is reported
 3047+as supported, but decoding causes more problems than it solves.
 3048+.INDENT 7.0
 3049+.INDENT 3.5
 3050+.IP "Example"
 3051+.INDENT 0.0
 3052+.TP
 3053+.B \fBmpv \-\-hwdec=vdpau \-\-vo=vdpau \-\-hwdec\-codecs=h264,mpeg2video\fP
 3054+Enable vdpau decoding for h264 and mpeg2 only.
 3055+.UNINDENT
 3056+.UNINDENT
 3057+.UNINDENT
 3058+.TP
 3059+.B \fB\-\-vd\-lavc\-check\-hw\-profile=<yes|no>\fP
 3060+Check hardware decoder profile (default: yes). If \fBno\fP is set, the
 3061+highest profile of the hardware decoder is unconditionally selected, and
 3062+decoding is forced even if the profile of the video is higher than that.
 3063+The result is most likely broken decoding, but may also help if the
 3064+detected or reported profiles are somehow incorrect.
 3065+.TP
 3066+.B \fB\-\-vd\-lavc\-software\-fallback=<yes|no|N>\fP
 3067+Fallback to software decoding if the hardware\-accelerated decoder fails
 3068+(default: 3). If this is a number, then fallback will be triggered if
 3069+N frames fail to decode in a row. 1 is equivalent to \fByes\fP\&.
 3070+.sp
 3071+Setting this to a higher number might break the playback start fallback: if
 3072+a fallback happens, parts of the file will be skipped, approximately by to
 3073+the number of packets that could not be decoded. Values below an unspecified
 3074+count will not have this problem, because mpv retains the packets.
 3075+.TP
 3076+.B \fB\-\-vd\-lavc\-dr=<yes|no>\fP
 3077+Enable direct rendering (default: yes). If this is set to \fByes\fP, the
 3078+video will be decoded directly to GPU video memory (or staging buffers).
 3079+This can speed up video upload, and may help with large resolutions or
 3080+slow hardware. This works only with the following VOs:
 3081+.INDENT 7.0
 3082+.INDENT 3.5
 3083+.INDENT 0.0
 3084+.IP \(bu 2
 3085+\fBgpu\fP: requires at least OpenGL 4.4 or Vulkan.
 3086+.UNINDENT
 3087+.UNINDENT
 3088+.UNINDENT
 3089+.sp
 3090+(In particular, this can\(aqt be made work with \fBopengl\-cb\fP, but the libmpv
 3091+render API has optional support.)
 3092+.sp
 3093+Using video filters of any kind that write to the image data (or output
 3094+newly allocated frames) will silently disable the DR code path.
 3095+.TP
 3096+.B \fB\-\-vd\-lavc\-bitexact\fP
 3097+Only use bit\-exact algorithms in all decoding steps (for codec testing).
 3098+.TP
 3099+.B \fB\-\-vd\-lavc\-fast\fP (MPEG\-2, MPEG\-4, and H.264 only)
 3100+Enable optimizations which do not comply with the format specification and
 3101+potentially cause problems, like simpler dequantization, simpler motion
 3102+compensation, assuming use of the default quantization matrix, assuming YUV
 3103+4:2:0 and skipping a few checks to detect damaged bitstreams.
 3104+.TP
 3105+.B \fB\-\-vd\-lavc\-o=<key>=<value>[,<key>=<value>[,...]]\fP
 3106+Pass AVOptions to libavcodec decoder. Note, a patch to make the \fBo=\fP
 3107+unneeded and pass all unknown options through the AVOption system is
 3108+welcome. A full list of AVOptions can be found in the FFmpeg manual.
 3109+.sp
 3110+Some options which used to be direct options can be set with this
 3111+mechanism, like \fBbug\fP, \fBgray\fP, \fBidct\fP, \fBec\fP, \fBvismv\fP,
 3112+\fBskip_top\fP (was \fBst\fP), \fBskip_bottom\fP (was \fBsb\fP), \fBdebug\fP\&.
 3113+.sp
 3114+This is a key/value list option. See \fI\%List Options\fP for details.
 3115+.INDENT 7.0
 3116+.INDENT 3.5
 3117+.IP "Example"
 3118+.sp
 3119+\fB\-\-vd\-lavc\-o=debug=pict\fP
 3120+.UNINDENT
 3121+.UNINDENT
 3122+.TP
 3123+.B \fB\-\-vd\-lavc\-show\-all=<yes|no>\fP
 3124+Show even broken/corrupt frames (default: no). If this option is set to
 3125+no, libavcodec won\(aqt output frames that were either decoded before an
 3126+initial keyframe was decoded, or frames that are recognized as corrupted.
 3127+.TP
 3128+.B \fB\-\-vd\-lavc\-skiploopfilter=<skipvalue> (H.264 only)\fP
 3129+Skips the loop filter (AKA deblocking) during H.264 decoding. Since
 3130+the filtered frame is supposed to be used as reference for decoding
 3131+dependent frames, this has a worse effect on quality than not doing
 3132+deblocking on e.g. MPEG\-2 video. But at least for high bitrate HDTV,
 3133+this provides a big speedup with little visible quality loss.
 3134+.sp
 3135+\fB<skipvalue>\fP can be one of the following:
 3136+.INDENT 7.0
 3137+.TP
 3138+.B none
 3139+Never skip.
 3140+.TP
 3141+.B default
 3142+Skip useless processing steps (e.g. 0 size packets in AVI).
 3143+.TP
 3144+.B nonref
 3145+Skip frames that are not referenced (i.e. not used for
 3146+decoding other frames, the error cannot "build up").
 3147+.TP
 3148+.B bidir
 3149+Skip B\-Frames.
 3150+.TP
 3151+.B nonkey
 3152+Skip all frames except keyframes.
 3153+.TP
 3154+.B all
 3155+Skip all frames.
 3156+.UNINDENT
 3157+.TP
 3158+.B \fB\-\-vd\-lavc\-skipidct=<skipvalue> (MPEG\-1/2 only)\fP
 3159+Skips the IDCT step. This degrades quality a lot in almost all cases
 3160+(see skiploopfilter for available skip values).
 3161+.TP
 3162+.B \fB\-\-vd\-lavc\-skipframe=<skipvalue>\fP
 3163+Skips decoding of frames completely. Big speedup, but jerky motion and
 3164+sometimes bad artifacts (see skiploopfilter for available skip values).
 3165+.TP
 3166+.B \fB\-\-vd\-lavc\-framedrop=<skipvalue>\fP
 3167+Set framedropping mode used with \fB\-\-framedrop\fP (see skiploopfilter for
 3168+available skip values).
 3169+.TP
 3170+.B \fB\-\-vd\-lavc\-threads=<N>\fP
 3171+Number of threads to use for decoding. Whether threading is actually
 3172+supported depends on codec (default: 0). 0 means autodetect number of cores
 3173+on the machine and use that, up to the maximum of 16. You can set more than
 3174+16 threads manually.
 3175+.TP
 3176+.B \fB\-\-vd\-lavc\-assume\-old\-x264=<yes|no>\fP
 3177+Assume the video was encoded by an old, buggy x264 version (default: no).
 3178+Normally, this is autodetected by libavcodec. But if the bitstream contains
 3179+no x264 version info (or it was somehow skipped), and the stream was in fact
 3180+encoded by an old x264 version (build 150 or earlier), and if the stream
 3181+uses \fB4:4:4\fP chroma, then libavcodec will by default show corrupted video.
 3182+This option sets the libavcodec \fBx264_build\fP option to \fB150\fP, which
 3183+means that if the stream contains no version info, or was not encoded by
 3184+x264 at all, it assumes it was encoded by the old version. Enabling this
 3185+option is pretty safe if you want your broken files to work, but in theory
 3186+this can break on streams not encoded by x264, or if a stream encoded by a
 3187+newer x264 version contains no version info.
 3188+.TP
 3189+.B \fB\-\-swapchain\-depth=<N>\fP
 3190+Allow up to N in\-flight frames. This essentially controls the frame
 3191+latency. Increasing the swapchain depth can improve pipelining and prevent
 3192+missed vsyncs, but increases visible latency. This option only mandates an
 3193+upper limit, the implementation can use a lower latency than requested
 3194+internally. A setting of 1 means that the VO will wait for every frame to
 3195+become visible before starting to render the next frame. (Default: 3)
 3196+.UNINDENT
 3197+.SS Audio
 3198+.INDENT 0.0
 3199+.TP
 3200+.B \fB\-\-audio\-pitch\-correction=<yes|no>\fP
 3201+If this is enabled (default), playing with a speed different from normal
 3202+automatically inserts the \fBscaletempo\fP audio filter. For details, see
 3203+audio filter section.
 3204+.TP
 3205+.B \fB\-\-audio\-device=<name>\fP
 3206+Use the given audio device. This consists of the audio output name, e.g.
 3207+\fBalsa\fP, followed by \fB/\fP, followed by the audio output specific device
 3208+name. The default value for this option is \fBauto\fP, which tries every audio
 3209+output in preference order with the default device.
 3210+.sp
 3211+You can list audio devices with \fB\-\-audio\-device=help\fP\&. This outputs the
 3212+device name in quotes, followed by a description. The device name is what
 3213+you have to pass to the \fB\-\-audio\-device\fP option. The list of audio devices
 3214+can be retrieved by API by using the \fBaudio\-device\-list\fP property.
 3215+.sp
 3216+While the option normally takes one of the strings as indicated by the
 3217+methods above, you can also force the device for most AOs by building it
 3218+manually. For example \fBname/foobar\fP forces the AO \fBname\fP to use the
 3219+device \fBfoobar\fP\&. However, the \fB\-\-ao\fP option will strictly force a
 3220+specific AO. To avoid confusion, don\(aqt use \fB\-\-ao\fP and \fB\-\-audio\-device\fP
 3221+together.
 3222+.INDENT 7.0
 3223+.INDENT 3.5
 3224+.IP "Example for ALSA"
 3225+.sp
 3226+MPlayer and mplayer2 required you to replace any \(aq,\(aq with \(aq.\(aq and
 3227+any \(aq:\(aq with \(aq=\(aq in the ALSA device name. For example, to use the
 3228+device named \fBdmix:default\fP, you had to do:
 3229+.INDENT 0.0
 3230+.INDENT 3.5
 3231+\fB\-ao alsa:device=dmix=default\fP
 3232+.UNINDENT
 3233+.UNINDENT
 3234+.sp
 3235+In mpv you could instead use:
 3236+.INDENT 0.0
 3237+.INDENT 3.5
 3238+\fB\-\-audio\-device=alsa/dmix:default\fP
 3239+.UNINDENT
 3240+.UNINDENT
 3241+.UNINDENT
 3242+.UNINDENT
 3243+.TP
 3244+.B \fB\-\-audio\-exclusive=<yes|no>\fP
 3245+Enable exclusive output mode. In this mode, the system is usually locked
 3246+out, and only mpv will be able to output audio.
 3247+.sp
 3248+This only works for some audio outputs, such as \fBwasapi\fP and
 3249+\fBcoreaudio\fP\&. Other audio outputs silently ignore this options. They either
 3250+have no concept of exclusive mode, or the mpv side of the implementation is
 3251+missing.
 3252+.TP
 3253+.B \fB\-\-audio\-fallback\-to\-null=<yes|no>\fP
 3254+If no audio device can be opened, behave as if \fB\-\-ao=null\fP was given. This
 3255+is useful in combination with \fB\-\-audio\-device\fP: instead of causing an
 3256+error if the selected device does not exist, the client API user (or a
 3257+Lua script) could let playback continue normally, and check the
 3258+\fBcurrent\-ao\fP and \fBaudio\-device\-list\fP properties to make high\-level
 3259+decisions about how to continue.
 3260+.TP
 3261+.B \fB\-\-ao=<driver>\fP
 3262+Specify the audio output drivers to be used. See \fI\%AUDIO OUTPUT DRIVERS\fP for
 3263+details and descriptions of available drivers.
 3264+.TP
 3265+.B \fB\-\-af=<filter1[=parameter1:parameter2:...],filter2,...>\fP
 3266+Specify a list of audio filters to apply to the audio stream. See
 3267+\fI\%AUDIO FILTERS\fP for details and descriptions of the available filters.
 3268+The option variants \fB\-\-af\-add\fP, \fB\-\-af\-pre\fP, \fB\-\-af\-del\fP and
 3269+\fB\-\-af\-clr\fP exist to modify a previously specified list, but you
 3270+should not need these for typical use.
 3271+.TP
 3272+.B \fB\-\-audio\-spdif=<codecs>\fP
 3273+List of codecs for which compressed audio passthrough should be used. This
 3274+works for both classic S/PDIF and HDMI.
 3275+.sp
 3276+Possible codecs are \fBac3\fP, \fBdts\fP, \fBdts\-hd\fP, \fBeac3\fP, \fBtruehd\fP\&.
 3277+Multiple codecs can be specified by separating them with \fB,\fP\&. \fBdts\fP
 3278+refers to low bitrate DTS core, while \fBdts\-hd\fP refers to DTS MA (receiver
 3279+and OS support varies). If both \fBdts\fP and \fBdts\-hd\fP are specified, it
 3280+behaves equivalent to specifying \fBdts\-hd\fP only.
 3281+.sp
 3282+In earlier mpv versions you could use \fB\-\-ad\fP to force the spdif wrapper.
 3283+This does not work anymore.
 3284+.INDENT 7.0
 3285+.INDENT 3.5
 3286+.IP "Warning"
 3287+.sp
 3288+There is not much reason to use this. HDMI supports uncompressed
 3289+multichannel PCM, and mpv supports lossless DTS\-HD decoding via
 3290+FFmpeg\(aqs new DCA decoder (based on libdcadec).
 3291+.UNINDENT
 3292+.UNINDENT
 3293+.TP
 3294+.B \fB\-\-ad=<decoder1,decoder2,...[\-]>\fP
 3295+Specify a priority list of audio decoders to be used, according to their
 3296+decoder name. When determining which decoder to use, the first decoder that
 3297+matches the audio format is selected. If that is unavailable, the next
 3298+decoder is used. Finally, it tries all other decoders that are not
 3299+explicitly selected or rejected by the option.
 3300+.sp
 3301+\fB\-\fP at the end of the list suppresses fallback on other available
 3302+decoders not on the \fB\-\-ad\fP list. \fB+\fP in front of an entry forces the
 3303+decoder. Both of these should not normally be used, because they break
 3304+normal decoder auto\-selection! Both of these methods are deprecated.
 3305+.INDENT 7.0
 3306+.INDENT 3.5
 3307+.IP "Examples"
 3308+.INDENT 0.0
 3309+.TP
 3310+.B \fB\-\-ad=mp3float\fP
 3311+Prefer the FFmpeg/Libav \fBmp3float\fP decoder over all other MP3
 3312+decoders.
 3313+.TP
 3314+.B \fB\-\-ad=help\fP
 3315+List all available decoders.
 3316+.UNINDENT
 3317+.UNINDENT
 3318+.UNINDENT
 3319+.INDENT 7.0
 3320+.INDENT 3.5
 3321+.IP "Warning"
 3322+.sp
 3323+Enabling compressed audio passthrough (AC3 and DTS via SPDIF/HDMI) with
 3324+this option is not possible. Use \fB\-\-audio\-spdif\fP instead.
 3325+.UNINDENT
 3326+.UNINDENT
 3327+.TP
 3328+.B \fB\-\-volume=<value>\fP
 3329+Set the startup volume. 0 means silence, 100 means no volume reduction or
 3330+amplification. Negative values can be passed for compatibility, but are
 3331+treated as 0.
 3332+.sp
 3333+Since mpv 0.18.1, this always controls the internal mixer (aka "softvol").
 3334+.TP
 3335+.B \fB\-\-replaygain=<no|track|album>\fP
 3336+Adjust volume gain according to replaygain values stored in the file
 3337+metadata. With \fB\-\-replaygain=no\fP (the default), perform no adjustment.
 3338+With \fB\-\-replaygain=track\fP, apply track gain. With \fB\-\-replaygain=album\fP,
 3339+apply album gain if present and fall back to track gain otherwise.
 3340+.TP
 3341+.B \fB\-\-replaygain\-preamp=<db>\fP
 3342+Pre\-amplification gain in dB to apply to the selected replaygain gain
 3343+(default: 0).
 3344+.TP
 3345+.B \fB\-\-replaygain\-clip=<yes|no>\fP
 3346+Prevent clipping caused by replaygain by automatically lowering the
 3347+gain (default). Use \fB\-\-replaygain\-clip=no\fP to disable this.
 3348+.TP
 3349+.B \fB\-\-replaygain\-fallback=<db>\fP
 3350+Gain in dB to apply if the file has no replay gain tags. This option
 3351+is always applied if the replaygain logic is somehow inactive. If this
 3352+is applied, no other replaygain options are applied.
 3353+.TP
 3354+.B \fB\-\-audio\-delay=<sec>\fP
 3355+Audio delay in seconds (positive or negative float value). Positive values
 3356+delay the audio, and negative values delay the video.
 3357+.TP
 3358+.B \fB\-\-mute=<yes|no|auto>\fP
 3359+Set startup audio mute status (default: no).
 3360+.sp
 3361+\fBauto\fP is a deprecated possible value that is equivalent to \fBno\fP\&.
 3362+.sp
 3363+See also: \fB\-\-volume\fP\&.
 3364+.TP
 3365+.B \fB\-\-softvol=<no|yes|auto>\fP
 3366+Deprecated/unfunctional. Before mpv 0.18.1, this used to control whether
 3367+to use the volume controls of the audio output driver or the internal mpv
 3368+volume filter.
 3369+.sp
 3370+The current behavior is that softvol is always enabled, i.e. as if this
 3371+option is set to \fByes\fP\&. The other behaviors are not available anymore,
 3372+although \fBauto\fP almost matches current behavior in most cases.
 3373+.sp
 3374+The \fBno\fP behavior is still partially available through the \fBao\-volume\fP
 3375+and \fBao\-mute\fP properties. But there are no options to reset these.
 3376+.TP
 3377+.B \fB\-\-audio\-demuxer=<[+]name>\fP
 3378+Use this audio demuxer type when using \fB\-\-audio\-file\fP\&. Use a \(aq+\(aq before
 3379+the name to force it; this will skip some checks. Give the demuxer name as
 3380+printed by \fB\-\-audio\-demuxer=help\fP\&.
 3381+.TP
 3382+.B \fB\-\-ad\-lavc\-ac3drc=<level>\fP
 3383+Select the Dynamic Range Compression level for AC\-3 audio streams.
 3384+\fB<level>\fP is a float value ranging from 0 to 1, where 0 means no
 3385+compression (which is the default) and 1 means full compression (make loud
 3386+passages more silent and vice versa). Values up to 6 are also accepted, but
 3387+are purely experimental. This option only shows an effect if the AC\-3 stream
 3388+contains the required range compression information.
 3389+.sp
 3390+The standard mandates that DRC is enabled by default, but mpv (and some
 3391+other players) ignore this for the sake of better audio quality.
 3392+.TP
 3393+.B \fB\-\-ad\-lavc\-downmix=<yes|no>\fP
 3394+Whether to request audio channel downmixing from the decoder (default: yes).
 3395+Some decoders, like AC\-3, AAC and DTS, can remix audio on decoding. The
 3396+requested number of output channels is set with the \fB\-\-audio\-channels\fP option.
 3397+Useful for playing surround audio on a stereo system.
 3398+.TP
 3399+.B \fB\-\-ad\-lavc\-threads=<0\-16>\fP
 3400+Number of threads to use for decoding. Whether threading is actually
 3401+supported depends on codec. As of this writing, it\(aqs supported for some
 3402+lossless codecs only. 0 means autodetect number of cores on the
 3403+machine and use that, up to the maximum of 16 (default: 1).
 3404+.TP
 3405+.B \fB\-\-ad\-lavc\-o=<key>=<value>[,<key>=<value>[,...]]\fP
 3406+Pass AVOptions to libavcodec decoder. Note, a patch to make the o=
 3407+unneeded and pass all unknown options through the AVOption system is
 3408+welcome. A full list of AVOptions can be found in the FFmpeg manual.
 3409+.sp
 3410+This is a key/value list option. See \fI\%List Options\fP for details.
 3411+.TP
 3412+.B \fB\-\-ad\-spdif\-dtshd=<yes|no>\fP, \fB\-\-dtshd\fP, \fB\-\-no\-dtshd\fP
 3413+If DTS is passed through, use DTS\-HD.
 3414+.INDENT 7.0
 3415+.INDENT 3.5
 3416+.IP "Warning"
 3417+.sp
 3418+This and enabling passthrough via \fB\-\-ad\fP are deprecated in favor of
 3419+using \fB\-\-audio\-spdif=dts\-hd\fP\&.
 3420+.UNINDENT
 3421+.UNINDENT
 3422+.TP
 3423+.B \fB\-\-audio\-channels=<auto\-safe|auto|layouts>\fP
 3424+Control which audio channels are output (e.g. surround vs. stereo). There
 3425+are the following possibilities:
 3426+.INDENT 7.0
 3427+.IP \(bu 2
 3428+.INDENT 2.0
 3429+.TP
 3430+.B \fB\-\-audio\-channels=auto\-safe\fP
 3431+Use the system\(aqs preferred channel layout. If there is none (such
 3432+as when accessing a hardware device instead of the system mixer),
 3433+force stereo. Some audio outputs might simply accept any layout and
 3434+do downmixing on their own.
 3435+.sp
 3436+This is the default.
 3437+.UNINDENT
 3438+.IP \(bu 2
 3439+.INDENT 2.0
 3440+.TP
 3441+.B \fB\-\-audio\-channels=auto\fP
 3442+Send the audio device whatever it accepts, preferring the audio\(aqs
 3443+original channel layout. Can cause issues with HDMI (see the warning
 3444+below).
 3445+.UNINDENT
 3446+.IP \(bu 2
 3447+.INDENT 2.0
 3448+.TP
 3449+.B \fB\-\-audio\-channels=layout1,layout2,...\fP
 3450+List of \fB,\fP\-separated channel layouts which should be allowed.
 3451+Technically, this only adjusts the filter chain output to the best
 3452+matching layout in the list, and passes the result to the audio API.
 3453+It\(aqs possible that the audio API will select a different channel
 3454+layout.
 3455+.sp
 3456+Using this mode is recommended for direct hardware output, especially
 3457+over HDMI (see HDMI warning below).
 3458+.UNINDENT
 3459+.IP \(bu 2
 3460+.INDENT 2.0
 3461+.TP
 3462+.B \fB\-\-audio\-channels=stereo\fP
 3463+Force  a plain stereo downmix. This is a special\-case of the previous
 3464+item. (See paragraphs below for implications.)
 3465+.UNINDENT
 3466+.UNINDENT
 3467+.sp
 3468+If a list of layouts is given, each item can be either an explicit channel
 3469+layout name (like \fB5.1\fP), or a channel number. Channel numbers refer to
 3470+default layouts, e.g. 2 channels refer to stereo, 6 refers to 5.1.
 3471+.sp
 3472+See \fB\-\-audio\-channels=help\fP output for defined default layouts. This also
 3473+lists speaker names, which can be used to express arbitrary channel
 3474+layouts (e.g. \fBfl\-fr\-lfe\fP is 2.1).
 3475+.sp
 3476+If the list of channel layouts has only 1 item, the decoder is asked to
 3477+produce according output. This sometimes triggers decoder\-downmix, which
 3478+might be different from the normal mpv downmix. (Only some decoders support
 3479+remixing audio, like AC\-3, AAC or DTS. You can use \fB\-\-ad\-lavc\-downmix=no\fP
 3480+to make the decoder always output its native layout.) One consequence is
 3481+that \fB\-\-audio\-channels=stereo\fP triggers decoder downmix, while \fBauto\fP
 3482+or \fBauto\-safe\fP never will, even if they end up selecting stereo. This
 3483+happens because the decision whether to use decoder downmix happens long
 3484+before the audio device is opened.
 3485+.sp
 3486+If the channel layout of the media file (i.e. the decoder) and the AO\(aqs
 3487+channel layout don\(aqt match, mpv will attempt to insert a conversion filter.
 3488+You may need to change the channel layout of the system mixer to achieve
 3489+your desired output as mpv does not have control over it. Another
 3490+work\-around for this on some AOs is to use \fB\-\-audio\-exclusive=yes\fP to
 3491+circumvent the system mixer entirely.
 3492+.INDENT 7.0
 3493+.INDENT 3.5
 3494+.IP "Warning"
 3495+.sp
 3496+Using \fBauto\fP can cause issues when using audio over HDMI. The OS will
 3497+typically report all channel layouts that _can_ go over HDMI, even if
 3498+the receiver does not support them. If a receiver gets an unsupported
 3499+channel layout, random things can happen, such as dropping the
 3500+additional channels, or adding noise.
 3501+.sp
 3502+You are recommended to set an explicit whitelist of the layouts you
 3503+want. For example, most A/V receivers connected via HDMI and that can
 3504+do 7.1 would  be served by: \fB\-\-audio\-channels=7.1,5.1,stereo\fP
 3505+.UNINDENT
 3506+.UNINDENT
 3507+.TP
 3508+.B \fB\-\-audio\-display=<no|attachment>\fP
 3509+Setting this option to \fBattachment\fP (default) will display image
 3510+attachments (e.g. album cover art) when playing audio files. It will
 3511+display the first image found, and additional images are available as
 3512+video tracks.
 3513+.sp
 3514+Setting this option to \fBno\fP disables display of video entirely when
 3515+playing audio files.
 3516+.sp
 3517+This option has no influence on files with normal video tracks.
 3518+.TP
 3519+.B \fB\-\-audio\-files=<files>\fP
 3520+Play audio from an external file while viewing a video.
 3521+.sp
 3522+This is a path list option. See \fI\%List Options\fP for details.
 3523+.TP
 3524+.B \fB\-\-audio\-file=<file>\fP
 3525+CLI/config file only alias for \fB\-\-audio\-files\-append\fP\&. Each use of this
 3526+option will add a new audio track. The details are similar to how
 3527+\fB\-\-sub\-file\fP works.
 3528+.TP
 3529+.B \fB\-\-audio\-format=<format>\fP
 3530+Select the sample format used for output from the audio filter layer to
 3531+the sound card. The values that \fB<format>\fP can adopt are listed below in
 3532+the description of the \fBformat\fP audio filter.
 3533+.TP
 3534+.B \fB\-\-audio\-samplerate=<Hz>\fP
 3535+Select the output sample rate to be used (of course sound cards have
 3536+limits on this). If the sample frequency selected is different from that
 3537+of the current media, the lavrresample audio filter will be inserted into
 3538+the audio filter layer to compensate for the difference.
 3539+.TP
 3540+.B \fB\-\-gapless\-audio=<no|yes|weak>\fP
 3541+Try to play consecutive audio files with no silence or disruption at the
 3542+point of file change. Default: \fBweak\fP\&.
 3543+.INDENT 7.0
 3544+.TP
 3545+.B no
 3546+Disable gapless audio.
 3547+.TP
 3548+.B yes
 3549+The audio device is opened using parameters chosen for the first
 3550+file played and is then kept open for gapless playback. This
 3551+means that if the first file for example has a low sample rate, then
 3552+the following files may get resampled to the same low sample rate,
 3553+resulting in reduced sound quality. If you play files with different
 3554+parameters, consider using options such as \fB\-\-audio\-samplerate\fP
 3555+and \fB\-\-audio\-format\fP to explicitly select what the shared output
 3556+format will be.
 3557+.TP
 3558+.B weak
 3559+Normally, the audio device is kept open (using the format it was
 3560+first initialized with). If the audio format the decoder output
 3561+changes, the audio device is closed and reopened. This means that
 3562+you will normally get gapless audio with files that were encoded
 3563+using the same settings, but might not be gapless in other cases.
 3564+The exact conditions under which the audio device is kept open is
 3565+an implementation detail, and can change from version to version.
 3566+Currently, the device is kept even if the sample format changes,
 3567+but the sample formats are convertible.
 3568+If video is still going on when there is still audio, trying to use
 3569+gapless is also explicitly given up.
 3570+.UNINDENT
 3571+.sp
 3572+\fBNOTE:\fP
 3573+.INDENT 7.0
 3574+.INDENT 3.5
 3575+This feature is implemented in a simple manner and relies on audio
 3576+output device buffering to continue playback while moving from one file
 3577+to another. If playback of the new file starts slowly, for example
 3578+because it is played from a remote network location or because you have
 3579+specified cache settings that require time for the initial cache fill,
 3580+then the buffered audio may run out before playback of the new file
 3581+can start.
 3582+.UNINDENT
 3583+.UNINDENT
 3584+.TP
 3585+.B \fB\-\-initial\-audio\-sync\fP, \fB\-\-no\-initial\-audio\-sync\fP
 3586+When starting a video file or after events such as seeking, mpv will by
 3587+default modify the audio stream to make it start from the same timestamp
 3588+as video, by either inserting silence at the start or cutting away the
 3589+first samples. Disabling this option makes the player behave like older
 3590+mpv versions did: video and audio are both started immediately even if
 3591+their start timestamps differ, and then video timing is gradually adjusted
 3592+if necessary to reach correct synchronization later.
 3593+.TP
 3594+.B \fB\-\-volume\-max=<100.0\-1000.0>\fP, \fB\-\-softvol\-max=<...>\fP
 3595+Set the maximum amplification level in percent (default: 130). A value of
 3596+130 will allow you to adjust the volume up to about double the normal level.
 3597+.sp
 3598+\fB\-\-softvol\-max\fP is a deprecated alias and should not be used.
 3599+.TP
 3600+.B \fB\-\-audio\-file\-auto=<no|exact|fuzzy|all>\fP, \fB\-\-no\-audio\-file\-auto\fP
 3601+Load additional audio files matching the video filename. The parameter
 3602+specifies how external audio files are matched.
 3603+.INDENT 7.0
 3604+.TP
 3605+.B no
 3606+Don\(aqt automatically load external audio files (default).
 3607+.TP
 3608+.B exact
 3609+Load the media filename with audio file extension.
 3610+.TP
 3611+.B fuzzy
 3612+Load all audio files containing media filename.
 3613+.TP
 3614+.B all
 3615+Load all audio files in the current and \fB\-\-audio\-file\-paths\fP
 3616+directories.
 3617+.UNINDENT
 3618+.TP
 3619+.B \fB\-\-audio\-file\-paths=<path1:path2:...>\fP
 3620+Equivalent to \fB\-\-sub\-file\-paths\fP option, but for auto\-loaded audio files.
 3621+.sp
 3622+This is a path list option. See \fI\%List Options\fP for details.
 3623+.TP
 3624+.B \fB\-\-audio\-client\-name=<name>\fP
 3625+The application name the player reports to the audio API. Can be useful
 3626+if you want to force a different audio profile (e.g. with PulseAudio),
 3627+or to set your own application name when using libmpv.
 3628+.TP
 3629+.B \fB\-\-audio\-buffer=<seconds>\fP
 3630+Set the audio output minimum buffer. The audio device might actually create
 3631+a larger buffer if it pleases. If the device creates a smaller buffer,
 3632+additional audio is buffered in an additional software buffer.
 3633+.sp
 3634+Making this larger will make soft\-volume and other filters react slower,
 3635+introduce additional issues on playback speed change, and block the
 3636+player on audio format changes. A smaller buffer might lead to audio
 3637+dropouts.
 3638+.sp
 3639+This option should be used for testing only. If a non\-default value helps
 3640+significantly, the mpv developers should be contacted.
 3641+.sp
 3642+Default: 0.2 (200 ms).
 3643+.TP
 3644+.B \fB\-\-audio\-stream\-silence=<yes|no>\fP
 3645+Cash\-grab consumer audio hardware (such as A/V receivers) often ignore
 3646+initial audio sent over HDMI. This can happen every time audio over HDMI
 3647+is stopped and resumed. In order to compensate for this, you can enable
 3648+this option to not to stop and restart audio on seeks, and fill the gaps
 3649+with silence. Likewise, when pausing playback, audio is not stopped, and
 3650+silence is played while paused. Note that if no audio track is selected,
 3651+the audio device will still be closed immediately.
 3652+.sp
 3653+Not all AOs support this.
 3654+.TP
 3655+.B \fB\-\-audio\-wait\-open=<secs>\fP
 3656+This makes sense for use with \fB\-\-audio\-stream\-silence=yes\fP\&. If this option
 3657+is given, the player will wait for the given amount of seconds after opening
 3658+the audio device before sending actual audio data to it. Useful if your
 3659+expensive hardware discards the first 1 or 2 seconds of audio data sent to
 3660+it. If \fB\-\-audio\-stream\-silence=yes\fP is not set, this option will likely
 3661+just waste time.
 3662+.UNINDENT
 3663+.SS Subtitles
 3664+.sp
 3665+\fBNOTE:\fP
 3666+.INDENT 0.0
 3667+.INDENT 3.5
 3668+Changing styling and position does not work with all subtitles. Image\-based
 3669+subtitles (DVD, Bluray/PGS, DVB) cannot changed for fundamental reasons.
 3670+Subtitles in ASS format are normally not changed intentionally, but
 3671+overriding them can be controlled with \fB\-\-sub\-ass\-override\fP\&.
 3672+.sp
 3673+Previously some options working on text subtitles were called
 3674+\fB\-\-sub\-text\-*\fP, they are now named \fB\-\-sub\-*\fP, and those specifically
 3675+for ASS have been renamed from \fB\-\-ass\-*\fP to \fB\-\-sub\-ass\-*\fP\&.
 3676+They are now all in this section.
 3677+.UNINDENT
 3678+.UNINDENT
 3679+.INDENT 0.0
 3680+.TP
 3681+.B \fB\-\-sub\-demuxer=<[+]name>\fP
 3682+Force subtitle demuxer type for \fB\-\-sub\-file\fP\&. Give the demuxer name as
 3683+printed by \fB\-\-sub\-demuxer=help\fP\&.
 3684+.TP
 3685+.B \fB\-\-sub\-delay=<sec>\fP
 3686+Delays subtitles by \fB<sec>\fP seconds. Can be negative.
 3687+.TP
 3688+.B \fB\-\-sub\-files=<file\-list>\fP, \fB\-\-sub\-file=<filename>\fP
 3689+Add a subtitle file to the list of external subtitles.
 3690+.sp
 3691+If you use \fB\-\-sub\-file\fP only once, this subtitle file is displayed by
 3692+default.
 3693+.sp
 3694+If \fB\-\-sub\-file\fP is used multiple times, the subtitle to use can be
 3695+switched at runtime by cycling subtitle tracks. It\(aqs possible to show
 3696+two subtitles at once: use \fB\-\-sid\fP to select the first subtitle index,
 3697+and \fB\-\-secondary\-sid\fP to select the second index. (The index is printed
 3698+on the terminal output after the \fB\-\-sid=\fP in the list of streams.)
 3699+.sp
 3700+\fB\-\-sub\-files\fP is a path list option (see \fI\%List Options\fP  for details), and
 3701+can take multiple file names separated by \fB:\fP (Unix) or \fB;\fP (Windows),
 3702+while  \fB\-\-sub\-file\fP takes a single filename, but can be used multiple
 3703+times to add multiple files. Technically, \fB\-\-sub\-file\fP is a CLI/config
 3704+file only alias for  \fB\-\-sub\-files\-append\fP\&.
 3705+.TP
 3706+.B \fB\-\-secondary\-sid=<ID|auto|no>\fP
 3707+Select a secondary subtitle stream. This is similar to \fB\-\-sid\fP\&. If a
 3708+secondary subtitle is selected, it will be rendered as toptitle (i.e. on
 3709+the top of the screen) alongside the normal subtitle, and provides a way
 3710+to render two subtitles at once.
 3711+.sp
 3712+There are some caveats associated with this feature. For example, bitmap
 3713+subtitles will always be rendered in their usual position, so selecting a
 3714+bitmap subtitle as secondary subtitle will result in overlapping subtitles.
 3715+Secondary subtitles are never shown on the terminal if video is disabled.
 3716+.sp
 3717+\fBNOTE:\fP
 3718+.INDENT 7.0
 3719+.INDENT 3.5
 3720+Styling and interpretation of any formatting tags is disabled for the
 3721+secondary subtitle. Internally, the same mechanism as \fB\-\-no\-sub\-ass\fP
 3722+is used to strip the styling.
 3723+.UNINDENT
 3724+.UNINDENT
 3725+.sp
 3726+\fBNOTE:\fP
 3727+.INDENT 7.0
 3728+.INDENT 3.5
 3729+If the main subtitle stream contains formatting tags which display the
 3730+subtitle at the top of the screen, it will overlap with the secondary
 3731+subtitle. To prevent this, you could use \fB\-\-no\-sub\-ass\fP to disable
 3732+styling in the main subtitle stream.
 3733+.UNINDENT
 3734+.UNINDENT
 3735+.TP
 3736+.B \fB\-\-sub\-scale=<0\-100>\fP
 3737+Factor for the text subtitle font size (default: 1).
 3738+.sp
 3739+\fBNOTE:\fP
 3740+.INDENT 7.0
 3741+.INDENT 3.5
 3742+This affects ASS subtitles as well, and may lead to incorrect subtitle
 3743+rendering. Use with care, or use \fB\-\-sub\-font\-size\fP instead.
 3744+.UNINDENT
 3745+.UNINDENT
 3746+.TP
 3747+.B \fB\-\-sub\-scale\-by\-window=<yes|no>\fP
 3748+Whether to scale subtitles with the window size (default: yes). If this is
 3749+disabled, changing the window size won\(aqt change the subtitle font size.
 3750+.sp
 3751+Like \fB\-\-sub\-scale\fP, this can break ASS subtitles.
 3752+.TP
 3753+.B \fB\-\-sub\-scale\-with\-window=<yes|no>\fP
 3754+Make the subtitle font size relative to the window, instead of the video.
 3755+This is useful if you always want the same font size, even if the video
 3756+doesn\(aqt cover the window fully, e.g. because screen aspect and window
 3757+aspect mismatch (and the player adds black bars).
 3758+.sp
 3759+Default: yes.
 3760+.sp
 3761+This option is misnamed. The difference to the confusingly similar sounding
 3762+option \fB\-\-sub\-scale\-by\-window\fP is that \fB\-\-sub\-scale\-with\-window\fP still
 3763+scales with the approximate window size, while the other option disables
 3764+this scaling.
 3765+.sp
 3766+Affects plain text subtitles only (or ASS if \fB\-\-sub\-ass\-override\fP is set
 3767+high enough).
 3768+.TP
 3769+.B \fB\-\-sub\-ass\-scale\-with\-window=<yes|no>\fP
 3770+Like \fB\-\-sub\-scale\-with\-window\fP, but affects subtitles in ASS format only.
 3771+Like \fB\-\-sub\-scale\fP, this can break ASS subtitles.
 3772+.sp
 3773+Default: no.
 3774+.TP
 3775+.B \fB\-\-embeddedfonts=<yes|no>\fP
 3776+Use fonts embedded in Matroska container files and ASS scripts (default:
 3777+yes). These fonts can be used for SSA/ASS subtitle rendering.
 3778+.TP
 3779+.B \fB\-\-sub\-pos=<0\-100>\fP
 3780+Specify the position of subtitles on the screen. The value is the vertical
 3781+position of the subtitle in % of the screen height.
 3782+.sp
 3783+\fBNOTE:\fP
 3784+.INDENT 7.0
 3785+.INDENT 3.5
 3786+This affects ASS subtitles as well, and may lead to incorrect subtitle
 3787+rendering. Use with care, or use \fB\-\-sub\-margin\-y\fP instead.
 3788+.UNINDENT
 3789+.UNINDENT
 3790+.TP
 3791+.B \fB\-\-sub\-speed=<0.1\-10.0>\fP
 3792+Multiply the subtitle event timestamps with the given value. Can be used
 3793+to fix the playback speed for frame\-based subtitle formats. Affects text
 3794+subtitles only.
 3795+.INDENT 7.0
 3796+.INDENT 3.5
 3797+.IP "Example"
 3798+.sp
 3799+\fB\-\-sub\-speed=25/23.976\fP plays frame based subtitles which have been
 3800+loaded assuming a framerate of 23.976 at 25 FPS.
 3801+.UNINDENT
 3802+.UNINDENT
 3803+.TP
 3804+.B \fB\-\-sub\-ass\-force\-style=<[Style.]Param=Value[,...]>\fP
 3805+Override some style or script info parameters.
 3806+.sp
 3807+This is a string list option. See \fI\%List Options\fP for details.
 3808+.INDENT 7.0
 3809+.INDENT 3.5
 3810+.IP "Examples"
 3811+.INDENT 0.0
 3812+.IP \(bu 2
 3813+\fB\-\-sub\-ass\-force\-style=FontName=Arial,Default.Bold=1\fP
 3814+.IP \(bu 2
 3815+\fB\-\-sub\-ass\-force\-style=PlayResY=768\fP
 3816+.UNINDENT
 3817+.UNINDENT
 3818+.UNINDENT
 3819+.sp
 3820+\fBNOTE:\fP
 3821+.INDENT 7.0
 3822+.INDENT 3.5
 3823+Using this option may lead to incorrect subtitle rendering.
 3824+.UNINDENT
 3825+.UNINDENT
 3826+.TP
 3827+.B \fB\-\-sub\-ass\-hinting=<none|light|normal|native>\fP
 3828+Set font hinting type. <type> can be:
 3829+.INDENT 7.0
 3830+.TP
 3831+.B none
 3832+no hinting (default)
 3833+.TP
 3834+.B light
 3835+FreeType autohinter, light mode
 3836+.TP
 3837+.B normal
 3838+FreeType autohinter, normal mode
 3839+.TP
 3840+.B native
 3841+font native hinter
 3842+.UNINDENT
 3843+.INDENT 7.0
 3844+.INDENT 3.5
 3845+.IP "Warning"
 3846+.sp
 3847+Enabling hinting can lead to mispositioned text (in situations it\(aqs
 3848+supposed to match up video background), or reduce the smoothness
 3849+of animations with some badly authored ASS scripts. It is recommended
 3850+to not use this option, unless really needed.
 3851+.UNINDENT
 3852+.UNINDENT
 3853+.TP
 3854+.B \fB\-\-sub\-ass\-line\-spacing=<value>\fP
 3855+Set line spacing value for SSA/ASS renderer.
 3856+.TP
 3857+.B \fB\-\-sub\-ass\-shaper=<simple|complex>\fP
 3858+Set the text layout engine used by libass.
 3859+.INDENT 7.0
 3860+.TP
 3861+.B simple
 3862+uses Fribidi only, fast, doesn\(aqt render some languages correctly
 3863+.TP
 3864+.B complex
 3865+uses HarfBuzz, slower, wider language support
 3866+.UNINDENT
 3867+.sp
 3868+\fBcomplex\fP is the default. If libass hasn\(aqt been compiled against HarfBuzz,
 3869+libass silently reverts to \fBsimple\fP\&.
 3870+.TP
 3871+.B \fB\-\-sub\-ass\-styles=<filename>\fP
 3872+Load all SSA/ASS styles found in the specified file and use them for
 3873+rendering text subtitles. The syntax of the file is exactly like the \fB[V4
 3874+Styles]\fP / \fB[V4+ Styles]\fP section of SSA/ASS.
 3875+.sp
 3876+\fBNOTE:\fP
 3877+.INDENT 7.0
 3878+.INDENT 3.5
 3879+Using this option may lead to incorrect subtitle rendering.
 3880+.UNINDENT
 3881+.UNINDENT
 3882+.TP
 3883+.B \fB\-\-sub\-ass\-override=<yes|no|force|scale|strip>\fP
 3884+Control whether user style overrides should be applied. Note that all of
 3885+these overrides try to be somewhat smart about figuring out whether or not
 3886+a subtitle is considered a "sign".
 3887+.INDENT 7.0
 3888+.TP
 3889+.B no
 3890+Render subtitles as specified by the subtitle scripts, without
 3891+overrides.
 3892+.TP
 3893+.B yes
 3894+Apply all the \fB\-\-sub\-ass\-*\fP style override options. Changing the
 3895+default for any of these options can lead to incorrect subtitle
 3896+rendering (default).
 3897+.TP
 3898+.B force
 3899+Like \fByes\fP, but also force all \fB\-\-sub\-*\fP options. Can break
 3900+rendering easily.
 3901+.TP
 3902+.B scale
 3903+Like \fByes\fP, but also apply \fB\-\-sub\-scale\fP\&.
 3904+.TP
 3905+.B strip
 3906+Radically strip all ASS tags and styles from the subtitle. This
 3907+is equivalent to the old \fB\-\-no\-ass\fP / \fB\-\-no\-sub\-ass\fP options.
 3908+.UNINDENT
 3909+.sp
 3910+This also controls some bitmap subtitle overrides, as well as HTML tags in
 3911+formats like SRT, despite the name of the option.
 3912+.TP
 3913+.B \fB\-\-sub\-ass\-force\-margins\fP
 3914+Enables placing toptitles and subtitles in black borders when they are
 3915+available, if the subtitles are in the ASS format.
 3916+.sp
 3917+Default: no.
 3918+.TP
 3919+.B \fB\-\-sub\-use\-margins\fP
 3920+Enables placing toptitles and subtitles in black borders when they are
 3921+available, if the subtitles are in a plain text format  (or ASS if
 3922+\fB\-\-sub\-ass\-override\fP is set high enough).
 3923+.sp
 3924+Default: yes.
 3925+.sp
 3926+Renamed from \fB\-\-sub\-ass\-use\-margins\fP\&. To place ASS subtitles in the borders
 3927+too (like the old option did), also add \fB\-\-sub\-ass\-force\-margins\fP\&.
 3928+.TP
 3929+.B \fB\-\-sub\-ass\-vsfilter\-aspect\-compat=<yes|no>\fP
 3930+Stretch SSA/ASS subtitles when playing anamorphic videos for compatibility
 3931+with traditional VSFilter behavior. This switch has no effect when the
 3932+video is stored with square pixels.
 3933+.sp
 3934+The renderer historically most commonly used for the SSA/ASS subtitle
 3935+formats, VSFilter, had questionable behavior that resulted in subtitles
 3936+being stretched too if the video was stored in anamorphic format that
 3937+required scaling for display.  This behavior is usually undesirable and
 3938+newer VSFilter versions may behave differently. However, many existing
 3939+scripts compensate for the stretching by modifying things in the opposite
 3940+direction.  Thus, if such scripts are displayed "correctly", they will not
 3941+appear as intended.  This switch enables emulation of the old VSFilter
 3942+behavior (undesirable but expected by many existing scripts).
 3943+.sp
 3944+Enabled by default.
 3945+.TP
 3946+.B \fB\-\-sub\-ass\-vsfilter\-blur\-compat=<yes|no>\fP
 3947+Scale \fB\eblur\fP tags by video resolution instead of script resolution
 3948+(enabled by default). This is bug in VSFilter, which according to some,
 3949+can\(aqt be fixed anymore in the name of compatibility.
 3950+.sp
 3951+Note that this uses the actual video resolution for calculating the
 3952+offset scale factor, not what the video filter chain or the video output
 3953+use.
 3954+.TP
 3955+.B \fB\-\-sub\-ass\-vsfilter\-color\-compat=<basic|full|force\-601|no>\fP
 3956+Mangle colors like (xy\-)vsfilter do (default: basic). Historically, VSFilter
 3957+was not color space aware. This was no problem as long as the color space
 3958+used for SD video (BT.601) was used. But when everything switched to HD
 3959+(BT.709), VSFilter was still converting RGB colors to BT.601, rendered
 3960+them into the video frame, and handled the frame to the video output, which
 3961+would use BT.709 for conversion to RGB. The result were mangled subtitle
 3962+colors. Later on, bad hacks were added on top of the ASS format to control
 3963+how colors are to be mangled.
 3964+.INDENT 7.0
 3965+.TP
 3966+.B basic
 3967+Handle only BT.601\->BT.709 mangling, if the subtitles seem to
 3968+indicate that this is required (default).
 3969+.TP
 3970+.B full
 3971+Handle the full \fBYCbCr Matrix\fP header with all video color spaces
 3972+supported by libass and mpv. This might lead to bad breakages in
 3973+corner cases and is not strictly needed for compatibility
 3974+(hopefully), which is why this is not default.
 3975+.TP
 3976+.B force\-601
 3977+Force BT.601\->BT.709 mangling, regardless of subtitle headers
 3978+or video color space.
 3979+.TP
 3980+.B no
 3981+Disable color mangling completely. All colors are RGB.
 3982+.UNINDENT
 3983+.sp
 3984+Choosing anything other than \fBno\fP will make the subtitle color depend on
 3985+the video color space, and it\(aqs for example in theory not possible to reuse
 3986+a subtitle script with another video file. The \fB\-\-sub\-ass\-override\fP
 3987+option doesn\(aqt affect how this option is interpreted.
 3988+.TP
 3989+.B \fB\-\-stretch\-dvd\-subs=<yes|no>\fP
 3990+Stretch DVD subtitles when playing anamorphic videos for better looking
 3991+fonts on badly mastered DVDs. This switch has no effect when the
 3992+video is stored with square pixels \- which for DVD input cannot be the case
 3993+though.
 3994+.sp
 3995+Many studios tend to use bitmap fonts designed for square pixels when
 3996+authoring DVDs, causing the fonts to look stretched on playback on DVD
 3997+players. This option fixes them, however at the price of possibly
 3998+misaligning some subtitles (e.g. sign translations).
 3999+.sp
 4000+Disabled by default.
 4001+.TP
 4002+.B \fB\-\-stretch\-image\-subs\-to\-screen=<yes|no>\fP
 4003+Stretch DVD and other image subtitles to the screen, ignoring the video
 4004+margins. This has a similar effect as \fB\-\-sub\-use\-margins\fP for text
 4005+subtitles, except that the text itself will be stretched, not only just
 4006+repositioned. (At least in general it is unavoidable, as an image bitmap
 4007+can in theory consist of a single bitmap covering the whole screen, and
 4008+the player won\(aqt know where exactly the text parts are located.)
 4009+.sp
 4010+This option does not display subtitles correctly. Use with care.
 4011+.sp
 4012+Disabled by default.
 4013+.TP
 4014+.B \fB\-\-image\-subs\-video\-resolution=<yes|no>\fP
 4015+Override the image subtitle resolution with the video resolution
 4016+(default: no). Normally, the subtitle canvas is fit into the video canvas
 4017+(e.g. letterboxed). Setting this option uses the video size as subtitle
 4018+canvas size. Can be useful to test broken subtitles, which often happen
 4019+when the video was trancoded, while attempting to keep the old subtitles.
 4020+.TP
 4021+.B \fB\-\-sub\-ass\fP, \fB\-\-no\-sub\-ass\fP
 4022+Render ASS subtitles natively (enabled by default).
 4023+.sp
 4024+\fBNOTE:\fP
 4025+.INDENT 7.0
 4026+.INDENT 3.5
 4027+This has been deprecated by \fB\-\-sub\-ass\-override=strip\fP\&. You also
 4028+may need \fB\-\-embeddedfonts=no\fP to get the same behavior. Also,
 4029+using \fB\-\-sub\-ass\-override=style\fP should give better results
 4030+without breaking subtitles too much.
 4031+.UNINDENT
 4032+.UNINDENT
 4033+.sp
 4034+If \fB\-\-no\-sub\-ass\fP is specified, all tags and style declarations are
 4035+stripped and ignored on display. The subtitle renderer uses the font style
 4036+as specified by the \fB\-\-sub\-\fP options instead.
 4037+.sp
 4038+\fBNOTE:\fP
 4039+.INDENT 7.0
 4040+.INDENT 3.5
 4041+Using \fB\-\-no\-sub\-ass\fP may lead to incorrect or completely broken
 4042+rendering of ASS/SSA subtitles. It can sometimes be useful to forcibly
 4043+override the styling of ASS subtitles, but should be avoided in general.
 4044+.UNINDENT
 4045+.UNINDENT
 4046+.TP
 4047+.B \fB\-\-sub\-auto=<no|exact|fuzzy|all>\fP, \fB\-\-no\-sub\-auto\fP
 4048+Load additional subtitle files matching the video filename. The parameter
 4049+specifies how external subtitle files are matched. \fBexact\fP is enabled by
 4050+default.
 4051+.INDENT 7.0
 4052+.TP
 4053+.B no
 4054+Don\(aqt automatically load external subtitle files.
 4055+.TP
 4056+.B exact
 4057+Load the media filename with subtitle file extension (default).
 4058+.TP
 4059+.B fuzzy
 4060+Load all subs containing media filename.
 4061+.TP
 4062+.B all
 4063+Load all subs in the current and \fB\-\-sub\-file\-paths\fP directories.
 4064+.UNINDENT
 4065+.TP
 4066+.B \fB\-\-sub\-codepage=<codepage>\fP
 4067+You can use this option to specify the subtitle codepage. uchardet will be
 4068+used to guess the charset. (If mpv was not compiled with uchardet, then
 4069+\fButf\-8\fP is the effective default.)
 4070+.sp
 4071+The default value for this option is \fBauto\fP, which enables autodetection.
 4072+.sp
 4073+The following steps are taken to determine the final codepage, in order:
 4074+.INDENT 7.0
 4075+.IP \(bu 2
 4076+if the specific codepage has a \fB+\fP, use that codepage
 4077+.IP \(bu 2
 4078+if the data looks like UTF\-8, assume it is UTF\-8
 4079+.IP \(bu 2
 4080+if \fB\-\-sub\-codepage\fP is set to a specific codepage, use that
 4081+.IP \(bu 2
 4082+run uchardet, and if successful, use that
 4083+.IP \(bu 2
 4084+otherwise, use \fBUTF\-8\-BROKEN\fP
 4085+.UNINDENT
 4086+.INDENT 7.0
 4087+.INDENT 3.5
 4088+.IP "Examples"
 4089+.INDENT 0.0
 4090+.IP \(bu 2
 4091+\fB\-\-sub\-codepage=latin2\fP Use Latin 2 if input is not UTF\-8.
 4092+.IP \(bu 2
 4093+\fB\-\-sub\-codepage=+cp1250\fP Always force recoding to cp1250.
 4094+.UNINDENT
 4095+.UNINDENT
 4096+.UNINDENT
 4097+.sp
 4098+The pseudo codepage \fBUTF\-8\-BROKEN\fP is used internally. If it\(aqs set,
 4099+subtitles are interpreted as UTF\-8 with "Latin 1" as fallback for bytes
 4100+which are not valid UTF\-8 sequences. iconv is never involved in this mode.
 4101+.sp
 4102+This option changed in mpv 0.23.0. Support for the old syntax was fully
 4103+removed in mpv 0.24.0.
 4104+.TP
 4105+.B \fB\-\-sub\-fix\-timing=<yes|no>\fP
 4106+Adjust subtitle timing is to remove minor gaps or overlaps between
 4107+subtitles (if the difference is smaller than 210 ms, the gap or overlap
 4108+is removed).
 4109+.TP
 4110+.B \fB\-\-sub\-forced\-only\fP
 4111+Display only forced subtitles for the DVD subtitle stream selected by e.g.
 4112+\fB\-\-slang\fP\&.
 4113+.TP
 4114+.B \fB\-\-sub\-fps=<rate>\fP
 4115+Specify the framerate of the subtitle file (default: video fps). Affects
 4116+text subtitles only.
 4117+.sp
 4118+\fBNOTE:\fP
 4119+.INDENT 7.0
 4120+.INDENT 3.5
 4121+\fB<rate>\fP > video fps speeds the subtitles up for frame\-based
 4122+subtitle files and slows them down for time\-based ones.
 4123+.UNINDENT
 4124+.UNINDENT
 4125+.sp
 4126+See also: \fB\-\-sub\-speed\fP\&.
 4127+.TP
 4128+.B \fB\-\-sub\-gauss=<0.0\-3.0>\fP
 4129+Apply Gaussian blur to image subtitles (default: 0). This can help to make
 4130+pixelated DVD/Vobsubs look nicer. A value other than 0 also switches to
 4131+software subtitle scaling. Might be slow.
 4132+.sp
 4133+\fBNOTE:\fP
 4134+.INDENT 7.0
 4135+.INDENT 3.5
 4136+Never applied to text subtitles.
 4137+.UNINDENT
 4138+.UNINDENT
 4139+.TP
 4140+.B \fB\-\-sub\-gray\fP
 4141+Convert image subtitles to grayscale. Can help to make yellow DVD/Vobsubs
 4142+look nicer.
 4143+.sp
 4144+\fBNOTE:\fP
 4145+.INDENT 7.0
 4146+.INDENT 3.5
 4147+Never applied to text subtitles.
 4148+.UNINDENT
 4149+.UNINDENT
 4150+.TP
 4151+.B \fB\-\-sub\-paths=<path1:path2:...>\fP
 4152+Deprecated, use \fB\-\-sub\-file\-paths\fP\&.
 4153+.TP
 4154+.B \fB\-\-sub\-file\-paths=<path\-list>\fP
 4155+Specify extra directories to search for subtitles matching the video.
 4156+Multiple directories can be separated by ":" (";" on Windows).
 4157+Paths can be relative or absolute. Relative paths are interpreted relative
 4158+to video file directory.
 4159+If the file is a URL, only absolute paths and \fBsub\fP configuration
 4160+subdirectory will be scanned.
 4161+.INDENT 7.0
 4162+.INDENT 3.5
 4163+.IP "Example"
 4164+.sp
 4165+Assuming that \fB/path/to/video/video.avi\fP is played and
 4166+\fB\-\-sub\-file\-paths=sub:subtitles\fP is specified, mpv
 4167+searches for subtitle files in these directories:
 4168+.INDENT 0.0
 4169+.IP \(bu 2
 4170+\fB/path/to/video/\fP
 4171+.IP \(bu 2
 4172+\fB/path/to/video/sub/\fP
 4173+.IP \(bu 2
 4174+\fB/path/to/video/subtitles/\fP
 4175+.IP \(bu 2
 4176+the \fBsub\fP configuration subdirectory (usually \fB~/.config/mpv/sub/\fP)
 4177+.UNINDENT
 4178+.UNINDENT
 4179+.UNINDENT
 4180+.sp
 4181+This is a path list option. See \fI\%List Options\fP for details.
 4182+.TP
 4183+.B \fB\-\-sub\-visibility\fP, \fB\-\-no\-sub\-visibility\fP
 4184+Can be used to disable display of subtitles, but still select and decode
 4185+them.
 4186+.TP
 4187+.B \fB\-\-sub\-clear\-on\-seek\fP
 4188+(Obscure, rarely useful.) Can be used to play broken mkv files with
 4189+duplicate ReadOrder fields. ReadOrder is the first field in a
 4190+Matroska\-style ASS subtitle packets. It should be unique, and libass
 4191+uses it for fast elimination of duplicates. This option disables caching
 4192+of subtitles across seeks, so after a seek libass can\(aqt eliminate subtitle
 4193+packets with the same ReadOrder as earlier packets.
 4194+.TP
 4195+.B \fB\-\-teletext\-page=<1\-999>\fP
 4196+This works for \fBdvb_teletext\fP subtitle streams, and if FFmpeg has been
 4197+compiled with support for it.
 4198+.TP
 4199+.B \fB\-\-sub\-font=<name>\fP
 4200+Specify font to use for subtitles that do not themselves
 4201+specify a particular font. The default is \fBsans\-serif\fP\&.
 4202+.INDENT 7.0
 4203+.INDENT 3.5
 4204+.IP "Examples"
 4205+.INDENT 0.0
 4206+.IP \(bu 2
 4207+\fB\-\-sub\-font=\(aqBitstream Vera Sans\(aq\fP
 4208+.IP \(bu 2
 4209+\fB\-\-sub\-font=\(aqComic Sans MS\(aq\fP
 4210+.UNINDENT
 4211+.UNINDENT
 4212+.UNINDENT
 4213+.sp
 4214+\fBNOTE:\fP
 4215+.INDENT 7.0
 4216+.INDENT 3.5
 4217+The \fB\-\-sub\-font\fP option (and many other style related \fB\-\-sub\-\fP
 4218+options) are ignored when ASS\-subtitles are rendered, unless the
 4219+\fB\-\-no\-sub\-ass\fP option is specified.
 4220+.sp
 4221+This used to support fontconfig patterns. Starting with libass 0.13.0,
 4222+this stopped working.
 4223+.UNINDENT
 4224+.UNINDENT
 4225+.TP
 4226+.B \fB\-\-sub\-font\-size=<size>\fP
 4227+Specify the sub font size. The unit is the size in scaled pixels at a
 4228+window height of 720. The actual pixel size is scaled with the window
 4229+height: if the window height is larger or smaller than 720, the actual size
 4230+of the text increases or decreases as well.
 4231+.sp
 4232+Default: 55.
 4233+.TP
 4234+.B \fB\-\-sub\-back\-color=<color>\fP
 4235+See \fB\-\-sub\-color\fP\&. Color used for sub text background. You can use
 4236+\fB\-\-sub\-shadow\-offset\fP to change its size relative to the text.
 4237+.TP
 4238+.B \fB\-\-sub\-blur=<0..20.0>\fP
 4239+Gaussian blur factor. 0 means no blur applied (default).
 4240+.TP
 4241+.B \fB\-\-sub\-bold=<yes|no>\fP
 4242+Format text on bold.
 4243+.TP
 4244+.B \fB\-\-sub\-italic=<yes|no>\fP
 4245+Format text on italic.
 4246+.TP
 4247+.B \fB\-\-sub\-border\-color=<color>\fP
 4248+See \fB\-\-sub\-color\fP\&. Color used for the sub font border.
 4249+.sp
 4250+\fBNOTE:\fP
 4251+.INDENT 7.0
 4252+.INDENT 3.5
 4253+ignored when \fB\-\-sub\-back\-color\fP is
 4254+specified (or more exactly: when that option is not set to completely
 4255+transparent).
 4256+.UNINDENT
 4257+.UNINDENT
 4258+.TP
 4259+.B \fB\-\-sub\-border\-size=<size>\fP
 4260+Size of the sub font border in scaled pixels (see \fB\-\-sub\-font\-size\fP
 4261+for details). A value of 0 disables borders.
 4262+.sp
 4263+Default: 3.
 4264+.TP
 4265+.B \fB\-\-sub\-color=<color>\fP
 4266+Specify the color used for unstyled text subtitles.
 4267+.sp
 4268+The color is specified in the form \fBr/g/b\fP, where each color component
 4269+is specified as number in the range 0.0 to 1.0. It\(aqs also possible to
 4270+specify the transparency by using \fBr/g/b/a\fP, where the alpha value 0
 4271+means fully transparent, and 1.0 means opaque. If the alpha component is
 4272+not given, the color is 100% opaque.
 4273+.sp
 4274+Passing a single number to the option sets the sub to gray, and the form
 4275+\fBgray/a\fP lets you specify alpha additionally.
 4276+.INDENT 7.0
 4277+.INDENT 3.5
 4278+.IP "Examples"
 4279+.INDENT 0.0
 4280+.IP \(bu 2
 4281+\fB\-\-sub\-color=1.0/0.0/0.0\fP set sub to opaque red
 4282+.IP \(bu 2
 4283+\fB\-\-sub\-color=1.0/0.0/0.0/0.75\fP set sub to opaque red with 75% alpha
 4284+.IP \(bu 2
 4285+\fB\-\-sub\-color=0.5/0.75\fP set sub to 50% gray with 75% alpha
 4286+.UNINDENT
 4287+.UNINDENT
 4288+.UNINDENT
 4289+.sp
 4290+Alternatively, the color can be specified as a RGB hex triplet in the form
 4291+\fB#RRGGBB\fP, where each 2\-digit group expresses a color value in the
 4292+range 0 (\fB00\fP) to 255 (\fBFF\fP). For example, \fB#FF0000\fP is red.
 4293+This is similar to web colors. Alpha is given with \fB#AARRGGBB\fP\&.
 4294+.INDENT 7.0
 4295+.INDENT 3.5
 4296+.IP "Examples"
 4297+.INDENT 0.0
 4298+.IP \(bu 2
 4299+\fB\-\-sub\-color=\(aq#FF0000\(aq\fP set sub to opaque red
 4300+.IP \(bu 2
 4301+\fB\-\-sub\-color=\(aq#C0808080\(aq\fP set sub to 50% gray with 75% alpha
 4302+.UNINDENT
 4303+.UNINDENT
 4304+.UNINDENT
 4305+.TP
 4306+.B \fB\-\-sub\-margin\-x=<size>\fP
 4307+Left and right screen margin for the subs in scaled pixels (see
 4308+\fB\-\-sub\-font\-size\fP for details).
 4309+.sp
 4310+This option specifies the distance of the sub to the left, as well as at
 4311+which distance from the right border long sub text will be broken.
 4312+.sp
 4313+Default: 25.
 4314+.TP
 4315+.B \fB\-\-sub\-margin\-y=<size>\fP
 4316+Top and bottom screen margin for the subs in scaled pixels (see
 4317+\fB\-\-sub\-font\-size\fP for details).
 4318+.sp
 4319+This option specifies the vertical margins of unstyled text subtitles.
 4320+If you just want to raise the vertical subtitle position, use \fB\-\-sub\-pos\fP\&.
 4321+.sp
 4322+Default: 22.
 4323+.TP
 4324+.B \fB\-\-sub\-align\-x=<left|center|right>\fP
 4325+Control to which corner of the screen text subtitles should be
 4326+aligned to (default: \fBcenter\fP).
 4327+.sp
 4328+Never applied to ASS subtitles, except in \fB\-\-no\-sub\-ass\fP mode. Likewise,
 4329+this does not apply to image subtitles.
 4330+.TP
 4331+.B \fB\-\-sub\-align\-y=<top|center|bottom>\fP
 4332+Vertical position (default: \fBbottom\fP).
 4333+Details see \fB\-\-sub\-align\-x\fP\&.
 4334+.TP
 4335+.B \fB\-\-sub\-justify=<auto|left|center|right>\fP
 4336+Control how multi line subs are justified irrespective of where they
 4337+are aligned (default: \fBauto\fP which justifies as defined by
 4338+\fB\-\-sub\-align\-y\fP).
 4339+Left justification is recommended to make the subs easier to read
 4340+as it is easier for the eyes.
 4341+.TP
 4342+.B \fB\-\-sub\-ass\-justify=<yes|no>\fP
 4343+Applies justification as defined by \fB\-\-sub\-justify\fP on ASS subtitles
 4344+if \fB\-\-sub\-ass\-override\fP is not set to \fBno\fP\&.
 4345+Default: \fBno\fP\&.
 4346+.TP
 4347+.B \fB\-\-sub\-shadow\-color=<color>\fP
 4348+See \fB\-\-sub\-color\fP\&. Color used for sub text shadow.
 4349+.TP
 4350+.B \fB\-\-sub\-shadow\-offset=<size>\fP
 4351+Displacement of the sub text shadow in scaled pixels (see
 4352+\fB\-\-sub\-font\-size\fP for details). A value of 0 disables shadows.
 4353+.sp
 4354+Default: 0.
 4355+.TP
 4356+.B \fB\-\-sub\-spacing=<size>\fP
 4357+Horizontal sub font spacing in scaled pixels (see \fB\-\-sub\-font\-size\fP
 4358+for details). This value is added to the normal letter spacing. Negative
 4359+values are allowed.
 4360+.sp
 4361+Default: 0.
 4362+.TP
 4363+.B \fB\-\-sub\-filter\-sdh=<yes|no>\fP
 4364+Applies filter removing subtitle additions for the deaf or hard\-of\-hearing (SDH).
 4365+This is intended for English, but may in part work for other languages too.
 4366+The intention is that it can be always enabled so may not remove
 4367+all parts added.
 4368+It removes speaker labels (like MAN:), upper case text in parentheses and
 4369+any text in brackets.
 4370+.sp
 4371+Default: \fBno\fP\&.
 4372+.TP
 4373+.B \fB\-\-sub\-filter\-sdh\-harder=<yes|no>\fP
 4374+Do harder SDH filtering (if enabled by \fB\-\-sub\-filter\-sdh\fP).
 4375+Will also remove speaker labels and text within parentheses using both
 4376+lower and upper case letters.
 4377+.sp
 4378+Default: \fBno\fP\&.
 4379+.TP
 4380+.B \fB\-\-sub\-create\-cc\-track=<yes|no>\fP
 4381+For every video stream, create a closed captions track (default: no). The
 4382+only purpose is to make the track available for selection at the start of
 4383+playback, instead of creating it lazily. This applies only to
 4384+\fBATSC A53 Part 4 Closed Captions\fP (displayed by mpv as subtitle tracks
 4385+using the codec \fBeia_608\fP). The CC track is marked "default" and selected
 4386+according to the normal subtitle track selection rules. You can then use
 4387+\fB\-\-sid\fP to explicitly select the correct track too.
 4388+.sp
 4389+If the video stream contains no closed captions, or if no video is being
 4390+decoded, the CC track will remain empty and will not show any text.
 4391+.TP
 4392+.B \fB\-\-sub\-font\-provider=<auto|none|fontconfig>\fP
 4393+Which libass font provider backend to use (default: auto). \fBauto\fP will
 4394+attempt to use the native font provider: fontconfig on Linux, CoreText on
 4395+OSX, DirectWrite on Windows. \fBfontconfig\fP forces fontconfig, if libass
 4396+was built with support (if not, it behaves like \fBnone\fP).
 4397+.sp
 4398+The \fBnone\fP font provider effectively disables system fonts. It will still
 4399+attempt to use embedded fonts (unless \fB\-\-embeddedfonts=no\fP is set; this is
 4400+the same behavior as with all other font providers), \fBsubfont.ttf\fP if
 4401+provided, and fonts in  the \fBfonts\fP sub\-directory if provided. (The
 4402+fallback is more strict than that of other font providers, and if a font
 4403+name does not match, it may prefer not to render any text that uses the
 4404+missing font.)
 4405+.UNINDENT
 4406+.SS Window
 4407+.INDENT 0.0
 4408+.TP
 4409+.B \fB\-\-title=<string>\fP
 4410+Set the window title. This is used for the video window, and if possible,
 4411+also sets the audio stream title.
 4412+.sp
 4413+Properties are expanded. (See \fI\%Property Expansion\fP\&.)
 4414+.sp
 4415+\fBWARNING:\fP
 4416+.INDENT 7.0
 4417+.INDENT 3.5
 4418+There is a danger of this causing significant CPU usage, depending on
 4419+the properties used. Changing the window title is often a slow
 4420+operation, and if the title changes every frame, playback can be ruined.
 4421+.UNINDENT
 4422+.UNINDENT
 4423+.TP
 4424+.B \fB\-\-screen=<default|0\-32>\fP
 4425+In multi\-monitor configurations (i.e. a single desktop that spans across
 4426+multiple displays), this option tells mpv which screen to display the
 4427+video on.
 4428+.INDENT 7.0
 4429+.INDENT 3.5
 4430+.IP "Note (X11)"
 4431+.sp
 4432+This option does not work properly with all window managers. In these
 4433+cases, you can try to use \fB\-\-geometry\fP to position the window
 4434+explicitly. It\(aqs also possible that the window manager provides native
 4435+features to control which screens application windows should use.
 4436+.UNINDENT
 4437+.UNINDENT
 4438+.sp
 4439+See also \fB\-\-fs\-screen\fP\&.
 4440+.TP
 4441+.B \fB\-\-fullscreen\fP, \fB\-\-fs\fP
 4442+Fullscreen playback.
 4443+.TP
 4444+.B \fB\-\-fs\-screen=<all|current|0\-32>\fP
 4445+In multi\-monitor configurations (i.e. a single desktop that spans across
 4446+multiple displays), this option tells mpv which screen to go fullscreen to.
 4447+If \fBcurrent\fP is used mpv will fallback on what the user provided with
 4448+the \fBscreen\fP option.
 4449+.INDENT 7.0
 4450+.INDENT 3.5
 4451+.IP "Note (X11)"
 4452+.sp
 4453+This option works properly only with window managers which
 4454+understand the EWMH \fB_NET_WM_FULLSCREEN_MONITORS\fP hint.
 4455+.UNINDENT
 4456+.UNINDENT
 4457+.INDENT 7.0
 4458+.INDENT 3.5
 4459+.IP "Note (OS X)"
 4460+.sp
 4461+\fBall\fP does not work on OS X and will behave like \fBcurrent\fP\&.
 4462+.UNINDENT
 4463+.UNINDENT
 4464+.sp
 4465+See also \fB\-\-screen\fP\&.
 4466+.TP
 4467+.B \fB\-\-keep\-open=<yes|no|always>\fP
 4468+Do not terminate when playing or seeking beyond the end of the file, and
 4469+there is not next file to be played (and \fB\-\-loop\fP is not used).
 4470+Instead, pause the player. When trying to seek beyond end of the file, the
 4471+player will attempt to seek to the last frame.
 4472+.sp
 4473+Normally, this will act like \fBset pause yes\fP on EOF, unless the
 4474+\fB\-\-keep\-open\-pause=no\fP option is set.
 4475+.sp
 4476+The following arguments can be given:
 4477+.INDENT 7.0
 4478+.TP
 4479+.B no
 4480+If the current file ends, go to the next file or terminate.
 4481+(Default.)
 4482+.TP
 4483+.B yes
 4484+Don\(aqt terminate if the current file is the last playlist entry.
 4485+Equivalent to \fB\-\-keep\-open\fP without arguments.
 4486+.TP
 4487+.B always
 4488+Like \fByes\fP, but also applies to files before the last playlist
 4489+entry. This means playback will never automatically advance to
 4490+the next file.
 4491+.UNINDENT
 4492+.sp
 4493+\fBNOTE:\fP
 4494+.INDENT 7.0
 4495+.INDENT 3.5
 4496+This option is not respected when using \fB\-\-frames\fP\&. Explicitly
 4497+skipping to the next file if the binding uses \fBforce\fP will terminate
 4498+playback as well.
 4499+.sp
 4500+Also, if errors or unusual circumstances happen, the player can quit
 4501+anyway.
 4502+.UNINDENT
 4503+.UNINDENT
 4504+.sp
 4505+Since mpv 0.6.0, this doesn\(aqt pause if there is a next file in the playlist,
 4506+or the playlist is looped. Approximately, this will pause when the player
 4507+would normally exit, but in practice there are corner cases in which this
 4508+is not the case (e.g. \fBmpv \-\-keep\-open file.mkv /dev/null\fP will play
 4509+file.mkv normally, then fail to open \fB/dev/null\fP, then exit). (In
 4510+mpv 0.8.0, \fBalways\fP was introduced, which restores the old behavior.)
 4511+.TP
 4512+.B \fB\-\-keep\-open\-pause=<yes|no>\fP
 4513+If set to \fBno\fP, instead of pausing when \fB\-\-keep\-open\fP is active, just
 4514+stop at end of file and continue playing forward when you seek backwards
 4515+until end where it stops again. Default: \fByes\fP\&.
 4516+.TP
 4517+.B \fB\-\-image\-display\-duration=<seconds|inf>\fP
 4518+If the current file is an image, play the image for the given amount of
 4519+seconds (default: 1). \fBinf\fP means the file is kept open forever (until
 4520+the user stops playback manually).
 4521+.sp
 4522+Unlike \fB\-\-keep\-open\fP, the player is not paused, but simply continues
 4523+playback until the time has elapsed. (It should not use any resources
 4524+during "playback".)
 4525+.sp
 4526+This affects image files, which are defined as having only 1 video frame
 4527+and no audio. The player may recognize certain non\-images as images, for
 4528+example if \fB\-\-length\fP is used to reduce the length to 1 frame, or if
 4529+you seek to the last frame.
 4530+.sp
 4531+This option does not affect the framerate used for \fBmf://\fP or
 4532+\fB\-\-merge\-files\fP\&. For that, use \fB\-\-mf\-fps\fP instead.
 4533+.sp
 4534+Setting \fB\-\-image\-display\-duration\fP hides the OSC and does not track
 4535+playback time on the command\-line output, and also does not duplicate
 4536+the image frame when encoding. To force the player into "dumb mode"
 4537+and actually count out seconds, or to duplicate the image when
 4538+encoding, you need to use \fB\-\-demuxer=lavf \-\-demuxer\-lavf\-o=loop=1\fP,
 4539+and use \fB\-\-length\fP or \fB\-\-frames\fP to stop after a particular time.
 4540+.TP
 4541+.B \fB\-\-force\-window=<yes|no|immediate>\fP
 4542+Create a video output window even if there is no video. This can be useful
 4543+when pretending that mpv is a GUI application. Currently, the window
 4544+always has the size 640x480, and is subject to \fB\-\-geometry\fP,
 4545+\fB\-\-autofit\fP, and similar options.
 4546+.sp
 4547+\fBWARNING:\fP
 4548+.INDENT 7.0
 4549+.INDENT 3.5
 4550+The window is created only after initialization (to make sure default
 4551+window placement still works if the video size is different from the
 4552+\fB\-\-force\-window\fP default window size). This can be a problem if
 4553+initialization doesn\(aqt work perfectly, such as when opening URLs with
 4554+bad network connection, or opening broken video files. The \fBimmediate\fP
 4555+mode can be used to create the window always on program start, but this
 4556+may cause other issues.
 4557+.UNINDENT
 4558+.UNINDENT
 4559+.TP
 4560+.B \fB\-\-taskbar\-progress\fP, \fB\-\-no\-taskbar\-progress\fP
 4561+(Windows only)
 4562+Enable/disable playback progress rendering in taskbar (Windows 7 and above).
 4563+.sp
 4564+Enabled by default.
 4565+.TP
 4566+.B \fB\-\-snap\-window\fP
 4567+(Windows only) Snap the player window to screen edges.
 4568+.TP
 4569+.B \fB\-\-ontop\fP
 4570+Makes the player window stay on top of other windows.
 4571+.sp
 4572+On Windows, if combined with fullscreen mode, this causes mpv to be
 4573+treated as exclusive fullscreen window that bypasses the Desktop Window
 4574+Manager.
 4575+.TP
 4576+.B \fB\-\-ontop\-level=<window|system|level>\fP
 4577+(OS X only)
 4578+Sets the level of an ontop window (default: window).
 4579+.INDENT 7.0
 4580+.TP
 4581+.B window
 4582+On top of all other windows.
 4583+.TP
 4584+.B system
 4585+On top of system elements like Taskbar, Menubar and Dock.
 4586+.TP
 4587+.B level
 4588+A level as integer.
 4589+.UNINDENT
 4590+.TP
 4591+.B \fB\-\-border\fP, \fB\-\-no\-border\fP
 4592+Play video with window border and decorations. Since this is on by
 4593+default, use \fB\-\-no\-border\fP to disable the standard window decorations.
 4594+.TP
 4595+.B \fB\-\-fit\-border\fP, \fB\-\-no\-fit\-border\fP
 4596+(Windows only) Fit the whole window with border and decorations on the
 4597+screen. Since this is on by default, use \fB\-\-no\-fit\-border\fP to make mpv
 4598+try to only fit client area with video on the screen. This behavior only
 4599+applied to window/video with size exceeding size of the screen.
 4600+.TP
 4601+.B \fB\-\-on\-all\-workspaces\fP
 4602+(X11 only)
 4603+Show the video window on all virtual desktops.
 4604+.TP
 4605+.B \fB\-\-geometry=<[W[xH]][+\-x+\-y]>\fP, \fB\-\-geometry=<x:y>\fP
 4606+Adjust the initial window position or size. \fBW\fP and \fBH\fP set the window
 4607+size in pixels. \fBx\fP and \fBy\fP set the window position, measured in pixels
 4608+from the top\-left corner of the screen to the top\-left corner of the image
 4609+being displayed. If a percentage sign (\fB%\fP) is given after the argument,
 4610+it turns the value into a percentage of the screen size in that direction.
 4611+Positions are specified similar to the standard X11 \fB\-\-geometry\fP option
 4612+format, in which e.g. +10\-50 means "place 10 pixels from the left border and
 4613+50 pixels from the lower border" and "\-\-20+\-10" means "place 20 pixels
 4614+beyond the right and 10 pixels beyond the top border".
 4615+.sp
 4616+If an external window is specified using the \fB\-\-wid\fP option, this
 4617+option is ignored.
 4618+.sp
 4619+The coordinates are relative to the screen given with \fB\-\-screen\fP for the
 4620+video output drivers that fully support \fB\-\-screen\fP\&.
 4621+.sp
 4622+\fBNOTE:\fP
 4623+.INDENT 7.0
 4624+.INDENT 3.5
 4625+Generally only supported by GUI VOs. Ignored for encoding.
 4626+.UNINDENT
 4627+.UNINDENT
 4628+.\" admonition: Note (OS X)
 4629+.\" 
 4630+.\" On Mac OS X the origin of the screen coordinate system is located on the
 4631+.\" bottom-left corner. For instance, ``0:0`` will place the window at the
 4632+.\" bottom-left of the screen.
 4633+.
 4634+.INDENT 7.0
 4635+.INDENT 3.5
 4636+.IP "Note (X11)"
 4637+.sp
 4638+This option does not work properly with all window managers.
 4639+.UNINDENT
 4640+.UNINDENT
 4641+.INDENT 7.0
 4642+.INDENT 3.5
 4643+.IP "Examples"
 4644+.INDENT 0.0
 4645+.TP
 4646+.B \fB50:40\fP
 4647+Places the window at x=50, y=40.
 4648+.TP
 4649+.B \fB50%:50%\fP
 4650+Places the window in the middle of the screen.
 4651+.TP
 4652+.B \fB100%:100%\fP
 4653+Places the window at the bottom right corner of the screen.
 4654+.TP
 4655+.B \fB50%\fP
 4656+Sets the window width to half the screen width. Window height is set
 4657+so that the window has the video aspect ratio.
 4658+.TP
 4659+.B \fB50%x50%\fP
 4660+Forces the window width and height to half the screen width and
 4661+height. Will show black borders to compensate for the video aspect
 4662+ratio (with most VOs and without \fB\-\-no\-keepaspect\fP).
 4663+.TP
 4664+.B \fB50%+10+10\fP
 4665+Sets the window to half the screen widths, and positions it 10
 4666+pixels below/left of the top left corner of the screen.
 4667+.UNINDENT
 4668+.UNINDENT
 4669+.UNINDENT
 4670+.sp
 4671+See also \fB\-\-autofit\fP and \fB\-\-autofit\-larger\fP for fitting the window into
 4672+a given size without changing aspect ratio.
 4673+.TP
 4674+.B \fB\-\-autofit=<[W[xH]]>\fP
 4675+Set the initial window size to a maximum size specified by \fBWxH\fP, without
 4676+changing the window\(aqs aspect ratio. The size is measured in pixels, or if
 4677+a number is followed by a percentage sign (\fB%\fP), in percents of the
 4678+screen size.
 4679+.sp
 4680+This option never changes the aspect ratio of the window. If the aspect
 4681+ratio mismatches, the window\(aqs size is reduced until it fits into the
 4682+specified size.
 4683+.sp
 4684+Window position is not taken into account, nor is it modified by this
 4685+option (the window manager still may place the window differently depending
 4686+on size). Use \fB\-\-geometry\fP to change the window position. Its effects
 4687+are applied after this option.
 4688+.sp
 4689+See \fB\-\-geometry\fP for details how this is handled with multi\-monitor
 4690+setups.
 4691+.sp
 4692+Use \fB\-\-autofit\-larger\fP instead if you just want to limit the maximum size
 4693+of the window, rather than always forcing a window size.
 4694+.sp
 4695+Use \fB\-\-geometry\fP if you want to force both window width and height to a
 4696+specific size.
 4697+.sp
 4698+\fBNOTE:\fP
 4699+.INDENT 7.0
 4700+.INDENT 3.5
 4701+Generally only supported by GUI VOs. Ignored for encoding.
 4702+.UNINDENT
 4703+.UNINDENT
 4704+.INDENT 7.0
 4705+.INDENT 3.5
 4706+.IP "Examples"
 4707+.INDENT 0.0
 4708+.TP
 4709+.B \fB70%\fP
 4710+Make the window width 70% of the screen size, keeping aspect ratio.
 4711+.TP
 4712+.B \fB1000\fP
 4713+Set the window width to 1000 pixels, keeping aspect ratio.
 4714+.TP
 4715+.B \fB70%x60%\fP
 4716+Make the window as large as possible, without being wider than 70%
 4717+of the screen width, or higher than 60% of the screen height.
 4718+.UNINDENT
 4719+.UNINDENT
 4720+.UNINDENT
 4721+.TP
 4722+.B \fB\-\-autofit\-larger=<[W[xH]]>\fP
 4723+This option behaves exactly like \fB\-\-autofit\fP, except the window size is
 4724+only changed if the window would be larger than the specified size.
 4725+.INDENT 7.0
 4726+.INDENT 3.5
 4727+.IP "Example"
 4728+.INDENT 0.0
 4729+.TP
 4730+.B \fB90%x80%\fP
 4731+If the video is larger than 90% of the screen width or 80% of the
 4732+screen height, make the window smaller until either its width is 90%
 4733+of the screen, or its height is 80% of the screen.
 4734+.UNINDENT
 4735+.UNINDENT
 4736+.UNINDENT
 4737+.TP
 4738+.B \fB\-\-autofit\-smaller=<[W[xH]]>\fP
 4739+This option behaves exactly like \fB\-\-autofit\fP, except that it sets the
 4740+minimum size of the window (just as \fB\-\-autofit\-larger\fP sets the maximum).
 4741+.INDENT 7.0
 4742+.INDENT 3.5
 4743+.IP "Example"
 4744+.INDENT 0.0
 4745+.TP
 4746+.B \fB500x500\fP
 4747+Make the window at least 500 pixels wide and 500 pixels high
 4748+(depending on the video aspect ratio, the width or height will be
 4749+larger than 500 in order to keep the aspect ratio the same).
 4750+.UNINDENT
 4751+.UNINDENT
 4752+.UNINDENT
 4753+.TP
 4754+.B \fB\-\-window\-scale=<factor>\fP
 4755+Resize the video window to a multiple (or fraction) of the video size. This
 4756+option is applied before \fB\-\-autofit\fP and other options are applied (so
 4757+they override this option).
 4758+.sp
 4759+For example, \fB\-\-window\-scale=0.5\fP would show the window at half the
 4760+video size.
 4761+.TP
 4762+.B \fB\-\-window\-minimized=<yes|no>\fP
 4763+Whether the video window is minimized or not. Setting this will minimize,
 4764+or unminimze, the video window if the current VO supports it. Note that
 4765+some VOs may support minimization while not supporting unminimization
 4766+(eg: Wayland).
 4767+.sp
 4768+Whether this option and \fB\-\-window\-maximized\fP work on program start or
 4769+at runtime, and whether they\(aqre (at runtime) updated to reflect the actual
 4770+window state, heavily depends on the VO and the windowing system. Some VOs
 4771+simply do not implement them or parts of them, while other VOs may be
 4772+restricted by the windowing systems (especially Wayland).
 4773+.TP
 4774+.B \fB\-\-window\-maximized=<yes|no>\fP
 4775+Whether the video window is maximized or not. Setting this will maximize,
 4776+or unmaximize, the video window if the current VO supports it. See
 4777+\fB\-\-window\-minimized\fP for further remarks.
 4778+.TP
 4779+.B \fB\-\-cursor\-autohide=<number|no|always>\fP
 4780+Make mouse cursor automatically hide after given number of milliseconds.
 4781+\fBno\fP will disable cursor autohide. \fBalways\fP means the cursor will stay
 4782+hidden.
 4783+.TP
 4784+.B \fB\-\-cursor\-autohide\-fs\-only\fP
 4785+If this option is given, the cursor is always visible in windowed mode. In
 4786+fullscreen mode, the cursor is shown or hidden according to
 4787+\fB\-\-cursor\-autohide\fP\&.
 4788+.TP
 4789+.B \fB\-\-no\-fixed\-vo\fP, \fB\-\-fixed\-vo\fP
 4790+\fB\-\-no\-fixed\-vo\fP enforces closing and reopening the video window for
 4791+multiple files (one (un)initialization for each file).
 4792+.TP
 4793+.B \fB\-\-force\-rgba\-osd\-rendering\fP
 4794+Change how some video outputs render the OSD and text subtitles. This
 4795+does not change appearance of the subtitles and only has performance
 4796+implications. For VOs which support native ASS rendering (like \fBgpu\fP,
 4797+\fBvdpau\fP, \fBdirect3d\fP), this can be slightly faster or slower,
 4798+depending on GPU drivers and hardware. For other VOs, this just makes
 4799+rendering slower.
 4800+.TP
 4801+.B \fB\-\-force\-window\-position\fP
 4802+Forcefully move mpv\(aqs video output window to default location whenever
 4803+there is a change in video parameters, video stream or file. This used to
 4804+be the default behavior. Currently only affects X11 VOs.
 4805+.TP
 4806+.B \fB\-\-no\-keepaspect\fP, \fB\-\-keepaspect\fP
 4807+\fB\-\-no\-keepaspect\fP will always stretch the video to window size, and will
 4808+disable the window manager hints that force the window aspect ratio.
 4809+(Ignored in fullscreen mode.)
 4810+.TP
 4811+.B \fB\-\-no\-keepaspect\-window\fP, \fB\-\-keepaspect\-window\fP
 4812+\fB\-\-keepaspect\-window\fP (the default) will lock the window size to the
 4813+video aspect. \fB\-\-no\-keepaspect\-window\fP disables this behavior, and will
 4814+instead add black bars if window aspect and video aspect mismatch. Whether
 4815+this actually works depends on the VO backend.
 4816+(Ignored in fullscreen mode.)
 4817+.TP
 4818+.B \fB\-\-monitoraspect=<ratio>\fP
 4819+Set the aspect ratio of your monitor or TV screen. A value of 0 disables a
 4820+previous setting (e.g. in the config file). Overrides the
 4821+\fB\-\-monitorpixelaspect\fP setting if enabled.
 4822+.sp
 4823+See also \fB\-\-monitorpixelaspect\fP and \fB\-\-video\-aspect\-override\fP\&.
 4824+.INDENT 7.0
 4825+.INDENT 3.5
 4826+.IP "Examples"
 4827+.INDENT 0.0
 4828+.IP \(bu 2
 4829+\fB\-\-monitoraspect=4:3\fP  or \fB\-\-monitoraspect=1.3333\fP
 4830+.IP \(bu 2
 4831+\fB\-\-monitoraspect=16:9\fP or \fB\-\-monitoraspect=1.7777\fP
 4832+.UNINDENT
 4833+.UNINDENT
 4834+.UNINDENT
 4835+.TP
 4836+.B \fB\-\-hidpi\-window\-scale\fP, \fB\-\-no\-hidpi\-window\-scale\fP
 4837+(OS X, X11, and Wayland only)
 4838+Scale the window size according to the backing scale factor (default: yes).
 4839+On regular HiDPI resolutions the window opens with double the size but appears
 4840+as having the same size as on none\-HiDPI resolutions. This is the default OS X
 4841+behavior.
 4842+.TP
 4843+.B \fB\-\-native\-fs\fP, \fB\-\-no\-native\-fs\fP
 4844+(OS X only)
 4845+Uses the native fullscreen mechanism of the OS (default: yes).
 4846+.TP
 4847+.B \fB\-\-monitorpixelaspect=<ratio>\fP
 4848+Set the aspect of a single pixel of your monitor or TV screen (default:
 4849+1). A value of 1 means square pixels (correct for (almost?) all LCDs). See
 4850+also \fB\-\-monitoraspect\fP and \fB\-\-video\-aspect\-override\fP\&.
 4851+.TP
 4852+.B \fB\-\-stop\-screensaver\fP, \fB\-\-no\-stop\-screensaver\fP
 4853+Turns off the screensaver (or screen blanker and similar mechanisms) at
 4854+startup and turns it on again on exit (default: yes). The screensaver is
 4855+always re\-enabled when the player is paused.
 4856+.sp
 4857+This is not supported on all video outputs or platforms. Sometimes it is
 4858+implemented, but does not work (especially with Linux "desktops").
 4859+.TP
 4860+.B \fB\-\-wid=<ID>\fP
 4861+This tells mpv to attach to an existing window. If a VO is selected that
 4862+supports this option, it will use that window for video output. mpv will
 4863+scale the video to the size of this window, and will add black bars to
 4864+compensate if the aspect ratio of the video is different.
 4865+.sp
 4866+On X11, the ID is interpreted as a \fBWindow\fP on X11. Unlike
 4867+MPlayer/mplayer2, mpv always creates its own window, and sets the wid
 4868+window as parent. The window will always be resized to cover the parent
 4869+window fully. The value \fB0\fP is interpreted specially, and mpv will
 4870+draw directly on the root window.
 4871+.sp
 4872+On win32, the ID is interpreted as \fBHWND\fP\&. Pass it as value cast to
 4873+\fBintptr_t\fP\&. mpv will create its own window, and set the wid window as
 4874+parent, like with X11.
 4875+.sp
 4876+On OSX/Cocoa, the ID is interpreted as \fBNSView*\fP\&. Pass it as value cast
 4877+to \fBintptr_t\fP\&. mpv will create its own sub\-view. Because OSX does not
 4878+support window embedding of foreign processes, this works only with libmpv,
 4879+and will crash when used from the command line.
 4880+.sp
 4881+On Android, the ID is interpreted as \fBandroid.view.Surface\fP\&. Pass it as a
 4882+value cast to \fBintptr_t\fP\&. Use with \fB\-\-vo=mediacodec_embed\fP and
 4883+\fB\-\-hwdec=mediacodec\fP for direct rendering using MediaCodec, or with
 4884+\fB\-\-vo=gpu \-\-gpu\-context=android\fP (with or without \fB\-\-hwdec=mediacodec\-copy\fP).
 4885+.TP
 4886+.B \fB\-\-no\-window\-dragging\fP
 4887+Don\(aqt move the window when clicking on it and moving the mouse pointer.
 4888+.TP
 4889+.B \fB\-\-x11\-name\fP
 4890+Set the window class name for X11\-based video output methods.
 4891+.TP
 4892+.B \fB\-\-x11\-netwm=<yes|no|auto>\fP
 4893+(X11 only)
 4894+Control the use of NetWM protocol features.
 4895+.sp
 4896+This may or may not help with broken window managers. This provides some
 4897+functionality that was implemented by the now removed \fB\-\-fstype\fP option.
 4898+Actually, it is not known to the developers to which degree this option
 4899+was needed, so feedback is welcome.
 4900+.sp
 4901+Specifically, \fByes\fP will force use of NetWM fullscreen support, even if
 4902+not advertised by the WM. This can be useful for WMs that are broken on
 4903+purpose, like XMonad. (XMonad supposedly doesn\(aqt advertise fullscreen
 4904+support, because Flash uses it. Apparently, applications which want to
 4905+use fullscreen anyway are supposed to either ignore the NetWM support hints,
 4906+or provide a workaround. Shame on XMonad for deliberately breaking X
 4907+protocols (as if X isn\(aqt bad enough already).
 4908+.sp
 4909+By default, NetWM support is autodetected (\fBauto\fP).
 4910+.sp
 4911+This option might be removed in the future.
 4912+.TP
 4913+.B \fB\-\-x11\-bypass\-compositor=<yes|no|fs\-only|never>\fP
 4914+If set to \fByes\fP, then ask the compositor to unredirect the mpv window
 4915+(default: \fBfs\-only\fP). This uses the \fB_NET_WM_BYPASS_COMPOSITOR\fP hint.
 4916+.sp
 4917+\fBfs\-only\fP asks the window manager to disable the compositor only in
 4918+fullscreen mode.
 4919+.sp
 4920+\fBno\fP sets \fB_NET_WM_BYPASS_COMPOSITOR\fP to 0, which is the default value
 4921+as declared by the EWMH specification, i.e. no change is done.
 4922+.sp
 4923+\fBnever\fP asks the window manager to never disable the compositor.
 4924+.UNINDENT
 4925+.SS Disc Devices
 4926+.INDENT 0.0
 4927+.TP
 4928+.B \fB\-\-cdrom\-device=<path>\fP
 4929+Specify the CD\-ROM device (default: \fB/dev/cdrom\fP).
 4930+.TP
 4931+.B \fB\-\-dvd\-device=<path>\fP
 4932+Specify the DVD device or .iso filename (default: \fB/dev/dvd\fP). You can
 4933+also specify a directory that contains files previously copied directly
 4934+from a DVD (with e.g. vobcopy).
 4935+.INDENT 7.0
 4936+.INDENT 3.5
 4937+.IP "Example"
 4938+.sp
 4939+\fBmpv dvd:// \-\-dvd\-device=/path/to/dvd/\fP
 4940+.UNINDENT
 4941+.UNINDENT
 4942+.TP
 4943+.B \fB\-\-bluray\-device=<path>\fP
 4944+(Blu\-ray only)
 4945+Specify the Blu\-ray disc location. Must be a directory with Blu\-ray
 4946+structure.
 4947+.INDENT 7.0
 4948+.INDENT 3.5
 4949+.IP "Example"
 4950+.sp
 4951+\fBmpv bd:// \-\-bluray\-device=/path/to/bd/\fP
 4952+.UNINDENT
 4953+.UNINDENT
 4954+.TP
 4955+.B \fB\-\-cdda\-...\fP
 4956+These options can be used to tune the CD Audio reading feature of mpv.
 4957+.TP
 4958+.B \fB\-\-cdda\-speed=<value>\fP
 4959+Set CD spin speed.
 4960+.TP
 4961+.B \fB\-\-cdda\-paranoia=<0\-2>\fP
 4962+Set paranoia level. Values other than 0 seem to break playback of
 4963+anything but the first track.
 4964+.INDENT 7.0
 4965+.TP
 4966+.B 0
 4967+disable checking (default)
 4968+.TP
 4969+.B 1
 4970+overlap checking only
 4971+.TP
 4972+.B 2
 4973+full data correction and verification
 4974+.UNINDENT
 4975+.TP
 4976+.B \fB\-\-cdda\-sector\-size=<value>\fP
 4977+Set atomic read size.
 4978+.TP
 4979+.B \fB\-\-cdda\-overlap=<value>\fP
 4980+Force minimum overlap search during verification to <value> sectors.
 4981+.TP
 4982+.B \fB\-\-cdda\-toc\-bias\fP
 4983+Assume that the beginning offset of track 1 as reported in the TOC
 4984+will be addressed as LBA 0. Some discs need this for getting track
 4985+boundaries correctly.
 4986+.TP
 4987+.B \fB\-\-cdda\-toc\-offset=<value>\fP
 4988+Add \fB<value>\fP sectors to the values reported when addressing tracks.
 4989+May be negative.
 4990+.TP
 4991+.B \fB\-\-cdda\-skip=<yes|no>\fP
 4992+(Never) accept imperfect data reconstruction.
 4993+.TP
 4994+.B \fB\-\-cdda\-cdtext=<yes|no>\fP
 4995+Print CD text. This is disabled by default, because it ruins performance
 4996+with CD\-ROM drives for unknown reasons.
 4997+.TP
 4998+.B \fB\-\-dvd\-speed=<speed>\fP
 4999+Try to limit DVD speed (default: 0, no change). DVD base speed is 1385
 5000+kB/s, so an 8x drive can read at speeds up to 11080 kB/s. Slower speeds
 5001+make the drive more quiet. For watching DVDs, 2700 kB/s should be quiet and
 5002+fast enough. mpv resets the speed to the drive default value on close.
 5003+Values of at least 100 mean speed in kB/s. Values less than 100 mean
 5004+multiples of 1385 kB/s, i.e. \fB\-\-dvd\-speed=8\fP selects 11080 kB/s.
 5005+.sp
 5006+\fBNOTE:\fP
 5007+.INDENT 7.0
 5008+.INDENT 3.5
 5009+You need write access to the DVD device to change the speed.
 5010+.UNINDENT
 5011+.UNINDENT
 5012+.TP
 5013+.B \fB\-\-dvd\-angle=<ID>\fP
 5014+Some DVDs contain scenes that can be viewed from multiple angles.
 5015+This option tells mpv which angle to use (default: 1).
 5016+.UNINDENT
 5017+.SS Equalizer
 5018+.INDENT 0.0
 5019+.TP
 5020+.B \fB\-\-brightness=<\-100\-100>\fP
 5021+Adjust the brightness of the video signal (default: 0). Not supported by
 5022+all video output drivers.
 5023+.TP
 5024+.B \fB\-\-contrast=<\-100\-100>\fP
 5025+Adjust the contrast of the video signal (default: 0). Not supported by all
 5026+video output drivers.
 5027+.TP
 5028+.B \fB\-\-saturation=<\-100\-100>\fP
 5029+Adjust the saturation of the video signal (default: 0). You can get
 5030+grayscale output with this option. Not supported by all video output
 5031+drivers.
 5032+.TP
 5033+.B \fB\-\-gamma=<\-100\-100>\fP
 5034+Adjust the gamma of the video signal (default: 0). Not supported by all
 5035+video output drivers.
 5036+.TP
 5037+.B \fB\-\-hue=<\-100\-100>\fP
 5038+Adjust the hue of the video signal (default: 0). You can get a colored
 5039+negative of the image with this option. Not supported by all video output
 5040+drivers.
 5041+.UNINDENT
 5042+.SS Demuxer
 5043+.INDENT 0.0
 5044+.TP
 5045+.B \fB\-\-demuxer=<[+]name>\fP
 5046+Force demuxer type. Use a \(aq+\(aq before the name to force it; this will skip
 5047+some checks. Give the demuxer name as printed by \fB\-\-demuxer=help\fP\&.
 5048+.TP
 5049+.B \fB\-\-demuxer\-lavf\-analyzeduration=<value>\fP
 5050+Maximum length in seconds to analyze the stream properties.
 5051+.TP
 5052+.B \fB\-\-demuxer\-lavf\-probe\-info=<yes|no|auto|nostreams>\fP
 5053+Whether to probe stream information (default: auto). Technically, this
 5054+controls whether libavformat\(aqs \fBavformat_find_stream_info()\fP function
 5055+is called. Usually it\(aqs safer to call it, but it can also make startup
 5056+slower.
 5057+.sp
 5058+The \fBauto\fP choice (the default) tries to skip this for a few know\-safe
 5059+whitelisted formats, while calling it for everything else.
 5060+.sp
 5061+The \fBnostreams\fP choice only calls it if and only if the file seems to
 5062+contain no streams after opening (helpful in cases when calling the function
 5063+is needed to detect streams at all, such as with FLV files).
 5064+.TP
 5065+.B \fB\-\-demuxer\-lavf\-probescore=<1\-100>\fP
 5066+Minimum required libavformat probe score. Lower values will require
 5067+less data to be loaded (makes streams start faster), but makes file
 5068+format detection less reliable. Can be used to force auto\-detected
 5069+libavformat demuxers, even if libavformat considers the detection not
 5070+reliable enough. (Default: 26.)
 5071+.TP
 5072+.B \fB\-\-demuxer\-lavf\-allow\-mimetype=<yes|no>\fP
 5073+Allow deriving the format from the HTTP MIME type (default: yes). Set
 5074+this to no in case playing things from HTTP mysteriously fails, even
 5075+though the same files work from local disk.
 5076+.sp
 5077+This is default in order to reduce latency when opening HTTP streams.
 5078+.TP
 5079+.B \fB\-\-demuxer\-lavf\-format=<name>\fP
 5080+Force a specific libavformat demuxer.
 5081+.TP
 5082+.B \fB\-\-demuxer\-lavf\-hacks=<yes|no>\fP
 5083+By default, some formats will be handled differently from other formats
 5084+by explicitly checking for them. Most of these compensate for weird or
 5085+imperfect behavior from libavformat demuxers. Passing \fBno\fP disables
 5086+these. For debugging and testing only.
 5087+.TP
 5088+.B \fB\-\-demuxer\-lavf\-o=<key>=<value>[,<key>=<value>[,...]]\fP
 5089+Pass AVOptions to libavformat demuxer.
 5090+.sp
 5091+Note, a patch to make the \fIo=\fP unneeded and pass all unknown options
 5092+through the AVOption system is welcome. A full list of AVOptions can
 5093+be found in the FFmpeg manual. Note that some options may conflict
 5094+with mpv options.
 5095+.sp
 5096+This is a key/value list option. See \fI\%List Options\fP for details.
 5097+.INDENT 7.0
 5098+.INDENT 3.5
 5099+.IP "Example"
 5100+.sp
 5101+\fB\-\-demuxer\-lavf\-o=fflags=+ignidx\fP
 5102+.UNINDENT
 5103+.UNINDENT
 5104+.TP
 5105+.B \fB\-\-demuxer\-lavf\-probesize=<value>\fP
 5106+Maximum amount of data to probe during the detection phase. In the
 5107+case of MPEG\-TS this value identifies the maximum number of TS packets
 5108+to scan.
 5109+.TP
 5110+.B \fB\-\-demuxer\-lavf\-buffersize=<value>\fP
 5111+Size of the stream read buffer allocated for libavformat in bytes
 5112+(default: 32768). Lowering the size could lower latency. Note that
 5113+libavformat might reallocate the buffer internally, or not fully use all
 5114+of it.
 5115+.TP
 5116+.B \fB\-\-demuxer\-lavf\-linearize\-timestamps=<yes|no|auto>\fP
 5117+Attempt to linearize timestamp resets in demuxed streams (default: auto).
 5118+This was tested only for single audio streams. It\(aqs unknown whether it
 5119+works correctly for video (but likely won\(aqt). Note that the implementation
 5120+is slightly incorrect either way, and will introduce a discontinuity by
 5121+about 1 codec frame size.
 5122+.sp
 5123+The \fBauto\fP mode enables this for OGG audio stream. This covers the common
 5124+and annoying case of OGG web radio streams. Some of these will reset
 5125+timestamps to 0 every time a new song begins. This breaks the mpv seekable
 5126+cache, which can\(aqt deal with timestamp resets. Note that FFmpeg/libavformat\(aqs
 5127+seeking API can\(aqt deal with this either; it\(aqs likely that if this option
 5128+breaks this even more, while if it\(aqs disabled, you can at least seek within
 5129+the first song in the stream. Well, you won\(aqt get anything useful either
 5130+way if the seek is outside of mpv\(aqs cache.
 5131+.TP
 5132+.B \fB\-\-demuxer\-lavf\-propagate\-opts=<yes|no>\fP
 5133+Propagate FFmpeg\-level options to recursively opened connections (default:
 5134+yes). This is needed because FFmpeg will apply these settings to nested
 5135+AVIO contexts automatically. On the other hand, this could break in certain
 5136+situations \- it\(aqs the FFmpeg API, you just can\(aqt win.
 5137+.sp
 5138+This affects in particular the \fB\-\-timeout\fP option and anything passed
 5139+with \fB\-\-demuxer\-lavf\-o\fP\&.
 5140+.sp
 5141+If this option is deemed unnecessary at some point in the future, it will
 5142+be removed without notice.
 5143+.TP
 5144+.B \fB\-\-demuxer\-mkv\-subtitle\-preroll=<yes|index|no>\fP, \fB\-\-mkv\-subtitle\-preroll\fP
 5145+Try harder to show embedded soft subtitles when seeking somewhere. Normally,
 5146+it can happen that the subtitle at the seek target is not shown due to how
 5147+some container file formats are designed. The subtitles appear only if
 5148+seeking before or exactly to the position a subtitle first appears. To
 5149+make this worse, subtitles are often timed to appear a very small amount
 5150+before the associated video frame, so that seeking to the video frame
 5151+typically does not demux the subtitle at that position.
 5152+.sp
 5153+Enabling this option makes the demuxer start reading data a bit before the
 5154+seek target, so that subtitles appear correctly. Note that this makes
 5155+seeking slower, and is not guaranteed to always work. It only works if the
 5156+subtitle is close enough to the seek target.
 5157+.sp
 5158+Works with the internal Matroska demuxer only. Always enabled for absolute
 5159+and hr\-seeks, and this option changes behavior with relative or imprecise
 5160+seeks only.
 5161+.sp
 5162+You can use the \fB\-\-demuxer\-mkv\-subtitle\-preroll\-secs\fP option to specify
 5163+how much data the demuxer should pre\-read at most in order to find subtitle
 5164+packets that may overlap. Setting this to 0 will effectively disable this
 5165+preroll mechanism. Setting a very large value can make seeking very slow,
 5166+and an extremely large value would completely reread the entire file from
 5167+start to seek target on every seek \- seeking can become slower towards the
 5168+end of the file. The details are messy, and the value is actually rounded
 5169+down to the cluster with the previous video keyframe.
 5170+.sp
 5171+Some files, especially files muxed with newer mkvmerge versions, have
 5172+information embedded that can be used to determine what subtitle packets
 5173+overlap with a seek target. In these cases, mpv will reduce the amount
 5174+of data read to a minimum. (Although it will still read \fIall\fP data between
 5175+the cluster that contains the first wanted subtitle packet, and the seek
 5176+target.) If the \fBindex\fP choice (which is the default) is specified, then
 5177+prerolling will be done only if this information is actually available. If
 5178+this method is used, the maximum amount of data to skip can be additionally
 5179+controlled by \fB\-\-demuxer\-mkv\-subtitle\-preroll\-secs\-index\fP (it still uses
 5180+the value of the option without \fB\-index\fP if that is higher).
 5181+.sp
 5182+See also \fB\-\-hr\-seek\-demuxer\-offset\fP option. This option can achieve a
 5183+similar effect, but only if hr\-seek is active. It works with any demuxer,
 5184+but makes seeking much slower, as it has to decode audio and video data
 5185+instead of just skipping over it.
 5186+.sp
 5187+\fB\-\-mkv\-subtitle\-preroll\fP is a deprecated alias.
 5188+.TP
 5189+.B \fB\-\-demuxer\-mkv\-subtitle\-preroll\-secs=<value>\fP
 5190+See \fB\-\-demuxer\-mkv\-subtitle\-preroll\fP\&.
 5191+.TP
 5192+.B \fB\-\-demuxer\-mkv\-subtitle\-preroll\-secs\-index=<value>\fP
 5193+See \fB\-\-demuxer\-mkv\-subtitle\-preroll\fP\&.
 5194+.TP
 5195+.B \fB\-\-demuxer\-mkv\-probe\-video\-duration=<yes|no|full>\fP
 5196+When opening the file, seek to the end of it, and check what timestamp the
 5197+last video packet has, and report that as file duration. This is strictly
 5198+for compatibility with Haali only. In this mode, it\(aqs possible that opening
 5199+will be slower (especially when playing over http), or that behavior with
 5200+broken files is much worse. So don\(aqt use this option.
 5201+.sp
 5202+The \fByes\fP mode merely uses the index and reads a small number of blocks
 5203+from the end of the file. The \fBfull\fP mode actually traverses the entire
 5204+file and can make a reliable estimate even without an index present (such
 5205+as partial files).
 5206+.TP
 5207+.B \fB\-\-demuxer\-rawaudio\-channels=<value>\fP
 5208+Number of channels (or channel layout) if \fB\-\-demuxer=rawaudio\fP is used
 5209+(default: stereo).
 5210+.TP
 5211+.B \fB\-\-demuxer\-rawaudio\-format=<value>\fP
 5212+Sample format for \fB\-\-demuxer=rawaudio\fP (default: s16le).
 5213+Use \fB\-\-demuxer\-rawaudio\-format=help\fP to get a list of all formats.
 5214+.TP
 5215+.B \fB\-\-demuxer\-rawaudio\-rate=<value>\fP
 5216+Sample rate for \fB\-\-demuxer=rawaudio\fP (default: 44 kHz).
 5217+.TP
 5218+.B \fB\-\-demuxer\-rawvideo\-fps=<value>\fP
 5219+Rate in frames per second for \fB\-\-demuxer=rawvideo\fP (default: 25.0).
 5220+.TP
 5221+.B \fB\-\-demuxer\-rawvideo\-w=<value>\fP, \fB\-\-demuxer\-rawvideo\-h=<value>\fP
 5222+Image dimension in pixels for \fB\-\-demuxer=rawvideo\fP\&.
 5223+.INDENT 7.0
 5224+.INDENT 3.5
 5225+.IP "Example"
 5226+.sp
 5227+Play a raw YUV sample:
 5228+.INDENT 0.0
 5229+.INDENT 3.5
 5230+.sp
 5231+.nf
 5232+.ft C
 5233+mpv sample\-720x576.yuv \-\-demuxer=rawvideo \e
 5234+\-\-demuxer\-rawvideo\-w=720 \-\-demuxer\-rawvideo\-h=576
 5235+.ft P
 5236+.fi
 5237+.UNINDENT
 5238+.UNINDENT
 5239+.UNINDENT
 5240+.UNINDENT
 5241+.TP
 5242+.B \fB\-\-demuxer\-rawvideo\-format=<value>\fP
 5243+Color space (fourcc) in hex or string for \fB\-\-demuxer=rawvideo\fP
 5244+(default: \fBYV12\fP).
 5245+.TP
 5246+.B \fB\-\-demuxer\-rawvideo\-mp\-format=<value>\fP
 5247+Color space by internal video format for \fB\-\-demuxer=rawvideo\fP\&. Use
 5248+\fB\-\-demuxer\-rawvideo\-mp\-format=help\fP for a list of possible formats.
 5249+.TP
 5250+.B \fB\-\-demuxer\-rawvideo\-codec=<value>\fP
 5251+Set the video codec instead of selecting the rawvideo codec when using
 5252+\fB\-\-demuxer=rawvideo\fP\&. This uses the same values as codec names in
 5253+\fB\-\-vd\fP (but it does not accept decoder names).
 5254+.TP
 5255+.B \fB\-\-demuxer\-rawvideo\-size=<value>\fP
 5256+Frame size in bytes when using \fB\-\-demuxer=rawvideo\fP\&.
 5257+.TP
 5258+.B \fB\-\-demuxer\-cue\-codepage=<codepage>\fP
 5259+Specify the CUE sheet codepage. (See \fB\-\-sub\-codepage\fP for details.)
 5260+.TP
 5261+.B \fB\-\-demuxer\-max\-bytes=<bytesize>\fP
 5262+This controls how much the demuxer is allowed to buffer ahead. The demuxer
 5263+will normally try to read ahead as much as necessary, or as much is
 5264+requested with \fB\-\-demuxer\-readahead\-secs\fP\&. The option can be used to
 5265+restrict the maximum readahead. This limits excessive readahead in case of
 5266+broken files or desynced playback. The demuxer will stop reading additional
 5267+packets as soon as one of the limits is reached. (The limits still can be
 5268+slightly overstepped due to technical reasons.)
 5269+.sp
 5270+Set these limits higher if you get a packet queue overflow warning, and
 5271+you think normal playback would be possible with a larger packet queue.
 5272+.sp
 5273+See \fB\-\-list\-options\fP for defaults and value range. \fB<bytesize>\fP options
 5274+accept suffixes such as \fBKiB\fP and \fBMiB\fP\&.
 5275+.TP
 5276+.B \fB\-\-demuxer\-max\-back\-bytes=<bytesize>\fP
 5277+This controls how much past data the demuxer is allowed to preserve. This
 5278+is useful only if the \fB\-\-demuxer\-seekable\-cache\fP option is enabled.
 5279+Unlike the forward cache, there is no control how many seconds are actually
 5280+cached \- it will simply use as much memory this option allows. Setting this
 5281+option to 0 will strictly disable any back buffer, but this will lead to
 5282+the situation that the forward seek range starts after the current playback
 5283+position (as it removes past packets that are seek points).
 5284+.sp
 5285+If the end of the file is reached, the remaining unused forward buffer space
 5286+is "donated" to the backbuffer (unless the backbuffer size is set to 0).
 5287+This still limits the total cache usage to the sum of the forward and
 5288+backward cache, and effectively makes better use of the total allowed memory
 5289+budget. (The opposite does not happen: free backward buffer is never
 5290+"donated" to the forward buffer.)
 5291+.sp
 5292+Keep in mind that other buffers in the player (like decoders) will cause the
 5293+demuxer to cache "future" frames in the back buffer, which can skew the
 5294+impression about how much data the backbuffer contains.
 5295+.sp
 5296+See \fB\-\-list\-options\fP for defaults and value range.
 5297+.TP
 5298+.B \fB\-\-demuxer\-seekable\-cache=<yes|no|auto>\fP
 5299+This controls whether seeking can use the demuxer cache (default: auto). If
 5300+enabled, short seek offsets will not trigger a low level demuxer seek
 5301+(which means for example that slow network round trips or FFmpeg seek bugs
 5302+can be avoided). If a seek cannot happen within the cached range, a low
 5303+level seek will be triggered. Seeking outside of the cache will start a new
 5304+cached range, but can discard the old cache range if the demuxer exhibits
 5305+certain unsupported behavior.
 5306+.sp
 5307+Keep in mind that some events can flush the cache or force a low level
 5308+seek anyway, such as switching tracks, or attempting to seek before the
 5309+start or after the end of the file.
 5310+.sp
 5311+The special value \fBauto\fP means \fByes\fP in the same situation as
 5312+\fB\-\-cache\-secs\fP is used (i.e. when the stream appears to be a network
 5313+stream or the stream cache is enabled).
 5314+.TP
 5315+.B \fB\-\-demuxer\-thread=<yes|no>\fP
 5316+Run the demuxer in a separate thread, and let it prefetch a certain amount
 5317+of packets (default: yes). Having this enabled leads to smoother playback,
 5318+enables features like prefetching, and prevents that stuck network freezes
 5319+the player. On the other hand, it can add overhead, or the background
 5320+prefetching can hog CPU resources.
 5321+.sp
 5322+Disabling this option is not recommended. Use it for debugging only.
 5323+.TP
 5324+.B \fB\-\-demuxer\-termination\-timeout=<seconds>\fP
 5325+Number of seconds the player should wait to shutdown the demuxer (default:
 5326+0.1). The player will wait up to this much time before it closes the
 5327+stream layer forcefully. Forceful closing usually means the network I/O is
 5328+given no chance to close its connections gracefully (of course the OS can
 5329+still close TCP connections properly), and might result in annoying messages
 5330+being logged, and in some cases, confused remote servers.
 5331+.sp
 5332+This timeout is usually only applied when loading has finished properly. If
 5333+loading is aborted by the user, or in some corner cases like removing
 5334+external tracks sourced from network during playback, forceful closing is
 5335+always used.
 5336+.TP
 5337+.B \fB\-\-demuxer\-readahead\-secs=<seconds>\fP
 5338+If \fB\-\-demuxer\-thread\fP is enabled, this controls how much the demuxer
 5339+should buffer ahead in seconds (default: 1). As long as no packet has
 5340+a timestamp difference higher than the readahead amount relative to the
 5341+last packet returned to the decoder, the demuxer keeps reading.
 5342+.sp
 5343+Note that the \fB\-\-cache\-secs\fP option will override this value if a cache
 5344+is enabled, and the value is larger.
 5345+.sp
 5346+(This value tends to be fuzzy, because many file formats don\(aqt store linear
 5347+timestamps.)
 5348+.TP
 5349+.B \fB\-\-prefetch\-playlist=<yes|no>\fP
 5350+Prefetch next playlist entry while playback of the current entry is ending
 5351+(default: no). This merely opens the URL of the next playlist entry as soon
 5352+as the current URL is fully read.
 5353+.sp
 5354+This does \fBnot\fP work with URLs resolved by the \fByoutube\-dl\fP wrapper,
 5355+and it won\(aqt.
 5356+.sp
 5357+This does not affect HLS (\fB\&.m3u8\fP URLs) \- HLS prefetching depends on the
 5358+demuxer cache settings and is on by default.
 5359+.sp
 5360+This can give subtly wrong results if per\-file options are used, or if
 5361+options are changed in the time window between prefetching start and next
 5362+file played.
 5363+.sp
 5364+This can occasionally make wrong prefetching decisions. For example, it
 5365+can\(aqt predict whether you go backwards in the playlist, and assumes you
 5366+won\(aqt edit the playlist.
 5367+.sp
 5368+Highly experimental.
 5369+.TP
 5370+.B \fB\-\-force\-seekable=<yes|no>\fP
 5371+If the player thinks that the media is not seekable (e.g. playing from a
 5372+pipe, or it\(aqs an http stream with a server that doesn\(aqt support range
 5373+requests), seeking will be disabled. This option can forcibly enable it.
 5374+For seeks within the cache, there\(aqs a good chance of success.
 5375+.TP
 5376+.B \fB\-\-demuxer\-cache\-wait=<yes|no>\fP
 5377+Before starting playback, read data until either the end of the file was
 5378+reached, or the demuxer cache has reached maximum capacity. Only once this
 5379+is done, playback starts. This intentionally happens before the initial
 5380+seek triggered with \fB\-\-start\fP\&. This does not change any runtime behavior
 5381+after the initial caching. This option is useless if the file cannot be
 5382+cached completely.
 5383+.TP
 5384+.B \fB\-\-rar\-list\-all\-volumes=<yes|no>\fP
 5385+When opening multi\-volume rar files, open all volumes to create a full list
 5386+of contained files (default: no). If disabled, only the archive entries
 5387+whose headers are located within the first volume are listed (and thus
 5388+played when opening a .rar file with mpv). Doing so speeds up opening, and
 5389+the typical idiotic use\-case of playing uncompressed multi\-volume rar files
 5390+that contain a single media file is made faster.
 5391+.sp
 5392+Opening is still slow, because for unknown, idiotic, and unnecessary reasons
 5393+libarchive opens all volumes anyway when playing the main file, even though
 5394+mpv iterated no archive entries yet.
 5395+.UNINDENT
 5396+.SS Input
 5397+.INDENT 0.0
 5398+.TP
 5399+.B \fB\-\-native\-keyrepeat\fP
 5400+Use system settings for keyrepeat delay and rate, instead of
 5401+\fB\-\-input\-ar\-delay\fP and \fB\-\-input\-ar\-rate\fP\&. (Whether this applies
 5402+depends on the VO backend and how it handles keyboard input. Does not
 5403+apply to terminal input.)
 5404+.TP
 5405+.B \fB\-\-input\-ar\-delay\fP
 5406+Delay in milliseconds before we start to autorepeat a key (0 to disable).
 5407+.TP
 5408+.B \fB\-\-input\-ar\-rate\fP
 5409+Number of key presses to generate per second on autorepeat.
 5410+.TP
 5411+.B \fB\-\-input\-conf=<filename>\fP
 5412+Specify input configuration file other than the default location in the mpv
 5413+configuration directory (usually \fB~/.config/mpv/input.conf\fP).
 5414+.TP
 5415+.B \fB\-\-no\-input\-default\-bindings\fP
 5416+Disable mpv default (built\-in) key bindings.
 5417+.TP
 5418+.B \fB\-\-input\-cmdlist\fP
 5419+Prints all commands that can be bound to keys.
 5420+.TP
 5421+.B \fB\-\-input\-doubleclick\-time=<milliseconds>\fP
 5422+Time in milliseconds to recognize two consecutive button presses as a
 5423+double\-click (default: 300).
 5424+.TP
 5425+.B \fB\-\-input\-keylist\fP
 5426+Prints all keys that can be bound to commands.
 5427+.TP
 5428+.B \fB\-\-input\-key\-fifo\-size=<2\-65000>\fP
 5429+Specify the size of the FIFO that buffers key events (default: 7). If it
 5430+is too small, some events may be lost. The main disadvantage of setting it
 5431+to a very large value is that if you hold down a key triggering some
 5432+particularly slow command then the player may be unresponsive while it
 5433+processes all the queued commands.
 5434+.TP
 5435+.B \fB\-\-input\-test\fP
 5436+Input test mode. Instead of executing commands on key presses, mpv
 5437+will show the keys and the bound commands on the OSD. Has to be used
 5438+with a dummy video, and the normal ways to quit the player will not
 5439+work (key bindings that normally quit will be shown on OSD only, just
 5440+like any other binding). See \fI\%INPUT.CONF\fP\&.
 5441+.TP
 5442+.B \fB\-\-input\-file=<filename>\fP
 5443+Deprecated. Use \fB\-\-input\-ipc\-server\fP\&.
 5444+.sp
 5445+Read commands from the given file. Mostly useful with a FIFO. Since
 5446+mpv 0.7.0 also understands JSON commands (see \fI\%JSON IPC\fP), but you can\(aqt
 5447+get replies or events. Use \fB\-\-input\-ipc\-server\fP for something
 5448+bi\-directional. On MS Windows, JSON commands are not available.
 5449+.sp
 5450+This can also specify a direct file descriptor with \fBfd://N\fP (UNIX only).
 5451+In this case, JSON replies will be written if the FD is writable.
 5452+.sp
 5453+\fBNOTE:\fP
 5454+.INDENT 7.0
 5455+.INDENT 3.5
 5456+When the given file is a FIFO mpv opens both ends, so you can do several
 5457+\fIecho "seek 10" > mp_pipe\fP and the pipe will stay valid.
 5458+.UNINDENT
 5459+.UNINDENT
 5460+.TP
 5461+.B \fB\-\-input\-terminal\fP, \fB\-\-no\-input\-terminal\fP
 5462+\fB\-\-no\-input\-terminal\fP prevents the player from reading key events from
 5463+standard input. Useful when reading data from standard input. This is
 5464+automatically enabled when \fB\-\fP is found on the command line. There are
 5465+situations where you have to set it manually, e.g. if you open
 5466+\fB/dev/stdin\fP (or the equivalent on your system), use stdin in a playlist
 5467+or intend to read from stdin later on via the loadfile or loadlist input
 5468+commands.
 5469+.TP
 5470+.B \fB\-\-input\-ipc\-server=<filename>\fP
 5471+Enable the IPC support and create the listening socket at the given path.
 5472+.sp
 5473+On Linux and Unix, the given path is a regular filesystem path. On Windows,
 5474+named pipes are used, so the path refers to the pipe namespace
 5475+(\fB\e\e.\epipe\e<name>\fP). If the \fB\e\e.\epipe\e\fP prefix is missing, mpv will add
 5476+it automatically before creating the pipe, so
 5477+\fB\-\-input\-ipc\-server=/tmp/mpv\-socket\fP and
 5478+\fB\-\-input\-ipc\-server=\e\e.\epipe\etmp\empv\-socket\fP are equivalent for IPC on
 5479+Windows.
 5480+.sp
 5481+See \fI\%JSON IPC\fP for details.
 5482+.TP
 5483+.B \fB\-\-input\-gamepad=<yes|no>\fP
 5484+Enable/disable SDL2 Gamepad support. Disabled by default.
 5485+.TP
 5486+.B \fB\-\-input\-cursor\fP, \fB\-\-no\-input\-cursor\fP
 5487+Permit mpv to receive pointer events reported by the video output
 5488+driver. Necessary to use the OSC, or to select the buttons in DVD menus.
 5489+Support depends on the VO in use.
 5490+.TP
 5491+.B \fB\-\-input\-media\-keys=<yes|no>\fP
 5492+(OS X and Windows only)
 5493+Enable/disable media keys support. Enabled by default (except for libmpv).
 5494+.TP
 5495+.B \fB\-\-input\-right\-alt\-gr\fP, \fB\-\-no\-input\-right\-alt\-gr\fP
 5496+(Cocoa and Windows only)
 5497+Use the right Alt key as Alt Gr to produce special characters. If disabled,
 5498+count the right Alt as an Alt modifier key. Enabled by default.
 5499+.TP
 5500+.B \fB\-\-input\-vo\-keyboard=<yes|no>\fP
 5501+Disable all keyboard input on for VOs which can\(aqt participate in proper
 5502+keyboard input dispatching. May not affect all VOs. Generally useful for
 5503+embedding only.
 5504+.sp
 5505+On X11, a sub\-window with input enabled grabs all keyboard input as long
 5506+as it is 1. a child of a focused window, and 2. the mouse is inside of
 5507+the sub\-window. It can steal away all keyboard input from the
 5508+application embedding the mpv window, and on the other hand, the mpv
 5509+window will receive no input if the mouse is outside of the mpv window,
 5510+even though mpv has focus. Modern toolkits work around this weird X11
 5511+behavior, but naively embedding foreign windows breaks it.
 5512+.sp
 5513+The only way to handle this reasonably is using the XEmbed protocol, which
 5514+was designed to solve these problems. GTK provides \fBGtkSocket\fP, which
 5515+supports XEmbed. Qt doesn\(aqt seem to provide anything working in newer
 5516+versions.
 5517+.sp
 5518+If the embedder supports XEmbed, input should work with default settings
 5519+and with this option disabled. Note that \fBinput\-default\-bindings\fP is
 5520+disabled by default in libmpv as well \- it should be enabled if you want
 5521+the mpv default key bindings.
 5522+.sp
 5523+(This option was renamed from \fB\-\-input\-x11\-keyboard\fP\&.)
 5524+.UNINDENT
 5525+.SS OSD
 5526+.INDENT 0.0
 5527+.TP
 5528+.B \fB\-\-osc\fP, \fB\-\-no\-osc\fP
 5529+Whether to load the on\-screen\-controller (default: yes).
 5530+.TP
 5531+.B \fB\-\-no\-osd\-bar\fP, \fB\-\-osd\-bar\fP
 5532+Disable display of the OSD bar.
 5533+.sp
 5534+You can configure this on a per\-command basis in input.conf using \fBosd\-\fP
 5535+prefixes, see \fBInput Command Prefixes\fP\&. If you want to disable the OSD
 5536+completely, use \fB\-\-osd\-level=0\fP\&.
 5537+.TP
 5538+.B \fB\-\-osd\-on\-seek=<no,bar,msg,msg\-bar>\fP
 5539+Set what is displayed on the OSD during seeks. The default is \fBbar\fP\&.
 5540+.sp
 5541+You can configure this on a per\-command basis in input.conf using \fBosd\-\fP
 5542+prefixes, see \fBInput Command Prefixes\fP\&.
 5543+.TP
 5544+.B \fB\-\-osd\-duration=<time>\fP
 5545+Set the duration of the OSD messages in ms (default: 1000).
 5546+.TP
 5547+.B \fB\-\-osd\-font=<name>\fP
 5548+Specify font to use for OSD. The default is \fBsans\-serif\fP\&.
 5549+.INDENT 7.0
 5550+.INDENT 3.5
 5551+.IP "Examples"
 5552+.INDENT 0.0
 5553+.IP \(bu 2
 5554+\fB\-\-osd\-font=\(aqBitstream Vera Sans\(aq\fP
 5555+.IP \(bu 2
 5556+\fB\-\-osd\-font=\(aqComic Sans MS\(aq\fP
 5557+.UNINDENT
 5558+.UNINDENT
 5559+.UNINDENT
 5560+.TP
 5561+.B \fB\-\-osd\-font\-size=<size>\fP
 5562+Specify the OSD font size. See \fB\-\-sub\-font\-size\fP for details.
 5563+.sp
 5564+Default: 55.
 5565+.TP
 5566+.B \fB\-\-osd\-msg1=<string>\fP
 5567+Show this string as message on OSD with OSD level 1 (visible by default).
 5568+The message will be visible by default, and as long as no other message
 5569+covers it, and the OSD level isn\(aqt changed (see \fB\-\-osd\-level\fP).
 5570+Expands properties; see \fI\%Property Expansion\fP\&.
 5571+.TP
 5572+.B \fB\-\-osd\-msg2=<string>\fP
 5573+Similar to \fB\-\-osd\-msg1\fP, but for OSD level 2. If this is an empty string
 5574+(default), then the playback time is shown.
 5575+.TP
 5576+.B \fB\-\-osd\-msg3=<string>\fP
 5577+Similar to \fB\-\-osd\-msg1\fP, but for OSD level 3. If this is an empty string
 5578+(default), then the playback time, duration, and some more information is
 5579+shown.
 5580+.sp
 5581+This is used for the \fBshow\-progress\fP command (by default mapped to \fBP\fP),
 5582+and when seeking if enabled with \fB\-\-osd\-on\-seek\fP or by \fBosd\-\fP prefixes
 5583+in input.conf (see \fBInput Command Prefixes\fP).
 5584+.sp
 5585+\fB\-\-osd\-status\-msg\fP is a legacy equivalent (but with a minor difference).
 5586+.TP
 5587+.B \fB\-\-osd\-status\-msg=<string>\fP
 5588+Show a custom string during playback instead of the standard status text.
 5589+This overrides the status text used for \fB\-\-osd\-level=3\fP, when using the
 5590+\fBshow\-progress\fP command (by default mapped to \fBP\fP), and when seeking if
 5591+enabled with \fB\-\-osd\-on\-seek\fP or \fBosd\-\fP prefixes in input.conf (see
 5592+\fBInput Command Prefixes\fP). Expands properties. See \fI\%Property Expansion\fP\&.
 5593+.sp
 5594+This option has been replaced with \fB\-\-osd\-msg3\fP\&. The only difference is
 5595+that this option implicitly includes \fB${osd\-sym\-cc}\fP\&. This option is
 5596+ignored if \fB\-\-osd\-msg3\fP is not empty.
 5597+.TP
 5598+.B \fB\-\-osd\-playing\-msg=<string>\fP
 5599+Show a message on OSD when playback starts. The string is expanded for
 5600+properties, e.g. \fB\-\-osd\-playing\-msg=\(aqfile: ${filename}\(aq\fP will show the
 5601+message \fBfile:\fP followed by a space and the currently played filename.
 5602+.sp
 5603+See \fI\%Property Expansion\fP\&.
 5604+.TP
 5605+.B \fB\-\-osd\-bar\-align\-x=<\-1\-1>\fP
 5606+Position of the OSD bar. \-1 is far left, 0 is centered, 1 is far right.
 5607+Fractional values (like 0.5) are allowed.
 5608+.TP
 5609+.B \fB\-\-osd\-bar\-align\-y=<\-1\-1>\fP
 5610+Position of the OSD bar. \-1 is top, 0 is centered, 1 is bottom.
 5611+Fractional values (like 0.5) are allowed.
 5612+.TP
 5613+.B \fB\-\-osd\-bar\-w=<1\-100>\fP
 5614+Width of the OSD bar, in percentage of the screen width (default: 75).
 5615+A value of 50 means the bar is half the screen wide.
 5616+.TP
 5617+.B \fB\-\-osd\-bar\-h=<0.1\-50>\fP
 5618+Height of the OSD bar, in percentage of the screen height (default: 3.125).
 5619+.TP
 5620+.B \fB\-\-osd\-back\-color=<color>\fP
 5621+See \fB\-\-osd\-color\fP\&. Color used for OSD text background.
 5622+.TP
 5623+.B \fB\-\-osd\-blur=<0..20.0>\fP
 5624+Gaussian blur factor. 0 means no blur applied (default).
 5625+.TP
 5626+.B \fB\-\-osd\-bold=<yes|no>\fP
 5627+Format text on bold.
 5628+.TP
 5629+.B \fB\-\-osd\-italic=<yes|no>\fP
 5630+Format text on italic.
 5631+.TP
 5632+.B \fB\-\-osd\-border\-color=<color>\fP
 5633+See \fB\-\-osd\-color\fP\&. Color used for the OSD font border.
 5634+.sp
 5635+\fBNOTE:\fP
 5636+.INDENT 7.0
 5637+.INDENT 3.5
 5638+ignored when \fB\-\-osd\-back\-color\fP is
 5639+specified (or more exactly: when that option is not set to completely
 5640+transparent).
 5641+.UNINDENT
 5642+.UNINDENT
 5643+.TP
 5644+.B \fB\-\-osd\-border\-size=<size>\fP
 5645+Size of the OSD font border in scaled pixels (see \fB\-\-sub\-font\-size\fP
 5646+for details). A value of 0 disables borders.
 5647+.sp
 5648+Default: 3.
 5649+.TP
 5650+.B \fB\-\-osd\-color=<color>\fP
 5651+Specify the color used for OSD.
 5652+See \fB\-\-sub\-color\fP for details.
 5653+.TP
 5654+.B \fB\-\-osd\-fractions\fP
 5655+Show OSD times with fractions of seconds (in millisecond precision). Useful
 5656+to see the exact timestamp of a video frame.
 5657+.TP
 5658+.B \fB\-\-osd\-level=<0\-3>\fP
 5659+Specifies which mode the OSD should start in.
 5660+.INDENT 7.0
 5661+.TP
 5662+.B 0
 5663+OSD completely disabled (subtitles only)
 5664+.TP
 5665+.B 1
 5666+enabled (shows up only on user interaction)
 5667+.TP
 5668+.B 2
 5669+enabled + current time visible by default
 5670+.TP
 5671+.B 3
 5672+enabled + \fB\-\-osd\-status\-msg\fP (current time and status by default)
 5673+.UNINDENT
 5674+.TP
 5675+.B \fB\-\-osd\-margin\-x=<size>\fP
 5676+Left and right screen margin for the OSD in scaled pixels (see
 5677+\fB\-\-sub\-font\-size\fP for details).
 5678+.sp
 5679+This option specifies the distance of the OSD to the left, as well as at
 5680+which distance from the right border long OSD text will be broken.
 5681+.sp
 5682+Default: 25.
 5683+.TP
 5684+.B \fB\-\-osd\-margin\-y=<size>\fP
 5685+Top and bottom screen margin for the OSD in scaled pixels (see
 5686+\fB\-\-sub\-font\-size\fP for details).
 5687+.sp
 5688+This option specifies the vertical margins of the OSD.
 5689+.sp
 5690+Default: 22.
 5691+.TP
 5692+.B \fB\-\-osd\-align\-x=<left|center|right>\fP
 5693+Control to which corner of the screen OSD should be
 5694+aligned to (default: \fBleft\fP).
 5695+.TP
 5696+.B \fB\-\-osd\-align\-y=<top|center|bottom>\fP
 5697+Vertical position (default: \fBtop\fP).
 5698+Details see \fB\-\-osd\-align\-x\fP\&.
 5699+.TP
 5700+.B \fB\-\-osd\-scale=<factor>\fP
 5701+OSD font size multiplier, multiplied with \fB\-\-osd\-font\-size\fP value.
 5702+.TP
 5703+.B \fB\-\-osd\-scale\-by\-window=<yes|no>\fP
 5704+Whether to scale the OSD with the window size (default: yes). If this is
 5705+disabled, \fB\-\-osd\-font\-size\fP and other OSD options that use scaled pixels
 5706+are always in actual pixels. The effect is that changing the window size
 5707+won\(aqt change the OSD font size.
 5708+.TP
 5709+.B \fB\-\-osd\-shadow\-color=<color>\fP
 5710+See \fB\-\-sub\-color\fP\&. Color used for OSD shadow.
 5711+.TP
 5712+.B \fB\-\-osd\-shadow\-offset=<size>\fP
 5713+Displacement of the OSD shadow in scaled pixels (see
 5714+\fB\-\-sub\-font\-size\fP for details). A value of 0 disables shadows.
 5715+.sp
 5716+Default: 0.
 5717+.TP
 5718+.B \fB\-\-osd\-spacing=<size>\fP
 5719+Horizontal OSD/sub font spacing in scaled pixels (see \fB\-\-sub\-font\-size\fP
 5720+for details). This value is added to the normal letter spacing. Negative
 5721+values are allowed.
 5722+.sp
 5723+Default: 0.
 5724+.TP
 5725+.B \fB\-\-video\-osd=<yes|no>\fP
 5726+Enabled OSD rendering on the video window (default: yes). This can be used
 5727+in situations where terminal OSD is preferred. If you just want to disable
 5728+all OSD rendering, use \fB\-\-osd\-level=0\fP\&.
 5729+.sp
 5730+It does not affect subtitles or overlays created by scripts (in particular,
 5731+the OSC needs to be disabled with \fB\-\-no\-osc\fP).
 5732+.sp
 5733+This option is somewhat experimental and could be replaced by another
 5734+mechanism in the future.
 5735+.TP
 5736+.B \fB\-\-osd\-font\-provider=<...>\fP
 5737+See \fB\-\-sub\-font\-provider\fP for details and accepted values. Note that
 5738+unlike subtitles, OSD never uses embedded fonts from media files.
 5739+.UNINDENT
 5740+.SS Screenshot
 5741+.INDENT 0.0
 5742+.TP
 5743+.B \fB\-\-screenshot\-format=<type>\fP
 5744+Set the image file type used for saving screenshots.
 5745+.sp
 5746+Available choices:
 5747+.INDENT 7.0
 5748+.TP
 5749+.B png
 5750+PNG
 5751+.TP
 5752+.B jpg
 5753+JPEG (default)
 5754+.TP
 5755+.B jpeg
 5756+JPEG (alias for jpg)
 5757+.TP
 5758+.B webp
 5759+WebP
 5760+.UNINDENT
 5761+.TP
 5762+.B \fB\-\-screenshot\-tag\-colorspace=<yes|no>\fP
 5763+Tag screenshots with the appropriate colorspace.
 5764+.sp
 5765+Note that not all formats are supported.
 5766+.sp
 5767+Default: \fBno\fP\&.
 5768+.TP
 5769+.B \fB\-\-screenshot\-high\-bit\-depth=<yes|no>\fP
 5770+If possible, write screenshots with a bit depth similar to the source
 5771+video (default: yes). This is interesting in particular for PNG, as this
 5772+sometimes triggers writing 16 bit PNGs with huge file sizes. This will also
 5773+include an unused alpha channel in the resulting files if 16 bit is used.
 5774+.TP
 5775+.B \fB\-\-screenshot\-template=<template>\fP
 5776+Specify the filename template used to save screenshots. The template
 5777+specifies the filename without file extension, and can contain format
 5778+specifiers, which will be substituted when taking a screenshot.
 5779+By default, the template is \fBmpv\-shot%n\fP, which results in filenames like
 5780+\fBmpv\-shot0012.png\fP for example.
 5781+.sp
 5782+The template can start with a relative or absolute path, in order to
 5783+specify a directory location where screenshots should be saved.
 5784+.sp
 5785+If the final screenshot filename points to an already existing file, the
 5786+file will not be overwritten. The screenshot will either not be saved, or if
 5787+the template contains \fB%n\fP, saved using different, newly generated
 5788+filename.
 5789+.sp
 5790+Allowed format specifiers:
 5791+.INDENT 7.0
 5792+.TP
 5793+.B \fB%[#][0X]n\fP
 5794+A sequence number, padded with zeros to length X (default: 04). E.g.
 5795+passing the format \fB%04n\fP will yield \fB0012\fP on the 12th screenshot.
 5796+The number is incremented every time a screenshot is taken or if the
 5797+file already exists. The length \fBX\fP must be in the range 0\-9. With
 5798+the optional # sign, mpv will use the lowest available number. For
 5799+example, if you take three screenshots\-\-0001, 0002, 0003\-\-and delete
 5800+the first two, the next two screenshots will not be 0004 and 0005, but
 5801+0001 and 0002 again.
 5802+.TP
 5803+.B \fB%f\fP
 5804+Filename of the currently played video.
 5805+.TP
 5806+.B \fB%F\fP
 5807+Same as \fB%f\fP, but strip the file extension, including the dot.
 5808+.TP
 5809+.B \fB%x\fP
 5810+Directory path of the currently played video. If the video is not on
 5811+the filesystem (but e.g. \fBhttp://\fP), this expand to an empty string.
 5812+.TP
 5813+.B \fB%X{fallback}\fP
 5814+Same as \fB%x\fP, but if the video file is not on the filesystem, return
 5815+the fallback string inside the \fB{...}\fP\&.
 5816+.TP
 5817+.B \fB%p\fP
 5818+Current playback time, in the same format as used in the OSD. The
 5819+result is a string of the form "HH:MM:SS". For example, if the video is
 5820+at the time position 5 minutes and 34 seconds, \fB%p\fP will be replaced
 5821+with "00:05:34".
 5822+.TP
 5823+.B \fB%P\fP
 5824+Similar to \fB%p\fP, but extended with the playback time in milliseconds.
 5825+It is formatted as "HH:MM:SS.mmm", with "mmm" being the millisecond
 5826+part of the playback time.
 5827+.sp
 5828+\fBNOTE:\fP
 5829+.INDENT 7.0
 5830+.INDENT 3.5
 5831+This is a simple way for getting unique per\-frame timestamps. (Frame
 5832+numbers would be more intuitive, but are not easily implementable
 5833+because container formats usually use time stamps for identifying
 5834+frames.)
 5835+.UNINDENT
 5836+.UNINDENT
 5837+.TP
 5838+.B \fB%wX\fP
 5839+Specify the current playback time using the format string \fBX\fP\&.
 5840+\fB%p\fP is like \fB%wH:%wM:%wS\fP, and \fB%P\fP is like \fB%wH:%wM:%wS.%wT\fP\&.
 5841+.INDENT 7.0
 5842+.TP
 5843+.B Valid format specifiers:
 5844+.INDENT 7.0
 5845+.TP
 5846+.B \fB%wH\fP
 5847+hour (padded with 0 to two digits)
 5848+.TP
 5849+.B \fB%wh\fP
 5850+hour (not padded)
 5851+.TP
 5852+.B \fB%wM\fP
 5853+minutes (00\-59)
 5854+.TP
 5855+.B \fB%wm\fP
 5856+total minutes (includes hours, unlike \fB%wM\fP)
 5857+.TP
 5858+.B \fB%wS\fP
 5859+seconds (00\-59)
 5860+.TP
 5861+.B \fB%ws\fP
 5862+total seconds (includes hours and minutes)
 5863+.TP
 5864+.B \fB%wf\fP
 5865+like \fB%ws\fP, but as float
 5866+.TP
 5867+.B \fB%wT\fP
 5868+milliseconds (000\-999)
 5869+.UNINDENT
 5870+.UNINDENT
 5871+.TP
 5872+.B \fB%tX\fP
 5873+Specify the current local date/time using the format \fBX\fP\&. This format
 5874+specifier uses the UNIX \fBstrftime()\fP function internally, and inserts
 5875+the result of passing "%X" to \fBstrftime\fP\&. For example, \fB%tm\fP will
 5876+insert the number of the current month as number. You have to use
 5877+multiple \fB%tX\fP specifiers to build a full date/time string.
 5878+.TP
 5879+.B \fB%{prop[:fallback text]}\fP
 5880+Insert the value of the input property \(aqprop\(aq. E.g. \fB%{filename}\fP is
 5881+the same as \fB%f\fP\&. If the property does not exist or is not available,
 5882+an error text is inserted, unless a fallback is specified.
 5883+.TP
 5884+.B \fB%%\fP
 5885+Replaced with the \fB%\fP character itself.
 5886+.UNINDENT
 5887+.TP
 5888+.B \fB\-\-screenshot\-directory=<path>\fP
 5889+Store screenshots in this directory. This path is joined with the filename
 5890+generated by \fB\-\-screenshot\-template\fP\&. If the template filename is already
 5891+absolute, the directory is ignored.
 5892+.sp
 5893+If the directory does not exist, it is created on the first screenshot. If
 5894+it is not a directory, an error is generated when trying to write a
 5895+screenshot.
 5896+.sp
 5897+This option is not set by default, and thus will write screenshots to the
 5898+directory from which mpv was started. In pseudo\-gui mode
 5899+(see \fI\%PSEUDO GUI MODE\fP), this is set to the desktop.
 5900+.TP
 5901+.B \fB\-\-screenshot\-jpeg\-quality=<0\-100>\fP
 5902+Set the JPEG quality level. Higher means better quality. The default is 90.
 5903+.TP
 5904+.B \fB\-\-screenshot\-jpeg\-source\-chroma=<yes|no>\fP
 5905+Write JPEG files with the same chroma subsampling as the video
 5906+(default: yes). If disabled, the libjpeg default is used.
 5907+.TP
 5908+.B \fB\-\-screenshot\-png\-compression=<0\-9>\fP
 5909+Set the PNG compression level. Higher means better compression. This will
 5910+affect the file size of the written screenshot file and the time it takes
 5911+to write a screenshot. Too high compression might occupy enough CPU time to
 5912+interrupt playback. The default is 7.
 5913+.TP
 5914+.B \fB\-\-screenshot\-png\-filter=<0\-5>\fP
 5915+Set the filter applied prior to PNG compression. 0 is none, 1 is "sub", 2 is
 5916+"up", 3 is "average", 4 is "Paeth", and 5 is "mixed". This affects the level
 5917+of compression that can be achieved. For most images, "mixed" achieves the
 5918+best compression ratio, hence it is the default.
 5919+.TP
 5920+.B \fB\-\-screenshot\-webp\-lossless=<yes|no>\fP
 5921+Write lossless WebP files. \fB\-\-screenshot\-webp\-quality\fP is ignored if this
 5922+is set. The default is no.
 5923+.TP
 5924+.B \fB\-\-screenshot\-webp\-quality=<0\-100>\fP
 5925+Set the WebP quality level. Higher means better quality. The default is 75.
 5926+.TP
 5927+.B \fB\-\-screenshot\-webp\-compression=<0\-6>\fP
 5928+Set the WebP compression level. Higher means better compression, but takes
 5929+more CPU time. Note that this also affects the screenshot quality when used
 5930+with lossy WebP files. The default is 4.
 5931+.UNINDENT
 5932+.SS Software Scaler
 5933+.INDENT 0.0
 5934+.TP
 5935+.B \fB\-\-sws\-scaler=<name>\fP
 5936+Specify the software scaler algorithm to be used with \fB\-\-vf=scale\fP\&. This
 5937+also affects video output drivers which lack hardware acceleration,
 5938+e.g. \fBx11\fP\&. See also \fB\-\-vf=scale\fP\&.
 5939+.sp
 5940+To get a list of available scalers, run \fB\-\-sws\-scaler=help\fP\&.
 5941+.sp
 5942+Default: \fBbicubic\fP\&.
 5943+.TP
 5944+.B \fB\-\-sws\-lgb=<0\-100>\fP
 5945+Software scaler Gaussian blur filter (luma). See \fB\-\-sws\-scaler\fP\&.
 5946+.TP
 5947+.B \fB\-\-sws\-cgb=<0\-100>\fP
 5948+Software scaler Gaussian blur filter (chroma). See \fB\-\-sws\-scaler\fP\&.
 5949+.TP
 5950+.B \fB\-\-sws\-ls=<\-100\-100>\fP
 5951+Software scaler sharpen filter (luma). See \fB\-\-sws\-scaler\fP\&.
 5952+.TP
 5953+.B \fB\-\-sws\-cs=<\-100\-100>\fP
 5954+Software scaler sharpen filter (chroma). See \fB\-\-sws\-scaler\fP\&.
 5955+.TP
 5956+.B \fB\-\-sws\-chs=<h>\fP
 5957+Software scaler chroma horizontal shifting. See \fB\-\-sws\-scaler\fP\&.
 5958+.TP
 5959+.B \fB\-\-sws\-cvs=<v>\fP
 5960+Software scaler chroma vertical shifting. See \fB\-\-sws\-scaler\fP\&.
 5961+.TP
 5962+.B \fB\-\-sws\-bitexact=<yes|no>\fP
 5963+Unknown functionality (default: no). Consult libswscale source code. The
 5964+primary purpose of this, as far as libswscale API goes), is to produce
 5965+exactly the same output for the same input on all platforms (output has the
 5966+same "bits" everywhere, thus "bitexact"). Typically disables optimizations.
 5967+.TP
 5968+.B \fB\-\-sws\-fast=<yes|no>\fP
 5969+Allow optimizations that help with performance, but reduce quality (default:
 5970+no).
 5971+.sp
 5972+VOs like \fBdrm\fP and \fBx11\fP will benefit a lot from using \fB\-\-sws\-fast\fP\&.
 5973+You may need to set other options, like \fB\-\-sws\-scaler\fP\&. The builtin
 5974+\fBsws\-fast\fP profile sets this option and some others to gain performance
 5975+for reduced quality.
 5976+.TP
 5977+.B \fB\-\-sws\-allow\-zimg=<yes|no>\fP
 5978+Allow using zimg (if the component using the internal swscale wrapper
 5979+explicitly allows so). In this case, zimg \fImay\fP be used, if the internal
 5980+zimg wrapper supports the input and output formats. It will silently
 5981+fall back to libswscale if one of these conditions does not apply.
 5982+.sp
 5983+If zimg is used, the other \fB\-\-sws\-\fP options are ignored, and the
 5984+\fB\-\-zimg\-\fP options are used instead.
 5985+.sp
 5986+If the internal component using the swscale wrapper hooks up logging
 5987+correctly, a verbose priority log message will indicate whether zimg is
 5988+being used.
 5989+.sp
 5990+Most things which need software conversion can make use of this.
 5991+.TP
 5992+.B \fB\-\-zimg\-scaler=<point|bilinear|bicubic|spline16|spline36|lanczos>\fP
 5993+Zimg luma scaler to use (default: lanczos).
 5994+.TP
 5995+.B \fB\-\-zimg\-scaler\-param\-a=<default|float>\fP, \fB\-\-zimg\-scaler\-param\-b=<default|float>\fP
 5996+Set scaler parameters. By default, these are set to the special string
 5997+\fBdefault\fP, which maps to a scaler\-specific default value. Ignored if the
 5998+scaler is not tunable.
 5999+.INDENT 7.0
 6000+.TP
 6001+.B \fBlanczos\fP
 6002+\fB\-\-zimg\-scaler\-param\-a\fP is the number of taps.
 6003+.TP
 6004+.B \fBbicubic\fP
 6005+a and b are the bicubic b and c parameters.
 6006+.UNINDENT
 6007+.TP
 6008+.B \fB\-\-zimg\-scaler\-chroma=...\fP
 6009+Same as \fB\-\-zimg\-scaler\fP, for for chroma interpolation (default: bilinear).
 6010+.TP
 6011+.B \fB\-\-zimg\-scaler\-chroma\-param\-a\fP, \fB\-\-zimg\-scaler\-chroma\-param\-b\fP
 6012+Same as \fB\-\-zimg\-scaler\-param\-a\fP / \fB\-\-zimg\-scaler\-param\-b\fP, for chroma.
 6013+.TP
 6014+.B \fB\-\-zimg\-dither=<no|ordered|random|error\-diffusion>\fP
 6015+Dithering (default: random).
 6016+.TP
 6017+.B \fB\-\-zimg\-fast=<yes|no>\fP
 6018+Allow optimizations that help with performance, but reduce quality (default:
 6019+yes). Currently, this may simplify gamma conversion operations.
 6020+.UNINDENT
 6021+.SS Audio Resampler
 6022+.sp
 6023+This controls the default options of any resampling done by mpv (but not within
 6024+libavfilter, within the system audio API resampler, or any other places).
 6025+.sp
 6026+It also sets the defaults for the \fBlavrresample\fP audio filter.
 6027+.INDENT 0.0
 6028+.TP
 6029+.B \fB\-\-audio\-resample\-filter\-size=<length>\fP
 6030+Length of the filter with respect to the lower sampling rate. (default:
 6031+16)
 6032+.TP
 6033+.B \fB\-\-audio\-resample\-phase\-shift=<count>\fP
 6034+Log2 of the number of polyphase entries. (..., 10\->1024, 11\->2048,
 6035+12\->4096, ...) (default: 10\->1024)
 6036+.TP
 6037+.B \fB\-\-audio\-resample\-cutoff=<cutoff>\fP
 6038+Cutoff frequency (0.0\-1.0), default set depending upon filter length.
 6039+.TP
 6040+.B \fB\-\-audio\-resample\-linear=<yes|no>\fP
 6041+If set then filters will be linearly interpolated between polyphase
 6042+entries. (default: no)
 6043+.TP
 6044+.B \fB\-\-audio\-normalize\-downmix=<yes|no>\fP
 6045+Enable/disable normalization if surround audio is downmixed to stereo
 6046+(default: no). If this is disabled, downmix can cause clipping. If it\(aqs
 6047+enabled, the output might be too quiet. It depends on the source audio.
 6048+.sp
 6049+Technically, this changes the \fBnormalize\fP suboption of the
 6050+\fBlavrresample\fP audio filter, which performs the downmixing.
 6051+.sp
 6052+If downmix happens outside of mpv for some reason, or in the decoder
 6053+(decoder downmixing), or in the audio output (system mixer), this has no
 6054+effect.
 6055+.TP
 6056+.B \fB\-\-audio\-resample\-max\-output\-size=<length>\fP
 6057+Limit maximum size of audio frames filtered at once, in ms (default: 40).
 6058+The output size size is limited in order to make resample speed changes
 6059+react faster. This is necessary especially if decoders or filters output
 6060+very large frame sizes (like some lossless codecs or some DRC filters).
 6061+This option does not affect the resampling algorithm in any way.
 6062+.sp
 6063+For testing/debugging only. Can be removed or changed any time.
 6064+.TP
 6065+.B \fB\-\-audio\-swresample\-o=<string>\fP
 6066+Set AVOptions on the SwrContext or AVAudioResampleContext. These should
 6067+be documented by FFmpeg or Libav.
 6068+.sp
 6069+This is a key/value list option. See \fI\%List Options\fP for details.
 6070+.UNINDENT
 6071+.SS Terminal
 6072+.INDENT 0.0
 6073+.TP
 6074+.B \fB\-\-quiet\fP
 6075+Make console output less verbose; in particular, prevents the status line
 6076+(i.e. AV: 3.4 (00:00:03.37) / 5320.6 ...) from being displayed.
 6077+Particularly useful on slow terminals or broken ones which do not properly
 6078+handle carriage return (i.e. \fB\er\fP).
 6079+.sp
 6080+See also: \fB\-\-really\-quiet\fP and \fB\-\-msg\-level\fP\&.
 6081+.TP
 6082+.B \fB\-\-really\-quiet\fP
 6083+Display even less output and status messages than with \fB\-\-quiet\fP\&.
 6084+.TP
 6085+.B \fB\-\-no\-terminal\fP, \fB\-\-terminal\fP
 6086+Disable any use of the terminal and stdin/stdout/stderr. This completely
 6087+silences any message output.
 6088+.sp
 6089+Unlike \fB\-\-really\-quiet\fP, this disables input and terminal initialization
 6090+as well.
 6091+.TP
 6092+.B \fB\-\-no\-msg\-color\fP
 6093+Disable colorful console output on terminals.
 6094+.TP
 6095+.B \fB\-\-msg\-level=<module1=level1,module2=level2,...>\fP
 6096+Control verbosity directly for each module. The \fBall\fP module changes the
 6097+verbosity of all the modules. The verbosity changes from this option are
 6098+applied in order from left to right, and each item can override a previous
 6099+one.
 6100+.sp
 6101+Run mpv with \fB\-\-msg\-level=all=trace\fP to see all messages mpv outputs. You
 6102+can use the module names printed in the output (prefixed to each line in
 6103+\fB[...]\fP) to limit the output to interesting modules.
 6104+.sp
 6105+This also affects \fB\-\-log\-file\fP, and in certain cases libmpv API logging.
 6106+.sp
 6107+\fBNOTE:\fP
 6108+.INDENT 7.0
 6109+.INDENT 3.5
 6110+Some messages are printed before the command line is parsed and are
 6111+therefore not affected by \fB\-\-msg\-level\fP\&. To control these messages,
 6112+you have to use the \fBMPV_VERBOSE\fP environment variable; see
 6113+\fI\%ENVIRONMENT VARIABLES\fP for details.
 6114+.UNINDENT
 6115+.UNINDENT
 6116+.sp
 6117+Available levels:
 6118+.INDENT 7.0
 6119+.INDENT 3.5
 6120+.INDENT 0.0
 6121+.TP
 6122+.B no
 6123+complete silence
 6124+.TP
 6125+.B fatal
 6126+fatal messages only
 6127+.TP
 6128+.B error
 6129+error messages
 6130+.TP
 6131+.B warn
 6132+warning messages
 6133+.TP
 6134+.B info
 6135+informational messages
 6136+.TP
 6137+.B status
 6138+status messages (default)
 6139+.TP
 6140+.B v
 6141+verbose messages
 6142+.TP
 6143+.B debug
 6144+debug messages
 6145+.TP
 6146+.B trace
 6147+very noisy debug messages
 6148+.UNINDENT
 6149+.UNINDENT
 6150+.UNINDENT
 6151+.INDENT 7.0
 6152+.INDENT 3.5
 6153+.IP "Example"
 6154+.INDENT 0.0
 6155+.INDENT 3.5
 6156+.sp
 6157+.nf
 6158+.ft C
 6159+mpv \-\-msg\-level=ao/sndio=no
 6160+.ft P
 6161+.fi
 6162+.UNINDENT
 6163+.UNINDENT
 6164+.sp
 6165+Completely silences the output of ao_sndio, which uses the log
 6166+prefix \fB[ao/sndio]\fP\&.
 6167+.INDENT 0.0
 6168+.INDENT 3.5
 6169+.sp
 6170+.nf
 6171+.ft C
 6172+mpv \-\-msg\-level=all=warn,ao/alsa=error
 6173+.ft P
 6174+.fi
 6175+.UNINDENT
 6176+.UNINDENT
 6177+.sp
 6178+Only show warnings or worse, and let the ao_alsa output show errors
 6179+only.
 6180+.UNINDENT
 6181+.UNINDENT
 6182+.TP
 6183+.B \fB\-\-term\-osd=<auto|no|force>\fP
 6184+Control whether OSD messages are shown on the console when no video output
 6185+is available (default: auto).
 6186+.INDENT 7.0
 6187+.TP
 6188+.B auto
 6189+use terminal OSD if no video output active
 6190+.TP
 6191+.B no
 6192+disable terminal OSD
 6193+.TP
 6194+.B force
 6195+use terminal OSD even if video output active
 6196+.UNINDENT
 6197+.sp
 6198+The \fBauto\fP mode also enables terminal OSD if \fB\-\-video\-osd=no\fP was set.
 6199+.TP
 6200+.B \fB\-\-term\-osd\-bar\fP, \fB\-\-no\-term\-osd\-bar\fP
 6201+Enable printing a progress bar under the status line on the terminal.
 6202+(Disabled by default.)
 6203+.TP
 6204+.B \fB\-\-term\-osd\-bar\-chars=<string>\fP
 6205+Customize the \fB\-\-term\-osd\-bar\fP feature. The string is expected to
 6206+consist of 5 characters (start, left space, position indicator,
 6207+right space, end). You can use Unicode characters, but note that double\-
 6208+width characters will not be treated correctly.
 6209+.sp
 6210+Default: \fB[\-+\-]\fP\&.
 6211+.TP
 6212+.B \fB\-\-term\-playing\-msg=<string>\fP
 6213+Print out a string after starting playback. The string is expanded for
 6214+properties, e.g. \fB\-\-term\-playing\-msg=\(aqfile: ${filename}\(aq\fP will print the string
 6215+\fBfile:\fP followed by a space and the currently played filename.
 6216+.sp
 6217+See \fI\%Property Expansion\fP\&.
 6218+.TP
 6219+.B \fB\-\-term\-status\-msg=<string>\fP
 6220+Print out a custom string during playback instead of the standard status
 6221+line. Expands properties. See \fI\%Property Expansion\fP\&.
 6222+.TP
 6223+.B \fB\-\-msg\-module\fP
 6224+Prepend module name to each console message.
 6225+.TP
 6226+.B \fB\-\-msg\-time\fP
 6227+Prepend timing information to each console message.
 6228+.UNINDENT
 6229+.SS Cache
 6230+.INDENT 0.0
 6231+.TP
 6232+.B \fB\-\-cache=<yes|no|auto>\fP
 6233+Decide whether to use network cache settings (default: auto).
 6234+.sp
 6235+If enabled, use up to \fB\-\-cache\-secs\fP for the cache size (but still limited
 6236+to \fB\-\-demuxer\-max\-bytes\fP). \fB\-\-demuxer\-seekable\-cache=auto\fP behaves as if
 6237+it was set to \fByes\fP\&. If disabled, \fB\-\-cache\-pause\fP and related are
 6238+implicitly disabled.
 6239+.sp
 6240+The \fBauto\fP choice enables this depending on whether the stream is thought
 6241+to involve network accesses or other slow media (this is an imperfect
 6242+heuristic).
 6243+.sp
 6244+Before mpv 0.30.0, this used to accept a number, which specified the size
 6245+of the cache in kilobytes. Use e.g. \fB\-\-cache \-\-demuxer\-max\-bytes=123k\fP
 6246+instead.
 6247+.TP
 6248+.B \fB\-\-no\-cache\fP
 6249+Turn off input stream caching. See \fB\-\-cache\fP\&.
 6250+.TP
 6251+.B \fB\-\-cache\-secs=<seconds>\fP
 6252+How many seconds of audio/video to prefetch if the cache is active. This
 6253+overrides the \fB\-\-demuxer\-readahead\-secs\fP option if and only if the cache
 6254+is enabled and the value is larger. The default value is set to something
 6255+very high, so the actually achieved readahead will usually be limited by
 6256+the value of the \fB\-\-demuxer\-max\-bytes\fP option. Setting this option is
 6257+usually only useful for limiting readahead.
 6258+.TP
 6259+.B \fB\-\-cache\-on\-disk=<yes|no>\fP
 6260+Write packet data to a temporary file, instead of keeping them in memory.
 6261+This makes sense only with \fB\-\-cache\fP\&. If the normal cache is disabled,
 6262+this option is ignored.
 6263+.sp
 6264+You need to set \fB\-\-cache\-dir\fP to use this.
 6265+.sp
 6266+The cache file is append\-only. Even if the player appears to prune data, the
 6267+file space freed by it is not reused. The cache file is deleted when
 6268+playback is closed.
 6269+.sp
 6270+Note that packet metadata is still kept in memory. \fB\-\-demuxer\-max\-bytes\fP
 6271+and related options are applied to metadata \fIonly\fP\&. The size of this
 6272+metadata  varies, but 50 MB per hour of media is typical. The cache
 6273+statistics will report this metadats size, instead of the size of the cache
 6274+file. If the metadata hits the size limits, the metadata is pruned (but not
 6275+the cache file).
 6276+.sp
 6277+When the media is closed, the cache file is deleted. A cache file is
 6278+generally worthless after the media is closed, and it\(aqs hard to retrieve
 6279+any media data from it (it\(aqs not supported by design).
 6280+.sp
 6281+If the option is enabled at runtime, the cache file is created, but old data
 6282+will remain in the memory cache. If the option is disabled at runtime, old
 6283+data remains in the disk cache, and the cache file is not closed until the
 6284+media is closed. If the option is disabled and enabled again, it will
 6285+continue to use the cache file that was opened first.
 6286+.TP
 6287+.B \fB\-\-cache\-dir=<path>\fP
 6288+Directory where to create temporary files (default: none).
 6289+.sp
 6290+Currently, this is used for \fB\-\-cache\-on\-disk\fP only.
 6291+.TP
 6292+.B \fB\-\-cache\-pause=<yes|no>\fP
 6293+Whether the player should automatically pause when the cache runs out of
 6294+data and stalls decoding/playback (default: yes). If enabled, it will
 6295+pause and unpause once more data is available, aka "buffering".
 6296+.TP
 6297+.B \fB\-\-cache\-pause\-wait=<seconds>\fP
 6298+Number of seconds the packet cache should have buffered before starting
 6299+playback again if "buffering" was entered (default: 1). This can be used
 6300+to control how long the player rebuffers if \fB\-\-cache\-pause\fP is enabled,
 6301+and the demuxer underruns. If the given time is higher than the maximum
 6302+set with \fB\-\-cache\-secs\fP or  \fB\-\-demuxer\-readahead\-secs\fP, or prefetching
 6303+ends before that for some other reason (like file end or maximum configured
 6304+cache size reached), playback resumes earlier.
 6305+.TP
 6306+.B \fB\-\-cache\-pause\-initial=<yes|no>\fP
 6307+Enter "buffering" mode before starting playback (default: no). This can be
 6308+used to ensure playback starts smoothly, in exchange for waiting some time
 6309+to prefetch network data (as controlled by \fB\-\-cache\-pause\-wait\fP). For
 6310+example, some common behavior is that playback starts, but network caches
 6311+immediately underrun when trying to decode more data as playback progresses.
 6312+.sp
 6313+Another thing that can happen is that the network prefetching is so CPU
 6314+demanding (due to demuxing in the background) that playback drops frames
 6315+at first. In these cases, it helps enabling this option, and setting
 6316+\fB\-\-cache\-secs\fP and \fB\-\-cache\-pause\-wait\fP to roughly the same value.
 6317+.sp
 6318+This option also triggers when playback is restarted after seeking.
 6319+.TP
 6320+.B \fB\-\-cache\-unlink\-files=<immediate|whendone|no>\fP
 6321+Whether or when to unlink cache files (default: immediate). This affects
 6322+cache files which are inherently temporary, and which make no sense to
 6323+remain on disk after the player terminates. This is a debugging option.
 6324+.INDENT 7.0
 6325+.TP
 6326+.B \fBimmediate\fP
 6327+Unlink cache file after they were created. The cache files won\(aqt be
 6328+visible anymore, even though they\(aqre in use. This ensures they are
 6329+guaranteed to be removed from disk when the player terminates, even if
 6330+it crashes.
 6331+.TP
 6332+.B \fBwhendone\fP
 6333+Delete cache files after they are closed.
 6334+.TP
 6335+.B \fBno\fP
 6336+Don\(aqt delete cache files. They will consume disk space without having a
 6337+use.
 6338+.UNINDENT
 6339+.sp
 6340+Currently, this is used for \fB\-\-cache\-on\-disk\fP only.
 6341+.TP
 6342+.B \fB\-\-stream\-buffer\-size=<bytesize>\fP
 6343+Size of the low level stream byte buffer (default: 128KB). This is used as
 6344+buffer between demuxer and low level I/O (e.g. sockets). Generally, this
 6345+can be very small, and the main purpose is similar to the internal buffer
 6346+FILE in the C standard library will have.
 6347+.sp
 6348+Half of the buffer is always used for guaranteed seek back, which is
 6349+important for unseekable input.
 6350+.sp
 6351+There are known cases where this can help performance to set a large buffer:
 6352+.INDENT 7.0
 6353+.INDENT 3.5
 6354+.INDENT 0.0
 6355+.IP 1. 3
 6356+mp4 files. libavformat may trigger many small seeks in both
 6357+directions, depending on how the file was muxed.
 6358+.IP 2. 3
 6359+Certain network filesystems, which do not have a cache, and where
 6360+small reads can be inefficient.
 6361+.UNINDENT
 6362+.UNINDENT
 6363+.UNINDENT
 6364+.sp
 6365+In other cases, setting this to a large value can reduce performance.
 6366+.sp
 6367+Usually, read accesses are at half the buffer size, but it may happen that
 6368+accesses are done alternating with smaller and larger sizes (this is due to
 6369+the internal ring buffer wrap\-around).
 6370+.sp
 6371+See \fB\-\-list\-options\fP for defaults and value range. \fB<bytesize>\fP options
 6372+accept suffixes such as \fBKiB\fP and \fBMiB\fP\&.
 6373+.UNINDENT
 6374+.SS Network
 6375+.INDENT 0.0
 6376+.TP
 6377+.B \fB\-\-user\-agent=<string>\fP
 6378+Use \fB<string>\fP as user agent for HTTP streaming.
 6379+.TP
 6380+.B \fB\-\-cookies\fP, \fB\-\-no\-cookies\fP
 6381+Support cookies when making HTTP requests. Disabled by default.
 6382+.TP
 6383+.B \fB\-\-cookies\-file=<filename>\fP
 6384+Read HTTP cookies from <filename>. The file is assumed to be in Netscape
 6385+format.
 6386+.TP
 6387+.B \fB\-\-http\-header\-fields=<field1,field2>\fP
 6388+Set custom HTTP fields when accessing HTTP stream.
 6389+.sp
 6390+This is a string list option. See \fI\%List Options\fP for details.
 6391+.INDENT 7.0
 6392+.INDENT 3.5
 6393+.IP "Example"
 6394+.INDENT 0.0
 6395+.INDENT 3.5
 6396+.sp
 6397+.nf
 6398+.ft C
 6399+mpv \-\-http\-header\-fields=\(aqField1: value1\(aq,\(aqField2: value2\(aq \e
 6400+http://localhost:1234
 6401+.ft P
 6402+.fi
 6403+.UNINDENT
 6404+.UNINDENT
 6405+.sp
 6406+Will generate HTTP request:
 6407+.INDENT 0.0
 6408+.INDENT 3.5
 6409+.sp
 6410+.nf
 6411+.ft C
 6412+GET / HTTP/1.0
 6413+Host: localhost:1234
 6414+User\-Agent: MPlayer
 6415+Icy\-MetaData: 1
 6416+Field1: value1
 6417+Field2: value2
 6418+Connection: close
 6419+.ft P
 6420+.fi
 6421+.UNINDENT
 6422+.UNINDENT
 6423+.UNINDENT
 6424+.UNINDENT
 6425+.TP
 6426+.B \fB\-\-http\-proxy=<proxy>\fP
 6427+URL of the HTTP/HTTPS proxy. If this is set, the \fBhttp_proxy\fP environment
 6428+is ignored. The \fBno_proxy\fP environment variable is still respected. This
 6429+option is silently ignored if it does not start with \fBhttp://\fP\&. Proxies
 6430+are not used for https URLs. Setting this option does not try to make the
 6431+ytdl script use the proxy.
 6432+.TP
 6433+.B \fB\-\-tls\-ca\-file=<filename>\fP
 6434+Certificate authority database file for use with TLS. (Silently fails with
 6435+older FFmpeg or Libav versions.)
 6436+.TP
 6437+.B \fB\-\-tls\-verify\fP
 6438+Verify peer certificates when using TLS (e.g. with \fBhttps://...\fP).
 6439+(Silently fails with older FFmpeg or Libav versions.)
 6440+.TP
 6441+.B \fB\-\-tls\-cert\-file\fP
 6442+A file containing a certificate to use in the handshake with the
 6443+peer.
 6444+.TP
 6445+.B \fB\-\-tls\-key\-file\fP
 6446+A file containing the private key for the certificate.
 6447+.TP
 6448+.B \fB\-\-referrer=<string>\fP
 6449+Specify a referrer path or URL for HTTP requests.
 6450+.TP
 6451+.B \fB\-\-network\-timeout=<seconds>\fP
 6452+Specify the network timeout in seconds (default: 60 seconds). This affects
 6453+at least HTTP. The special value 0 uses the FFmpeg/Libav defaults. If a
 6454+protocol is used which does not support timeouts, this option is silently
 6455+ignored.
 6456+.sp
 6457+\fBWARNING:\fP
 6458+.INDENT 7.0
 6459+.INDENT 3.5
 6460+This breaks the RTSP protocol, because of inconsistent FFmpeg API
 6461+regarding its internal timeout option. Not only does the RTSP timeout
 6462+option accept different units (seconds instead of microseconds, causing
 6463+mpv to pass it huge values), it will also overflow FFmpeg internal
 6464+calculations. The worst is that merely setting the option will put RTSP
 6465+into listening mode, which breaks any client uses. At time of this
 6466+writing, the fix was not made effective yet. For this reason, this
 6467+option is ignored (or should be ignored) on RTSP URLs. You can still
 6468+set the timeout option directly with \fB\-\-demuxer\-lavf\-o\fP\&.
 6469+.UNINDENT
 6470+.UNINDENT
 6471+.TP
 6472+.B \fB\-\-rtsp\-transport=<lavf|udp|tcp|http>\fP
 6473+Select RTSP transport method (default: tcp). This selects the underlying
 6474+network transport when playing \fBrtsp://...\fP URLs. The value \fBlavf\fP
 6475+leaves the decision to libavformat.
 6476+.TP
 6477+.B \fB\-\-hls\-bitrate=<no|min|max|<rate>>\fP
 6478+If HLS streams are played, this option controls what streams are selected
 6479+by default. The option allows the following parameters:
 6480+.INDENT 7.0
 6481+.TP
 6482+.B no
 6483+Don\(aqt do anything special. Typically, this will simply pick the
 6484+first audio/video streams it can find.
 6485+.TP
 6486+.B min
 6487+Pick the streams with the lowest bitrate.
 6488+.TP
 6489+.B max
 6490+Same, but highest bitrate. (Default.)
 6491+.UNINDENT
 6492+.sp
 6493+Additionally, if the option is a number, the stream with the highest rate
 6494+equal or below the option value is selected.
 6495+.sp
 6496+The bitrate as used is sent by the server, and there\(aqs no guarantee it\(aqs
 6497+actually meaningful.
 6498+.UNINDENT
 6499+.SS DVB
 6500+.INDENT 0.0
 6501+.TP
 6502+.B \fB\-\-dvbin\-prog=<string>\fP
 6503+This defines the program to tune to. Usually, you may specify this
 6504+by using a stream URI like \fB"dvb://ZDF HD"\fP, but you can tune to a
 6505+different channel by writing to this property at runtime.
 6506+Also see \fBdvbin\-channel\-switch\-offset\fP for more useful channel
 6507+switching functionality.
 6508+.TP
 6509+.B \fB\-\-dvbin\-card=<0\-15>\fP
 6510+Specifies using card number 0\-15 (default: 0).
 6511+.TP
 6512+.B \fB\-\-dvbin\-file=<filename>\fP
 6513+Instructs mpv to read the channels list from \fB<filename>\fP\&. The default is
 6514+in the mpv configuration directory (usually \fB~/.config/mpv\fP) with the
 6515+filename \fBchannels.conf.{sat,ter,cbl,atsc}\fP (based on your card type) or
 6516+\fBchannels.conf\fP as a last resort.
 6517+For DVB\-S/2 cards, a VDR 1.7.x format channel list is recommended
 6518+as it allows tuning to DVB\-S2 channels, enabling subtitles and
 6519+decoding the PMT (which largely improves the demuxing).
 6520+Classic mplayer format channel lists are still supported (without
 6521+these improvements), and for other card types, only limited VDR
 6522+format channel list support is implemented (patches welcome).
 6523+For channels with dynamic PID switching or incomplete
 6524+\fBchannels.conf\fP, \fB\-\-dvbin\-full\-transponder\fP or the magic PID
 6525+\fB8192\fP are recommended.
 6526+.TP
 6527+.B \fB\-\-dvbin\-timeout=<1\-30>\fP
 6528+Maximum number of seconds to wait when trying to tune a frequency before
 6529+giving up (default: 30).
 6530+.TP
 6531+.B \fB\-\-dvbin\-full\-transponder=<yes|no>\fP
 6532+Apply no filters on program PIDs, only tune to frequency and pass full
 6533+transponder to demuxer.
 6534+The player frontend selects the streams from the full TS in this case,
 6535+so the program which is shown initially may not match the chosen channel.
 6536+Switching between the programs is possible by cycling the \fBprogram\fP
 6537+property.
 6538+This is useful to record multiple programs on a single transponder,
 6539+or to work around issues in the \fBchannels.conf\fP\&.
 6540+It is also recommended to use this for channels which switch PIDs
 6541+on\-the\-fly, e.g. for regional news.
 6542+.sp
 6543+Default: \fBno\fP
 6544+.TP
 6545+.B \fB\-\-dvbin\-channel\-switch\-offset=<integer>\fP
 6546+This value is not meant for setting via configuration, but used in channel
 6547+switching. An \fBinput.conf\fP can \fBcycle\fP this value \fBup\fP and \fBdown\fP
 6548+to perform channel switching. This number effectively gives the offset
 6549+to the initially tuned to channel in the channel list.
 6550+.sp
 6551+An example \fBinput.conf\fP could contain:
 6552+\fBH cycle dvbin\-channel\-switch\-offset up\fP, \fBK cycle dvbin\-channel\-switch\-offset down\fP
 6553+.UNINDENT
 6554+.SS ALSA audio output options
 6555+.INDENT 0.0
 6556+.TP
 6557+.B \fB\-\-alsa\-device=<device>\fP
 6558+Deprecated, use \fB\-\-audio\-device\fP (requires \fBalsa/\fP prefix).
 6559+.TP
 6560+.B \fB\-\-alsa\-resample=yes\fP
 6561+Enable ALSA resampling plugin. (This is disabled by default, because
 6562+some drivers report incorrect audio delay in some cases.)
 6563+.TP
 6564+.B \fB\-\-alsa\-mixer\-device=<device>\fP
 6565+Set the mixer device used with \fBao\-volume\fP (default: \fBdefault\fP).
 6566+.TP
 6567+.B \fB\-\-alsa\-mixer\-name=<name>\fP
 6568+Set the name of the mixer element (default: \fBMaster\fP). This is for
 6569+example \fBPCM\fP or \fBMaster\fP\&.
 6570+.TP
 6571+.B \fB\-\-alsa\-mixer\-index=<number>\fP
 6572+Set the index of the mixer channel (default: 0). Consider the output of
 6573+"\fBamixer scontrols\fP", then the index is the number that follows the
 6574+name of the element.
 6575+.TP
 6576+.B \fB\-\-alsa\-non\-interleaved\fP
 6577+Allow output of non\-interleaved formats (if the audio decoder uses
 6578+this format). Currently disabled by default, because some popular
 6579+ALSA plugins are utterly broken with non\-interleaved formats.
 6580+.TP
 6581+.B \fB\-\-alsa\-ignore\-chmap\fP
 6582+Don\(aqt read or set the channel map of the ALSA device \- only request the
 6583+required number of channels, and then pass the audio as\-is to it. This
 6584+option most likely should not be used. It can be useful for debugging,
 6585+or for static setups with a specially engineered ALSA configuration (in
 6586+this case you should always force the same layout with \fB\-\-audio\-channels\fP,
 6587+or it will work only for files which use the layout implicit to your
 6588+ALSA device).
 6589+.TP
 6590+.B \fB\-\-alsa\-buffer\-time=<microseconds>\fP
 6591+Set the requested buffer time in microseconds. A value of 0 skips requesting
 6592+anything from the ALSA API. This and the \fB\-\-alsa\-periods\fP option uses the
 6593+ALSA \fBnear\fP functions to set the requested parameters. If doing so results
 6594+in an empty configuration set, setting these parameters is skipped.
 6595+.sp
 6596+Both options control the buffer size. A low buffer size can lead to higher
 6597+CPU usage and audio dropouts, while a high buffer size can lead to higher
 6598+latency in volume changes and other filtering.
 6599+.TP
 6600+.B \fB\-\-alsa\-periods=<number>\fP
 6601+Number of periods requested from the ALSA API. See \fB\-\-alsa\-buffer\-time\fP
 6602+for further remarks.
 6603+.UNINDENT
 6604+.SS GPU renderer options
 6605+.sp
 6606+The following video options are currently all specific to \fB\-\-vo=gpu\fP and
 6607+\fB\-\-vo=libmpv\fP only, which are the only VOs that implement them.
 6608+.INDENT 0.0
 6609+.TP
 6610+.B \fB\-\-scale=<filter>\fP
 6611+The filter function to use when upscaling video.
 6612+.INDENT 7.0
 6613+.TP
 6614+.B \fBbilinear\fP
 6615+Bilinear hardware texture filtering (fastest, very low quality). This
 6616+is the default for compatibility reasons.
 6617+.TP
 6618+.B \fBspline36\fP
 6619+Mid quality and speed. This is the default when using \fBgpu\-hq\fP\&.
 6620+.TP
 6621+.B \fBlanczos\fP
 6622+Lanczos scaling. Provides mid quality and speed. Generally worse than
 6623+\fBspline36\fP, but it results in a slightly sharper image which is good
 6624+for some content types. The number of taps can be controlled with
 6625+\fBscale\-radius\fP, but is best left unchanged.
 6626+.sp
 6627+(This filter is an alias for \fBsinc\fP\-windowed \fBsinc\fP)
 6628+.TP
 6629+.B \fBewa_lanczos\fP
 6630+Elliptic weighted average Lanczos scaling. Also known as Jinc.
 6631+Relatively slow, but very good quality. The radius can be controlled
 6632+with \fBscale\-radius\fP\&. Increasing the radius makes the filter sharper
 6633+but adds more ringing.
 6634+.sp
 6635+(This filter is an alias for \fBjinc\fP\-windowed \fBjinc\fP)
 6636+.TP
 6637+.B \fBewa_lanczossharp\fP
 6638+A slightly sharpened version of ewa_lanczos, preconfigured to use an
 6639+ideal radius and parameter. If your hardware can run it, this is
 6640+probably what you should use by default.
 6641+.TP
 6642+.B \fBmitchell\fP
 6643+Mitchell\-Netravali. The \fBB\fP and \fBC\fP parameters can be set with
 6644+\fB\-\-scale\-param1\fP and \fB\-\-scale\-param2\fP\&. This filter is very good at
 6645+downscaling (see \fB\-\-dscale\fP).
 6646+.TP
 6647+.B \fBoversample\fP
 6648+A version of nearest neighbour that (naively) oversamples pixels, so
 6649+that pixels overlapping edges get linearly interpolated instead of
 6650+rounded. This essentially removes the small imperfections and judder
 6651+artifacts caused by nearest\-neighbour interpolation, in exchange for
 6652+adding some blur. This filter is good at temporal interpolation, and
 6653+also known as "smoothmotion" (see \fB\-\-tscale\fP).
 6654+.TP
 6655+.B \fBlinear\fP
 6656+A \fB\-\-tscale\fP filter.
 6657+.UNINDENT
 6658+.sp
 6659+There are some more filters, but most are not as useful. For a complete
 6660+list, pass \fBhelp\fP as value, e.g.:
 6661+.INDENT 7.0
 6662+.INDENT 3.5
 6663+.sp
 6664+.nf
 6665+.ft C
 6666+mpv \-\-scale=help
 6667+.ft P
 6668+.fi
 6669+.UNINDENT
 6670+.UNINDENT
 6671+.TP
 6672+.B \fB\-\-cscale=<filter>\fP
 6673+As \fB\-\-scale\fP, but for interpolating chroma information. If the image is
 6674+not subsampled, this option is ignored entirely.
 6675+.TP
 6676+.B \fB\-\-dscale=<filter>\fP
 6677+Like \fB\-\-scale\fP, but apply these filters on downscaling instead. If this
 6678+option is unset, the filter implied by \fB\-\-scale\fP will be applied.
 6679+.TP
 6680+.B \fB\-\-tscale=<filter>\fP
 6681+The filter used for interpolating the temporal axis (frames). This is only
 6682+used if \fB\-\-interpolation\fP is enabled. The only valid choices for
 6683+\fB\-\-tscale\fP are separable convolution filters (use \fB\-\-tscale=help\fP to
 6684+get a list). The default is \fBmitchell\fP\&.
 6685+.sp
 6686+Common \fB\-\-tscale\fP choices include \fBoversample\fP, \fBlinear\fP,
 6687+\fBcatmull_rom\fP, \fBmitchell\fP, \fBgaussian\fP, or \fBbicubic\fP\&. These are
 6688+listed in increasing order of smoothness/blurriness, with \fBbicubic\fP
 6689+being the smoothest/blurriest and \fBoversample\fP being the sharpest/least
 6690+smooth.
 6691+.TP
 6692+.B \fB\-\-scale\-param1=<value>\fP, \fB\-\-scale\-param2=<value>\fP, \fB\-\-cscale\-param1=<value>\fP, \fB\-\-cscale\-param2=<value>\fP, \fB\-\-dscale\-param1=<value>\fP, \fB\-\-dscale\-param2=<value>\fP, \fB\-\-tscale\-param1=<value>\fP, \fB\-\-tscale\-param2=<value>\fP
 6693+Set filter parameters. By default, these are set to the special string
 6694+\fBdefault\fP, which maps to a scaler\-specific default value. Ignored if the
 6695+filter is not tunable. Currently, this affects the following filter
 6696+parameters:
 6697+.INDENT 7.0
 6698+.TP
 6699+.B bcspline
 6700+Spline parameters (\fBB\fP and \fBC\fP). Defaults to 0.5 for both.
 6701+.TP
 6702+.B gaussian
 6703+Scale parameter (\fBt\fP). Increasing this makes the result blurrier.
 6704+Defaults to 1.
 6705+.TP
 6706+.B oversample
 6707+Minimum distance to an edge before interpolation is used. Setting this
 6708+to 0 will always interpolate edges, whereas setting it to 0.5 will
 6709+never interpolate, thus behaving as if the regular nearest neighbour
 6710+algorithm was used. Defaults to 0.0.
 6711+.UNINDENT
 6712+.TP
 6713+.B \fB\-\-scale\-blur=<value>\fP, \fB\-\-scale\-wblur=<value>\fP, \fB\-\-cscale\-blur=<value>\fP, \fB\-\-cscale\-wblur=<value>\fP, \fB\-\-dscale\-blur=<value>\fP, \fB\-\-dscale\-wblur=<value>\fP, \fB\-\-tscale\-blur=<value>\fP, \fB\-\-tscale\-wblur=<value>\fP
 6714+Kernel/window scaling factor (also known as a blur factor). Decreasing this
 6715+makes the result sharper, increasing it makes it blurrier (default 0). If
 6716+set to 0, the kernel\(aqs preferred blur factor is used. Note that setting
 6717+this too low (eg. 0.5) leads to bad results. It\(aqs generally recommended to
 6718+stick to values between 0.8 and 1.2.
 6719+.TP
 6720+.B \fB\-\-scale\-clamp=<0.0\-1.0>\fP, \fB\-\-cscale\-clamp\fP, \fB\-\-dscale\-clamp\fP, \fB\-\-tscale\-clamp\fP
 6721+Specifies a weight bias to multiply into negative coefficients. Specifying
 6722+\fB\-\-scale\-clamp=1\fP has the effect of removing negative weights completely,
 6723+thus effectively clamping the value range to [0\-1]. Values between 0.0 and
 6724+1.0 can be specified to apply only a moderate diminishment of negative
 6725+weights. This is especially useful for \fB\-\-tscale\fP, where it reduces
 6726+excessive ringing artifacts in the temporal domain (which typically
 6727+manifest themselves as short flashes or fringes of black, mostly around
 6728+moving edges) in exchange for potentially adding more blur. The default for
 6729+\fB\-\-tscale\-clamp\fP is 1.0, the others default to 0.0.
 6730+.TP
 6731+.B \fB\-\-scale\-cutoff=<value>\fP, \fB\-\-cscale\-cutoff=<value>\fP, \fB\-\-dscale\-cutoff=<value>\fP
 6732+Cut off the filter kernel prematurely once the value range drops below
 6733+this threshold. Doing so allows more aggressive pruning of skippable
 6734+coefficients by disregarding parts of the LUT which are effectively zeroed
 6735+out by the window function. Only affects polar (EWA) filters. The default
 6736+is 0.001 for each, which is perceptually transparent but provides a 10%\-20%
 6737+speedup, depending on the exact radius and filter kernel chosen.
 6738+.TP
 6739+.B \fB\-\-scale\-taper=<value>\fP, \fB\-\-scale\-wtaper=<value>\fP, \fB\-\-dscale\-taper=<value>\fP, \fB\-\-dscale\-wtaper=<value>\fP, \fB\-\-cscale\-taper=<value>\fP, \fB\-\-cscale\-wtaper=<value>\fP, \fB\-\-tscale\-taper=<value>\fP, \fB\-\-tscale\-wtaper=<value>\fP
 6740+Kernel/window taper factor. Increasing this flattens the filter function.
 6741+Value range is 0 to 1. A value of 0 (the default) means no flattening, a
 6742+value of 1 makes the filter completely flat (equivalent to a box function).
 6743+Values in between mean that some portion will be flat and the actual filter
 6744+function will be squeezed into the space in between.
 6745+.TP
 6746+.B \fB\-\-scale\-radius=<value>\fP, \fB\-\-cscale\-radius=<value>\fP, \fB\-\-dscale\-radius=<value>\fP, \fB\-\-tscale\-radius=<value>\fP
 6747+Set radius for tunable filters, must be a float number between 0.5 and
 6748+16.0. Defaults to the filter\(aqs preferred radius if not specified. Doesn\(aqt
 6749+work for every scaler and VO combination.
 6750+.sp
 6751+Note that depending on filter implementation details and video scaling
 6752+ratio, the radius that actually being used might be different (most likely
 6753+being increased a bit).
 6754+.TP
 6755+.B \fB\-\-scale\-antiring=<value>\fP, \fB\-\-cscale\-antiring=<value>\fP, \fB\-\-dscale\-antiring=<value>\fP, \fB\-\-tscale\-antiring=<value>\fP
 6756+Set the antiringing strength. This tries to eliminate ringing, but can
 6757+introduce other artifacts in the process. Must be a float number between
 6758+0.0 and 1.0. The default value of 0.0 disables antiringing entirely.
 6759+.sp
 6760+Note that this doesn\(aqt affect the special filters \fBbilinear\fP and
 6761+\fBbicubic_fast\fP, nor does it affect any polar (EWA) scalers.
 6762+.TP
 6763+.B \fB\-\-scale\-window=<window>\fP, \fB\-\-cscale\-window=<window>\fP, \fB\-\-dscale\-window=<window>\fP, \fB\-\-tscale\-window=<window>\fP
 6764+(Advanced users only) Choose a custom windowing function for the kernel.
 6765+Defaults to the filter\(aqs preferred window if unset. Use
 6766+\fB\-\-scale\-window=help\fP to get a list of supported windowing functions.
 6767+.TP
 6768+.B \fB\-\-scale\-wparam=<window>\fP, \fB\-\-cscale\-wparam=<window>\fP, \fB\-\-cscale\-wparam=<window>\fP, \fB\-\-tscale\-wparam=<window>\fP
 6769+(Advanced users only) Configure the parameter for the window function given
 6770+by \fB\-\-scale\-window\fP etc. By default, these are set to the special string
 6771+\fBdefault\fP, which maps to a window\-specific default value. Ignored if the
 6772+window is not tunable. Currently, this affects the following window
 6773+parameters:
 6774+.INDENT 7.0
 6775+.TP
 6776+.B kaiser
 6777+Window parameter (alpha). Defaults to 6.33.
 6778+.TP
 6779+.B blackman
 6780+Window parameter (alpha). Defaults to 0.16.
 6781+.TP
 6782+.B gaussian
 6783+Scale parameter (t). Increasing this makes the window wider. Defaults
 6784+to 1.
 6785+.UNINDENT
 6786+.TP
 6787+.B \fB\-\-scaler\-lut\-size=<4..10>\fP
 6788+Set the size of the lookup texture for scaler kernels (default: 6). The
 6789+actual size of the texture is \fB2^N\fP for an option value of \fBN\fP\&. So the
 6790+lookup texture with the default setting uses 64 samples.
 6791+.sp
 6792+All weights are linearly interpolated from those samples, so increasing
 6793+the size of lookup table might improve the accuracy of scaler.
 6794+.TP
 6795+.B \fB\-\-scaler\-resizes\-only\fP
 6796+Disable the scaler if the video image is not resized. In that case,
 6797+\fBbilinear\fP is used instead of whatever is set with \fB\-\-scale\fP\&. Bilinear
 6798+will reproduce the source image perfectly if no scaling is performed.
 6799+Enabled by default. Note that this option never affects \fB\-\-cscale\fP\&.
 6800+.TP
 6801+.B \fB\-\-correct\-downscaling\fP
 6802+When using convolution based filters, extend the filter size when
 6803+downscaling. Increases quality, but reduces performance while downscaling.
 6804+.sp
 6805+This will perform slightly sub\-optimally for anamorphic video (but still
 6806+better than without it) since it will extend the size to match only the
 6807+milder of the scale factors between the axes.
 6808+.TP
 6809+.B \fB\-\-linear\-downscaling\fP
 6810+Scale in linear light when downscaling. It should only be used with a
 6811+\fB\-\-fbo\-format\fP that has at least 16 bit precision. This option
 6812+has no effect on HDR content.
 6813+.TP
 6814+.B \fB\-\-linear\-upscaling\fP
 6815+Scale in linear light when upscaling. Like \fB\-\-linear\-downscaling\fP, it
 6816+should only be used with a \fB\-\-fbo\-format\fP that has at least 16 bits
 6817+precisions. This is not usually recommended except for testing/specific
 6818+purposes. Users are advised to either enable \fB\-\-sigmoid\-upscaling\fP or
 6819+keep both options disabled (i.e. scaling in gamma light).
 6820+.TP
 6821+.B \fB\-\-sigmoid\-upscaling\fP
 6822+When upscaling, use a sigmoidal color transform to avoid emphasizing
 6823+ringing artifacts. This is incompatible with and replaces
 6824+\fB\-\-linear\-upscaling\fP\&. (Note that sigmoidization also requires
 6825+linearization, so the \fBLINEAR\fP rendering step fires in both cases)
 6826+.TP
 6827+.B \fB\-\-sigmoid\-center\fP
 6828+The center of the sigmoid curve used for \fB\-\-sigmoid\-upscaling\fP, must be a
 6829+float between 0.0 and 1.0. Defaults to 0.75 if not specified.
 6830+.TP
 6831+.B \fB\-\-sigmoid\-slope\fP
 6832+The slope of the sigmoid curve used for \fB\-\-sigmoid\-upscaling\fP, must be a
 6833+float between 1.0 and 20.0. Defaults to 6.5 if not specified.
 6834+.TP
 6835+.B \fB\-\-interpolation\fP
 6836+Reduce stuttering caused by mismatches in the video fps and display refresh
 6837+rate (also known as judder).
 6838+.sp
 6839+\fBWARNING:\fP
 6840+.INDENT 7.0
 6841+.INDENT 3.5
 6842+This requires setting the \fB\-\-video\-sync\fP option to one
 6843+of the \fBdisplay\-\fP modes, or it will be silently disabled.
 6844+This was not required before mpv 0.14.0.
 6845+.UNINDENT
 6846+.UNINDENT
 6847+.sp
 6848+This essentially attempts to interpolate the missing frames by convoluting
 6849+the video along the temporal axis. The filter used can be controlled using
 6850+the \fB\-\-tscale\fP setting.
 6851+.TP
 6852+.B \fB\-\-interpolation\-threshold=<0..1,\-1>\fP
 6853+Threshold below which frame ratio interpolation gets disabled (default:
 6854+\fB0.0001\fP). This is calculated as \fBabs(disphz/vfps \- 1) < threshold\fP,
 6855+where \fBvfps\fP is the speed\-adjusted video FPS, and \fBdisphz\fP the
 6856+display refresh rate. (The speed\-adjusted video FPS is roughly equal to
 6857+the normal video FPS, but with slowdown and speedup applied. This matters
 6858+if you use \fB\-\-video\-sync=display\-resample\fP to make video run synchronously
 6859+to the display FPS, or if you change the \fBspeed\fP property.)
 6860+.sp
 6861+The default is intended to almost always enable interpolation if the
 6862+playback rate is even slightly different from the display refresh rate. But
 6863+note that if you use e.g. \fB\-\-video\-sync=display\-vdrop\fP, small deviations
 6864+in the rate can disable interpolation and introduce a discontinuity every
 6865+other minute.
 6866+.sp
 6867+Set this to \fB\-1\fP to disable this logic.
 6868+.TP
 6869+.B \fB\-\-opengl\-pbo\fP
 6870+Enable use of PBOs. On some drivers this can be faster, especially if the
 6871+source video size is huge (e.g. so called "4K" video). On other drivers it
 6872+might be slower or cause latency issues.
 6873+.TP
 6874+.B \fB\-\-dither\-depth=<N|no|auto>\fP
 6875+Set dither target depth to N. Default: no.
 6876+.INDENT 7.0
 6877+.TP
 6878+.B no
 6879+Disable any dithering done by mpv.
 6880+.TP
 6881+.B auto
 6882+Automatic selection. If output bit depth cannot be detected, 8 bits per
 6883+component are assumed.
 6884+.TP
 6885+.B 8
 6886+Dither to 8 bit output.
 6887+.UNINDENT
 6888+.sp
 6889+Note that the depth of the connected video display device cannot be
 6890+detected. Often, LCD panels will do dithering on their own, which conflicts
 6891+with this option and leads to ugly output.
 6892+.TP
 6893+.B \fB\-\-dither\-size\-fruit=<2\-8>\fP
 6894+Set the size of the dither matrix (default: 6). The actual size of the
 6895+matrix is \fB(2^N) x (2^N)\fP for an option value of \fBN\fP, so a value of 6
 6896+gives a size of 64x64. The matrix is generated at startup time, and a large
 6897+matrix can take rather long to compute (seconds).
 6898+.sp
 6899+Used in \fB\-\-dither=fruit\fP mode only.
 6900+.TP
 6901+.B \fB\-\-dither=<fruit|ordered|error\-diffusion|no>\fP
 6902+Select dithering algorithm (default: fruit). (Normally, the
 6903+\fB\-\-dither\-depth\fP option controls whether dithering is enabled.)
 6904+.sp
 6905+The \fBerror\-diffusion\fP option requires compute shader support. It also
 6906+requires large amount of shared memory to run, the size of which depends on
 6907+both the kernel (see \fB\-\-error\-diffusion\fP option below) and the height of
 6908+video window. It will fallback to \fBfruit\fP dithering if there is no enough
 6909+shared memory to run the shader.
 6910+.TP
 6911+.B \fB\-\-temporal\-dither\fP
 6912+Enable temporal dithering. (Only active if dithering is enabled in
 6913+general.) This changes between 8 different dithering patterns on each frame
 6914+by changing the orientation of the tiled dithering matrix. Unfortunately,
 6915+this can lead to flicker on LCD displays, since these have a high reaction
 6916+time.
 6917+.TP
 6918+.B \fB\-\-temporal\-dither\-period=<1\-128>\fP
 6919+Determines how often the dithering pattern is updated when
 6920+\fB\-\-temporal\-dither\fP is in use. 1 (the default) will update on every video
 6921+frame, 2 on every other frame, etc.
 6922+.TP
 6923+.B \fB\-\-error\-diffusion=<kernel>\fP
 6924+The error diffusion kernel to use when \fB\-\-dither=error\-diffusion\fP is set.
 6925+.INDENT 7.0
 6926+.TP
 6927+.B \fBsimple\fP
 6928+Propagate error to only two adjacent pixels. Fastest but low quality.
 6929+.TP
 6930+.B \fBsierra\-lite\fP
 6931+Fast with reasonable quality. This is the default.
 6932+.TP
 6933+.B \fBfloyd\-steinberg\fP
 6934+Most notable error diffusion kernel.
 6935+.TP
 6936+.B \fBatkinson\fP
 6937+Looks different from other kernels because only fraction of errors will
 6938+be propagated during dithering. A typical use case of this kernel is
 6939+saving dithered screenshot (in window mode). This kernel produces
 6940+slightly smaller file, with still reasonable dithering quality.
 6941+.UNINDENT
 6942+.sp
 6943+There are other kernels (use \fB\-\-error\-diffusion=help\fP to list) but most of
 6944+them are much slower and demanding even larger amount of shared memory.
 6945+Among these kernels, \fBburkes\fP achieves a good balance between performance
 6946+and quality, and probably is the one you want to try first.
 6947+.TP
 6948+.B \fB\-\-gpu\-debug\fP
 6949+Enables GPU debugging. What this means depends on the API type. For OpenGL,
 6950+it calls \fBglGetError()\fP, and requests a debug context. For Vulkan, it
 6951+enables validation layers.
 6952+.TP
 6953+.B \fB\-\-opengl\-swapinterval=<n>\fP
 6954+Interval in displayed frames between two buffer swaps. 1 is equivalent to
 6955+enable VSYNC, 0 to disable VSYNC. Defaults to 1 if not specified.
 6956+.sp
 6957+Note that this depends on proper OpenGL vsync support. On some platforms
 6958+and drivers, this only works reliably when in fullscreen mode. It may also
 6959+require driver\-specific hacks if using multiple monitors, to ensure mpv
 6960+syncs to the right one. Compositing window managers can also lead to bad
 6961+results, as can missing or incorrect display FPS information (see
 6962+\fB\-\-override\-display\-fps\fP).
 6963+.TP
 6964+.B \fB\-\-vulkan\-swap\-mode=<mode>\fP
 6965+Controls the presentation mode of the vulkan swapchain. This is similar
 6966+to the \fB\-\-opengl\-swapinterval\fP option.
 6967+.INDENT 7.0
 6968+.TP
 6969+.B auto
 6970+Use the preferred swapchain mode for the vulkan context. (Default)
 6971+.TP
 6972+.B fifo
 6973+Non\-tearing, vsync blocked. Similar to "VSync on".
 6974+.TP
 6975+.B fifo\-relaxed
 6976+Tearing, vsync blocked. Late frames will tear instead of stuttering.
 6977+.TP
 6978+.B mailbox
 6979+Non\-tearing, not vsync blocked. Similar to "triple buffering".
 6980+.TP
 6981+.B immediate
 6982+Tearing, not vsync blocked. Similar to "VSync off".
 6983+.UNINDENT
 6984+.TP
 6985+.B \fB\-\-vulkan\-queue\-count=<1..8>\fP
 6986+Controls the number of VkQueues used for rendering (limited by how many
 6987+your device supports). In theory, using more queues could enable some
 6988+parallelism between frames (when using a \fB\-\-swapchain\-depth\fP higher than
 6989+1), but it can also slow things down on hardware where there\(aqs no true
 6990+parallelism between queues. (Default: 1)
 6991+.TP
 6992+.B \fB\-\-vulkan\-async\-transfer\fP
 6993+Enables the use of async transfer queues on supported vulkan devices. Using
 6994+them allows transfer operations like texture uploads and blits to happen
 6995+concurrently with the actual rendering, thus improving overall throughput
 6996+and power consumption. Enabled by default, and should be relatively safe.
 6997+.TP
 6998+.B \fB\-\-vulkan\-async\-compute\fP
 6999+Enables the use of async compute queues on supported vulkan devices. Using
 7000+this, in theory, allows out\-of\-order scheduling of compute shaders with
 7001+graphics shaders, thus enabling the hardware to do more effective work while
 7002+waiting for pipeline bubbles and memory operations. Not beneficial on all
 7003+GPUs. It\(aqs worth noting that if async compute is enabled, and the device
 7004+supports more compute queues than graphics queues (bound by the restrictions
 7005+set by \fB\-\-vulkan\-queue\-count\fP), mpv will internally try and prefer the
 7006+use of compute shaders over fragment shaders wherever possible. Enabled by
 7007+default, although Nvidia users may want to disable it.
 7008+.TP
 7009+.B \fB\-\-d3d11\-warp=<yes|no|auto>\fP
 7010+Use WARP (Windows Advanced Rasterization Platform) with the D3D11 GPU
 7011+backend (default: auto). This is a high performance software renderer. By
 7012+default, it is only used when the system has no hardware adapters that
 7013+support D3D11. While the extended GPU features will work with WARP, they
 7014+can be very slow.
 7015+.TP
 7016+.B \fB\-\-d3d11\-feature\-level=<12_1|12_0|11_1|11_0|10_1|10_0|9_3|9_2|9_1>\fP
 7017+Select a specific feature level when using the D3D11 GPU backend. By
 7018+default, the highest available feature level is used. This option can be
 7019+used to select a lower feature level, which is mainly useful for debugging.
 7020+Most extended GPU features will not work at 9_x feature levels.
 7021+.TP
 7022+.B \fB\-\-d3d11\-flip=<yes|no>\fP
 7023+Enable flip\-model presentation, which avoids unnecessarily copying the
 7024+backbuffer by sharing surfaces with the DWM (default: yes). This may cause
 7025+performance issues with older drivers. If flip\-model presentation is not
 7026+supported (for example, on Windows 7 without the platform update), mpv will
 7027+automatically fall back to the older bitblt presentation model.
 7028+.TP
 7029+.B \fB\-\-d3d11\-sync\-interval=<0..4>\fP
 7030+Schedule each frame to be presented for this number of VBlank intervals.
 7031+(default: 1) Setting to 1 will enable VSync, setting to 0 will disable it.
 7032+.TP
 7033+.B \fB\-\-d3d11\-adapter=<adapter name|help>\fP
 7034+Select a specific D3D11 adapter to utilize for D3D11 rendering.
 7035+Will pick the default adapter if unset. Alternatives are listed
 7036+when the name "help" is given.
 7037+.sp
 7038+Checks for matches based on the start of the string, case
 7039+insensitive. Thus, if the description of the adapter starts with
 7040+the vendor name, that can be utilized as the selection parameter.
 7041+.sp
 7042+Hardware decoders utilizing the D3D11 rendering abstraction\(aqs helper
 7043+functionality to receive a device, such as D3D11VA or DXVA2\(aqs DXGI
 7044+mode, will be affected by this choice.
 7045+.TP
 7046+.B \fB\-\-d3d11\-output\-format=<auto|rgba8|bgra8|rgb10_a2|rgba16f>\fP
 7047+Select a specific D3D11 output format to utilize for D3D11 rendering.
 7048+"auto" is the default, which will pick either rgba8 or rgb10_a2 depending
 7049+on the configured desktop bit depth. rgba16f and bgra8 are left out of
 7050+the autodetection logic, and are available for manual testing.
 7051+.sp
 7052+\fBNOTE:\fP
 7053+.INDENT 7.0
 7054+.INDENT 3.5
 7055+Desktop bit depth querying is only available from an API available
 7056+from Windows 10. Thus on older systems it will only automatically
 7057+utilize the rgba8 output format.
 7058+.UNINDENT
 7059+.UNINDENT
 7060+.TP
 7061+.B \fB\-\-d3d11\-output\-csp=<auto|srgb|linear|pq|bt.2020>\fP
 7062+Select a specific D3D11 output color space to utilize for D3D11 rendering.
 7063+"auto" is the default, which will select the color space of the desktop
 7064+on which the swap chain is located.
 7065+.sp
 7066+Values other than "srgb" and "pq" have had issues in testing, so they
 7067+are mostly available for manual testing.
 7068+.sp
 7069+\fBNOTE:\fP
 7070+.INDENT 7.0
 7071+.INDENT 3.5
 7072+Swap chain color space configuration is only available from an API
 7073+available from Windows 10. Thus on older systems it will not work.
 7074+.UNINDENT
 7075+.UNINDENT
 7076+.TP
 7077+.B \fB\-\-d3d11va\-zero\-copy=<yes|no>\fP
 7078+By default, when using hardware decoding with \fB\-\-gpu\-api=d3d11\fP, the
 7079+video image will be copied (GPU\-to\-GPU) from the decoder surface to a
 7080+shader resource. Set this option to avoid that copy by sampling directly
 7081+from the decoder image. This may increase performance and reduce power
 7082+usage, but can cause the image to be sampled incorrectly on the bottom and
 7083+right edges due to padding, and may invoke driver bugs, since Direct3D 11
 7084+technically does not allow sampling from a decoder surface (though most
 7085+drivers support it.)
 7086+.sp
 7087+Currently only relevant for \fB\-\-gpu\-api=d3d11\fP\&.
 7088+.TP
 7089+.B \fB\-\-wayland\-frame\-wait\-offset=<\-500..3000>\fP
 7090+Control the amount of offset (in microseconds) to add to wayland\(aqs frame wait
 7091+(default 1000). The wayland context assumes that if frame callback or presentation
 7092+feedback isn\(aqt received within a certain amount of time then the video is being
 7093+rendered offscreen. The time it waits is equal to how long it takes your monitor
 7094+to display a frame (i.e. 1/refresh rate) plus the offset. In general, staying
 7095+close to your monitor\(aqs refresh rate is preferred, but with a small offset in
 7096+case a frame takes a little long to display.
 7097+.TP
 7098+.B \fB\-\-wayland\-disable\-vsync=<yes|no>\fP
 7099+Disable vsync for the wayland contexts (default: no). Useful for benchmarking
 7100+the wayland context when combined with \fBvideo\-sync=display\-desync\fP,
 7101+\fB\-\-no\-audio\fP, and \fB\-\-untimed=yes\fP\&. Only works with \fB\-\-gpu\-context=wayland\fP
 7102+and \fB\-\-gpu\-context=waylandvk\fP\&.
 7103+.TP
 7104+.B \fB\-\-spirv\-compiler=<compiler>\fP
 7105+Controls which compiler is used to translate GLSL to SPIR\-V. This is
 7106+(currently) only relevant for \fB\-\-gpu\-api=vulkan\fP and \fI\-\-gpu\-api=d3d11\fP\&.
 7107+The possible choices are currently only:
 7108+.INDENT 7.0
 7109+.TP
 7110+.B auto
 7111+Use the first available compiler. (Default)
 7112+.TP
 7113+.B shaderc
 7114+Use libshaderc, which is an API wrapper around glslang. This is
 7115+generally the most preferred, if available.
 7116+.UNINDENT
 7117+.sp
 7118+\fBNOTE:\fP
 7119+.INDENT 7.0
 7120+.INDENT 3.5
 7121+This option is deprecated, since there is only one reasonable value.
 7122+It may be removed in the future.
 7123+.UNINDENT
 7124+.UNINDENT
 7125+.TP
 7126+.B \fB\-\-glsl\-shader=<file>\fP, \fB\-\-glsl\-shaders=<file\-list>\fP
 7127+Custom GLSL hooks. These are a flexible way to add custom fragment shaders,
 7128+which can be injected at almost arbitrary points in the rendering pipeline,
 7129+and access all previous intermediate textures.
 7130+.sp
 7131+Each use of the \fB\-\-glsl\-shader\fP option will add another file to the
 7132+internal list of shaders, while \fB\-\-glsl\-shaders\fP takes a list of files,
 7133+and overwrites the internal list with it. The latter is a path list option
 7134+(see \fI\%List Options\fP for details).
 7135+.INDENT 7.0
 7136+.INDENT 3.5
 7137+.IP "Warning"
 7138+.sp
 7139+The syntax is not stable yet and may change any time.
 7140+.UNINDENT
 7141+.UNINDENT
 7142+.sp
 7143+The general syntax of a user shader looks like this:
 7144+.INDENT 7.0
 7145+.INDENT 3.5
 7146+.sp
 7147+.nf
 7148+.ft C
 7149+//!METADATA ARGS...
 7150+//!METADATA ARGS...
 7151+
 7152+vec4 hook() {
 7153+   ...
 7154+   return something;
 7155+}
 7156+
 7157+//!METADATA ARGS...
 7158+//!METADATA ARGS...
 7159+
 7160+\&...
 7161+.ft P
 7162+.fi
 7163+.UNINDENT
 7164+.UNINDENT
 7165+.sp
 7166+Each section of metadata, along with the non\-metadata lines after it,
 7167+defines a single block. There are currently two types of blocks, HOOKs and
 7168+TEXTUREs.
 7169+.sp
 7170+A \fBTEXTURE\fP block can set the following options:
 7171+.INDENT 7.0
 7172+.TP
 7173+.B TEXTURE <name> (required)
 7174+The name of this texture. Hooks can then bind the texture under this
 7175+name using BIND. This must be the first option of the texture block.
 7176+.TP
 7177+.B SIZE <width> [<height>] [<depth>] (required)
 7178+The dimensions of the texture. The height and depth are optional. The
 7179+type of texture (1D, 2D or 3D) depends on the number of components
 7180+specified.
 7181+.TP
 7182+.B FORMAT <name> (required)
 7183+The texture format for the samples. Supported texture formats are listed
 7184+in debug logging when the \fBgpu\fP VO is initialized (look for
 7185+\fBTexture formats:\fP). Usually, this follows OpenGL naming conventions.
 7186+For example, \fBrgb16\fP provides 3 channels with normalized 16 bit
 7187+components. One oddity are float formats: for example, \fBrgba16f\fP has
 7188+16 bit internal precision, but the texture data is provided as 32 bit
 7189+floats, and the driver converts the data on texture upload.
 7190+.sp
 7191+Although format names follow a common naming convention, not all of them
 7192+are available on all hardware, drivers, GL versions, and so on.
 7193+.TP
 7194+.B FILTER <LINEAR|NEAREST>
 7195+The min/magnification filter used when sampling from this texture.
 7196+.TP
 7197+.B BORDER <CLAMP|REPEAT|MIRROR>
 7198+The border wrapping mode used when sampling from this texture.
 7199+.UNINDENT
 7200+.sp
 7201+Following the metadata is a string of bytes in hexadecimal notation that
 7202+define the raw texture data, corresponding to the format specified by
 7203+\fIFORMAT\fP, on a single line with no extra whitespace.
 7204+.sp
 7205+A \fBHOOK\fP block can set the following options:
 7206+.INDENT 7.0
 7207+.TP
 7208+.B HOOK <name> (required)
 7209+The texture which to hook into. May occur multiple times within a
 7210+metadata block, up to a predetermined limit. See below for a list of
 7211+hookable textures.
 7212+.TP
 7213+.B DESC <title>
 7214+User\-friendly description of the pass. This is the name used when
 7215+representing this shader in the list of passes for property
 7216+\fIvo\-passes\fP\&.
 7217+.TP
 7218+.B BIND <name>
 7219+Loads a texture (either coming from mpv or from a \fBTEXTURE\fP block)
 7220+and makes it available to the pass. When binding textures from mpv,
 7221+this will also set up macros to facilitate accessing it properly. See
 7222+below for a list. By default, no textures are bound. The special name
 7223+HOOKED can be used to refer to the texture that triggered this pass.
 7224+.TP
 7225+.B SAVE <name>
 7226+Gives the name of the texture to save the result of this pass into. By
 7227+default, this is set to the special name HOOKED which has the effect of
 7228+overwriting the hooked texture.
 7229+.TP
 7230+.B WIDTH <szexpr>, HEIGHT <szexpr>
 7231+Specifies the size of the resulting texture for this pass. \fBszexpr\fP
 7232+refers to an expression in RPN (reverse polish notation), using the
 7233+operators + \- * / > < !, floating point literals, and references to
 7234+sizes of existing texture (such as MAIN.width or CHROMA.height),
 7235+OUTPUT, or NATIVE_CROPPED (size of an input texture cropped after
 7236+pan\-and\-scan, video\-align\-x/y, video\-pan\-x/y, etc. and possibly
 7237+prescaled). By default, these are set to HOOKED.w and HOOKED.h,
 7238+espectively.
 7239+.TP
 7240+.B WHEN <szexpr>
 7241+Specifies a condition that needs to be true (non\-zero) for the shader
 7242+stage to be evaluated. If it fails, it will silently be omitted. (Note
 7243+that a shader stage like this which has a dependency on an optional
 7244+hook point can still cause that hook point to be saved, which has some
 7245+minor overhead)
 7246+.TP
 7247+.B OFFSET <ox oy | ALIGN>
 7248+Indicates a pixel shift (offset) introduced by this pass. These pixel
 7249+offsets will be accumulated and corrected during the next scaling pass
 7250+(\fBcscale\fP or \fBscale\fP). The default values are 0 0 which correspond
 7251+to no shift. Note that offsets are ignored when not overwriting the
 7252+hooked texture.
 7253+.sp
 7254+A special value of \fBALIGN\fP will attempt to fix existing offset of
 7255+HOOKED by align it with reference. It requires HOOKED to be resizable
 7256+(see below). It works transparently with fragment shader. For compute
 7257+shader, the predefined \fBtexmap\fP macro is required to handle coordinate
 7258+mapping.
 7259+.TP
 7260+.B COMPONENTS <n>
 7261+Specifies how many components of this pass\(aqs output are relevant and
 7262+should be stored in the texture, up to 4 (rgba). By default, this value
 7263+is equal to the number of components in HOOKED.
 7264+.TP
 7265+.B COMPUTE <bw> <bh> [<tw> <th>]
 7266+Specifies that this shader should be treated as a compute shader, with
 7267+the block size bw and bh. The compute shader will be dispatched with
 7268+however many blocks are necessary to completely tile over the output.
 7269+Within each block, there will bw tw*th threads, forming a single work
 7270+group. In other words: tw and th specify the work group size, which can
 7271+be different from the block size. So for example, a compute shader with
 7272+bw, bh = 32 and tw, th = 8 running on a 500x500 texture would dispatch
 7273+16x16 blocks (rounded up), each with 8x8 threads.
 7274+.sp
 7275+Compute shaders in mpv are treated a bit different from fragment
 7276+shaders. Instead of defining a \fBvec4 hook\fP that produces an output
 7277+sample, you directly define \fBvoid hook\fP which writes to a fixed
 7278+writeonly image unit named \fBout_image\fP (this is bound by mpv) using
 7279+\fIimageStore\fP\&. To help translate texture coordinates in the absence of
 7280+vertices, mpv provides a special function \fBNAME_map(id)\fP to map from
 7281+the texel space of the output image to the texture coordinates for all
 7282+bound textures. In particular, \fBNAME_pos\fP is equivalent to
 7283+\fBNAME_map(gl_GlobalInvocationID)\fP, although using this only really
 7284+makes sense if (tw,th) == (bw,bh).
 7285+.UNINDENT
 7286+.sp
 7287+Each bound mpv texture (via \fBBIND\fP) will make available the following
 7288+definitions to that shader pass, where NAME is the name of the bound
 7289+texture:
 7290+.INDENT 7.0
 7291+.TP
 7292+.B vec4 NAME_tex(vec2 pos)
 7293+The sampling function to use to access the texture at a certain spot
 7294+(in texture coordinate space, range [0,1]). This takes care of any
 7295+necessary normalization conversions.
 7296+.TP
 7297+.B vec4 NAME_texOff(vec2 offset)
 7298+Sample the texture at a certain offset in pixels. This works like
 7299+NAME_tex but additionally takes care of necessary rotations, so that
 7300+sampling at e.g. vec2(\-1,0) is always one pixel to the left.
 7301+.TP
 7302+.B vec2 NAME_pos
 7303+The local texture coordinate of that texture, range [0,1].
 7304+.TP
 7305+.B vec2 NAME_size
 7306+The (rotated) size in pixels of the texture.
 7307+.TP
 7308+.B mat2 NAME_rot
 7309+The rotation matrix associated with this texture. (Rotates pixel space
 7310+to texture coordinates)
 7311+.TP
 7312+.B vec2 NAME_pt
 7313+The (unrotated) size of a single pixel, range [0,1].
 7314+.TP
 7315+.B float NAME_mul
 7316+The coefficient that needs to be multiplied into the texture contents
 7317+in order to normalize it to the range [0,1].
 7318+.TP
 7319+.B sampler NAME_raw
 7320+The raw bound texture itself. The use of this should be avoided unless
 7321+absolutely necessary.
 7322+.UNINDENT
 7323+.sp
 7324+Normally, users should use either NAME_tex or NAME_texOff to read from the
 7325+texture. For some shaders however , it can be better for performance to do
 7326+custom sampling from NAME_raw, in which case care needs to be taken to
 7327+respect NAME_mul and NAME_rot.
 7328+.sp
 7329+In addition to these parameters, the following uniforms are also globally
 7330+available:
 7331+.INDENT 7.0
 7332+.TP
 7333+.B float random
 7334+A random number in the range [0\-1], different per frame.
 7335+.TP
 7336+.B int frame
 7337+A simple count of frames rendered, increases by one per frame and never
 7338+resets (regardless of seeks).
 7339+.TP
 7340+.B vec2 input_size
 7341+The size in pixels of the input image (possibly cropped and prescaled).
 7342+.TP
 7343+.B vec2 target_size
 7344+The size in pixels of the visible part of the scaled (and possibly
 7345+cropped) image.
 7346+.TP
 7347+.B vec2 tex_offset
 7348+Texture offset introduced by user shaders or options like panscan, video\-align\-x/y, video\-pan\-x/y.
 7349+.UNINDENT
 7350+.sp
 7351+Internally, vo_gpu may generate any number of the following textures.
 7352+Whenever a texture is rendered and saved by vo_gpu, all of the passes
 7353+that have hooked into it will run, in the order they were added by the
 7354+user. This is a list of the legal hook points:
 7355+.INDENT 7.0
 7356+.TP
 7357+.B RGB, LUMA, CHROMA, ALPHA, XYZ (resizable)
 7358+Source planes (raw). Which of these fire depends on the image format of
 7359+the source.
 7360+.TP
 7361+.B CHROMA_SCALED, ALPHA_SCALED (fixed)
 7362+Source planes (upscaled). These only fire on subsampled content.
 7363+.TP
 7364+.B NATIVE (resizable)
 7365+The combined image, in the source colorspace, before conversion to RGB.
 7366+.TP
 7367+.B MAINPRESUB (resizable)
 7368+The image, after conversion to RGB, but before
 7369+\fB\-\-blend\-subtitles=video\fP is applied.
 7370+.TP
 7371+.B MAIN (resizable)
 7372+The main image, after conversion to RGB but before upscaling.
 7373+.TP
 7374+.B LINEAR (fixed)
 7375+Linear light image, before scaling. This only fires when
 7376+\fB\-\-linear\-upscaling\fP, \fB\-\-linear\-downscaling\fP or
 7377+\fB\-\-sigmoid\-upscaling\fP is in effect.
 7378+.TP
 7379+.B SIGMOID (fixed)
 7380+Sigmoidized light, before scaling. This only fires when
 7381+\fB\-\-sigmoid\-upscaling\fP is in effect.
 7382+.TP
 7383+.B PREKERNEL (fixed)
 7384+The image immediately before the scaler kernel runs.
 7385+.TP
 7386+.B POSTKERNEL (fixed)
 7387+The image immediately after the scaler kernel runs.
 7388+.TP
 7389+.B SCALED (fixed)
 7390+The final upscaled image, before color management.
 7391+.TP
 7392+.B OUTPUT (fixed)
 7393+The final output image, after color management but before dithering and
 7394+drawing to screen.
 7395+.UNINDENT
 7396+.sp
 7397+Only the textures labelled with \fBresizable\fP may be transformed by the
 7398+pass. When overwriting a texture marked \fBfixed\fP, the WIDTH, HEIGHT and
 7399+OFFSET must be left at their default values.
 7400+.TP
 7401+.B \fB\-\-glsl\-shader=<file>\fP
 7402+CLI/config file only alias for \fB\-\-glsl\-shaders\-append\fP\&.
 7403+.TP
 7404+.B \fB\-\-deband\fP
 7405+Enable the debanding algorithm. This greatly reduces the amount of visible
 7406+banding, blocking and other quantization artifacts, at the expense of
 7407+very slightly blurring some of the finest details. In practice, it\(aqs
 7408+virtually always an improvement \- the only reason to disable it would be
 7409+for performance.
 7410+.TP
 7411+.B \fB\-\-deband\-iterations=<1..16>\fP
 7412+The number of debanding steps to perform per sample. Each step reduces a
 7413+bit more banding, but takes time to compute. Note that the strength of each
 7414+step falls off very quickly, so high numbers (>4) are practically useless.
 7415+(Default 1)
 7416+.TP
 7417+.B \fB\-\-deband\-threshold=<0..4096>\fP
 7418+The debanding filter\(aqs cut\-off threshold. Higher numbers increase the
 7419+debanding strength dramatically but progressively diminish image details.
 7420+(Default 64)
 7421+.TP
 7422+.B \fB\-\-deband\-range=<1..64>\fP
 7423+The debanding filter\(aqs initial radius. The radius increases linearly for
 7424+each iteration. A higher radius will find more gradients, but a lower
 7425+radius will smooth more aggressively. (Default 16)
 7426+.sp
 7427+If you increase the \fB\-\-deband\-iterations\fP, you should probably decrease
 7428+this to compensate.
 7429+.TP
 7430+.B \fB\-\-deband\-grain=<0..4096>\fP
 7431+Add some extra noise to the image. This significantly helps cover up
 7432+remaining quantization artifacts. Higher numbers add more noise. (Default
 7433+48)
 7434+.TP
 7435+.B \fB\-\-sharpen=<value>\fP
 7436+If set to a value other than 0, enable an unsharp masking filter. Positive
 7437+values will sharpen the image (but add more ringing and aliasing). Negative
 7438+values will blur the image. If your GPU is powerful enough, consider
 7439+alternatives like the \fBewa_lanczossharp\fP scale filter, or the
 7440+\fB\-\-scale\-blur\fP option.
 7441+.TP
 7442+.B \fB\-\-opengl\-glfinish\fP
 7443+Call \fBglFinish()\fP before swapping buffers (default: disabled). Slower,
 7444+but might improve results when doing framedropping. Can completely ruin
 7445+performance. The details depend entirely on the OpenGL driver.
 7446+.TP
 7447+.B \fB\-\-opengl\-waitvsync\fP
 7448+Call \fBglXWaitVideoSyncSGI\fP after each buffer swap (default: disabled).
 7449+This may or may not help with video timing accuracy and frame drop. It\(aqs
 7450+possible that this makes video output slower, or has no effect at all.
 7451+.sp
 7452+X11/GLX only.
 7453+.TP
 7454+.B \fB\-\-opengl\-dwmflush=<no|windowed|yes|auto>\fP
 7455+Calls \fBDwmFlush\fP after swapping buffers on Windows (default: auto). It
 7456+also sets \fBSwapInterval(0)\fP to ignore the OpenGL timing. Values are: no
 7457+(disabled), windowed (only in windowed mode), yes (also in full screen).
 7458+.sp
 7459+The value \fBauto\fP will try to determine whether the compositor is active,
 7460+and calls \fBDwmFlush\fP only if it seems to be.
 7461+.sp
 7462+This may help to get more consistent frame intervals, especially with
 7463+high\-fps clips \- which might also reduce dropped frames. Typically, a value
 7464+of \fBwindowed\fP should be enough, since full screen may bypass the DWM.
 7465+.sp
 7466+Windows only.
 7467+.TP
 7468+.B \fB\-\-angle\-d3d11\-feature\-level=<11_0|10_1|10_0|9_3>\fP
 7469+Selects a specific feature level when using the ANGLE backend with D3D11.
 7470+By default, the highest available feature level is used. This option can be
 7471+used to select a lower feature level, which is mainly useful for debugging.
 7472+Note that OpenGL ES 3.0 is only supported at feature level 10_1 or higher.
 7473+Most extended OpenGL features will not work at lower feature levels
 7474+(similar to \fB\-\-gpu\-dumb\-mode\fP).
 7475+.sp
 7476+Windows with ANGLE only.
 7477+.TP
 7478+.B \fB\-\-angle\-d3d11\-warp=<yes|no|auto>\fP
 7479+Use WARP (Windows Advanced Rasterization Platform) when using the ANGLE
 7480+backend with D3D11 (default: auto). This is a high performance software
 7481+renderer. By default, it is used when the Direct3D hardware does not
 7482+support Direct3D 11 feature level 9_3. While the extended OpenGL features
 7483+will work with WARP, they can be very slow.
 7484+.sp
 7485+Windows with ANGLE only.
 7486+.TP
 7487+.B \fB\-\-angle\-egl\-windowing=<yes|no|auto>\fP
 7488+Use ANGLE\(aqs built in EGL windowing functions to create a swap chain
 7489+(default: auto). If this is set to \fBno\fP and the D3D11 renderer is in use,
 7490+ANGLE\(aqs built in swap chain will not be used and a custom swap chain that
 7491+is optimized for video rendering will be created instead. If set to
 7492+\fBauto\fP, a custom swap chain will be used for D3D11 and the built in swap
 7493+chain will be used for D3D9. This option is mainly for debugging purposes,
 7494+in case the custom swap chain has poor performance or does not work.
 7495+.sp
 7496+If set to \fByes\fP, the \fB\-\-angle\-max\-frame\-latency\fP,
 7497+\fB\-\-angle\-swapchain\-length\fP and \fB\-\-angle\-flip\fP options will have no
 7498+effect.
 7499+.sp
 7500+Windows with ANGLE only.
 7501+.TP
 7502+.B \fB\-\-angle\-flip=<yes|no>\fP
 7503+Enable flip\-model presentation, which avoids unnecessarily copying the
 7504+backbuffer by sharing surfaces with the DWM (default: yes). This may cause
 7505+performance issues with older drivers. If flip\-model presentation is not
 7506+supported (for example, on Windows 7 without the platform update), mpv will
 7507+automatically fall back to the older bitblt presentation model.
 7508+.sp
 7509+If set to \fBno\fP, the \fB\-\-angle\-swapchain\-length\fP option will have no
 7510+effect.
 7511+.sp
 7512+Windows with ANGLE only.
 7513+.TP
 7514+.B \fB\-\-angle\-renderer=<d3d9|d3d11|auto>\fP
 7515+Forces a specific renderer when using the ANGLE backend (default: auto). In
 7516+auto mode this will pick D3D11 for systems that support Direct3D 11 feature
 7517+level 9_3 or higher, and D3D9 otherwise. This option is mainly for
 7518+debugging purposes. Normally there is no reason to force a specific
 7519+renderer, though \fB\-\-angle\-renderer=d3d9\fP may give slightly better
 7520+performance on old hardware. Note that the D3D9 renderer only supports
 7521+OpenGL ES 2.0, so most extended OpenGL features will not work if this
 7522+renderer is selected (similar to \fB\-\-gpu\-dumb\-mode\fP).
 7523+.sp
 7524+Windows with ANGLE only.
 7525+.TP
 7526+.B \fB\-\-cocoa\-force\-dedicated\-gpu=<yes|no>\fP
 7527+Deactivates the automatic graphics switching and forces the dedicated GPU.
 7528+(default: no)
 7529+.sp
 7530+OS X only.
 7531+.TP
 7532+.B \fB\-\-cocoa\-cb\-sw\-renderer=<yes|no|auto>\fP
 7533+Use the Apple Software Renderer when using cocoa\-cb (default: auto). If set
 7534+to \fBno\fP the software renderer is never used and instead fails when a the
 7535+usual pixel format could not be created, \fByes\fP will always only use the
 7536+software renderer, and \fBauto\fP only falls back to the software renderer
 7537+when the usual pixel format couldn\(aqt be created.
 7538+.sp
 7539+OS X only.
 7540+.TP
 7541+.B \fB\-\-cocoa\-cb\-10bit\-context=<yes|no>\fP
 7542+Creates a 10bit capable pixel format for the context creation (default: yes).
 7543+Instead of 8bit integer framebuffer a 16bit half\-float framebuffer is
 7544+requested.
 7545+.sp
 7546+OS X only.
 7547+.TP
 7548+.B \fB\-\-macos\-title\-bar\-appearance=<appearance>\fP
 7549+Sets the appearance of the title bar (default: auto). Not all combinations
 7550+of appearances and \fB\-\-macos\-title\-bar\-material\fP materials make sense or
 7551+are unique. Appearances that are not supported by you current macOS version
 7552+fall back to the default value.
 7553+macOS and cocoa\-cb only
 7554+.sp
 7555+\fB<appearance>\fP can be one of the following:
 7556+.INDENT 7.0
 7557+.TP
 7558+.B auto
 7559+Detects the system settings and sets the title
 7560+bar appearance appropriately. On macOS 10.14 it
 7561+also detects run time changes.
 7562+.TP
 7563+.B aqua
 7564+The standard macOS Light appearance.
 7565+.TP
 7566+.B darkAqua
 7567+The standard macOS Dark appearance. (macOS 10.14+)
 7568+.TP
 7569+.B vibrantLight
 7570+Light vibrancy appearance with.
 7571+.TP
 7572+.B vibrantDark
 7573+Dark vibrancy appearance with.
 7574+.TP
 7575+.B aquaHighContrast
 7576+Light Accessibility appearance. (macOS 10.14+)
 7577+.TP
 7578+.B darkAquaHighContrast
 7579+Dark Accessibility appearance. (macOS 10.14+)
 7580+.TP
 7581+.B vibrantLightHighContrast
 7582+Light vibrancy Accessibility appearance.
 7583+(macOS 10.14+)
 7584+.TP
 7585+.B vibrantDarkHighContrast
 7586+Dark vibrancy Accessibility appearance.
 7587+(macOS 10.14+)
 7588+.UNINDENT
 7589+.TP
 7590+.B \fB\-\-macos\-title\-bar\-material=<material>\fP
 7591+Sets the material of the title bar (default: titlebar). All deprecated
 7592+materials should not be used on macOS 10.14+ because their functionality
 7593+is not guaranteed. Not all combinations of materials and
 7594+\fB\-\-macos\-title\-bar\-appearance\fP appearances make sense or are unique.
 7595+Materials that are not supported by you current macOS version fall back to
 7596+the default value.
 7597+macOS and cocoa\-cb only
 7598+.sp
 7599+\fB<material>\fP can be one of the following:
 7600+.INDENT 7.0
 7601+.TP
 7602+.B titlebar
 7603+The standard macOS titel bar material.
 7604+.TP
 7605+.B selection
 7606+The standard macOS selection material.
 7607+.TP
 7608+.B menu
 7609+The standard macOS menu material. (macOS 10.11+)
 7610+.TP
 7611+.B popover
 7612+The standard macOS popover material. (macOS 10.11+)
 7613+.TP
 7614+.B sidebar
 7615+The standard macOS sidebar material. (macOS 10.11+)
 7616+.TP
 7617+.B headerView
 7618+The standard macOS header view material.
 7619+(macOS 10.14+)
 7620+.TP
 7621+.B sheet
 7622+The standard macOS sheet material. (macOS 10.14+)
 7623+.TP
 7624+.B windowBackground
 7625+The standard macOS window background material.
 7626+(macOS 10.14+)
 7627+.TP
 7628+.B hudWindow
 7629+The standard macOS hudWindow material. (macOS 10.14+)
 7630+.TP
 7631+.B fullScreen
 7632+The standard macOS full screen material.
 7633+(macOS 10.14+)
 7634+.TP
 7635+.B toolTip
 7636+The standard macOS tool tip material. (macOS 10.14+)
 7637+.TP
 7638+.B contentBackground
 7639+The standard macOS content background material.
 7640+(macOS 10.14+)
 7641+.TP
 7642+.B underWindowBackground
 7643+The standard macOS under window background material.
 7644+(macOS 10.14+)
 7645+.TP
 7646+.B underPageBackground
 7647+The standard macOS under page background material.
 7648+(deprecated in macOS 10.14+)
 7649+.TP
 7650+.B dark
 7651+The standard macOS dark material.
 7652+(deprecated in macOS 10.14+)
 7653+.TP
 7654+.B light
 7655+The standard macOS light material.
 7656+(macOS 10.14+)
 7657+.TP
 7658+.B mediumLight
 7659+The standard macOS mediumLight material.
 7660+(macOS 10.11+, deprecated in macOS 10.14+)
 7661+.TP
 7662+.B ultraDark
 7663+The standard macOS ultraDark material.
 7664+(macOS 10.11+ deprecated in macOS 10.14+)
 7665+.UNINDENT
 7666+.TP
 7667+.B \fB\-\-macos\-title\-bar\-color=<color>\fP
 7668+Sets the color of the title bar (default: completely transparent). Is
 7669+influenced by \fB\-\-macos\-title\-bar\-appearance\fP and
 7670+\fB\-\-macos\-title\-bar\-material\fP\&.
 7671+See \fB\-\-sub\-color\fP for color syntax.
 7672+.TP
 7673+.B \fB\-\-macos\-fs\-animation\-duration=<default|0\-1000>\fP
 7674+Sets the fullscreen resize animation duration in ms (default: default).
 7675+The default value is slightly less than the system\(aqs animation duration
 7676+(500ms) to prevent some problems when the end of an async animation happens
 7677+at the same time as the end of the system wide fullscreen animation. Setting
 7678+anything higher than 500ms will only prematurely cancel the resize animation
 7679+after the system wide animation ended. The upper limit is still set at
 7680+1000ms since it\(aqs possible that Apple or the user changes the system
 7681+defaults. Anything higher than 1000ms though seems too long and shouldn\(aqt be
 7682+set anyway.
 7683+OS X and cocoa\-cb only
 7684+.TP
 7685+.B \fB\-\-android\-surface\-size=<WxH>\fP
 7686+Set dimensions of the rendering surface used by the Android gpu context.
 7687+Needs to be set by the embedding application if the dimensions change during
 7688+runtime (i.e. if the device is rotated), via the surfaceChanged callback.
 7689+.sp
 7690+Android with \fB\-\-gpu\-context=android\fP only.
 7691+.TP
 7692+.B \fB\-\-gpu\-sw\fP
 7693+Continue even if a software renderer is detected.
 7694+.TP
 7695+.B \fB\-\-gpu\-context=<sys>\fP
 7696+The value \fBauto\fP (the default) selects the GPU context. You can also pass
 7697+\fBhelp\fP to get a complete list of compiled in backends (sorted by
 7698+autoprobe order).
 7699+.INDENT 7.0
 7700+.TP
 7701+.B auto
 7702+auto\-select (default)
 7703+.TP
 7704+.B cocoa
 7705+Cocoa/OS X (deprecated, use \-\-vo=libmpv instead)
 7706+.TP
 7707+.B win
 7708+Win32/WGL
 7709+.TP
 7710+.B winvk
 7711+VK_KHR_win32_surface
 7712+.TP
 7713+.B angle
 7714+Direct3D11 through the OpenGL ES translation layer ANGLE. This supports
 7715+almost everything the \fBwin\fP backend does (if the ANGLE build is new
 7716+enough).
 7717+.TP
 7718+.B dxinterop (experimental)
 7719+Win32, using WGL for rendering and Direct3D 9Ex for presentation. Works
 7720+on Nvidia and AMD. Newer Intel chips with the latest drivers may also
 7721+work.
 7722+.TP
 7723+.B d3d11
 7724+Win32, with native Direct3D 11 rendering.
 7725+.TP
 7726+.B x11
 7727+X11/GLX
 7728+.TP
 7729+.B x11vk
 7730+VK_KHR_xlib_surface
 7731+.TP
 7732+.B wayland
 7733+Wayland/EGL
 7734+.TP
 7735+.B waylandvk
 7736+VK_KHR_wayland_surface
 7737+.TP
 7738+.B drm
 7739+DRM/EGL
 7740+.TP
 7741+.B x11egl
 7742+X11/EGL
 7743+.TP
 7744+.B android
 7745+Android/EGL. Requires \fB\-\-wid\fP be set to an \fBandroid.view.Surface\fP\&.
 7746+.UNINDENT
 7747+.TP
 7748+.B \fB\-\-gpu\-api=<type>\fP
 7749+Controls which type of graphics APIs will be accepted:
 7750+.INDENT 7.0
 7751+.TP
 7752+.B auto
 7753+Use any available API (default)
 7754+.TP
 7755+.B opengl
 7756+Allow only OpenGL (requires OpenGL 2.1+ or GLES 2.0+)
 7757+.TP
 7758+.B vulkan
 7759+Allow only Vulkan (requires a valid/working \fB\-\-spirv\-compiler\fP)
 7760+.TP
 7761+.B d3d11
 7762+Allow only \fB\-\-gpu\-context=d3d11\fP
 7763+.UNINDENT
 7764+.TP
 7765+.B \fB\-\-opengl\-es=<mode>\fP
 7766+Controls which type of OpenGL context will be accepted:
 7767+.INDENT 7.0
 7768+.TP
 7769+.B auto
 7770+Allow all types of OpenGL (default)
 7771+.TP
 7772+.B yes
 7773+Only allow GLES
 7774+.TP
 7775+.B no
 7776+Only allow desktop/core GL
 7777+.UNINDENT
 7778+.TP
 7779+.B \fB\-\-opengl\-restrict=<version>\fP
 7780+Restricts all OpenGL versions above a certain version. Versions are encoded
 7781+in hundreds, i.e. OpenGL 4.5 \-> 450. As an example, \-\-opengl\-restrict=300
 7782+would restrict OpenGL 3.0 and higher, effectively only allowing 2.x
 7783+contexts. Note that this only imposes a limit on context creation APIs, the
 7784+actual OpenGL context may still have a higher OpenGL version. (Default: 0)
 7785+.TP
 7786+.B \fB\-\-fbo\-format=<fmt>\fP
 7787+Selects the internal format of textures used for FBOs. The format can
 7788+influence performance and quality of the video output. \fBfmt\fP can be one
 7789+of: rgb8, rgb10, rgb10_a2, rgb16, rgb16f, rgb32f, rgba12, rgba16, rgba16f,
 7790+rgba16hf, rgba32f.
 7791+.sp
 7792+Default: \fBauto\fP, which first attempts to utilize 16bit float
 7793+(rgba16f, rgba16hf), and falls back to rgba16 if those are not available.
 7794+Finally, attempts to utilize rgb10_a2 or rgba8 if all of the previous formats
 7795+are not available.
 7796+.TP
 7797+.B \fB\-\-gamma\-factor=<0.1..2.0>\fP
 7798+Set an additional raw gamma factor (default: 1.0). If gamma is adjusted in
 7799+other ways (like with the \fB\-\-gamma\fP option or key bindings and the
 7800+\fBgamma\fP property), the value is multiplied with the other gamma value.
 7801+.sp
 7802+Recommended values based on the environmental brightness:
 7803+.INDENT 7.0
 7804+.TP
 7805+.B 1.0
 7806+Pitch black or dimly lit room (default)
 7807+.TP
 7808+.B 1.1
 7809+Moderately lit room, home
 7810+.TP
 7811+.B 1.2
 7812+Brightly illuminated room, office
 7813+.UNINDENT
 7814+.sp
 7815+NOTE: This is based around the assumptions of typical movie content, which
 7816+contains an implicit end\-to\-end of about 0.8 from scene to display. For
 7817+bright environments it can be useful to cancel that out.
 7818+.TP
 7819+.B \fB\-\-gamma\-auto\fP
 7820+Automatically corrects the gamma value depending on ambient lighting
 7821+conditions (adding a gamma boost for bright rooms).
 7822+.sp
 7823+With ambient illuminance of 16 lux, mpv will pick the 1.0 gamma value (no
 7824+boost), and slightly increase the boost up until 1.2 for 256 lux.
 7825+.sp
 7826+NOTE: Only implemented on OS X.
 7827+.TP
 7828+.B \fB\-\-target\-prim=<value>\fP
 7829+Specifies the primaries of the display. Video colors will be adapted to
 7830+this colorspace when ICC color management is not being used. Valid values
 7831+are:
 7832+.INDENT 7.0
 7833+.TP
 7834+.B auto
 7835+Disable any adaptation, except for atypical color spaces. Specifically,
 7836+wide/unusual gamuts get automatically adapted to BT.709, while standard
 7837+gamut (i.e. BT.601 and BT.709) content is not touched. (default)
 7838+.TP
 7839+.B bt.470m
 7840+ITU\-R BT.470 M
 7841+.TP
 7842+.B bt.601\-525
 7843+ITU\-R BT.601 (525\-line SD systems, eg. NTSC), SMPTE 170M/240M
 7844+.TP
 7845+.B bt.601\-625
 7846+ITU\-R BT.601 (625\-line SD systems, eg. PAL/SECAM), ITU\-R BT.470 B/G
 7847+.TP
 7848+.B bt.709
 7849+ITU\-R BT.709 (HD), IEC 61966\-2\-4 (sRGB), SMPTE RP177 Annex B
 7850+.TP
 7851+.B bt.2020
 7852+ITU\-R BT.2020 (UHD)
 7853+.TP
 7854+.B apple
 7855+Apple RGB
 7856+.TP
 7857+.B adobe
 7858+Adobe RGB (1998)
 7859+.TP
 7860+.B prophoto
 7861+ProPhoto RGB (ROMM)
 7862+.TP
 7863+.B cie1931
 7864+CIE 1931 RGB (not to be confused with CIE XYZ)
 7865+.TP
 7866+.B dci\-p3
 7867+DCI\-P3 (Digital Cinema Colorspace), SMPTE RP431\-2
 7868+.TP
 7869+.B v\-gamut
 7870+Panasonic V\-Gamut (VARICAM) primaries
 7871+.TP
 7872+.B s\-gamut
 7873+Sony S\-Gamut (S\-Log) primaries
 7874+.UNINDENT
 7875+.TP
 7876+.B \fB\-\-target\-trc=<value>\fP
 7877+Specifies the transfer characteristics (gamma) of the display. Video colors
 7878+will be adjusted to this curve when ICC color management is not being used.
 7879+Valid values are:
 7880+.INDENT 7.0
 7881+.TP
 7882+.B auto
 7883+Disable any adaptation, except for atypical transfers. Specifically,
 7884+HDR or linear light source material gets automatically converted to
 7885+gamma 2.2, while SDR content is not touched. (default)
 7886+.TP
 7887+.B bt.1886
 7888+ITU\-R BT.1886 curve (assuming infinite contrast)
 7889+.TP
 7890+.B srgb
 7891+IEC 61966\-2\-4 (sRGB)
 7892+.TP
 7893+.B linear
 7894+Linear light output
 7895+.TP
 7896+.B gamma1.8
 7897+Pure power curve (gamma 1.8), also used for Apple RGB
 7898+.TP
 7899+.B gamma2.0
 7900+Pure power curve (gamma 2.0)
 7901+.TP
 7902+.B gamma2.2
 7903+Pure power curve (gamma 2.2)
 7904+.TP
 7905+.B gamma2.4
 7906+Pure power curve (gamma 2.4)
 7907+.TP
 7908+.B gamma2.6
 7909+Pure power curve (gamma 2.6)
 7910+.TP
 7911+.B gamma2.8
 7912+Pure power curve (gamma 2.8), also used for BT.470\-BG
 7913+.TP
 7914+.B prophoto
 7915+ProPhoto RGB (ROMM)
 7916+.TP
 7917+.B pq
 7918+ITU\-R BT.2100 PQ (Perceptual quantizer) curve, aka SMPTE ST2084
 7919+.TP
 7920+.B hlg
 7921+ITU\-R BT.2100 HLG (Hybrid Log\-gamma) curve, aka ARIB STD\-B67
 7922+.TP
 7923+.B v\-log
 7924+Panasonic V\-Log (VARICAM) curve
 7925+.TP
 7926+.B s\-log1
 7927+Sony S\-Log1 curve
 7928+.TP
 7929+.B s\-log2
 7930+Sony S\-Log2 curve
 7931+.UNINDENT
 7932+.sp
 7933+\fBNOTE:\fP
 7934+.INDENT 7.0
 7935+.INDENT 3.5
 7936+When using HDR output formats, mpv will encode to the specified
 7937+curve but it will not set any HDMI flags or other signalling that might
 7938+be required for the target device to correctly display the HDR signal.
 7939+The user should independently guarantee this before using these signal
 7940+formats for display.
 7941+.UNINDENT
 7942+.UNINDENT
 7943+.TP
 7944+.B \fB\-\-target\-peak=<auto|nits>\fP
 7945+Specifies the measured peak brightness of the output display, in cd/m^2
 7946+(AKA nits). The interpretation of this brightness depends on the configured
 7947+\fB\-\-target\-trc\fP\&. In all cases, it imposes a limit on the signal values
 7948+that will be sent to the display. If the source exceeds this brightness
 7949+level, a tone mapping filter will be inserted. For HLG, it has the
 7950+additional effect of parametrizing the inverse OOTF, in order to get
 7951+colorimetrically consistent results with the mastering display. For SDR, or
 7952+when using an ICC (profile (\fB\-\-icc\-profile\fP), setting this to a value
 7953+above 100 essentially causes the display to be treated as if it were an HDR
 7954+display in disguise. (See the note below)
 7955+.sp
 7956+In \fBauto\fP mode (the default), the chosen peak is an appropriate value
 7957+based on the TRC in use. For SDR curves, it uses 100. For HDR curves, it
 7958+uses 100 * the transfer function\(aqs nominal peak.
 7959+.sp
 7960+\fBNOTE:\fP
 7961+.INDENT 7.0
 7962+.INDENT 3.5
 7963+When using an SDR transfer function, this is normally not needed, and
 7964+setting it may lead to very unexpected results. The one time it \fIis\fP
 7965+useful is if you want to calibrate a HDR display using traditional
 7966+transfer functions and calibration equipment. In such cases, you can
 7967+set your HDR display to a high brightness such as 800 cd/m^2, and then
 7968+calibrate it to a standard curve like gamma2.8. Setting this value to
 7969+800 would then instruct mpv to essentially treat it as an HDR display
 7970+with the given peak. This may be a good alternative in environments
 7971+where PQ or HLG input to the display is not possible, and makes it
 7972+possible to use HDR displays with mpv regardless of operating system
 7973+support for HDMI HDR metadata.
 7974+.sp
 7975+In such a configuration, we highly recommend setting \fB\-\-tone\-mapping\fP
 7976+to \fBmobius\fP or even \fBclip\fP\&.
 7977+.UNINDENT
 7978+.UNINDENT
 7979+.TP
 7980+.B \fB\-\-tone\-mapping=<value>\fP
 7981+Specifies the algorithm used for tone\-mapping images onto the target
 7982+display. This is relevant for both HDR\->SDR conversion as well as gamut
 7983+reduction (e.g. playing back BT.2020 content on a standard gamut display).
 7984+Valid values are:
 7985+.INDENT 7.0
 7986+.TP
 7987+.B clip
 7988+Hard\-clip any out\-of\-range values. Use this when you care about
 7989+perfect color accuracy for in\-range values at the cost of completely
 7990+distorting out\-of\-range values. Not generally recommended.
 7991+.TP
 7992+.B mobius
 7993+Generalization of Reinhard to a Möbius transform with linear section.
 7994+Smoothly maps out\-of\-range values while retaining contrast and colors
 7995+for in\-range material as much as possible. Use this when you care about
 7996+color accuracy more than detail preservation. This is somewhere in
 7997+between \fBclip\fP and \fBreinhard\fP, depending on the value of
 7998+\fB\-\-tone\-mapping\-param\fP\&.
 7999+.TP
 8000+.B reinhard
 8001+Reinhard tone mapping algorithm. Very simple continuous curve.
 8002+Preserves overall image brightness but uses nonlinear contrast, which
 8003+results in flattening of details and degradation in color accuracy.
 8004+.TP
 8005+.B hable
 8006+Similar to \fBreinhard\fP but preserves both dark and bright details
 8007+better (slightly sigmoidal), at the cost of slightly darkening /
 8008+desaturating everything. Developed by John Hable for use in video
 8009+games. Use this when you care about detail preservation more than
 8010+color/brightness accuracy. This is roughly equivalent to
 8011+\fB\-\-tone\-mapping=reinhard \-\-tone\-mapping\-param=0.24\fP\&. If possible,
 8012+you should also enable \fB\-\-hdr\-compute\-peak\fP for the best results.
 8013+(Default)
 8014+.TP
 8015+.B gamma
 8016+Fits a logarithmic transfer between the tone curves.
 8017+.TP
 8018+.B linear
 8019+Linearly stretches the entire reference gamut to (a linear multiple of)
 8020+the display.
 8021+.UNINDENT
 8022+.TP
 8023+.B \fB\-\-tone\-mapping\-param=<value>\fP
 8024+Set tone mapping parameters. By default, this is set to the special string
 8025+\fBdefault\fP, which maps to an algorithm\-specific default value. Ignored if
 8026+the tone mapping algorithm is not tunable. This affects the following tone
 8027+mapping algorithms:
 8028+.INDENT 7.0
 8029+.TP
 8030+.B clip
 8031+Specifies an extra linear coefficient to multiply into the signal
 8032+before clipping. Defaults to 1.0.
 8033+.TP
 8034+.B mobius
 8035+Specifies the transition point from linear to mobius transform. Every
 8036+value below this point is guaranteed to be mapped 1:1. The higher the
 8037+value, the more accurate the result will be, at the cost of losing
 8038+bright details. Defaults to 0.3, which due to the steep initial slope
 8039+still preserves in\-range colors fairly accurately.
 8040+.TP
 8041+.B reinhard
 8042+Specifies the local contrast coefficient at the display peak. Defaults
 8043+to 0.5, which means that in\-gamut values will be about half as bright
 8044+as when clipping.
 8045+.TP
 8046+.B gamma
 8047+Specifies the exponent of the function. Defaults to 1.8.
 8048+.TP
 8049+.B linear
 8050+Specifies the scale factor to use while stretching. Defaults to 1.0.
 8051+.UNINDENT
 8052+.TP
 8053+.B \fB\-\-tone\-mapping\-max\-boost=<1.0..10.0>\fP
 8054+Upper limit for how much the tone mapping algorithm is allowed to boost
 8055+the average brightness by over\-exposing the image. The default value of 1.0
 8056+allows no additional brightness boost. A value of 2.0 would allow
 8057+over\-exposing by a factor of 2, and so on. Raising this setting can help
 8058+reveal details that would otherwise be hidden in dark scenes, but raising
 8059+it too high will make dark scenes appear unnaturally bright.
 8060+.TP
 8061+.B \fB\-\-hdr\-compute\-peak=<auto|yes|no>\fP
 8062+Compute the HDR peak and frame average brightness per\-frame instead of
 8063+relying on tagged metadata. These values are averaged over local regions as
 8064+well as over several frames to prevent the value from jittering around too
 8065+much. This option basically gives you dynamic, per\-scene tone mapping.
 8066+Requires compute shaders, which is a fairly recent OpenGL feature, and will
 8067+probably also perform horribly on some drivers, so enable at your own risk.
 8068+The special value \fBauto\fP (default) will enable HDR peak computation
 8069+automatically if compute shaders and SSBOs are supported.
 8070+.TP
 8071+.B \fB\-\-hdr\-peak\-decay\-rate=<1.0..1000.0>\fP
 8072+The decay rate used for the HDR peak detection algorithm (default: 100.0).
 8073+This is only relevant when \fB\-\-hdr\-compute\-peak\fP is enabled. Higher values
 8074+make the peak decay more slowly, leading to more stable values at the cost
 8075+of more "eye adaptation"\-like effects (although this is mitigated somewhat
 8076+by \fB\-\-hdr\-scene\-threshold\fP). A value of 1.0 (the lowest possible) disables
 8077+all averaging, meaning each frame\(aqs value is used directly as measured,
 8078+but doing this is not recommended for "noisy" sources since it may lead
 8079+to excessive flicker. (In signal theory terms, this controls the time
 8080+constant "tau" of an IIR low pass filter)
 8081+.TP
 8082+.B \fB\-\-hdr\-scene\-threshold\-low=<0.0..100.0>\fP, \fB\-\-hdr\-scene\-threshold\-high=<0.0..100.0>\fP
 8083+The lower and upper thresholds (in dB) for a brightness difference
 8084+to be considered a scene change (default: 5.5 low, 10.0 high). This is only
 8085+relevant when \fB\-\-hdr\-compute\-peak\fP is enabled. Normally, small
 8086+fluctuations in the frame brightness are compensated for by the peak
 8087+averaging mechanism, but for large jumps in the brightness this can result
 8088+in the frame remaining too bright or too dark for up to several seconds,
 8089+depending on the value of \fB\-\-hdr\-peak\-decay\-rate\fP\&. To counteract this,
 8090+when the brightness between the running average and the current frame
 8091+exceeds the low threshold, mpv will make the averaging filter more
 8092+aggressive, up to the limit of the high threshold (at which point the
 8093+filter becomes instant).
 8094+.TP
 8095+.B \fB\-\-tone\-mapping\-desaturate=<0.0..1.0>\fP
 8096+Apply desaturation for highlights (default: 0.75). The parameter controls
 8097+the strength of the desaturation curve. A value of 0.0 completely disables
 8098+it, while a value of 1.0 means that overly bright colors will tend towards
 8099+white. (This is not always the case, especially not for highlights that are
 8100+near primary colors)
 8101+.sp
 8102+Values in between apply progressively more/less aggressive desaturation.
 8103+This setting helps prevent unnaturally oversaturated colors for
 8104+super\-highlights, by (smoothly) turning them into less saturated (per
 8105+channel tone mapped) colors instead. This makes images feel more natural,
 8106+at the cost of chromatic distortions for out\-of\-range colors. The default
 8107+value of 0.75 provides a good balance. Setting this to 0.0 preserves the
 8108+chromatic accuracy of the tone mapping process.
 8109+.TP
 8110+.B \fB\-\-tone\-mapping\-desaturate\-exponent=<0.0..20.0>\fP
 8111+This setting controls the exponent of the desaturation curve, which
 8112+controls how bright a color needs to be in order to start being
 8113+desaturated. The default of 1.5 provides a reasonable balance.  Decreasing
 8114+this exponent makes the curve more aggressive.
 8115+.TP
 8116+.B \fB\-\-gamut\-warning\fP
 8117+If enabled, mpv will mark all clipped/out\-of\-gamut pixels that exceed a
 8118+given threshold (currently hard\-coded to 101%). The affected pixels will be
 8119+inverted to make them stand out. Note: This option applies after the
 8120+effects of all of mpv\(aqs color space transformation / tone mapping options,
 8121+so it\(aqs a good idea to combine this with \fB\-\-tone\-mapping=clip\fP and use
 8122+\fB\-\-target\-prim\fP to set the gamut to simulate. For example,
 8123+\fB\-\-target\-prim=bt.709\fP would make mpv highlight all pixels that exceed the
 8124+gamut of a standard gamut (sRGB) display. This option also does not work
 8125+well with ICC profiles, since the 3DLUTs are always generated against the
 8126+source color space and have chromatically\-accurate clipping built in.
 8127+.TP
 8128+.B \fB\-\-use\-embedded\-icc\-profile\fP
 8129+Load the embedded ICC profile contained in media files such as PNG images.
 8130+(Default: yes). Note that this option only works when also using a display
 8131+ICC profile (\fB\-\-icc\-profile\fP or \fB\-\-icc\-profile\-auto\fP), and also
 8132+requires LittleCMS 2 support.
 8133+.TP
 8134+.B \fB\-\-icc\-profile=<file>\fP
 8135+Load an ICC profile and use it to transform video RGB to screen output.
 8136+Needs LittleCMS 2 support compiled in. This option overrides the
 8137+\fB\-\-target\-prim\fP, \fB\-\-target\-trc\fP and \fB\-\-icc\-profile\-auto\fP options.
 8138+.TP
 8139+.B \fB\-\-icc\-profile\-auto\fP
 8140+Automatically select the ICC display profile currently specified by the
 8141+display settings of the operating system.
 8142+.sp
 8143+NOTE: On Windows, the default profile must be an ICC profile. WCS profiles
 8144+are not supported.
 8145+.sp
 8146+Applications using libmpv with the render API need to provide the ICC
 8147+profile via \fBMPV_RENDER_PARAM_ICC_PROFILE\fP\&.
 8148+.TP
 8149+.B \fB\-\-icc\-cache\-dir=<dirname>\fP
 8150+Store and load the 3D LUTs created from the ICC profile in this directory.
 8151+This can be used to speed up loading, since LittleCMS 2 can take a while to
 8152+create a 3D LUT. Note that these files contain uncompressed LUTs. Their
 8153+size depends on the \fB\-\-icc\-3dlut\-size\fP, and can be very big.
 8154+.sp
 8155+NOTE: This is not cleaned automatically, so old, unused cache files may
 8156+stick around indefinitely.
 8157+.TP
 8158+.B \fB\-\-icc\-intent=<value>\fP
 8159+Specifies the ICC intent used for the color transformation (when using
 8160+\fB\-\-icc\-profile\fP).
 8161+.INDENT 7.0
 8162+.TP
 8163+.B 0
 8164+perceptual
 8165+.TP
 8166+.B 1
 8167+relative colorimetric (default)
 8168+.TP
 8169+.B 2
 8170+saturation
 8171+.TP
 8172+.B 3
 8173+absolute colorimetric
 8174+.UNINDENT
 8175+.TP
 8176+.B \fB\-\-icc\-3dlut\-size=<r>x<g>x<b>\fP
 8177+Size of the 3D LUT generated from the ICC profile in each dimension.
 8178+Default is 64x64x64. Sizes may range from 2 to 512.
 8179+.TP
 8180+.B \fB\-\-icc\-contrast=<0\-1000000|inf>\fP
 8181+Specifies an upper limit on the target device\(aqs contrast ratio. This is
 8182+detected automatically from the profile if possible, but for some profiles
 8183+it might be missing, causing the contrast to be assumed as infinite. As a
 8184+result, video may appear darker than intended. This only affects BT.1886
 8185+content. The default of 0 means no limit if the detected contrast is less
 8186+than 100000, and limits to 1000 otherwise. Use \fB\-\-icc\-contrast=inf\fP to
 8187+preserve the infinite contrast (most likely when using OLED displays).
 8188+.TP
 8189+.B \fB\-\-blend\-subtitles=<yes|video|no>\fP
 8190+Blend subtitles directly onto upscaled video frames, before interpolation
 8191+and/or color management (default: no). Enabling this causes subtitles to be
 8192+affected by \fB\-\-icc\-profile\fP, \fB\-\-target\-prim\fP, \fB\-\-target\-trc\fP,
 8193+\fB\-\-interpolation\fP, \fB\-\-gamma\-factor\fP and \fB\-\-glsl\-shaders\fP\&. It also
 8194+increases subtitle performance when using \fB\-\-interpolation\fP\&.
 8195+.sp
 8196+The downside of enabling this is that it restricts subtitles to the visible
 8197+portion of the video, so you can\(aqt have subtitles exist in the black
 8198+margins below a video (for example).
 8199+.sp
 8200+If \fBvideo\fP is selected, the behavior is similar to \fByes\fP, but subs are
 8201+drawn at the video\(aqs native resolution, and scaled along with the video.
 8202+.sp
 8203+\fBWARNING:\fP
 8204+.INDENT 7.0
 8205+.INDENT 3.5
 8206+This changes the way subtitle colors are handled. Normally,
 8207+subtitle colors are assumed to be in sRGB and color managed as
 8208+such. Enabling this makes them treated as being in the video\(aqs
 8209+color space instead. This is good if you want things like
 8210+softsubbed ASS signs to match the video colors, but may cause
 8211+SRT subtitles or similar to look slightly off.
 8212+.UNINDENT
 8213+.UNINDENT
 8214+.TP
 8215+.B \fB\-\-alpha=<blend\-tiles|blend|yes|no>\fP
 8216+Decides what to do if the input has an alpha component.
 8217+.INDENT 7.0
 8218+.TP
 8219+.B blend\-tiles
 8220+Blend the frame against a 16x16 gray/white tiles background (default).
 8221+.TP
 8222+.B blend
 8223+Blend the frame against the background color (\fB\-\-background\fP, normally
 8224+black).
 8225+.TP
 8226+.B yes
 8227+Try to create a framebuffer with alpha component. This only makes sense
 8228+if the video contains alpha information (which is extremely rare). May
 8229+not be supported on all platforms. If alpha framebuffers are
 8230+unavailable, it silently falls back on a normal framebuffer. Note that
 8231+if you set the \fB\-\-fbo\-format\fP option to a non\-default value, a
 8232+format with alpha must be specified, or this won\(aqt work.
 8233+This does not work on X11 with EGL and Mesa (freedesktop bug 67676).
 8234+.TP
 8235+.B no
 8236+Ignore alpha component.
 8237+.UNINDENT
 8238+.TP
 8239+.B \fB\-\-opengl\-rectangle\-textures\fP
 8240+Force use of rectangle textures (default: no). Normally this shouldn\(aqt have
 8241+any advantages over normal textures. Note that hardware decoding overrides
 8242+this flag. Could be removed any time.
 8243+.TP
 8244+.B \fB\-\-background=<color>\fP
 8245+Color used to draw parts of the mpv window not covered by video. See
 8246+\fB\-\-osd\-color\fP option how colors are defined.
 8247+.TP
 8248+.B \fB\-\-gpu\-tex\-pad\-x\fP, \fB\-\-gpu\-tex\-pad\-y\fP
 8249+Enlarge the video source textures by this many pixels. For debugging only
 8250+(normally textures are sized exactly, but due to hardware decoding interop
 8251+we may have to deal with additional padding, which can be tested with these
 8252+options). Could be removed any time.
 8253+.TP
 8254+.B \fB\-\-opengl\-early\-flush=<yes|no|auto>\fP
 8255+Call \fBglFlush()\fP after rendering a frame and before attempting to display
 8256+it (default: auto). Can fix stuttering in some cases, in other cases
 8257+probably causes it. The \fBauto\fP mode will call \fBglFlush()\fP only if
 8258+the renderer is going to wait for a while after rendering, instead of
 8259+flipping GL front and backbuffers immediately (i.e. it doesn\(aqt call it
 8260+in display\-sync mode).
 8261+.sp
 8262+On OSX this is always deactivated because it only causes performance
 8263+problems and other regressions.
 8264+.TP
 8265+.B \fB\-\-gpu\-dumb\-mode=<yes|no|auto>\fP
 8266+This mode is extremely restricted, and will disable most extended
 8267+features. That includes high quality scalers and custom shaders!
 8268+.sp
 8269+It is intended for hardware that does not support FBOs (including GLES,
 8270+which supports it insufficiently), or to get some more performance out of
 8271+bad or old hardware.
 8272+.sp
 8273+This mode is forced automatically if needed, and this option is mostly
 8274+useful for debugging. The default of \fBauto\fP will enable it automatically
 8275+if nothing uses features which require FBOs.
 8276+.sp
 8277+This option might be silently removed in the future.
 8278+.TP
 8279+.B \fB\-\-gpu\-shader\-cache\-dir=<dirname>\fP
 8280+Store and load compiled GLSL shaders in this directory. Normally, shader
 8281+compilation is very fast, so this is usually not needed. It mostly matters
 8282+for GPU APIs that require internally recompiling shaders to other languages,
 8283+for example anything based on ANGLE or Vulkan. Enabling this can improve
 8284+startup performance on these platforms.
 8285+.sp
 8286+NOTE: This is not cleaned automatically, so old, unused cache files may
 8287+stick around indefinitely.
 8288+.UNINDENT
 8289+.SS Miscellaneous
 8290+.INDENT 0.0
 8291+.TP
 8292+.B \fB\-\-display\-tags=tag1,tags2,...\fP
 8293+Set the list of tags that should be displayed on the terminal. Tags that
 8294+are in the list, but are not present in the played file, will not be shown.
 8295+If a value ends with \fB*\fP, all tags are matched by prefix (though there
 8296+is no general globbing). Just passing \fB*\fP essentially filtering.
 8297+.sp
 8298+The default includes a common list of tags, call mpv with \fB\-\-list\-options\fP
 8299+to see it.
 8300+.sp
 8301+This is a string list option. See \fI\%List Options\fP for details.
 8302+.TP
 8303+.B \fB\-\-mc=<seconds/frame>\fP
 8304+Maximum A\-V sync correction per frame (in seconds)
 8305+.TP
 8306+.B \fB\-\-autosync=<factor>\fP
 8307+Gradually adjusts the A/V sync based on audio delay measurements.
 8308+Specifying \fB\-\-autosync=0\fP, the default, will cause frame timing to be
 8309+based entirely on audio delay measurements. Specifying \fB\-\-autosync=1\fP
 8310+will do the same, but will subtly change the A/V correction algorithm. An
 8311+uneven video framerate in a video which plays fine with \fB\-\-no\-audio\fP can
 8312+often be helped by setting this to an integer value greater than 1. The
 8313+higher the value, the closer the timing will be to \fB\-\-no\-audio\fP\&. Try
 8314+\fB\-\-autosync=30\fP to smooth out problems with sound drivers which do not
 8315+implement a perfect audio delay measurement. With this value, if large A/V
 8316+sync offsets occur, they will only take about 1 or 2 seconds to settle
 8317+out. This delay in reaction time to sudden A/V offsets should be the only
 8318+side effect of turning this option on, for all sound drivers.
 8319+.TP
 8320+.B \fB\-\-video\-timing\-offset=<seconds>\fP
 8321+Control how long before video display target time the frame should be
 8322+rendered (default: 0.050). If a video frame should be displayed at a
 8323+certain time, the VO will start rendering the frame earlier, and then will
 8324+perform a blocking wait until the display time, and only then "swap" the
 8325+frame to display. The rendering cannot start before the previous frame is
 8326+displayed, so this value is implicitly limited by the video framerate. With
 8327+normal video frame rates, the default value will ensure that rendering is
 8328+always immediately started after the previous frame was displayed. On the
 8329+other hand, setting a too high value can reduce responsiveness with low
 8330+FPS value.
 8331+.sp
 8332+For client API users using the render API (or the deprecated \fBopengl\-cb\fP
 8333+API), this option is interesting, because you can stop the render API
 8334+from limiting your FPS (see \fBmpv_render_context_render()\fP documentation).
 8335+.sp
 8336+This applies only to audio timing modes (e.g. \fB\-\-video\-sync=audio\fP). In
 8337+other modes (\fB\-\-video\-sync=display\-...\fP), video timing relies on vsync
 8338+blocking, and this option is not used.
 8339+.TP
 8340+.B \fB\-\-video\-sync=<audio|...>\fP
 8341+How the player synchronizes audio and video.
 8342+.sp
 8343+If you use this option, you usually want to set it to \fBdisplay\-resample\fP
 8344+to enable a timing mode that tries to not skip or repeat frames when for
 8345+example playing 24fps video on a 24Hz screen.
 8346+.sp
 8347+The modes starting with \fBdisplay\-\fP try to output video frames completely
 8348+synchronously to the display, using the detected display vertical refresh
 8349+rate as a hint how fast frames will be displayed on average. These modes
 8350+change video speed slightly to match the display. See \fB\-\-video\-sync\-...\fP
 8351+options for fine tuning. The robustness of this mode is further reduced by
 8352+making a some idealized assumptions, which may not always apply in reality.
 8353+Behavior can depend on the VO and the system\(aqs video and audio drivers.
 8354+Media files must use constant framerate. Section\-wise VFR might work as well
 8355+with some container formats (but not e.g. mkv).
 8356+.sp
 8357+Under some circumstances, the player automatically reverts to \fBaudio\fP mode
 8358+for some time or permanently. This can happen on very low framerate video,
 8359+or if the framerate cannot be detected.
 8360+.sp
 8361+Also in display\-sync modes it can happen that interruptions to video
 8362+playback (such as toggling fullscreen mode, or simply resizing the window)
 8363+will skip the video frames that should have been displayed, while \fBaudio\fP
 8364+mode will display them after the renderer has resumed (typically resulting
 8365+in a short A/V desync and the video "catching up").
 8366+.sp
 8367+Before mpv 0.30.0, there was a fallback to \fBaudio\fP mode on severe A/V
 8368+desync. This was changed for the sake of not sporadically stopping. Now,
 8369+\fBdisplay\-desync\fP does what it promises and may desync with audio by an
 8370+arbitrary amount, until it is manually fixed with a seek.
 8371+.sp
 8372+These modes also require a vsync blocked presentation mode. For OpenGL, this
 8373+translates to \fB\-\-opengl\-swapinterval=1\fP\&. For Vulkan, it translates to
 8374+\fB\-\-vulkan\-swap\-mode=fifo\fP (or \fBfifo\-relaxed\fP).
 8375+.sp
 8376+The modes with \fBdesync\fP in their names do not attempt to keep audio/video
 8377+in sync. They will slowly (or quickly) desync, until e.g. the next seek
 8378+happens. These modes are meant for testing, not serious use.
 8379+.INDENT 7.0
 8380+.TP
 8381+.B audio
 8382+Time video frames to audio. This is the most robust
 8383+mode, because the player doesn\(aqt have to assume anything
 8384+about how the display behaves. The disadvantage is that
 8385+it can lead to occasional frame drops or repeats. If
 8386+audio is disabled, this uses the system clock. This is
 8387+the default mode.
 8388+.TP
 8389+.B display\-resample
 8390+Resample audio to match the video. This mode will also
 8391+try to adjust audio speed to compensate for other drift.
 8392+(This means it will play the audio at a different speed
 8393+every once in a while to reduce the A/V difference.)
 8394+.TP
 8395+.B display\-resample\-vdrop
 8396+Resample audio to match the video. Drop video
 8397+frames to compensate for drift.
 8398+.TP
 8399+.B display\-resample\-desync
 8400+Like the previous mode, but no A/V compensation.
 8401+.TP
 8402+.B display\-vdrop
 8403+Drop or repeat video frames to compensate desyncing
 8404+video. (Although it should have the same effects as
 8405+\fBaudio\fP, the implementation is very different.)
 8406+.TP
 8407+.B display\-adrop
 8408+Drop or repeat audio data to compensate desyncing
 8409+video. See \fB\-\-video\-sync\-adrop\-size\fP\&. This mode will
 8410+cause severe audio artifacts if the real monitor
 8411+refresh rate is too different from the reported or
 8412+forced rate.
 8413+.TP
 8414+.B display\-desync
 8415+Sync video to display, and let audio play on its own.
 8416+.TP
 8417+.B desync
 8418+Sync video according to system clock, and let audio play
 8419+on its own.
 8420+.UNINDENT
 8421+.TP
 8422+.B \fB\-\-video\-sync\-max\-video\-change=<value>\fP
 8423+Maximum speed difference in percent that is applied to video with
 8424+\fB\-\-video\-sync=display\-...\fP (default: 1). Display sync mode will be
 8425+disabled if the monitor and video refresh way do not match within the
 8426+given range. It tries multiples as well: playing 30 fps video on a 60 Hz
 8427+screen will duplicate every second frame. Playing 24 fps video on a 60 Hz
 8428+screen will play video in a 2\-3\-2\-3\-... pattern.
 8429+.sp
 8430+The default settings are not loose enough to speed up 23.976 fps video to
 8431+25 fps. We consider the pitch change too extreme to allow this behavior
 8432+by default. Set this option to a value of \fB5\fP to enable it.
 8433+.sp
 8434+Note that in the \fB\-\-video\-sync=display\-resample\fP mode, audio speed will
 8435+additionally be changed by a small amount if necessary for A/V sync. See
 8436+\fB\-\-video\-sync\-max\-audio\-change\fP\&.
 8437+.TP
 8438+.B \fB\-\-video\-sync\-max\-audio\-change=<value>\fP
 8439+Maximum \fIadditional\fP speed difference in percent that is applied to audio
 8440+with \fB\-\-video\-sync=display\-...\fP (default: 0.125). Normally, the player
 8441+plays the audio at the speed of the video. But if the difference between
 8442+audio and video position is too high, e.g. due to drift or other timing
 8443+errors, it will attempt to speed up or slow down audio by this additional
 8444+factor. Too low values could lead to video frame dropping or repeating if
 8445+the A/V desync cannot be compensated, too high values could lead to chaotic
 8446+frame dropping due to the audio "overshooting" and skipping multiple video
 8447+frames before the sync logic can react.
 8448+.TP
 8449+.B \fB\-\-video\-sync\-adrop\-size=<value>\fP
 8450+For the \fB\-\-video\-sync=display\-adrop\fP mode. This mode duplicates/drops
 8451+audio data to keep audio in sync with video. To avoid audio artifacts on
 8452+jitter (which would add/remove samples all the time), this is done in
 8453+relatively large, fixed units, controlled by this option. The unit is
 8454+seconds.
 8455+.TP
 8456+.B \fB\-\-mf\-fps=<value>\fP
 8457+Framerate used when decoding from multiple PNG or JPEG files with \fBmf://\fP
 8458+(default: 1).
 8459+.TP
 8460+.B \fB\-\-mf\-type=<value>\fP
 8461+Input file type for \fBmf://\fP (available: jpeg, png, tga, sgi). By default,
 8462+this is guessed from the file extension.
 8463+.TP
 8464+.B \fB\-\-stream\-dump=<destination\-filename>\fP
 8465+Instead of playing a file, read its byte stream and write it to the given
 8466+destination file. The destination is overwritten. Can be useful to test
 8467+network\-related behavior.
 8468+.TP
 8469+.B \fB\-\-stream\-lavf\-o=opt1=value1,opt2=value2,...\fP
 8470+Set AVOptions on streams opened with libavformat. Unknown or misspelled
 8471+options are silently ignored. (They are mentioned in the terminal output
 8472+in verbose mode, i.e. \fB\-\-v\fP\&. In general we can\(aqt print errors, because
 8473+other options such as e.g. user agent are not available with all protocols,
 8474+and printing errors for unknown options would end up being too noisy.)
 8475+.sp
 8476+This is a key/value list option. See \fI\%List Options\fP for details.
 8477+.TP
 8478+.B \fB\-\-vo\-mmcss\-profile=<name>\fP
 8479+(Windows only.)
 8480+Set the MMCSS profile for the video renderer thread (default: \fBPlayback\fP).
 8481+.TP
 8482+.B \fB\-\-priority=<prio>\fP
 8483+(Windows only.)
 8484+Set process priority for mpv according to the predefined priorities
 8485+available under Windows.
 8486+.sp
 8487+Possible values of \fB<prio>\fP:
 8488+idle|belownormal|normal|abovenormal|high|realtime
 8489+.sp
 8490+\fBWARNING:\fP
 8491+.INDENT 7.0
 8492+.INDENT 3.5
 8493+Using realtime priority can cause system lockup.
 8494+.UNINDENT
 8495+.UNINDENT
 8496+.TP
 8497+.B \fB\-\-force\-media\-title=<string>\fP
 8498+Force the contents of the \fBmedia\-title\fP property to this value. Useful
 8499+for scripts which want to set a title, without overriding the user\(aqs
 8500+setting in \fB\-\-title\fP\&.
 8501+.TP
 8502+.B \fB\-\-external\-files=<file\-list>\fP
 8503+Load a file and add all of its tracks. This is useful to play different
 8504+files together (for example audio from one file, video from another), or
 8505+for advanced \fB\-\-lavfi\-complex\fP used (like playing two video files at
 8506+the same time).
 8507+.sp
 8508+Unlike \fB\-\-sub\-files\fP and \fB\-\-audio\-files\fP, this includes all tracks, and
 8509+does not cause default stream selection over the "proper" file. This makes
 8510+it slightly less intrusive. (In mpv 0.28.0 and before, this was not quite
 8511+strictly enforced.)
 8512+.sp
 8513+This is a path list option. See \fI\%List Options\fP for details.
 8514+.TP
 8515+.B \fB\-\-external\-file=<file>\fP
 8516+CLI/config file only alias for \fB\-\-external\-files\-append\fP\&. Each use of this
 8517+option will add a new external files.
 8518+.TP
 8519+.B \fB\-\-autoload\-files=<yes|no>\fP
 8520+Automatically load/select external files (default: yes).
 8521+.sp
 8522+If set to \fBno\fP, then do not automatically load external files as specified
 8523+by \fB\-\-sub\-auto\fP and \fB\-\-audio\-file\-auto\fP\&. If external files are forcibly
 8524+added (like with \fB\-\-sub\-files\fP), they will not be auto\-selected.
 8525+.sp
 8526+This does not affect playlist expansion, redirection, or other loading of
 8527+referenced files like with ordered chapters.
 8528+.TP
 8529+.B \fB\-\-record\-file=<file>\fP
 8530+Deprecated, use \fB\-\-stream\-record\fP, or the \fBdump\-cache\fP command.
 8531+.sp
 8532+Record the current stream to the given target file. The target file will
 8533+always be overwritten without asking.
 8534+.sp
 8535+This was deprecated because it isn\(aqt very nice to use. For one, seeking
 8536+while this is enabled will be directly reflected in the output, which was
 8537+not useful and annoying.
 8538+.TP
 8539+.B \fB\-\-stream\-record=<file>\fP
 8540+Write received/read data from the demuxer to the given output file. The
 8541+output file will always be overwritten without asking. The output format
 8542+is determined by the extension of the output file.
 8543+.sp
 8544+Switching streams or seeking during recording might result in recording
 8545+being stopped and/or broken files. Use with care.
 8546+.sp
 8547+Seeking outside of the demuxer cache will result in "skips" in the output
 8548+file, but seeking within  the demuxer cache should not affect recording. One
 8549+exception is when you seek back far enough to exceed the forward buffering
 8550+size, in which case the cache stops actively reading. This will return in
 8551+dropped data if it\(aqs a live stream.
 8552+.sp
 8553+If this is set at runtime, the old file is closed, and the new file is
 8554+opened. Note that this will write only data that is appended at the end of
 8555+the cache, and the already cached data cannot be written. You can try the
 8556+\fBdump\-cache\fP command as an alternative.
 8557+.sp
 8558+External files (\fB\-\-audio\-file\fP etc.) are ignored by this, it works on the
 8559+"main" file only. Using this with files using ordered chapters or EDL files
 8560+will also not work correctly in general.
 8561+.sp
 8562+There are some glitches with this because it uses FFmpeg\(aqs libavformat for
 8563+writing the output file. For example, it\(aqs typical that it will only work if
 8564+the output format is the same as the input format. This is the case even if
 8565+it works with the \fBffmpeg\fP tool. One reason for this is that \fBffmpeg\fP
 8566+and its libraries contain certain hacks and workarounds for these issues,
 8567+that are unavailable to outside users.
 8568+.sp
 8569+This replaces \fB\-\-record\-file\fP\&. It is similar to the ancient/removed
 8570+\fB\-\-stream\-capture\fP/\fB\-capture\fP options, and provides better behavior in
 8571+most cases (i.e. actually works).
 8572+.TP
 8573+.B \fB\-\-lavfi\-complex=<string>\fP
 8574+Set a "complex" libavfilter filter, which means a single filter graph can
 8575+take input from multiple source audio and video tracks. The graph can result
 8576+in a single audio or video output (or both).
 8577+.sp
 8578+Currently, the filter graph labels are used to select the participating
 8579+input tracks and audio/video output. The following rules apply:
 8580+.INDENT 7.0
 8581+.IP \(bu 2
 8582+A label of the form \fBaidN\fP selects audio track N as input (e.g.
 8583+\fBaid1\fP).
 8584+.IP \(bu 2
 8585+A label of the form \fBvidN\fP selects video track N as input.
 8586+.IP \(bu 2
 8587+A label named \fBao\fP will be connected to the audio output.
 8588+.IP \(bu 2
 8589+A label named \fBvo\fP will be connected to the video output.
 8590+.UNINDENT
 8591+.sp
 8592+Each label can be used only once. If you want to use e.g. an audio stream
 8593+for multiple filters, you need to use the \fBasplit\fP filter. Multiple
 8594+video or audio outputs are not possible, but you can use filters to merge
 8595+them into one.
 8596+.sp
 8597+It\(aqs not possible to change the tracks connected to the filter at runtime,
 8598+unless you explicitly change the \fBlavfi\-complex\fP property and set new
 8599+track assignments. When the graph is changed, the track selection is changed
 8600+according to the used labels as well.
 8601+.sp
 8602+Other tracks, as long as they\(aqre not connected to the filter, and the
 8603+corresponding output is not connected to the filter, can still be freely
 8604+changed with the normal methods.
 8605+.sp
 8606+Note that the normal filter chains (\fB\-\-af\fP, \fB\-\-vf\fP) are applied between
 8607+the complex graphs (e.g. \fBao\fP label) and the actual output.
 8608+.INDENT 7.0
 8609+.INDENT 3.5
 8610+.IP "Examples"
 8611+.INDENT 0.0
 8612+.IP \(bu 2
 8613+\fB\-\-lavfi\-complex=\(aq[aid1] [aid2] amix [ao]\(aq\fP
 8614+Play audio track 1 and 2 at the same time.
 8615+.IP \(bu 2
 8616+\fB\-\-lavfi\-complex=\(aq[vid1] [vid2] vstack [vo]\(aq\fP
 8617+Stack video track 1 and 2 and play them at the same time. Note that
 8618+both tracks need to have the same width, or filter initialization
 8619+will fail (you can add \fBscale\fP filters before the \fBvstack\fP filter
 8620+to fix the size).
 8621+To load a video track from another file, you can use
 8622+\fB\-\-external\-file=other.mkv\fP\&.
 8623+.IP \(bu 2
 8624+\fB\-\-lavfi\-complex=\(aq[aid1] asplit [t1] [ao] ; [t1] showvolume [t2] ; [vid1] [t2] overlay [vo]\(aq\fP
 8625+Play audio track 1, and overlay the measured volume for each speaker
 8626+over video track 1.
 8627+.IP \(bu 2
 8628+\fBnull:// \-\-lavfi\-complex=\(aqlife [vo]\(aq\fP
 8629+A libavfilter source\-only filter (Conways\(aq Life Game).
 8630+.UNINDENT
 8631+.UNINDENT
 8632+.UNINDENT
 8633+.sp
 8634+See the FFmpeg libavfilter documentation for details on the available
 8635+filters.
 8636+.TP
 8637+.B \fB\-\-metadata\-codepage=<codepage>\fP
 8638+Codepage for various input metadata (default: \fButf\-8\fP). This affects how
 8639+file tags, chapter titles, etc. are interpreted. You can for example set
 8640+this to \fBauto\fP to enable autodetection of the codepage. (This is not the
 8641+default because non\-UTF\-8 codepages are an obscure fringe use\-case.)
 8642+.sp
 8643+See \fB\-\-sub\-codepage\fP option on how codepages are specified and further
 8644+details regarding autodetection and codepage conversion. (The underlying
 8645+code is the same.)
 8646+.sp
 8647+Conversion is not applied to metadata that is updated at runtime.
 8648+.UNINDENT
 8649+.SS Debugging
 8650+.INDENT 0.0
 8651+.TP
 8652+.B \fB\-\-unittest=<name>\fP
 8653+Run an internal unit test. There are multiple, and the name specifies which.
 8654+.sp
 8655+The special value \fBall\-simple\fP runs all tests which do not need further
 8656+setup (other arguments and such). Some tests may need additional arguments
 8657+to do anything useful.
 8658+.sp
 8659+On success, the player binary exits with exit status 0, otherwise it returns
 8660+with an undefined non\-0 exit status (it may crash or abort itself on test
 8661+failures).
 8662+.sp
 8663+This is only enabled if built with \fB\-\-enable\-tests\fP, and should normally
 8664+be enabled and used by developers only.
 8665+.UNINDENT
 8666+.SH AUDIO OUTPUT DRIVERS
 8667+.sp
 8668+Audio output drivers are interfaces to different audio output facilities. The
 8669+syntax is:
 8670+.INDENT 0.0
 8671+.TP
 8672+.B \fB\-\-ao=<driver1,driver2,...[,]>\fP
 8673+Specify a priority list of audio output drivers to be used.
 8674+.UNINDENT
 8675+.sp
 8676+If the list has a trailing \(aq,\(aq, mpv will fall back on drivers not contained
 8677+in the list.
 8678+.sp
 8679+\fBNOTE:\fP
 8680+.INDENT 0.0
 8681+.INDENT 3.5
 8682+See \fB\-\-ao=help\fP for a list of compiled\-in audio output drivers. The
 8683+driver \fB\-\-ao=alsa\fP is preferred. \fB\-\-ao=pulse\fP is preferred on systems
 8684+where PulseAudio is used. On BSD systems, \fB\-\-ao=oss\fP or \fB\-\-ao=sndio\fP
 8685+may work (the latter being experimental).
 8686+.UNINDENT
 8687+.UNINDENT
 8688+.sp
 8689+Available audio output drivers are:
 8690+.INDENT 0.0
 8691+.TP
 8692+.B \fBalsa\fP (Linux only)
 8693+ALSA audio output driver
 8694+.sp
 8695+See \fI\%ALSA audio output options\fP for options specific to this AO.
 8696+.sp
 8697+\fBWARNING:\fP
 8698+.INDENT 7.0
 8699+.INDENT 3.5
 8700+To get multichannel/surround audio, use \fB\-\-audio\-channels=auto\fP\&. The
 8701+default for this option is \fBauto\-safe\fP, which makes this audio output
 8702+explicitly reject multichannel output, as there is no way to detect
 8703+whether a certain channel layout is actually supported.
 8704+.sp
 8705+You can also try \fI\%using the upmix plugin\fP\&.
 8706+This setup enables multichannel audio on the \fBdefault\fP device
 8707+with automatic upmixing with shared access, so playing stereo
 8708+and multichannel audio at the same time will work as expected.
 8709+.UNINDENT
 8710+.UNINDENT
 8711+.TP
 8712+.B \fBoss\fP
 8713+OSS audio output driver
 8714+.sp
 8715+The following global options are supported by this audio output:
 8716+.INDENT 7.0
 8717+.TP
 8718+.B \fB\-\-oss\-mixer\-device\fP
 8719+Sets the audio mixer device (default: \fB/dev/mixer\fP).
 8720+.TP
 8721+.B \fB\-\-oss\-mixer\-channel\fP
 8722+Sets the audio mixer channel (default: \fBpcm\fP). Other valid values
 8723+include \fBvol, pcm, line\fP\&. For a complete list of options look for
 8724+\fBSOUND_DEVICE_NAMES\fP in \fB/usr/include/linux/soundcard.h\fP\&.
 8725+.UNINDENT
 8726+.TP
 8727+.B \fBjack\fP
 8728+JACK (Jack Audio Connection Kit) audio output driver.
 8729+.sp
 8730+The following global options are supported by this audio output:
 8731+.INDENT 7.0
 8732+.TP
 8733+.B \fB\-\-jack\-port=<name>\fP
 8734+Connects to the ports with the given name (default: physical ports).
 8735+.TP
 8736+.B \fB\-\-jack\-name=<client>\fP
 8737+Client name that is passed to JACK (default: \fBmpv\fP). Useful
 8738+if you want to have certain connections established automatically.
 8739+.TP
 8740+.B \fB\-\-jack\-autostart=<yes|no>\fP
 8741+Automatically start jackd if necessary (default: disabled). Note that
 8742+this tends to be unreliable and will flood stdout with server messages.
 8743+.TP
 8744+.B \fB\-\-jack\-connect=<yes|no>\fP
 8745+Automatically create connections to output ports (default: enabled).
 8746+When enabled, the maximum number of output channels will be limited to
 8747+the number of available output ports.
 8748+.TP
 8749+.B \fB\-\-jack\-std\-channel\-layout=<waveext|any>\fP
 8750+Select the standard channel layout (default: waveext). JACK itself has no
 8751+notion of channel layouts (i.e. assigning which speaker a given
 8752+channel is supposed to map to) \- it just takes whatever the application
 8753+outputs, and reroutes it to whatever the user defines. This means the
 8754+user and the application are in charge of dealing with the channel
 8755+layout. \fBwaveext\fP uses WAVE_FORMAT_EXTENSIBLE order, which, even
 8756+though it was defined by Microsoft, is the standard on many systems.
 8757+The value \fBany\fP makes JACK accept whatever comes from the audio
 8758+filter chain, regardless of channel layout and without reordering. This
 8759+mode is probably not very useful, other than for debugging or when used
 8760+with fixed setups.
 8761+.UNINDENT
 8762+.TP
 8763+.B \fBcoreaudio\fP (Mac OS X only)
 8764+Native Mac OS X audio output driver using AudioUnits and the CoreAudio
 8765+sound server.
 8766+.sp
 8767+Automatically redirects to \fBcoreaudio_exclusive\fP when playing compressed
 8768+formats.
 8769+.sp
 8770+The following global options are supported by this audio output:
 8771+.INDENT 7.0
 8772+.TP
 8773+.B \fB\-\-coreaudio\-change\-physical\-format=<yes|no>\fP
 8774+Change the physical format to one similar to the requested audio format
 8775+(default: no). This has the advantage that multichannel audio output
 8776+will actually work. The disadvantage is that it will change the
 8777+system\-wide audio settings. This is equivalent to changing the \fBFormat\fP
 8778+setting in the \fBAudio Devices\fP dialog in the \fBAudio MIDI Setup\fP
 8779+utility. Note that this does not affect the selected speaker setup.
 8780+.TP
 8781+.B \fB\-\-coreaudio\-spdif\-hack=<yes|no>\fP
 8782+Try to pass through AC3/DTS data as PCM. This is useful for drivers
 8783+which do not report AC3 support. It converts the AC3 data to float,
 8784+and assumes the driver will do the inverse conversion, which means
 8785+a typical A/V receiver will pick it up as compressed IEC framed AC3
 8786+stream, ignoring that it\(aqs marked as PCM. This disables normal AC3
 8787+passthrough (even if the device reports it as supported). Use with
 8788+extreme care.
 8789+.UNINDENT
 8790+.TP
 8791+.B \fBcoreaudio_exclusive\fP (Mac OS X only)
 8792+Native Mac OS X audio output driver using direct device access and
 8793+exclusive mode (bypasses the sound server).
 8794+.TP
 8795+.B \fBopenal\fP
 8796+OpenAL audio output driver
 8797+.INDENT 7.0
 8798+.TP
 8799+.B \fB\-\-openal\-num\-buffers=<2\-128>\fP
 8800+Specify the number of audio buffers to use. Lower values are better for
 8801+lower CPU usage. Default: 4.
 8802+.TP
 8803+.B \fB\-\-openal\-num\-samples=<256\-32768>\fP
 8804+Specify the number of complete samples to use for each buffer. Higher
 8805+values are better for lower CPU usage. Default: 8192.
 8806+.TP
 8807+.B \fB\-\-openal\-direct\-channels=<yes|no>\fP
 8808+Enable OpenAL Soft\(aqs direct channel extension when available to avoid
 8809+tinting the sound with ambisonics or HRTF.
 8810+Channels are dropped when when they are not available as downmixing
 8811+will be disabled. Default: no.
 8812+.UNINDENT
 8813+.TP
 8814+.B \fBpulse\fP
 8815+PulseAudio audio output driver
 8816+.sp
 8817+The following global options are supported by this audio output:
 8818+.INDENT 7.0
 8819+.TP
 8820+.B \fB\-\-pulse\-host=<host>\fP
 8821+Specify the host to use. An empty <host> string uses a local connection,
 8822+"localhost" uses network transfer (most likely not what you want).
 8823+.TP
 8824+.B \fB\-\-pulse\-buffer=<1\-2000|native>\fP
 8825+Set the audio buffer size in milliseconds. A higher value buffers
 8826+more data, and has a lower probability of buffer underruns. A smaller
 8827+value makes the audio stream react faster, e.g. to playback speed
 8828+changes.
 8829+.TP
 8830+.B \fB\-\-pulse\-latency\-hacks=<yes|no>\fP
 8831+Enable hacks to workaround PulseAudio timing bugs (default: no). If
 8832+enabled, mpv will do elaborate latency calculations on its own. If
 8833+disabled, it will use PulseAudio automatically updated timing
 8834+information. Disabling this might help with e.g. networked audio or
 8835+some plugins, while enabling it might help in some unknown situations
 8836+(it used to be required to get good behavior on old PulseAudio versions).
 8837+.sp
 8838+If you have stuttering video when using pulse, try to enable this
 8839+option. (Or try to update PulseAudio.)
 8840+.TP
 8841+.B \fB\-\-pulse\-allow\-suspended=<yes|no>\fP
 8842+Allow mpv to use PulseAudio even if the sink is suspended (default: no).
 8843+Can be useful if PulseAudio is running as a bridge to jack and mpv has its sink\-input set to the one jack is using.
 8844+.UNINDENT
 8845+.TP
 8846+.B \fBsdl\fP
 8847+SDL 1.2+ audio output driver. Should work on any platform supported by SDL
 8848+1.2, but may require the \fBSDL_AUDIODRIVER\fP environment variable to be set
 8849+appropriately for your system.
 8850+.sp
 8851+\fBNOTE:\fP
 8852+.INDENT 7.0
 8853+.INDENT 3.5
 8854+This driver is for compatibility with extremely foreign
 8855+environments, such as systems where none of the other drivers
 8856+are available.
 8857+.UNINDENT
 8858+.UNINDENT
 8859+.sp
 8860+The following global options are supported by this audio output:
 8861+.INDENT 7.0
 8862+.TP
 8863+.B \fB\-\-sdl\-buflen=<length>\fP
 8864+Sets the audio buffer length in seconds. Is used only as a hint by the
 8865+sound system. Playing a file with \fB\-v\fP will show the requested and
 8866+obtained exact buffer size. A value of 0 selects the sound system
 8867+default.
 8868+.TP
 8869+.B \fB\-\-sdl\-bufcnt=<count>\fP
 8870+Sets the number of extra audio buffers in mpv. Usually needs not be
 8871+changed.
 8872+.UNINDENT
 8873+.TP
 8874+.B \fBnull\fP
 8875+Produces no audio output but maintains video playback speed. You can use
 8876+\fB\-\-ao=null \-\-ao\-null\-untimed\fP for benchmarking.
 8877+.sp
 8878+The following global options are supported by this audio output:
 8879+.INDENT 7.0
 8880+.TP
 8881+.B \fB\-\-ao\-null\-untimed\fP
 8882+Do not simulate timing of a perfect audio device. This means audio
 8883+decoding will go as fast as possible, instead of timing it to the
 8884+system clock.
 8885+.TP
 8886+.B \fB\-\-ao\-null\-buffer\fP
 8887+Simulated buffer length in seconds.
 8888+.TP
 8889+.B \fB\-\-ao\-null\-outburst\fP
 8890+Simulated chunk size in samples.
 8891+.TP
 8892+.B \fB\-\-ao\-null\-speed\fP
 8893+Simulated audio playback speed as a multiplier. Usually, a real audio
 8894+device will not go exactly as fast as the system clock. It will deviate
 8895+just a little, and this option helps to simulate this.
 8896+.TP
 8897+.B \fB\-\-ao\-null\-latency\fP
 8898+Simulated device latency. This is additional to EOF.
 8899+.TP
 8900+.B \fB\-\-ao\-null\-broken\-eof\fP
 8901+Simulate broken audio drivers, which always add the fixed device
 8902+latency to the reported audio playback position.
 8903+.TP
 8904+.B \fB\-\-ao\-null\-broken\-delay\fP
 8905+Simulate broken audio drivers, which don\(aqt report latency correctly.
 8906+.TP
 8907+.B \fB\-\-ao\-null\-channel\-layouts\fP
 8908+If not empty, this is a \fB,\fP separated list of channel layouts the
 8909+AO allows. This can be used to test channel layout selection.
 8910+.TP
 8911+.B \fB\-\-ao\-null\-format\fP
 8912+Force the audio output format the AO will accept. If unset accepts any.
 8913+.UNINDENT
 8914+.TP
 8915+.B \fBpcm\fP
 8916+Raw PCM/WAVE file writer audio output
 8917+.sp
 8918+The following global options are supported by this audio output:
 8919+.INDENT 7.0
 8920+.TP
 8921+.B \fB\-\-ao\-pcm\-waveheader=<yes|no>\fP
 8922+Include or do not include the WAVE header (default: included). When
 8923+not included, raw PCM will be generated.
 8924+.TP
 8925+.B \fB\-\-ao\-pcm\-file=<filename>\fP
 8926+Write the sound to \fB<filename>\fP instead of the default
 8927+\fBaudiodump.wav\fP\&. If \fBno\-waveheader\fP is specified, the default is
 8928+\fBaudiodump.pcm\fP\&.
 8929+.TP
 8930+.B \fB\-\-ao\-pcm\-append=<yes|no>\fP
 8931+Append to the file, instead of overwriting it. Always use this with the
 8932+\fBno\-waveheader\fP option \- with \fBwaveheader\fP it\(aqs broken, because
 8933+it will write a WAVE header every time the file is opened.
 8934+.UNINDENT
 8935+.TP
 8936+.B \fBrsound\fP
 8937+Audio output to an RSound daemon. Use \fB\-\-audio\-device=rsound/<hostname>\fP
 8938+to set the host name (with \fB<hostname>\fP replaced, without the \fB< >\fP).
 8939+.sp
 8940+\fBNOTE:\fP
 8941+.INDENT 7.0
 8942+.INDENT 3.5
 8943+Completely useless, unless you intend to run RSound. Not to be
 8944+confused with RoarAudio, which is something completely
 8945+different.
 8946+.UNINDENT
 8947+.UNINDENT
 8948+.TP
 8949+.B \fBsndio\fP
 8950+Audio output to the OpenBSD sndio sound system
 8951+.sp
 8952+\fBNOTE:\fP
 8953+.INDENT 7.0
 8954+.INDENT 3.5
 8955+Experimental. There are known bugs and issues.
 8956+.UNINDENT
 8957+.UNINDENT
 8958+.sp
 8959+(Note: only supports mono, stereo, 4.0, 5.1 and 7.1 channel
 8960+layouts.)
 8961+.TP
 8962+.B \fBwasapi\fP
 8963+Audio output to the Windows Audio Session API.
 8964+.UNINDENT
 8965+.SH VIDEO OUTPUT DRIVERS
 8966+.sp
 8967+Video output drivers are interfaces to different video output facilities. The
 8968+syntax is:
 8969+.INDENT 0.0
 8970+.TP
 8971+.B \fB\-\-vo=<driver1,driver2,...[,]>\fP
 8972+Specify a priority list of video output drivers to be used.
 8973+.UNINDENT
 8974+.sp
 8975+If the list has a trailing \fB,\fP, mpv will fall back on drivers not contained
 8976+in the list.
 8977+.sp
 8978+\fBNOTE:\fP
 8979+.INDENT 0.0
 8980+.INDENT 3.5
 8981+See \fB\-\-vo=help\fP for a list of compiled\-in video output drivers.
 8982+.sp
 8983+The recommended output driver is \fB\-\-vo=gpu\fP, which is the default. All
 8984+other drivers are for compatibility or special purposes. If the default
 8985+does not work, it will fallback to other drivers (in the same order as
 8986+listed by \fB\-\-vo=help\fP).
 8987+.UNINDENT
 8988+.UNINDENT
 8989+.sp
 8990+Available video output drivers are:
 8991+.INDENT 0.0
 8992+.TP
 8993+.B \fBxv\fP (X11 only)
 8994+Uses the XVideo extension to enable hardware\-accelerated display. This is
 8995+the most compatible VO on X, but may be low\-quality, and has issues with
 8996+OSD and subtitle display.
 8997+.sp
 8998+\fBNOTE:\fP
 8999+.INDENT 7.0
 9000+.INDENT 3.5
 9001+This driver is for compatibility with old systems.
 9002+.UNINDENT
 9003+.UNINDENT
 9004+.sp
 9005+The following global options are supported by this video output:
 9006+.INDENT 7.0
 9007+.TP
 9008+.B \fB\-\-xv\-adaptor=<number>\fP
 9009+Select a specific XVideo adapter (check xvinfo results).
 9010+.TP
 9011+.B \fB\-\-xv\-port=<number>\fP
 9012+Select a specific XVideo port.
 9013+.TP
 9014+.B \fB\-\-xv\-ck=<cur|use|set>\fP
 9015+Select the source from which the color key is taken (default: cur).
 9016+.INDENT 7.0
 9017+.TP
 9018+.B cur
 9019+The default takes the color key currently set in Xv.
 9020+.TP
 9021+.B use
 9022+Use but do not set the color key from mpv (use the \fB\-\-colorkey\fP
 9023+option to change it).
 9024+.TP
 9025+.B set
 9026+Same as use but also sets the supplied color key.
 9027+.UNINDENT
 9028+.TP
 9029+.B \fB\-\-xv\-ck\-method=<none|man|bg|auto>\fP
 9030+Sets the color key drawing method (default: man).
 9031+.INDENT 7.0
 9032+.TP
 9033+.B none
 9034+Disables color\-keying.
 9035+.TP
 9036+.B man
 9037+Draw the color key manually (reduces flicker in some cases).
 9038+.TP
 9039+.B bg
 9040+Set the color key as window background.
 9041+.TP
 9042+.B auto
 9043+Let Xv draw the color key.
 9044+.UNINDENT
 9045+.TP
 9046+.B \fB\-\-xv\-colorkey=<number>\fP
 9047+Changes the color key to an RGB value of your choice. \fB0x000000\fP is
 9048+black and \fB0xffffff\fP is white.
 9049+.TP
 9050+.B \fB\-\-xv\-buffers=<number>\fP
 9051+Number of image buffers to use for the internal ringbuffer (default: 2).
 9052+Increasing this will use more memory, but might help with the X server
 9053+not responding quickly enough if video FPS is close to or higher than
 9054+the display refresh rate.
 9055+.UNINDENT
 9056+.TP
 9057+.B \fBx11\fP (X11 only)
 9058+Shared memory video output driver without hardware acceleration that works
 9059+whenever X11 is present.
 9060+.sp
 9061+Since mpv 0.30.0, you may need to use \fB\-\-profile=sw\-fast\fP to get decent
 9062+performance.
 9063+.sp
 9064+\fBNOTE:\fP
 9065+.INDENT 7.0
 9066+.INDENT 3.5
 9067+This is a fallback only, and should not be normally used.
 9068+.UNINDENT
 9069+.UNINDENT
 9070+.TP
 9071+.B \fBvdpau\fP (X11 only)
 9072+Uses the VDPAU interface to display and optionally also decode video.
 9073+Hardware decoding is used with \fB\-\-hwdec=vdpau\fP\&.
 9074+.sp
 9075+\fBNOTE:\fP
 9076+.INDENT 7.0
 9077+.INDENT 3.5
 9078+Earlier versions of mpv (and MPlayer, mplayer2) provided sub\-options
 9079+to tune vdpau post\-processing, like \fBdeint\fP, \fBsharpen\fP, \fBdenoise\fP,
 9080+\fBchroma\-deint\fP, \fBpullup\fP, \fBhqscaling\fP\&. These sub\-options are
 9081+deprecated, and you should use the \fBvdpaupp\fP video filter instead.
 9082+.UNINDENT
 9083+.UNINDENT
 9084+.sp
 9085+The following global options are supported by this video output:
 9086+.INDENT 7.0
 9087+.TP
 9088+.B \fB\-\-vo\-vdpau\-sharpen=<\-1\-1>\fP
 9089+(Deprecated. See note about \fBvdpaupp\fP\&.)
 9090+.sp
 9091+For positive values, apply a sharpening algorithm to the video, for
 9092+negative values a blurring algorithm (default: 0).
 9093+.TP
 9094+.B \fB\-\-vo\-vdpau\-denoise=<0\-1>\fP
 9095+(Deprecated. See note about \fBvdpaupp\fP\&.)
 9096+.sp
 9097+Apply a noise reduction algorithm to the video (default: 0; no noise
 9098+reduction).
 9099+.TP
 9100+.B \fB\-\-vo\-vdpau\-deint=<\-4\-4>\fP
 9101+(Deprecated. See note about \fBvdpaupp\fP\&.)
 9102+.sp
 9103+Select deinterlacing mode (default: 0). In older versions (as well as
 9104+MPlayer/mplayer2) you could use this option to enable deinterlacing.
 9105+This doesn\(aqt work anymore, and deinterlacing is enabled with either
 9106+the \fBd\fP key (by default mapped to the command \fBcycle deinterlace\fP),
 9107+or the \fB\-\-deinterlace\fP option. Also, to select the default deint mode,
 9108+you should use something like \fB\-\-vf\-defaults=vdpaupp:deint\-mode=temporal\fP
 9109+instead of this sub\-option.
 9110+.INDENT 7.0
 9111+.TP
 9112+.B 0
 9113+Pick the \fBvdpaupp\fP video filter default, which corresponds to 3.
 9114+.TP
 9115+.B 1
 9116+Show only first field.
 9117+.TP
 9118+.B 2
 9119+Bob deinterlacing.
 9120+.TP
 9121+.B 3
 9122+Motion\-adaptive temporal deinterlacing. May lead to A/V desync
 9123+with slow video hardware and/or high resolution.
 9124+.TP
 9125+.B 4
 9126+Motion\-adaptive temporal deinterlacing with edge\-guided spatial
 9127+interpolation. Needs fast video hardware.
 9128+.UNINDENT
 9129+.TP
 9130+.B \fB\-\-vo\-vdpau\-chroma\-deint\fP
 9131+(Deprecated. See note about \fBvdpaupp\fP\&.)
 9132+.sp
 9133+Makes temporal deinterlacers operate both on luma and chroma (default).
 9134+Use no\-chroma\-deint to solely use luma and speed up advanced
 9135+deinterlacing. Useful with slow video memory.
 9136+.TP
 9137+.B \fB\-\-vo\-vdpau\-pullup\fP
 9138+(Deprecated. See note about \fBvdpaupp\fP\&.)
 9139+.sp
 9140+Try to apply inverse telecine, needs motion adaptive temporal
 9141+deinterlacing.
 9142+.TP
 9143+.B \fB\-\-vo\-vdpau\-hqscaling=<0\-9>\fP
 9144+(Deprecated. See note about \fBvdpaupp\fP\&.)
 9145+.INDENT 7.0
 9146+.TP
 9147+.B 0
 9148+Use default VDPAU scaling (default).
 9149+.TP
 9150+.B 1\-9
 9151+Apply high quality VDPAU scaling (needs capable hardware).
 9152+.UNINDENT
 9153+.TP
 9154+.B \fB\-\-vo\-vdpau\-fps=<number>\fP
 9155+Override autodetected display refresh rate value (the value is needed
 9156+for framedrop to allow video playback rates higher than display
 9157+refresh rate, and for vsync\-aware frame timing adjustments). Default 0
 9158+means use autodetected value. A positive value is interpreted as a
 9159+refresh rate in Hz and overrides the autodetected value. A negative
 9160+value disables all timing adjustment and framedrop logic.
 9161+.TP
 9162+.B \fB\-\-vo\-vdpau\-composite\-detect\fP
 9163+NVIDIA\(aqs current VDPAU implementation behaves somewhat differently
 9164+under a compositing window manager and does not give accurate frame
 9165+timing information. With this option enabled, the player tries to
 9166+detect whether a compositing window manager is active. If one is
 9167+detected, the player disables timing adjustments as if the user had
 9168+specified \fBfps=\-1\fP (as they would be based on incorrect input). This
 9169+means timing is somewhat less accurate than without compositing, but
 9170+with the composited mode behavior of the NVIDIA driver, there is no
 9171+hard playback speed limit even without the disabled logic. Enabled by
 9172+default, use \fB\-\-vo\-vdpau\-composite\-detect=no\fP to disable.
 9173+.TP
 9174+.B \fB\-\-vo\-vdpau\-queuetime\-windowed=<number>\fP and \fBqueuetime\-fs=<number>\fP
 9175+Use VDPAU\(aqs presentation queue functionality to queue future video
 9176+frame changes at most this many milliseconds in advance (default: 50).
 9177+See below for additional information.
 9178+.TP
 9179+.B \fB\-\-vo\-vdpau\-output\-surfaces=<2\-15>\fP
 9180+Allocate this many output surfaces to display video frames (default:
 9181+3). See below for additional information.
 9182+.TP
 9183+.B \fB\-\-vo\-vdpau\-colorkey=<#RRGGBB|#AARRGGBB>\fP
 9184+Set the VDPAU presentation queue background color, which in practice
 9185+is the colorkey used if VDPAU operates in overlay mode (default:
 9186+\fB#020507\fP, some shade of black). If the alpha component of this value
 9187+is 0, the default VDPAU colorkey will be used instead (which is usually
 9188+green).
 9189+.TP
 9190+.B \fB\-\-vo\-vdpau\-force\-yuv\fP
 9191+Never accept RGBA input. This means mpv will insert a filter to convert
 9192+to a YUV format before the VO. Sometimes useful to force availability
 9193+of certain YUV\-only features, like video equalizer or deinterlacing.
 9194+.UNINDENT
 9195+.sp
 9196+Using the VDPAU frame queuing functionality controlled by the queuetime
 9197+options makes mpv\(aqs frame flip timing less sensitive to system CPU load and
 9198+allows mpv to start decoding the next frame(s) slightly earlier, which can
 9199+reduce jitter caused by individual slow\-to\-decode frames. However, the
 9200+NVIDIA graphics drivers can make other window behavior such as window moves
 9201+choppy if VDPAU is using the blit queue (mainly happens if you have the
 9202+composite extension enabled) and this feature is active. If this happens on
 9203+your system and it bothers you then you can set the queuetime value to 0 to
 9204+disable this feature. The settings to use in windowed and fullscreen mode
 9205+are separate because there should be no reason to disable this for
 9206+fullscreen mode (as the driver issue should not affect the video itself).
 9207+.sp
 9208+You can queue more frames ahead by increasing the queuetime values and the
 9209+\fBoutput_surfaces\fP count (to ensure enough surfaces to buffer video for a
 9210+certain time ahead you need at least as many surfaces as the video has
 9211+frames during that time, plus two). This could help make video smoother in
 9212+some cases. The main downsides are increased video RAM requirements for
 9213+the surfaces and laggier display response to user commands (display
 9214+changes only become visible some time after they\(aqre queued). The graphics
 9215+driver implementation may also have limits on the length of maximum
 9216+queuing time or number of queued surfaces that work well or at all.
 9217+.TP
 9218+.B \fBdirect3d\fP (Windows only)
 9219+Video output driver that uses the Direct3D interface.
 9220+.sp
 9221+\fBNOTE:\fP
 9222+.INDENT 7.0
 9223+.INDENT 3.5
 9224+This driver is for compatibility with systems that don\(aqt provide
 9225+proper OpenGL drivers, and where ANGLE does not perform well.
 9226+.UNINDENT
 9227+.UNINDENT
 9228+.sp
 9229+\fBNOTE:\fP
 9230+.INDENT 7.0
 9231+.INDENT 3.5
 9232+Before to 0.21.0, \fBdirect3d_shaders\fP and \fBdirect3d\fP were
 9233+different, with \fBdirect3d\fP not using shader by default. Now
 9234+both use shaders by default, and \fBdirect3d_shaders\fP is a
 9235+deprecated alias. Use the \fB\-\-vo\-direct3d\-prefer\-stretchrect\fP
 9236+or the \fB\-\-vo\-direct3d\-disable\-shaders\fP options to get the old
 9237+behavior of \fBdirect3d\fP\&.
 9238+.UNINDENT
 9239+.UNINDENT
 9240+.sp
 9241+The following global options are supported by this video output:
 9242+.INDENT 7.0
 9243+.TP
 9244+.B \fB\-\-vo\-direct3d\-prefer\-stretchrect\fP
 9245+Use \fBIDirect3DDevice9::StretchRect\fP over other methods if possible.
 9246+.TP
 9247+.B \fB\-\-vo\-direct3d\-disable\-stretchrect\fP
 9248+Never render the video using \fBIDirect3DDevice9::StretchRect\fP\&.
 9249+.TP
 9250+.B \fB\-\-vo\-direct3d\-disable\-textures\fP
 9251+Never render the video using D3D texture rendering. Rendering with
 9252+textures + shader will still be allowed. Add \fBdisable\-shaders\fP to
 9253+completely disable video rendering with textures.
 9254+.TP
 9255+.B \fB\-\-vo\-direct3d\-disable\-shaders\fP
 9256+Never use shaders when rendering video.
 9257+.TP
 9258+.B \fB\-\-vo\-direct3d\-only\-8bit\fP
 9259+Never render YUV video with more than 8 bits per component.
 9260+Using this flag will force software conversion to 8\-bit.
 9261+.TP
 9262+.B \fB\-\-vo\-direct3d\-disable\-texture\-align\fP
 9263+Normally texture sizes are always aligned to 16. With this option
 9264+enabled, the video texture will always have exactly the same size as
 9265+the video itself.
 9266+.UNINDENT
 9267+.sp
 9268+Debug options. These might be incorrect, might be removed in the future,
 9269+might crash, might cause slow downs, etc. Contact the developers if you
 9270+actually need any of these for performance or proper operation.
 9271+.INDENT 7.0
 9272+.TP
 9273+.B \fB\-\-vo\-direct3d\-force\-power\-of\-2\fP
 9274+Always force textures to power of 2, even if the device reports
 9275+non\-power\-of\-2 texture sizes as supported.
 9276+.TP
 9277+.B \fB\-\-vo\-direct3d\-texture\-memory=<mode>\fP
 9278+Only affects operation with shaders/texturing enabled, and (E)OSD.
 9279+Possible values:
 9280+.INDENT 7.0
 9281+.TP
 9282+.B \fBdefault\fP (default)
 9283+Use \fBD3DPOOL_DEFAULT\fP, with a \fBD3DPOOL_SYSTEMMEM\fP texture for
 9284+locking. If the driver supports \fBD3DDEVCAPS_TEXTURESYSTEMMEMORY\fP,
 9285+\fBD3DPOOL_SYSTEMMEM\fP is used directly.
 9286+.TP
 9287+.B \fBdefault\-pool\fP
 9288+Use \fBD3DPOOL_DEFAULT\fP\&. (Like \fBdefault\fP, but never use a
 9289+shadow\-texture.)
 9290+.TP
 9291+.B \fBdefault\-pool\-shadow\fP
 9292+Use \fBD3DPOOL_DEFAULT\fP, with a \fBD3DPOOL_SYSTEMMEM\fP texture for
 9293+locking. (Like \fBdefault\fP, but always force the shadow\-texture.)
 9294+.TP
 9295+.B \fBmanaged\fP
 9296+Use \fBD3DPOOL_MANAGED\fP\&.
 9297+.TP
 9298+.B \fBscratch\fP
 9299+Use \fBD3DPOOL_SCRATCH\fP, with a \fBD3DPOOL_SYSTEMMEM\fP texture for
 9300+locking.
 9301+.UNINDENT
 9302+.TP
 9303+.B \fB\-\-vo\-direct3d\-swap\-discard\fP
 9304+Use \fBD3DSWAPEFFECT_DISCARD\fP, which might be faster.
 9305+Might be slower too, as it must(?) clear every frame.
 9306+.TP
 9307+.B \fB\-\-vo\-direct3d\-exact\-backbuffer\fP
 9308+Always resize the backbuffer to window size.
 9309+.UNINDENT
 9310+.TP
 9311+.B \fBgpu\fP
 9312+General purpose, customizable, GPU\-accelerated video output driver. It
 9313+supports extended scaling methods, dithering, color management, custom
 9314+shaders, HDR, and more.
 9315+.sp
 9316+See \fI\%GPU renderer options\fP for options specific to this VO.
 9317+.sp
 9318+By default, it tries to use fast and fail\-safe settings. Use the
 9319+\fBgpu\-hq\fP profile to use this driver with defaults set to high quality
 9320+rendering. The profile can be applied with \fB\-\-profile=gpu\-hq\fP and its
 9321+contents can be viewed with \fB\-\-show\-profile=gpu\-hq\fP\&.
 9322+.sp
 9323+This VO abstracts over several possible graphics APIs and windowing
 9324+contexts, which can be influenced using the \fB\-\-gpu\-api\fP and
 9325+\fB\-\-gpu\-context\fP options.
 9326+.sp
 9327+Hardware decoding over OpenGL\-interop is supported to some degree. Note
 9328+that in this mode, some corner case might not be gracefully handled, and
 9329+color space conversion and chroma upsampling is generally in the hand of
 9330+the hardware decoder APIs.
 9331+.sp
 9332+\fBgpu\fP makes use of FBOs by default. Sometimes you can achieve better
 9333+quality or performance by changing the \fB\-\-gpu\-fbo\-format\fP option to
 9334+\fBrgb16f\fP, \fBrgb32f\fP or \fBrgb\fP\&. Known problems include Mesa/Intel not
 9335+accepting \fBrgb16\fP, Mesa sometimes not being compiled with float texture
 9336+support, and some OS X setups being very slow with \fBrgb16\fP but fast
 9337+with \fBrgb32f\fP\&. If you have problems, you can also try enabling the
 9338+\fB\-\-gpu\-dumb\-mode=yes\fP option.
 9339+.TP
 9340+.B \fBsdl\fP
 9341+SDL 2.0+ Render video output driver, depending on system with or without
 9342+hardware acceleration. Should work on all platforms supported by SDL 2.0.
 9343+For tuning, refer to your copy of the file \fBSDL_hints.h\fP\&.
 9344+.sp
 9345+\fBNOTE:\fP
 9346+.INDENT 7.0
 9347+.INDENT 3.5
 9348+This driver is for compatibility with systems that don\(aqt provide
 9349+proper graphics drivers.
 9350+.UNINDENT
 9351+.UNINDENT
 9352+.sp
 9353+The following global options are supported by this video output:
 9354+.INDENT 7.0
 9355+.TP
 9356+.B \fB\-\-sdl\-sw\fP
 9357+Continue even if a software renderer is detected.
 9358+.TP
 9359+.B \fB\-\-sdl\-switch\-mode\fP
 9360+Instruct SDL to switch the monitor video mode when going fullscreen.
 9361+.UNINDENT
 9362+.TP
 9363+.B \fBvaapi\fP
 9364+Intel VA API video output driver with support for hardware decoding. Note
 9365+that there is absolutely no reason to use this, other than compatibility.
 9366+This is low quality, and has issues with OSD.
 9367+.sp
 9368+\fBNOTE:\fP
 9369+.INDENT 7.0
 9370+.INDENT 3.5
 9371+This driver is for compatibility with crappy systems. You can
 9372+use vaapi hardware decoding with \fB\-\-vo=gpu\fP too.
 9373+.UNINDENT
 9374+.UNINDENT
 9375+.sp
 9376+The following global options are supported by this video output:
 9377+.INDENT 7.0
 9378+.TP
 9379+.B \fB\-\-vo\-vaapi\-scaling=<algorithm>\fP
 9380+.INDENT 7.0
 9381+.TP
 9382+.B default
 9383+Driver default (mpv default as well).
 9384+.TP
 9385+.B fast
 9386+Fast, but low quality.
 9387+.TP
 9388+.B hq
 9389+Unspecified driver dependent high\-quality scaling, slow.
 9390+.TP
 9391+.B nla
 9392+\fBnon\-linear anamorphic scaling\fP
 9393+.UNINDENT
 9394+.TP
 9395+.B \fB\-\-vo\-vaapi\-deint\-mode=<mode>\fP
 9396+Select deinterlacing algorithm. Note that by default deinterlacing is
 9397+initially always off, and needs to be enabled with the \fBd\fP key
 9398+(default key binding for \fBcycle deinterlace\fP).
 9399+.sp
 9400+This option doesn\(aqt apply if libva supports video post processing (vpp).
 9401+In this case, the default for \fBdeint\-mode\fP is \fBno\fP, and enabling
 9402+deinterlacing via user interaction using the methods mentioned above
 9403+actually inserts the \fBvavpp\fP video filter. If vpp is not actually
 9404+supported with the libva backend in use, you can use this option to
 9405+forcibly enable VO based deinterlacing.
 9406+.INDENT 7.0
 9407+.TP
 9408+.B no
 9409+Don\(aqt allow deinterlacing (default for newer libva).
 9410+.TP
 9411+.B first\-field
 9412+Show only first field.
 9413+.TP
 9414+.B bob
 9415+bob deinterlacing (default for older libva).
 9416+.UNINDENT
 9417+.TP
 9418+.B \fB\-\-vo\-vaapi\-scaled\-osd=<yes|no>\fP
 9419+If enabled, then the OSD is rendered at video resolution and scaled to
 9420+display resolution. By default, this is disabled, and the OSD is
 9421+rendered at display resolution if the driver supports it.
 9422+.UNINDENT
 9423+.TP
 9424+.B \fBnull\fP
 9425+Produces no video output. Useful for benchmarking.
 9426+.sp
 9427+Usually, it\(aqs better to disable video with \fB\-\-no\-video\fP instead.
 9428+.sp
 9429+The following global options are supported by this video output:
 9430+.INDENT 7.0
 9431+.TP
 9432+.B \fB\-\-vo\-null\-fps=<value>\fP
 9433+Simulate display FPS. This artificially limits how many frames the
 9434+VO accepts per second.
 9435+.UNINDENT
 9436+.TP
 9437+.B \fBcaca\fP
 9438+Color ASCII art video output driver that works on a text console.
 9439+.sp
 9440+\fBNOTE:\fP
 9441+.INDENT 7.0
 9442+.INDENT 3.5
 9443+This driver is a joke.
 9444+.UNINDENT
 9445+.UNINDENT
 9446+.TP
 9447+.B \fBtct\fP
 9448+Color Unicode art video output driver that works on a text console.
 9449+Depends on support of true color by modern terminals to display the images
 9450+at full color range. On Windows it requires an ansi terminal such as mintty.
 9451+.sp
 9452+Since mpv 0.30.0, you may need to use \fB\-\-profile=sw\-fast\fP to get decent
 9453+performance.
 9454+.INDENT 7.0
 9455+.TP
 9456+.B \fB\-\-vo\-tct\-algo=<algo>\fP
 9457+Select how to write the pixels to the terminal.
 9458+.INDENT 7.0
 9459+.TP
 9460+.B half\-blocks
 9461+Uses unicode LOWER HALF BLOCK character to achieve higher vertical
 9462+resolution. (Default.)
 9463+.TP
 9464+.B plain
 9465+Uses spaces. Causes vertical resolution to drop twofolds, but in
 9466+theory works in more places.
 9467+.UNINDENT
 9468+.TP
 9469+.B \fB\-\-vo\-tct\-width=<width>\fP  \fB\-\-vo\-tct\-height=<height>\fP
 9470+Assume the terminal has the specified character width and/or height.
 9471+These default to 80x25 if the terminal size cannot be determined.
 9472+.TP
 9473+.B \fB\-\-vo\-tct\-256=<yes|no>\fP (default: no)
 9474+Use 256 colors \- for terminals which don\(aqt support true color.
 9475+.UNINDENT
 9476+.TP
 9477+.B \fBimage\fP
 9478+Output each frame into an image file in the current directory. Each file
 9479+takes the frame number padded with leading zeros as name.
 9480+.sp
 9481+The following global options are supported by this video output:
 9482+.INDENT 7.0
 9483+.TP
 9484+.B \fB\-\-vo\-image\-format=<format>\fP
 9485+Select the image file format.
 9486+.INDENT 7.0
 9487+.TP
 9488+.B jpg
 9489+JPEG files, extension .jpg. (Default.)
 9490+.TP
 9491+.B jpeg
 9492+JPEG files, extension .jpeg.
 9493+.TP
 9494+.B png
 9495+PNG files.
 9496+.TP
 9497+.B webp
 9498+WebP files.
 9499+.UNINDENT
 9500+.TP
 9501+.B \fB\-\-vo\-image\-png\-compression=<0\-9>\fP
 9502+PNG compression factor (speed vs. file size tradeoff) (default: 7)
 9503+.TP
 9504+.B \fB\-\-vo\-image\-png\-filter=<0\-5>\fP
 9505+Filter applied prior to PNG compression (0 = none; 1 = sub; 2 = up;
 9506+3 = average; 4 = Paeth; 5 = mixed) (default: 5)
 9507+.TP
 9508+.B \fB\-\-vo\-image\-jpeg\-quality=<0\-100>\fP
 9509+JPEG quality factor (default: 90)
 9510+.TP
 9511+.B \fB\-\-vo\-image\-jpeg\-optimize=<0\-100>\fP
 9512+JPEG optimization factor (default: 100)
 9513+.TP
 9514+.B \fB\-\-vo\-image\-webp\-lossless=<yes|no>\fP
 9515+Enable writing lossless WebP files (default: no)
 9516+.TP
 9517+.B \fB\-\-vo\-image\-webp\-quality=<0\-100>\fP
 9518+WebP quality (default: 75)
 9519+.TP
 9520+.B \fB\-\-vo\-image\-webp\-compression=<0\-6>\fP
 9521+WebP compression factor (default: 4)
 9522+.TP
 9523+.B \fB\-\-vo\-image\-outdir=<dirname>\fP
 9524+Specify the directory to save the image files to (default: \fB\&./\fP).
 9525+.UNINDENT
 9526+.TP
 9527+.B \fBlibmpv\fP
 9528+For use with libmpv direct embedding. As a special case, on OS X it
 9529+is used like a normal VO within mpv (cocoa\-cb). Otherwise useless in any
 9530+other contexts.
 9531+(See \fB<mpv/render.h>\fP\&.)
 9532+.sp
 9533+This also supports many of the options the \fBgpu\fP VO has, depending on the
 9534+backend.
 9535+.TP
 9536+.B \fBrpi\fP (Raspberry Pi)
 9537+Native video output on the Raspberry Pi using the MMAL API.
 9538+.sp
 9539+This is deprecated. Use \fB\-\-vo=gpu\fP instead, which is the default and
 9540+provides the same functionality. The \fBrpi\fP VO will be removed in
 9541+mpv 0.23.0. Its functionality was folded into \-\-vo=gpu, which now uses
 9542+RPI hardware decoding by treating it as a hardware overlay (without applying
 9543+GL filtering). Also to be changed in 0.23.0: the \-\-fs flag will be reset to
 9544+"no" by default (like on the other platforms).
 9545+.sp
 9546+The following deprecated global options are supported by this video output:
 9547+.INDENT 7.0
 9548+.TP
 9549+.B \fB\-\-rpi\-display=<number>\fP
 9550+Select the display number on which the video overlay should be shown
 9551+(default: 0).
 9552+.TP
 9553+.B \fB\-\-rpi\-layer=<number>\fP
 9554+Select the dispmanx layer on which the video overlay should be shown
 9555+(default: \-10). Note that mpv will also use the 2 layers above the
 9556+selected layer, to handle the window background and OSD. Actual video
 9557+rendering will happen on the layer above the selected layer.
 9558+.TP
 9559+.B \fB\-\-rpi\-background=<yes|no>\fP
 9560+Whether to render a black background behind the video (default: no).
 9561+Normally it\(aqs better to kill the console framebuffer instead, which
 9562+gives better performance.
 9563+.TP
 9564+.B \fB\-\-rpi\-osd=<yes|no>\fP
 9565+Enabled by default. If disabled with \fBno\fP, no OSD layer is created.
 9566+This also means there will be no subtitles rendered.
 9567+.UNINDENT
 9568+.TP
 9569+.B \fBdrm\fP (Direct Rendering Manager)
 9570+Video output driver using Kernel Mode Setting / Direct Rendering Manager.
 9571+Should be used when one doesn\(aqt want to install full\-blown graphical
 9572+environment (e.g. no X). Does not support hardware acceleration (if you
 9573+need this, check the \fBdrm\fP backend for \fBgpu\fP VO).
 9574+.sp
 9575+Since mpv 0.30.0, you may need to use \fB\-\-profile=sw\-fast\fP to get decent
 9576+performance.
 9577+.sp
 9578+The following global options are supported by this video output:
 9579+.INDENT 7.0
 9580+.TP
 9581+.B \fB\-\-drm\-connector=[<gpu_number>.]<name>\fP
 9582+Select the connector to use (usually this is a monitor.) If \fB<name>\fP
 9583+is empty or \fBauto\fP, mpv renders the output on the first available
 9584+connector. Use \fB\-\-drm\-connector=help\fP to get a list of available
 9585+connectors. When using multiple graphic cards, use the \fB<gpu_number>\fP
 9586+argument to disambiguate.
 9587+(default: empty)
 9588+.TP
 9589+.B \fB\-\-drm\-mode=<preferred|highest|N|WxH[@R]>\fP
 9590+Mode to use (resolution and frame rate).
 9591+Possible values:
 9592+.INDENT 7.0
 9593+.TP
 9594+.B preferred
 9595+Use the preferred mode for the screen on the selected
 9596+connector. (default)
 9597+.TP
 9598+.B highest
 9599+Use the mode with the highest resolution available on the
 9600+selected connector.
 9601+.TP
 9602+.B N
 9603+Select mode by index.
 9604+.TP
 9605+.B WxH[@R]
 9606+Specify mode by width, height, and optionally refresh rate.
 9607+In case several modes match, selects the mode that comes
 9608+first in the EDID list of modes.
 9609+.UNINDENT
 9610+.sp
 9611+Use \fB\-\-drm\-mode=help\fP to get a list of available modes for all active
 9612+connectors.
 9613+.TP
 9614+.B \fB\-\-drm\-atomic=<no|auto>\fP
 9615+Toggle use of atomic modesetting. Mostly useful for debugging.
 9616+.INDENT 7.0
 9617+.TP
 9618+.B no
 9619+Use legacy modesetting.
 9620+.TP
 9621+.B auto
 9622+Use atomic modesetting, falling back to legacy modesetting if
 9623+not available. (default)
 9624+.UNINDENT
 9625+.sp
 9626+Note: Only affects \fBgpu\-context=drm\fP\&. \fBvo=drm\fP supports legacy
 9627+modesetting only.
 9628+.TP
 9629+.B \fB\-\-drm\-draw\-plane=<primary|overlay|N>\fP
 9630+Select the DRM plane to which video and OSD is drawn to, under normal
 9631+circumstances. The plane can be specified as \fBprimary\fP, which will
 9632+pick the first applicable primary plane; \fBoverlay\fP, which will pick
 9633+the first applicable overlay plane; or by index. The index is zero
 9634+based, and related to the CRTC.
 9635+(default: primary)
 9636+.sp
 9637+When using this option with the drmprime\-drm hwdec interop, only the OSD
 9638+is rendered to this plane.
 9639+.TP
 9640+.B \fB\-\-drm\-drmprime\-video\-plane=<primary|overlay|N>\fP
 9641+Select the DRM plane to use for video with the drmprime\-drm hwdec
 9642+interop (used by e.g. the rkmpp hwdec on RockChip SoCs, and v4l2 hwdec:s
 9643+on various other SoC:s). The plane is unused otherwise. This option
 9644+accepts the same values as \fB\-\-drm\-draw\-plane\fP\&. (default: overlay)
 9645+.sp
 9646+To be able to successfully play 4K video on various SoCs you might need
 9647+to set \fB\-\-drm\-draw\-plane=overlay \-\-drm\-drmprime\-video\-plane=primary\fP
 9648+and setting \fB\-\-drm\-draw\-surface\-size=1920x1080\fP, to render the OSD at a
 9649+lower resolution (the video when handled by the hwdec will be on the
 9650+drmprime\-video plane and at full 4K resolution)
 9651+.TP
 9652+.B \fB\-\-drm\-format=<xrgb8888|xrgb2101010>\fP
 9653+Select the DRM format to use (default: xrgb8888). This allows you to
 9654+choose the bit depth of the DRM mode. xrgb8888 is your usual 24 bit per
 9655+pixel/8 bits per channel packed RGB format with 8 bits of padding.
 9656+xrgb2101010 is a packed 30 bits per pixel/10 bits per channel packed RGB
 9657+format with 2 bits of padding.
 9658+.sp
 9659+There are cases when xrgb2101010 will work with the \fBdrm\fP VO, but not
 9660+with the \fBdrm\fP backend for the \fBgpu\fP VO. This is because with the
 9661+\fBgpu\fP VO, in addition to requiring support in your DRM driver,
 9662+requires support for xrgb2101010 in your EGL driver
 9663+.TP
 9664+.B \fB\-\-drm\-draw\-surface\-size=<[WxH]>\fP
 9665+Sets the size of the surface used on the draw plane. The surface will
 9666+then be upscaled to the current screen resolution. This option can be
 9667+useful when used together with the drmprime\-drm hwdec interop at high
 9668+resolutions, as it allows scaling the draw plane (which in this case
 9669+only handles the OSD) down to a size the GPU can handle.
 9670+.sp
 9671+When used without the drmprime\-drm hwdec interop this option will just
 9672+cause the video to get rendered at a different resolution and then
 9673+scaled to screen size.
 9674+.sp
 9675+Note: this option is only available with DRM atomic support.
 9676+(default: display resolution)
 9677+.UNINDENT
 9678+.TP
 9679+.B \fBmediacodec_embed\fP (Android)
 9680+Renders \fBIMGFMT_MEDIACODEC\fP frames directly to an \fBandroid.view.Surface\fP\&.
 9681+Requires \fB\-\-hwdec=mediacodec\fP for hardware decoding, along with
 9682+\fB\-\-vo=mediacodec_embed\fP and \fB\-\-wid=(intptr_t)(*android.view.Surface)\fP\&.
 9683+.sp
 9684+Since this video output driver uses native decoding and rendering routines,
 9685+many of mpv\(aqs features (subtitle rendering, OSD/OSC, video filters, etc)
 9686+are not available with this driver.
 9687+.sp
 9688+To use hardware decoding with \fB\-\-vo=gpu\fP instead, use
 9689+\fB\-\-hwdec=mediacodec\-copy\fP along with \fB\-\-gpu\-context=android\fP\&.
 9690+.TP
 9691+.B \fBwlshm\fP (Wayland only)
 9692+Shared memory video output driver without hardware acceleration that works
 9693+whenever Wayland is present.
 9694+.sp
 9695+Since mpv 0.30.0, you may need to use \fB\-\-profile=sw\-fast\fP to get decent
 9696+performance.
 9697+.sp
 9698+\fBNOTE:\fP
 9699+.INDENT 7.0
 9700+.INDENT 3.5
 9701+This is a fallback only, and should not be normally used.
 9702+.UNINDENT
 9703+.UNINDENT
 9704+.UNINDENT
 9705+.SH AUDIO FILTERS
 9706+.sp
 9707+Audio filters allow you to modify the audio stream and its properties. The
 9708+syntax is:
 9709+.INDENT 0.0
 9710+.TP
 9711+.B \fB\-\-af=...\fP
 9712+Setup a chain of audio filters. See \fB\-\-vf\fP (\fI\%VIDEO FILTERS\fP) for the
 9713+full syntax.
 9714+.UNINDENT
 9715+.sp
 9716+\fBNOTE:\fP
 9717+.INDENT 0.0
 9718+.INDENT 3.5
 9719+To get a full list of available audio filters, see \fB\-\-af=help\fP\&.
 9720+.sp
 9721+Also, keep in mind that most actual filters are available via the \fBlavfi\fP
 9722+wrapper, which gives you access to most of libavfilter\(aqs filters. This
 9723+includes all filters that have been ported from MPlayer to libavfilter.
 9724+.sp
 9725+The \fB\-\-vf\fP description describes how libavfilter can be used and how to
 9726+workaround deprecated mpv filters.
 9727+.UNINDENT
 9728+.UNINDENT
 9729+.sp
 9730+See \fB\-\-vf\fP group of options for info on how \fB\-\-af\-defaults\fP, \fB\-\-af\-add\fP,
 9731+\fB\-\-af\-pre\fP, \fB\-\-af\-del\fP, \fB\-\-af\-clr\fP, and possibly others work.
 9732+.sp
 9733+Available filters are:
 9734+.INDENT 0.0
 9735+.TP
 9736+.B \fBlavcac3enc[=options]\fP
 9737+Encode multi\-channel audio to AC\-3 at runtime using libavcodec. Supports
 9738+16\-bit native\-endian input format, maximum 6 channels. The output is
 9739+big\-endian when outputting a raw AC\-3 stream, native\-endian when
 9740+outputting to S/PDIF. If the input sample rate is not 48 kHz, 44.1 kHz or
 9741+32 kHz, it will be resampled to 48 kHz.
 9742+.INDENT 7.0
 9743+.TP
 9744+.B \fBtospdif=<yes|no>\fP
 9745+Output raw AC\-3 stream if \fBno\fP, output to S/PDIF for
 9746+pass\-through if \fByes\fP (default).
 9747+.TP
 9748+.B \fBbitrate=<rate>\fP
 9749+The bitrate use for the AC\-3 stream. Set it to 384 to get 384 kbps.
 9750+.sp
 9751+The default is 640. Some receivers might not be able to handle this.
 9752+.sp
 9753+Valid values: 32, 40, 48, 56, 64, 80, 96, 112, 128,
 9754+160, 192, 224, 256, 320, 384, 448, 512, 576, 640.
 9755+.sp
 9756+The special value \fBauto\fP selects a default bitrate based on the
 9757+input channel number:
 9758+.INDENT 7.0
 9759+.TP
 9760+.B 1ch
 9761+96
 9762+.TP
 9763+.B 2ch
 9764+192
 9765+.TP
 9766+.B 3ch
 9767+224
 9768+.TP
 9769+.B 4ch
 9770+384
 9771+.TP
 9772+.B 5ch
 9773+448
 9774+.TP
 9775+.B 6ch
 9776+448
 9777+.UNINDENT
 9778+.TP
 9779+.B \fBminch=<n>\fP
 9780+If the input channel number is less than \fB<minch>\fP, the filter will
 9781+detach itself (default: 3).
 9782+.TP
 9783+.B \fBencoder=<name>\fP
 9784+Select the libavcodec encoder used. Currently, this should be an AC\-3
 9785+encoder, and using another codec will fail horribly.
 9786+.UNINDENT
 9787+.TP
 9788+.B \fBformat=format:srate:channels:out\-srate:out\-channels\fP
 9789+Does not do any format conversion itself. Rather, it may cause the
 9790+filter system to insert necessary conversion filters before or after this
 9791+filter if needed. It is primarily useful for controlling the audio format
 9792+going into other filters. To specify the format for audio output, see
 9793+\fB\-\-audio\-format\fP, \fB\-\-audio\-samplerate\fP, and \fB\-\-audio\-channels\fP\&. This
 9794+filter is able to force a particular format, whereas \fB\-\-audio\-*\fP
 9795+may be overridden by the ao based on output compatibility.
 9796+.sp
 9797+All parameters are optional. The first 3 parameters restrict what the filter
 9798+accepts as input. They will therefore cause conversion filters to be
 9799+inserted before this one.  The \fBout\-\fP parameters tell the filters or audio
 9800+outputs following this filter how to interpret the data without actually
 9801+doing a conversion. Setting these will probably just break things unless you
 9802+really know you want this for some reason, such as testing or dealing with
 9803+broken media.
 9804+.INDENT 7.0
 9805+.TP
 9806+.B \fB<format>\fP
 9807+Force conversion to this format. Use \fB\-\-af=format=format=help\fP to get
 9808+a list of valid formats.
 9809+.TP
 9810+.B \fB<srate>\fP
 9811+Force conversion to a specific sample rate. The rate is an integer,
 9812+48000 for example.
 9813+.TP
 9814+.B \fB<channels>\fP
 9815+Force mixing to a specific channel layout. See \fB\-\-audio\-channels\fP option
 9816+for possible values.
 9817+.UNINDENT
 9818+.sp
 9819+\fB<out\-srate>\fP
 9820+.sp
 9821+\fB<out\-channels>\fP
 9822+.sp
 9823+\fINOTE\fP: this filter used to be named \fBforce\fP\&. The old \fBformat\fP filter
 9824+used to do conversion itself, unlike this one which lets the filter system
 9825+handle the conversion.
 9826+.TP
 9827+.B \fBscaletempo[=option1:option2:...]\fP
 9828+Scales audio tempo without altering pitch, optionally synced to playback
 9829+speed (default).
 9830+.sp
 9831+This works by playing \(aqstride\(aq ms of audio at normal speed then consuming
 9832+\(aqstride*scale\(aq ms of input audio. It pieces the strides together by
 9833+blending \(aqoverlap\(aq% of stride with audio following the previous stride. It
 9834+optionally performs a short statistical analysis on the next \(aqsearch\(aq ms
 9835+of audio to determine the best overlap position.
 9836+.INDENT 7.0
 9837+.TP
 9838+.B \fBscale=<amount>\fP
 9839+Nominal amount to scale tempo. Scales this amount in addition to
 9840+speed. (default: 1.0)
 9841+.TP
 9842+.B \fBstride=<amount>\fP
 9843+Length in milliseconds to output each stride. Too high of a value will
 9844+cause noticeable skips at high scale amounts and an echo at low scale
 9845+amounts. Very low values will alter pitch. Increasing improves
 9846+performance. (default: 60)
 9847+.TP
 9848+.B \fBoverlap=<percent>\fP
 9849+Percentage of stride to overlap. Decreasing improves performance.
 9850+(default: .20)
 9851+.TP
 9852+.B \fBsearch=<amount>\fP
 9853+Length in milliseconds to search for best overlap position. Decreasing
 9854+improves performance greatly. On slow systems, you will probably want
 9855+to set this very low. (default: 14)
 9856+.TP
 9857+.B \fBspeed=<tempo|pitch|both|none>\fP
 9858+Set response to speed change.
 9859+.INDENT 7.0
 9860+.TP
 9861+.B tempo
 9862+Scale tempo in sync with speed (default).
 9863+.TP
 9864+.B pitch
 9865+Reverses effect of filter. Scales pitch without altering tempo.
 9866+Add this to your \fBinput.conf\fP to step by musical semi\-tones:
 9867+.INDENT 7.0
 9868+.INDENT 3.5
 9869+.sp
 9870+.nf
 9871+.ft C
 9872+[ multiply speed 0.9438743126816935
 9873+] multiply speed 1.059463094352953
 9874+.ft P
 9875+.fi
 9876+.UNINDENT
 9877+.UNINDENT
 9878+.sp
 9879+\fBWARNING:\fP
 9880+.INDENT 7.0
 9881+.INDENT 3.5
 9882+Loses sync with video.
 9883+.UNINDENT
 9884+.UNINDENT
 9885+.TP
 9886+.B both
 9887+Scale both tempo and pitch.
 9888+.TP
 9889+.B none
 9890+Ignore speed changes.
 9891+.UNINDENT
 9892+.UNINDENT
 9893+.INDENT 7.0
 9894+.INDENT 3.5
 9895+.IP "Examples"
 9896+.INDENT 0.0
 9897+.TP
 9898+.B \fBmpv \-\-af=scaletempo \-\-speed=1.2 media.ogg\fP
 9899+Would play media at 1.2x normal speed, with audio at normal
 9900+pitch. Changing playback speed would change audio tempo to match.
 9901+.TP
 9902+.B \fBmpv \-\-af=scaletempo=scale=1.2:speed=none \-\-speed=1.2 media.ogg\fP
 9903+Would play media at 1.2x normal speed, with audio at normal
 9904+pitch, but changing playback speed would have no effect on audio
 9905+tempo.
 9906+.TP
 9907+.B \fBmpv \-\-af=scaletempo=stride=30:overlap=.50:search=10 media.ogg\fP
 9908+Would tweak the quality and performance parameters.
 9909+.TP
 9910+.B \fBmpv \-\-af=scaletempo=scale=1.2:speed=pitch audio.ogg\fP
 9911+Would play media at 1.2x normal speed, with audio at normal pitch.
 9912+Changing playback speed would change pitch, leaving audio tempo at
 9913+1.2x.
 9914+.UNINDENT
 9915+.UNINDENT
 9916+.UNINDENT
 9917+.TP
 9918+.B \fBrubberband\fP
 9919+High quality pitch correction with librubberband. This can be used in place
 9920+of \fBscaletempo\fP, and will be used to adjust audio pitch when playing
 9921+at speed different from normal. It can also be used to adjust audio pitch
 9922+without changing playback speed.
 9923+.INDENT 7.0
 9924+.TP
 9925+.B \fB<pitch\-scale>\fP
 9926+Sets the pitch scaling factor. Frequencies are multiplied by this value.
 9927+.UNINDENT
 9928+.sp
 9929+This filter has a number of additional sub\-options. You can list them with
 9930+\fBmpv \-\-af=rubberband=help\fP\&. This will also show the default values
 9931+for each option. The options are not documented here, because they are
 9932+merely passed to librubberband. Look at the librubberband documentation
 9933+to learn what each option does:
 9934+\fI\%http://breakfastquay.com/rubberband/code\-doc/classRubberBand_1_1RubberBandStretcher.html\fP
 9935+(The mapping of the mpv rubberband filter sub\-option names and values to
 9936+those of librubberband follows a simple pattern: \fB"Option" + Name + Value\fP\&.)
 9937+.sp
 9938+This filter supports the following \fBaf\-command\fP commands:
 9939+.INDENT 7.0
 9940+.TP
 9941+.B \fBset\-pitch\fP
 9942+Set the \fB<pitch\-scale>\fP argument dynamically. This can be used to
 9943+change the playback pitch at runtime. Note that speed is controlled
 9944+using the standard \fBspeed\fP property, not \fBaf\-command\fP\&.
 9945+.TP
 9946+.B \fBmultiply\-pitch <factor>\fP
 9947+Multiply the current value of \fB<pitch\-scale>\fP dynamically.  For
 9948+example: 0.5 to go down by an octave, 1.5 to go up by a perfect fifth.
 9949+If you want to go up or down by semi\-tones, use 1.059463094352953 and
 9950+0.9438743126816935
 9951+.UNINDENT
 9952+.TP
 9953+.B \fBlavfi=graph\fP
 9954+Filter audio using FFmpeg\(aqs libavfilter.
 9955+.INDENT 7.0
 9956+.TP
 9957+.B \fB<graph>\fP
 9958+Libavfilter graph. See \fBlavfi\fP video filter for details \- the graph
 9959+syntax is the same.
 9960+.sp
 9961+\fBWARNING:\fP
 9962+.INDENT 7.0
 9963+.INDENT 3.5
 9964+Don\(aqt forget to quote libavfilter graphs as described in the lavfi
 9965+video filter section.
 9966+.UNINDENT
 9967+.UNINDENT
 9968+.TP
 9969+.B \fBo=<string>\fP
 9970+AVOptions.
 9971+.TP
 9972+.B \fBfix\-pts=<yes|no>\fP
 9973+Determine PTS based on sample count (default: no). If this is enabled,
 9974+the player won\(aqt rely on libavfilter passing through PTS accurately.
 9975+Instead, it pass a sample count as PTS to libavfilter, and compute the
 9976+PTS used by mpv based on that and the input PTS. This helps with filters
 9977+which output a recomputed PTS instead of the original PTS (including
 9978+filters which require the PTS to start at 0). mpv normally expects
 9979+filters to not touch the PTS (or only to the extent of changing frame
 9980+boundaries), so this is not the default, but it will be needed to use
 9981+broken filters. In practice, these broken filters will either cause slow
 9982+A/V desync over time (with some files), or break playback completely if
 9983+you seek or start playback from the middle of a file.
 9984+.UNINDENT
 9985+.UNINDENT
 9986+.SH VIDEO FILTERS
 9987+.sp
 9988+Video filters allow you to modify the video stream and its properties. All of
 9989+the information described in this section applies to audio filters as well
 9990+(generally using the prefix \fB\-\-af\fP instead of \fB\-\-vf\fP).
 9991+.sp
 9992+The exact syntax is:
 9993+.INDENT 0.0
 9994+.TP
 9995+.B \fB\-\-vf=<filter1[=parameter1:parameter2:...],filter2,...>\fP
 9996+Setup a chain of video filters. This consists on the filter name, and an
 9997+option list of parameters after \fB=\fP\&. The parameters are separated by
 9998+\fB:\fP (not \fB,\fP, as that starts a new filter entry).
 9999+.sp
10000+Before the filter name, a label can be specified with \fB@name:\fP, where
10001+name is an arbitrary user\-given name, which identifies the filter. This
10002+is only needed if you want to toggle the filter at runtime.
10003+.sp
10004+A \fB!\fP before the filter name means the filter is disabled by default. It
10005+will be skipped on filter creation. This is also useful for runtime filter
10006+toggling.
10007+.sp
10008+See the \fBvf\fP command (and \fBtoggle\fP sub\-command) for further explanations
10009+and examples.
10010+.sp
10011+The general filter entry syntax is:
10012+.INDENT 7.0
10013+.INDENT 3.5
10014+\fB["@"<label\-name>":"] ["!"] <filter\-name> [ "=" <filter\-parameter\-list> ]\fP
10015+.UNINDENT
10016+.UNINDENT
10017+.sp
10018+or for the special "toggle" syntax (see \fBvf\fP command):
10019+.INDENT 7.0
10020+.INDENT 3.5
10021+\fB"@"<label\-name>\fP
10022+.UNINDENT
10023+.UNINDENT
10024+.sp
10025+and the \fBfilter\-parameter\-list\fP:
10026+.INDENT 7.0
10027+.INDENT 3.5
10028+\fB<filter\-parameter> | <filter\-parameter> "," <filter\-parameter\-list>\fP
10029+.UNINDENT
10030+.UNINDENT
10031+.sp
10032+and \fBfilter\-parameter\fP:
10033+.INDENT 7.0
10034+.INDENT 3.5
10035+\fB( <param\-name> "=" <param\-value> ) | <param\-value>\fP
10036+.UNINDENT
10037+.UNINDENT
10038+.sp
10039+\fBparam\-value\fP can further be quoted in \fB[\fP / \fB]\fP in case the value
10040+contains characters like \fB,\fP or \fB=\fP\&. This is used in particular with
10041+the \fBlavfi\fP filter, which uses a very similar syntax as mpv (MPlayer
10042+historically) to specify filters and their parameters.
10043+.UNINDENT
10044+.sp
10045+Filters can be manipulated at run time. You can use \fB@\fP labels as described
10046+above in combination with the \fBvf\fP command (see \fI\%COMMAND INTERFACE\fP) to get
10047+more control over this. Initially disabled filters with \fB!\fP are useful for
10048+this as well.
10049+.sp
10050+You can also set defaults for each filter. The defaults are applied before the
10051+normal filter parameters. This is deprecated and never worked for the
10052+libavfilter bridge.
10053+.INDENT 0.0
10054+.TP
10055+.B \fB\-\-vf\-defaults=<filter1[=parameter1:parameter2:...],filter2,...>\fP
10056+Set defaults for each filter. (Deprecated. \fB\-\-af\-defaults\fP is deprecated
10057+as well.)
10058+.UNINDENT
10059+.sp
10060+\fBNOTE:\fP
10061+.INDENT 0.0
10062+.INDENT 3.5
10063+To get a full list of available video filters, see \fB\-\-vf=help\fP and
10064+\fI\%http://ffmpeg.org/ffmpeg\-filters.html\fP .
10065+.sp
10066+Also, keep in mind that most actual filters are available via the \fBlavfi\fP
10067+wrapper, which gives you access to most of libavfilter\(aqs filters. This
10068+includes all filters that have been ported from MPlayer to libavfilter.
10069+.sp
10070+Most builtin filters are deprecated in some ways, unless they\(aqre only available
10071+in mpv (such as filters which deal with mpv specifics, or which are
10072+implemented in mpv only).
10073+.sp
10074+If a filter is not builtin, the \fBlavfi\-bridge\fP will be automatically
10075+tried. This bridge does not support help output, and does not verify
10076+parameters before the filter is actually used. Although the mpv syntax
10077+is rather similar to libavfilter\(aqs, it\(aqs not the same. (Which means not
10078+everything accepted by vf_lavfi\(aqs \fBgraph\fP option will be accepted by
10079+\fB\-\-vf\fP\&.)
10080+.sp
10081+You can also prefix the filter name with \fBlavfi\-\fP to force the wrapper.
10082+This is helpful if the filter name collides with a deprecated mpv builtin
10083+filter. For example \fB\-\-vf=lavfi\-scale=args\fP would use libavfilter\(aqs
10084+\fBscale\fP filter over mpv\(aqs deprecated builtin one.
10085+.UNINDENT
10086+.UNINDENT
10087+.sp
10088+Video filters are managed in lists. There are a few commands to manage the
10089+filter list.
10090+.INDENT 0.0
10091+.TP
10092+.B \fB\-\-vf\-append=filter\fP
10093+Appends the filter given as arguments to the filter list.
10094+.TP
10095+.B \fB\-\-vf\-add=filter\fP
10096+Appends the filter given as arguments to the filter list. (Passing multiple
10097+filters is currently still possible, but deprecated.)
10098+.TP
10099+.B \fB\-\-vf\-pre=filter\fP
10100+Prepends the filters given as arguments to the filter list. (Passing
10101+multiple filters is currently still possible, but deprecated.)
10102+.TP
10103+.B \fB\-\-vf\-remove=filter\fP
10104+Deletes the filter from the list. The filter can be either given the way it
10105+was added (filter name and its full argument list), or by label (prefixed
10106+with \fB@\fP). Matching of filters works as follows: if either of the compared
10107+filters has a label set, only the labels are compared. If none of the
10108+filters have a label, the filter name, arguments, and argument order are
10109+compared. (Passing multiple filters is currently still possible, but
10110+deprecated.)
10111+.TP
10112+.B \fB\-vf\-toggle=filter\fP
10113+Add the given filter to the list if it was not present yet, or remove it
10114+from the list if it was present. Matching of filters works as described in
10115+\fB\-\-vf\-remove\fP\&.
10116+.TP
10117+.B \fB\-\-vf\-del=filter\fP
10118+Sort of like \fB\-\-vf\-remove\fP, but also accepts an index number. Index
10119+numbers start at 0, negative numbers address the end of the list (\-1 is the
10120+last). Deprecated.
10121+.TP
10122+.B \fB\-\-vf\-clr\fP
10123+Completely empties the filter list.
10124+.UNINDENT
10125+.sp
10126+With filters that support it, you can access parameters by their name.
10127+.INDENT 0.0
10128+.TP
10129+.B \fB\-\-vf=<filter>=help\fP
10130+Prints the parameter names and parameter value ranges for a particular
10131+filter.
10132+.UNINDENT
10133+.sp
10134+Available mpv\-only filters are:
10135+.INDENT 0.0
10136+.TP
10137+.B \fBformat=fmt=<value>:colormatrix=<value>:...\fP
10138+Applies video parameter overrides, with optional conversion. By default,
10139+this overrides the video\(aqs parameters without conversion (except for the
10140+\fBfmt\fP parameter), but can be made to perform an appropriate conversion
10141+with \fBconvert=yes\fP for parameters for which conversion is supported.
10142+.INDENT 7.0
10143+.TP
10144+.B \fB<fmt>\fP
10145+Image format name, e.g. rgb15, bgr24, 420p, etc. (default: don\(aqt change).
10146+.sp
10147+This filter always performs conversion to the given format.
10148+.sp
10149+\fBNOTE:\fP
10150+.INDENT 7.0
10151+.INDENT 3.5
10152+For a list of available formats, use \fB\-\-vf=format=fmt=help\fP\&.
10153+.UNINDENT
10154+.UNINDENT
10155+.TP
10156+.B \fB<convert=yes|no>\fP
10157+Force conversion of color parameters (default: no).
10158+.sp
10159+If this is disabled (the default), the only conversion that is possibly
10160+performed is format conversion if \fB<fmt>\fP is set. All other parameters
10161+(like \fB<colormatrix>\fP) are forced without conversion. This mode is
10162+typically useful when files have been incorrectly tagged.
10163+.sp
10164+If this is enabled, libswscale or zimg is used if any of the parameters
10165+mismatch. zimg is used of the input/output image formats are supported
10166+by mpv\(aqs zimg wrapper, and if \fB\-\-sws\-allow\-zimg=yes\fP is used. Both
10167+libraries may not support all kinds of conversions. This typically
10168+results in silent incorrect conversion. zimg has in many cases a better
10169+chance of performing the conversion correctly.
10170+.sp
10171+In both cases, the color parameters are set on the output stage of the
10172+image format conversion (if \fBfmt\fP was set). The difference is that
10173+with \fBconvert=no\fP, the color parameters are not passed on to the
10174+converter.
10175+.sp
10176+If input and output video parameters are the same, conversion is always
10177+skipped.
10178+.INDENT 7.0
10179+.INDENT 3.5
10180+.IP "Examples"
10181+.INDENT 0.0
10182+.TP
10183+.B \fBmpv test.mkv \-\-vf=format:colormatrix=ycgco\fP
10184+Results in incorrect colors (if test.mkv was tagged correctly).
10185+.TP
10186+.B \fBmpv test.mkv \-\-vf=format:colormatrix=ycgco:convert=yes \-\-sws\-allow\-zimg\fP
10187+Results in true conversion to \fBycgco\fP, assuming the renderer
10188+supports it (\fB\-\-vo=gpu\fP normally does). You can add \fB\-\-vo=xv\fP
10189+to force a VO which definitely does not support it, which should
10190+show incorrect colors as confirmation.
10191+.sp
10192+Using \fB\-\-sws\-allow\-zimg=no\fP (or disabling zimg at build time)
10193+will use libswscale, which cannot perform this conversion as
10194+of this writing.
10195+.UNINDENT
10196+.UNINDENT
10197+.UNINDENT
10198+.TP
10199+.B \fB<colormatrix>\fP
10200+Controls the YUV to RGB color space conversion when playing video. There
10201+are various standards. Normally, BT.601 should be used for SD video, and
10202+BT.709 for HD video. (This is done by default.) Using incorrect color space
10203+results in slightly under or over saturated and shifted colors.
10204+.sp
10205+These options are not always supported. Different video outputs provide
10206+varying degrees of support. The \fBgpu\fP and \fBvdpau\fP video output
10207+drivers usually offer full support. The \fBxv\fP output can set the color
10208+space if the system video driver supports it, but not input and output
10209+levels. The \fBscale\fP video filter can configure color space and input
10210+levels, but only if the output format is RGB (if the video output driver
10211+supports RGB output, you can force this with \fB\-vf scale,format=rgba\fP).
10212+.sp
10213+If this option is set to \fBauto\fP (which is the default), the video\(aqs
10214+color space flag will be used. If that flag is unset, the color space
10215+will be selected automatically. This is done using a simple heuristic that
10216+attempts to distinguish SD and HD video. If the video is larger than
10217+1279x576 pixels, BT.709 (HD) will be used; otherwise BT.601 (SD) is
10218+selected.
10219+.sp
10220+Available color spaces are:
10221+.INDENT 7.0
10222+.TP
10223+.B auto
10224+automatic selection (default)
10225+.TP
10226+.B bt.601
10227+ITU\-R BT.601 (SD)
10228+.TP
10229+.B bt.709
10230+ITU\-R BT.709 (HD)
10231+.TP
10232+.B bt.2020\-ncl
10233+ITU\-R BT.2020 non\-constant luminance system
10234+.TP
10235+.B bt.2020\-cl
10236+ITU\-R BT.2020 constant luminance system
10237+.TP
10238+.B smpte\-240m
10239+SMPTE\-240M
10240+.UNINDENT
10241+.TP
10242+.B \fB<colorlevels>\fP
10243+YUV color levels used with YUV to RGB conversion. This option is only
10244+necessary when playing broken files which do not follow standard color
10245+levels or which are flagged wrong. If the video does not specify its
10246+color range, it is assumed to be limited range.
10247+.sp
10248+The same limitations as with \fB<colormatrix>\fP apply.
10249+.sp
10250+Available color ranges are:
10251+.INDENT 7.0
10252+.TP
10253+.B auto
10254+automatic selection (normally limited range) (default)
10255+.TP
10256+.B limited
10257+limited range (16\-235 for luma, 16\-240 for chroma)
10258+.TP
10259+.B full
10260+full range (0\-255 for both luma and chroma)
10261+.UNINDENT
10262+.TP
10263+.B \fB<primaries>\fP
10264+RGB primaries the source file was encoded with. Normally this should be set
10265+in the file header, but when playing broken or mistagged files this can be
10266+used to override the setting.
10267+.sp
10268+This option only affects video output drivers that perform color
10269+management, for example \fBgpu\fP with the \fBtarget\-prim\fP or
10270+\fBicc\-profile\fP suboptions set.
10271+.sp
10272+If this option is set to \fBauto\fP (which is the default), the video\(aqs
10273+primaries flag will be used. If that flag is unset, the color space will
10274+be selected automatically, using the following heuristics: If the
10275+\fB<colormatrix>\fP is set or determined as BT.2020 or BT.709, the
10276+corresponding primaries are used. Otherwise, if the video height is
10277+exactly 576 (PAL), BT.601\-625 is used. If it\(aqs exactly 480 or 486 (NTSC),
10278+BT.601\-525 is used. If the video resolution is anything else, BT.709 is
10279+used.
10280+.sp
10281+Available primaries are:
10282+.INDENT 7.0
10283+.TP
10284+.B auto
10285+automatic selection (default)
10286+.TP
10287+.B bt.601\-525
10288+ITU\-R BT.601 (SD) 525\-line systems (NTSC, SMPTE\-C)
10289+.TP
10290+.B bt.601\-625
10291+ITU\-R BT.601 (SD) 625\-line systems (PAL, SECAM)
10292+.TP
10293+.B bt.709
10294+ITU\-R BT.709 (HD) (same primaries as sRGB)
10295+.TP
10296+.B bt.2020
10297+ITU\-R BT.2020 (UHD)
10298+.TP
10299+.B apple
10300+Apple RGB
10301+.TP
10302+.B adobe
10303+Adobe RGB (1998)
10304+.TP
10305+.B prophoto
10306+ProPhoto RGB (ROMM)
10307+.TP
10308+.B cie1931
10309+CIE 1931 RGB
10310+.TP
10311+.B dci\-p3
10312+DCI\-P3 (Digital Cinema)
10313+.TP
10314+.B v\-gamut
10315+Panasonic V\-Gamut primaries
10316+.UNINDENT
10317+.TP
10318+.B \fB<gamma>\fP
10319+Gamma function the source file was encoded with. Normally this should be set
10320+in the file header, but when playing broken or mistagged files this can be
10321+used to override the setting.
10322+.sp
10323+This option only affects video output drivers that perform color management.
10324+.sp
10325+If this option is set to \fBauto\fP (which is the default), the gamma will
10326+be set to BT.1886 for YCbCr content, sRGB for RGB content and Linear for
10327+XYZ content.
10328+.sp
10329+Available gamma functions are:
10330+.INDENT 7.0
10331+.TP
10332+.B auto
10333+automatic selection (default)
10334+.TP
10335+.B bt.1886
10336+ITU\-R BT.1886 (EOTF corresponding to BT.601/BT.709/BT.2020)
10337+.TP
10338+.B srgb
10339+IEC 61966\-2\-4 (sRGB)
10340+.TP
10341+.B linear
10342+Linear light
10343+.TP
10344+.B gamma1.8
10345+Pure power curve (gamma 1.8)
10346+.TP
10347+.B gamma2.0
10348+Pure power curve (gamma 2.0)
10349+.TP
10350+.B gamma2.2
10351+Pure power curve (gamma 2.2)
10352+.TP
10353+.B gamma2.4
10354+Pure power curve (gamma 2.4)
10355+.TP
10356+.B gamma2.6
10357+Pure power curve (gamma 2.6)
10358+.TP
10359+.B gamma2.8
10360+Pure power curve (gamma 2.8)
10361+.TP
10362+.B prophoto
10363+ProPhoto RGB (ROMM) curve
10364+.TP
10365+.B pq
10366+ITU\-R BT.2100 PQ (Perceptual quantizer) curve
10367+.TP
10368+.B hlg
10369+ITU\-R BT.2100 HLG (Hybrid Log\-gamma) curve
10370+.TP
10371+.B v\-log
10372+Panasonic V\-Log transfer curve
10373+.TP
10374+.B s\-log1
10375+Sony S\-Log1 transfer curve
10376+.TP
10377+.B s\-log2
10378+Sony S\-Log2 transfer curve
10379+.UNINDENT
10380+.TP
10381+.B \fB<sig\-peak>\fP
10382+Reference peak illumination for the video file, relative to the
10383+signal\(aqs reference white level. This is mostly interesting for HDR, but
10384+it can also be used tone map SDR content to simulate a different
10385+exposure. Normally inferred from tags such as MaxCLL or mastering
10386+metadata.
10387+.sp
10388+The default of 0.0 will default to the source\(aqs nominal peak luminance.
10389+.TP
10390+.B \fB<light>\fP
10391+.INDENT 7.0
10392+.INDENT 3.5
10393+Light type of the scene. This is mostly correctly inferred based on the
10394+gamma function, but it can be useful to override this when viewing raw
10395+camera footage (e.g. V\-Log), which is normally scene\-referred instead
10396+of display\-referred.
10397+.sp
10398+Available light types are:
10399+.UNINDENT
10400+.UNINDENT
10401+.INDENT 7.0
10402+.TP
10403+.B auto
10404+Automatic selection (default)
10405+.TP
10406+.B display
10407+Display\-referred light (most content)
10408+.TP
10409+.B hlg
10410+Scene\-referred using the HLG OOTF (e.g. HLG content)
10411+.TP
10412+.B 709\-1886
10413+Scene\-referred using the BT709+BT1886 interaction
10414+.TP
10415+.B gamma1.2
10416+Scene\-referred using a pure power OOTF (gamma=1.2)
10417+.UNINDENT
10418+.TP
10419+.B \fB<stereo\-in>\fP
10420+Set the stereo mode the video is assumed to be encoded in. Use
10421+\fB\-\-vf format:stereo\-in=help\fP to list all available modes. Check with
10422+the \fBstereo3d\fP filter documentation to see what the names mean.
10423+.TP
10424+.B \fB<stereo\-out>\fP
10425+Set the stereo mode the video should be displayed as. Takes the
10426+same values as the \fBstereo\-in\fP option.
10427+.TP
10428+.B \fB<rotate>\fP
10429+Set the rotation the video is assumed to be encoded with in degrees.
10430+The special value \fB\-1\fP uses the input format.
10431+.TP
10432+.B \fB<dw>\fP, \fB<dh>\fP
10433+Set the display size. Note that setting the display size such that
10434+the video is scaled in both directions instead of just changing the
10435+aspect ratio is an implementation detail, and might change later.
10436+.TP
10437+.B \fB<dar>\fP
10438+Set the display aspect ratio of the video frame. This is a float,
10439+but values such as \fB[16:9]\fP can be passed too (\fB[...]\fP for quoting
10440+to prevent the option parser from interpreting the \fB:\fP character).
10441+.UNINDENT
10442+.TP
10443+.B \fBlavfi=graph[:sws\-flags[:o=opts]]\fP
10444+Filter video using FFmpeg\(aqs libavfilter.
10445+.INDENT 7.0
10446+.TP
10447+.B \fB<graph>\fP
10448+The libavfilter graph string. The filter must have a single video input
10449+pad and a single video output pad.
10450+.sp
10451+See \fI\%https://ffmpeg.org/ffmpeg\-filters.html\fP for syntax and available
10452+filters.
10453+.sp
10454+\fBWARNING:\fP
10455+.INDENT 7.0
10456+.INDENT 3.5
10457+If you want to use the full filter syntax with this option, you have
10458+to quote the filter graph in order to prevent mpv\(aqs syntax and the
10459+filter graph syntax from clashing. To prevent a quoting and escaping
10460+mess, consider using \fB\-\-lavfi\-complex\fP if you know which video
10461+track you want to use from the input file. (There is only one video
10462+track for nearly all video files anyway.)
10463+.UNINDENT
10464+.UNINDENT
10465+.INDENT 7.0
10466+.INDENT 3.5
10467+.IP "Examples"
10468+.INDENT 0.0
10469+.TP
10470+.B \fB\-\-vf=lavfi=[gradfun=20:30,vflip]\fP
10471+\fBgradfun\fP filter with nonsense parameters, followed by a
10472+\fBvflip\fP filter. (This demonstrates how libavfilter takes a
10473+graph and not just a single filter.) The filter graph string is
10474+quoted with \fB[\fP and \fB]\fP\&. This requires no additional quoting
10475+or escaping with some shells (like bash), while others (like
10476+zsh) require additional \fB"\fP quotes around the option string.
10477+.TP
10478+.B \fB\(aq\-\-vf=lavfi="gradfun=20:30,vflip"\(aq\fP
10479+Same as before, but uses quoting that should be safe with all
10480+shells. The outer \fB\(aq\fP quotes make sure that the shell does not
10481+remove the \fB"\fP quotes needed by mpv.
10482+.TP
10483+.B \fB\(aq\-\-vf=lavfi=graph="gradfun=radius=30:strength=20,vflip"\(aq\fP
10484+Same as before, but uses named parameters for everything.
10485+.UNINDENT
10486+.UNINDENT
10487+.UNINDENT
10488+.TP
10489+.B \fB<sws\-flags>\fP
10490+If libavfilter inserts filters for pixel format conversion, this
10491+option gives the flags which should be passed to libswscale. This
10492+option is numeric and takes a bit\-wise combination of \fBSWS_\fP flags.
10493+.sp
10494+See \fBhttp://git.videolan.org/?p=ffmpeg.git;a=blob;f=libswscale/swscale.h\fP\&.
10495+.TP
10496+.B \fB<o>\fP
10497+Set AVFilterGraph options. These should be documented by FFmpeg.
10498+.INDENT 7.0
10499+.INDENT 3.5
10500+.IP "Example"
10501+.INDENT 0.0
10502+.TP
10503+.B \fB\(aq\-\-vf=lavfi=yadif:o="threads=2,thread_type=slice"\(aq\fP
10504+forces a specific threading configuration.
10505+.UNINDENT
10506+.UNINDENT
10507+.UNINDENT
10508+.UNINDENT
10509+.TP
10510+.B \fBsub=[=bottom\-margin:top\-margin]\fP
10511+Moves subtitle rendering to an arbitrary point in the filter chain, or force
10512+subtitle rendering in the video filter as opposed to using video output OSD
10513+support.
10514+.INDENT 7.0
10515+.TP
10516+.B \fB<bottom\-margin>\fP
10517+Adds a black band at the bottom of the frame. The SSA/ASS renderer can
10518+place subtitles there (with \fB\-\-sub\-use\-margins\fP).
10519+.TP
10520+.B \fB<top\-margin>\fP
10521+Black band on the top for toptitles  (with \fB\-\-sub\-use\-margins\fP).
10522+.UNINDENT
10523+.INDENT 7.0
10524+.INDENT 3.5
10525+.IP "Examples"
10526+.INDENT 0.0
10527+.TP
10528+.B \fB\-\-vf=sub,eq\fP
10529+Moves sub rendering before the eq filter. This will put both
10530+subtitle colors and video under the influence of the video equalizer
10531+settings.
10532+.UNINDENT
10533+.UNINDENT
10534+.UNINDENT
10535+.TP
10536+.B \fBvapoursynth=file:buffered\-frames:concurrent\-frames\fP
10537+Loads a VapourSynth filter script. This is intended for streamed
10538+processing: mpv actually provides a source filter, instead of using a
10539+native VapourSynth video source. The mpv source will answer frame
10540+requests only within a small window of frames (the size of this window
10541+is controlled with the \fBbuffered\-frames\fP parameter), and requests outside
10542+of that will return errors. As such, you can\(aqt use the full power of
10543+VapourSynth, but you can use certain filters.
10544+.sp
10545+\fBWARNING:\fP
10546+.INDENT 7.0
10547+.INDENT 3.5
10548+Do not use this filter, unless you have expert knowledge in VapourSynth,
10549+and know how to fix bugs in the mpv VapourSynth wrapper code.
10550+.UNINDENT
10551+.UNINDENT
10552+.sp
10553+If you just want to play video generated by VapourSynth (i.e. using
10554+a native VapourSynth video source), it\(aqs better to use \fBvspipe\fP and a
10555+pipe or FIFO to feed the video to mpv. The same applies if the filter script
10556+requires random frame access (see \fBbuffered\-frames\fP parameter).
10557+.INDENT 7.0
10558+.TP
10559+.B \fBfile\fP
10560+Filename of the script source. Currently, this is always a python
10561+script (\fB\&.vpy\fP in VapourSynth convention).
10562+.sp
10563+The variable \fBvideo_in\fP is set to the mpv video source, and it is
10564+expected that the script reads video from it. (Otherwise, mpv will
10565+decode no video, and the video packet queue will overflow, eventually
10566+leading to only audio playing, or worse.)
10567+.sp
10568+The filter graph created by the script is also expected to pass through
10569+timestamps using the \fB_DurationNum\fP and \fB_DurationDen\fP frame
10570+properties.
10571+.sp
10572+See the end of the option list for a full list of script variables
10573+defined by mpv.
10574+.INDENT 7.0
10575+.INDENT 3.5
10576+.IP "Example:"
10577+.INDENT 0.0
10578+.INDENT 3.5
10579+.sp
10580+.nf
10581+.ft C
10582+import vapoursynth as vs
10583+core = vs.get_core()
10584+core.std.AddBorders(video_in, 10, 10, 20, 20).set_output()
10585+.ft P
10586+.fi
10587+.UNINDENT
10588+.UNINDENT
10589+.UNINDENT
10590+.UNINDENT
10591+.sp
10592+\fBWARNING:\fP
10593+.INDENT 7.0
10594+.INDENT 3.5
10595+The script will be reloaded on every seek. This is done to reset
10596+the filter properly on discontinuities.
10597+.UNINDENT
10598+.UNINDENT
10599+.TP
10600+.B \fBbuffered\-frames\fP
10601+Maximum number of decoded video frames that should be buffered before
10602+the filter (default: 4). This specifies the maximum number of frames
10603+the script can request in backward direction.
10604+.sp
10605+E.g. if \fBbuffered\-frames=5\fP, and the script just requested frame 15,
10606+it can still request frame 10, but frame 9 is not available anymore.
10607+If it requests frame 30, mpv will decode 15 more frames, and keep only
10608+frames 25\-30.
10609+.sp
10610+The only reason why this buffer exists is to serve the random access
10611+requests the VapourSynth filter can make.
10612+.sp
10613+The VapourSynth API has a \fBgetFrameAsync\fP function, which takes an
10614+absolute frame number. Source filters must respond to all requests. For
10615+example, a source filter can request frame 2432, and then frame 3.
10616+Source filters  typically implement this by pre\-indexing the entire
10617+file.
10618+.sp
10619+mpv on the other hand is stream oriented, and does not allow filters to
10620+seek. (And it would not make sense to allow it, because it would ruin
10621+performance.) Filters get frames sequentially in playback direction, and
10622+cannot request them out of order.
10623+.sp
10624+To compensate for this mismatch, mpv allows the filter to access frames
10625+within a certain window. \fBbuffered\-frames\fP controls the size of this
10626+window. Most VapourSynth filters happen to work with this, because mpv
10627+requests frames sequentially increasing from it, and most filters only
10628+require frames "close" to the requested frame.
10629+.sp
10630+If the filter requests a frame that has a higher frame number than the
10631+highest buffered frame, new frames will be decoded until the requested
10632+frame number is reached. Excessive frames will be flushed out in a FIFO
10633+manner (there are only at most \fBbuffered\-frames\fP in this buffer).
10634+.sp
10635+If the filter requests a frame that has a lower frame number than the
10636+lowest buffered frame, the request cannot be satisfied, and an error
10637+is returned to the filter. This kind of error is not supposed to happen
10638+in a "proper" VapourSynth environment. What exactly happens depends on
10639+the filters involved.
10640+.sp
10641+Increasing this buffer will not improve performance. Rather, it will
10642+waste memory, and slow down seeks (when enough frames to fill the buffer
10643+need to be decoded at once). It is only needed to prevent the error
10644+described in the previous paragraph.
10645+.sp
10646+How many frames a filter requires depends on filter implementation
10647+details, and mpv has no way of knowing. A scale filter might need only
10648+1 frame, an interpolation filter may require a small number of frames,
10649+and the \fBReverse\fP filter will require an infinite number of frames.
10650+.sp
10651+If you want reliable operation to the full extend VapourSynth is
10652+capable, use \fBvspipe\fP\&.
10653+.sp
10654+The actual number of buffered frames also depends on the value of the
10655+\fBconcurrent\-frames\fP option. Currently, both option values are
10656+multiplied to get the final buffer size.
10657+.TP
10658+.B \fBconcurrent\-frames\fP
10659+Number of frames that should be requested in parallel. The
10660+level of concurrency depends on the filter and how quickly mpv can
10661+decode video to feed the filter. This value should probably be
10662+proportional to the number of cores on your machine. Most time,
10663+making it higher than the number of cores can actually make it
10664+slower.
10665+.sp
10666+Technically, mpv will call the VapourSynth \fBgetFrameAsync\fP function
10667+in a loop, until there are \fBconcurrent\-frames\fP frames that have not
10668+been returned by the filter yet. This also assumes that the rest of the
10669+mpv filter chain reads the output of the \fBvapoursynth\fP filter quickly
10670+enough. (For example, if you pause the player, filtering will stop very
10671+soon, because the filtered frames are waiting in a queue.)
10672+.sp
10673+Actual concurrency depends on many other factors.
10674+.sp
10675+By default, this uses the special value \fBauto\fP, which sets the option
10676+to the number of detected logical CPU cores.
10677+.UNINDENT
10678+.sp
10679+The following \fB\&.vpy\fP script variables are defined by mpv:
10680+.INDENT 7.0
10681+.TP
10682+.B \fBvideo_in\fP
10683+The mpv video source as vapoursynth clip. Note that this has an
10684+incorrect (very high) length set, which confuses many filters. This is
10685+necessary, because the true number of frames is unknown. You can use the
10686+\fBTrim\fP filter on the clip to reduce the length.
10687+.TP
10688+.B \fBvideo_in_dw\fP, \fBvideo_in_dh\fP
10689+Display size of the video. Can be different from video size if the
10690+video does not use square pixels (e.g. DVD).
10691+.TP
10692+.B \fBcontainer_fps\fP
10693+FPS value as reported by file headers. This value can be wrong or
10694+completely broken (e.g. 0 or NaN). Even if the value is correct,
10695+if another filter changes the real FPS (by dropping or inserting
10696+frames), the value of this variable will not be useful. Note that
10697+the \fB\-\-fps\fP command line option overrides this value.
10698+.sp
10699+Useful for some filters which insist on having a FPS.
10700+.TP
10701+.B \fBdisplay_fps\fP
10702+Refresh rate of the current display. Note that this value can be 0.
10703+.UNINDENT
10704+.TP
10705+.B \fBvavpp\fP
10706+VA\-API video post processing. Requires the system to support VA\-API,
10707+i.e. Linux/BSD only. Works with \fB\-\-vo=vaapi\fP and \fB\-\-vo=gpu\fP only.
10708+Currently deinterlaces. This filter is automatically inserted if
10709+deinterlacing is requested (either using the \fBd\fP key, by default mapped to
10710+the command \fBcycle deinterlace\fP, or the \fB\-\-deinterlace\fP option).
10711+.INDENT 7.0
10712+.TP
10713+.B \fBdeint=<method>\fP
10714+Select the deinterlacing algorithm.
10715+.INDENT 7.0
10716+.TP
10717+.B no
10718+Don\(aqt perform deinterlacing.
10719+.TP
10720+.B auto
10721+Select the best quality deinterlacing algorithm (default). This
10722+goes by the order of the options as documented, with
10723+\fBmotion\-compensated\fP being considered best quality.
10724+.TP
10725+.B first\-field
10726+Show only first field.
10727+.TP
10728+.B bob
10729+bob deinterlacing.
10730+.TP
10731+.B weave, motion\-adaptive, motion\-compensated
10732+Advanced deinterlacing algorithms. Whether these actually work
10733+depends on the GPU hardware, the GPU drivers, driver bugs, and
10734+mpv bugs.
10735+.UNINDENT
10736+.TP
10737+.B \fB<interlaced\-only>\fP
10738+.INDENT 7.0
10739+.TP
10740+.B no
10741+Deinterlace all frames (default).
10742+.TP
10743+.B yes
10744+Only deinterlace frames marked as interlaced.
10745+.UNINDENT
10746+.TP
10747+.B \fBreversal\-bug=<yes|no>\fP
10748+.INDENT 7.0
10749+.TP
10750+.B no
10751+Use the API as it was interpreted by older Mesa drivers. While
10752+this interpretation was more obvious and inuitive, it was
10753+apparently wrong, and not shared by Intel driver developers.
10754+.TP
10755+.B yes
10756+Use Intel interpretation of surface forward and backwards
10757+references (default). This is what Intel drivers and newer Mesa
10758+drivers expect. Matters only for the advanced deinterlacing
10759+algorithms.
10760+.UNINDENT
10761+.UNINDENT
10762+.TP
10763+.B \fBvdpaupp\fP
10764+VDPAU video post processing. Works with \fB\-\-vo=vdpau\fP and \fB\-\-vo=gpu\fP
10765+only. This filter is automatically inserted if deinterlacing is requested
10766+(either using the \fBd\fP key, by default mapped to the command
10767+\fBcycle deinterlace\fP, or the \fB\-\-deinterlace\fP option). When enabling
10768+deinterlacing, it is always preferred over software deinterlacer filters
10769+if the \fBvdpau\fP VO is used, and also if \fBgpu\fP is used and hardware
10770+decoding was activated at least once (i.e. vdpau was loaded).
10771+.INDENT 7.0
10772+.TP
10773+.B \fBsharpen=<\-1\-1>\fP
10774+For positive values, apply a sharpening algorithm to the video, for
10775+negative values a blurring algorithm (default: 0).
10776+.TP
10777+.B \fBdenoise=<0\-1>\fP
10778+Apply a noise reduction algorithm to the video (default: 0; no noise
10779+reduction).
10780+.TP
10781+.B \fBdeint=<yes|no>\fP
10782+Whether deinterlacing is enabled (default: no). If enabled, it will use
10783+the mode selected with \fBdeint\-mode\fP\&.
10784+.TP
10785+.B \fBdeint\-mode=<first\-field|bob|temporal|temporal\-spatial>\fP
10786+Select deinterlacing mode (default: temporal).
10787+.sp
10788+Note that there\(aqs currently a mechanism that allows the \fBvdpau\fP VO to
10789+change the \fBdeint\-mode\fP of auto\-inserted \fBvdpaupp\fP filters. To avoid
10790+confusion, it\(aqs recommended not to use the \fB\-\-vo=vdpau\fP suboptions
10791+related to filtering.
10792+.INDENT 7.0
10793+.TP
10794+.B first\-field
10795+Show only first field.
10796+.TP
10797+.B bob
10798+Bob deinterlacing.
10799+.TP
10800+.B temporal
10801+Motion\-adaptive temporal deinterlacing. May lead to A/V desync
10802+with slow video hardware and/or high resolution.
10803+.TP
10804+.B temporal\-spatial
10805+Motion\-adaptive temporal deinterlacing with edge\-guided spatial
10806+interpolation. Needs fast video hardware.
10807+.UNINDENT
10808+.TP
10809+.B \fBchroma\-deint\fP
10810+Makes temporal deinterlacers operate both on luma and chroma (default).
10811+Use no\-chroma\-deint to solely use luma and speed up advanced
10812+deinterlacing. Useful with slow video memory.
10813+.TP
10814+.B \fBpullup\fP
10815+Try to apply inverse telecine, needs motion adaptive temporal
10816+deinterlacing.
10817+.TP
10818+.B \fBinterlaced\-only=<yes|no>\fP
10819+If \fByes\fP, only deinterlace frames marked as interlaced (default: no).
10820+.TP
10821+.B \fBhqscaling=<0\-9>\fP
10822+.INDENT 7.0
10823+.TP
10824+.B 0
10825+Use default VDPAU scaling (default).
10826+.TP
10827+.B 1\-9
10828+Apply high quality VDPAU scaling (needs capable hardware).
10829+.UNINDENT
10830+.UNINDENT
10831+.TP
10832+.B \fBd3d11vpp\fP
10833+Direct3D 11 video post processing. Currently requires D3D11 hardware
10834+decoding for use.
10835+.INDENT 7.0
10836+.TP
10837+.B \fBdeint=<yes|no>\fP
10838+Whether deinterlacing is enabled (default: no).
10839+.TP
10840+.B \fBinterlaced\-only=<yes|no>\fP
10841+If \fByes\fP, only deinterlace frames marked as interlaced (default: no).
10842+.TP
10843+.B \fBmode=<blend|bob|adaptive|mocomp|ivctc|none>\fP
10844+Tries to select a video processor with the given processing capability.
10845+If a video processor supports multiple capabilities, it is not clear
10846+which algorithm is actually selected. \fBnone\fP always falls back. On
10847+most if not all hardware, this option will probably do nothing, because
10848+a video processor usually supports all modes or none.
10849+.UNINDENT
10850+.TP
10851+.B \fBfingerprint=...\fP
10852+Compute video frame fingerprints and provide them as metadata. Actually, it
10853+currently barely deserved to be called \fBfingerprint\fP, because it does not
10854+compute "proper" fingerprints, only tiny downscaled images (but which can be
10855+used to compute image hashes or for similarity matching).
10856+.sp
10857+The main purpose of this filter is to support the \fBskip\-logo.lua\fP script.
10858+If this script is dropped, or mpv ever gains a way to load user\-defined
10859+filters (other than VapourSynth), this filter will be removed. Due to the
10860+"special" nature of this filter, it will be removed without warning.
10861+.sp
10862+The intended way to read from the filter is using \fBvf\-metadata\fP (also
10863+see \fBclear\-on\-query\fP filter parameter). The property will return a list
10864+of key/value pairs as follows:
10865+.INDENT 7.0
10866+.INDENT 3.5
10867+.sp
10868+.nf
10869+.ft C
10870+fp0.pts = 1.2345
10871+fp0.hex = 1234abcdef...bcde
10872+fp1.pts = 1.4567
10873+fp1.hex = abcdef1234...6789
10874+\&...
10875+fpN.pts = ...
10876+fpN.hex = ...
10877+type = gray\-hex\-16x16
10878+.ft P
10879+.fi
10880+.UNINDENT
10881+.UNINDENT
10882+.sp
10883+Each \fBfp<N>\fP entry is for a frame. The \fBpts\fP entry specifies the
10884+timestamp of the frame (within the filter chain; in simple cases this is
10885+the same as the display timestamp). The \fBhex\fP field is the hex encoded
10886+fingerprint, whose size and meaning depend on the \fBtype\fP filter option.
10887+The \fBtype\fP field has the same value as the option the filter was created
10888+with.
10889+.sp
10890+This returns the frames that were filtered since the last query of the
10891+property. If \fBclear\-on\-query=no\fP was set, a query doesn\(aqt reset the list
10892+of frames. In both cases, a maximum of 10 frames is returned. If there are
10893+more frames, the oldest frames are discarded. Frames are returned in filter
10894+order.
10895+.sp
10896+(This doesn\(aqt return a structured list for the per\-frame details because the
10897+internals of the \fBvf\-metadata\fP mechanism suck. The returned format may
10898+change in the future.)
10899+.sp
10900+This filter uses zimg for speed and profit. However, it will fallback to
10901+libswscale in a number of situations: lesser pixel formats, unaligned data
10902+pointers or strides, or if zimg fails to initialize for unknown reasons. In
10903+these cases, the filter will use more CPU. Also, it will output different
10904+fingerprints, because libswscale cannot perform the full range expansion we
10905+normally request from zimg. As a consequence, the filter may be slower and
10906+not work correctly in random situations.
10907+.INDENT 7.0
10908+.TP
10909+.B \fBtype=...\fP
10910+What fingerprint to compute. Available types are:
10911+.INDENT 7.0
10912+.TP
10913+.B gray\-hex\-8x8
10914+grayscale, 8 bit, 8x8 size
10915+.TP
10916+.B gray\-hex\-16x16
10917+grayscale, 8 bit, 16x16 size (default)
10918+.UNINDENT
10919+.sp
10920+Both types simply remove all colors, downscale the image, concatenate
10921+all pixel values to a byte array, and convert the array to a hex string.
10922+.TP
10923+.B \fBclear\-on\-query=yes|no\fP
10924+Clear the list of frame fingerprints if the \fBvf\-metadata\fP property for
10925+this filter is queried (default: yes). This requires some care by the
10926+user. Some types of accesses might query the filter multiple times,
10927+which leads to lost frames.
10928+.TP
10929+.B \fBprint=yes|no\fP
10930+Print computed fingerprints the the terminal (default: no). This is
10931+mostly for testing and such. Scripts should use \fBvf\-metadata\fP to
10932+read information from this filter instead.
10933+.UNINDENT
10934+.TP
10935+.B \fBgpu=...\fP
10936+Convert video to RGB using the OpenGL renderer normally used with
10937+\fB\-\-vo=gpu\fP\&. This requires that the EGL implementation supports off\-screen
10938+rendering on the default display. (This is the case with Mesa.)
10939+.sp
10940+Sub\-options:
10941+.INDENT 7.0
10942+.TP
10943+.B \fBw=<pixels>\fP, \fBh=<pixels>\fP
10944+Size of the output in pixels (default: 0). If not positive, this will
10945+use the size of the first filtered input frame.
10946+.UNINDENT
10947+.sp
10948+\fBWARNING:\fP
10949+.INDENT 7.0
10950+.INDENT 3.5
10951+This is highly experimental. Performance is bad, and it will not work
10952+everywhere in the first place. Some features are not supported.
10953+.UNINDENT
10954+.UNINDENT
10955+.sp
10956+\fBWARNING:\fP
10957+.INDENT 7.0
10958+.INDENT 3.5
10959+This does not do OSD rendering. If you see OSD, then it has been
10960+rendered by the VO backend. (Subtitles are rendered by the \fBgpu\fP
10961+filter, if possible.)
10962+.UNINDENT
10963+.UNINDENT
10964+.sp
10965+\fBWARNING:\fP
10966+.INDENT 7.0
10967+.INDENT 3.5
10968+If you use this with encoding mode, keep in mind that encoding mode will
10969+convert the RGB filter\(aqs output back to yuv420p in software, using the
10970+configured software scaler. Using \fBzimg\fP might improve this, but in
10971+any case it might go against your goals when using this filter.
10972+.UNINDENT
10973+.UNINDENT
10974+.sp
10975+\fBWARNING:\fP
10976+.INDENT 7.0
10977+.INDENT 3.5
10978+Do not use this with \fB\-\-vo=gpu\fP\&. It will apply filtering twice, since
10979+most \fB\-\-vo=gpu\fP options are unconditionally applied to the \fBgpu\fP
10980+filter. There is no mechanism in mpv to prevent this.
10981+.UNINDENT
10982+.UNINDENT
10983+.UNINDENT
10984+.SH ENCODING
10985+.sp
10986+You can encode files from one format/codec to another using this facility.
10987+.INDENT 0.0
10988+.TP
10989+.B \fB\-\-o=<filename>\fP
10990+Enables encoding mode and specifies the output file name.
10991+.TP
10992+.B \fB\-\-of=<format>\fP
10993+Specifies the output format (overrides autodetection by the file name
10994+extension of the file specified by \fB\-o\fP). See \fB\-\-of=help\fP for a full
10995+list of supported formats.
10996+.TP
10997+.B \fB\-\-ofopts=<options>\fP
10998+Specifies the output format options for libavformat.
10999+See \fB\-\-ofopts=help\fP for a full list of supported options.
11000+.sp
11001+This is a key/value list option. See \fI\%List Options\fP for details.
11002+.INDENT 7.0
11003+.TP
11004+.B \fB\-\-ofopts\-add=<option>\fP
11005+Appends the option given as an argument to the options list. (Passing
11006+multiple options is currently still possible, but deprecated.)
11007+.TP
11008+.B \fB\-\-ofopts=""\fP
11009+Completely empties the options list.
11010+.UNINDENT
11011+.TP
11012+.B \fB\-\-oac=<codec>\fP
11013+Specifies the output audio codec. See \fB\-\-oac=help\fP for a full list of
11014+supported codecs.
11015+.TP
11016+.B \fB\-\-oaoffset=<value>\fP
11017+Shifts audio data by the given time (in seconds) by adding/removing
11018+samples at the start. Deprecated.
11019+.TP
11020+.B \fB\-\-oacopts=<options>\fP
11021+Specifies the output audio codec options for libavcodec.
11022+See \fB\-\-oacopts=help\fP for a full list of supported options.
11023+.INDENT 7.0
11024+.INDENT 3.5
11025+.IP "Example"
11026+.INDENT 0.0
11027+.TP
11028+.B "\fB\-\-oac=libmp3lame \-\-oacopts=b=128000\fP"
11029+selects 128 kbps MP3 encoding.
11030+.UNINDENT
11031+.UNINDENT
11032+.UNINDENT
11033+.sp
11034+This is a key/value list option. See \fI\%List Options\fP for details.
11035+.INDENT 7.0
11036+.TP
11037+.B \fB\-\-oacopts\-add=<option>\fP
11038+Appends the option given as an argument to the options list. (Passing
11039+multiple options is currently still possible, but deprecated.)
11040+.TP
11041+.B \fB\-\-oacopts=""\fP
11042+Completely empties the options list.
11043+.UNINDENT
11044+.TP
11045+.B \fB\-\-oafirst\fP
11046+Force the audio stream to become the first stream in the output.
11047+By default, the order is unspecified. Deprecated.
11048+.TP
11049+.B \fB\-\-ovc=<codec>\fP
11050+Specifies the output video codec. See \fB\-\-ovc=help\fP for a full list of
11051+supported codecs.
11052+.TP
11053+.B \fB\-\-ovoffset=<value>\fP
11054+Shifts video data by the given time (in seconds) by shifting the pts
11055+values. Deprecated.
11056+.TP
11057+.B \fB\-\-ovcopts=<options>\fP
11058+Specifies the output video codec options for libavcodec.
11059+See \-\-ovcopts=help for a full list of supported options.
11060+.INDENT 7.0
11061+.INDENT 3.5
11062+.IP "Examples"
11063+.INDENT 0.0
11064+.TP
11065+.B \fB"\-\-ovc=mpeg4 \-\-ovcopts=qscale=5"\fP
11066+selects constant quantizer scale 5 for MPEG\-4 encoding.
11067+.TP
11068+.B \fB"\-\-ovc=libx264 \-\-ovcopts=crf=23"\fP
11069+selects VBR quality factor 23 for H.264 encoding.
11070+.UNINDENT
11071+.UNINDENT
11072+.UNINDENT
11073+.sp
11074+This is a key/value list option. See \fI\%List Options\fP for details.
11075+.INDENT 7.0
11076+.TP
11077+.B \fB\-\-ovcopts\-add=<option>\fP
11078+Appends the option given as an argument to the options list. (Passing
11079+multiple options is currently still possible, but deprecated.)
11080+.TP
11081+.B \fB\-\-ovcopts=""\fP
11082+Completely empties the options list.
11083+.UNINDENT
11084+.TP
11085+.B \fB\-\-ovfirst\fP
11086+Force the video stream to become the first stream in the output.
11087+By default, the order is unspecified. Deprecated.
11088+.TP
11089+.B \fB\-\-orawts\fP
11090+Copies input pts to the output video (not supported by some output
11091+container formats, e.g. AVI). In this mode, discontinuities are not fixed
11092+and all pts are passed through as\-is. Never seek backwards or use multiple
11093+input files in this mode!
11094+.TP
11095+.B \fB\-\-no\-ocopy\-metadata\fP
11096+Turns off copying of metadata from input files to output files when
11097+encoding (which is enabled by default).
11098+.TP
11099+.B \fB\-\-oset\-metadata=<metadata\-tag[,metadata\-tag,...]>\fP
11100+Specifies metadata to include in the output file.
11101+Supported keys vary between output formats. For example, Matroska (MKV) and
11102+FLAC allow almost arbitrary keys, while support in MP4 and MP3 is more
11103+limited.
11104+.sp
11105+This is a key/value list option. See \fI\%List Options\fP for details.
11106+.INDENT 7.0
11107+.INDENT 3.5
11108+.IP "Example"
11109+.INDENT 0.0
11110+.TP
11111+.B "\fB\-\-oset\-metadata=title="Output title",comment="Another tag"\fP"
11112+adds a title and a comment to the output file.
11113+.UNINDENT
11114+.UNINDENT
11115+.UNINDENT
11116+.TP
11117+.B \fB\-\-oremove\-metadata=<metadata\-tag[,metadata\-tag,...]>\fP
11118+Specifies metadata to exclude from the output file when copying from the
11119+input file.
11120+.sp
11121+This is a string list option. See \fI\%List Options\fP for details.
11122+.INDENT 7.0
11123+.INDENT 3.5
11124+.IP "Example"
11125+.INDENT 0.0
11126+.TP
11127+.B "\fB\-\-oremove\-metadata=comment,genre\fP"
11128+excludes copying of the the comment and genre tags to the output
11129+file.
11130+.UNINDENT
11131+.UNINDENT
11132+.UNINDENT
11133+.UNINDENT
11134+.SH COMMAND INTERFACE
11135+.sp
11136+The mpv core can be controlled with commands and properties. A number of ways
11137+to interact with the player use them: key bindings (\fBinput.conf\fP), OSD
11138+(showing information with properties), JSON IPC, the client API (\fBlibmpv\fP),
11139+and the classic slave mode.
11140+.SS input.conf
11141+.sp
11142+The input.conf file consists of a list of key bindings, for example:
11143+.INDENT 0.0
11144+.INDENT 3.5
11145+.sp
11146+.nf
11147+.ft C
11148+s screenshot      # take a screenshot with the s key
11149+LEFT seek 15      # map the left\-arrow key to seeking forward by 15 seconds
11150+.ft P
11151+.fi
11152+.UNINDENT
11153+.UNINDENT
11154+.sp
11155+Each line maps a key to an input command. Keys are specified with their literal
11156+value (upper case if combined with \fBShift\fP), or a name for special keys. For
11157+example, \fBa\fP maps to the \fBa\fP key without shift, and \fBA\fP maps to \fBa\fP
11158+with shift.
11159+.sp
11160+The file is located in the mpv configuration directory (normally at
11161+\fB~/.config/mpv/input.conf\fP depending on platform). The default bindings are
11162+defined here:
11163+.INDENT 0.0
11164+.INDENT 3.5
11165+.sp
11166+.nf
11167+.ft C
11168+https://github.com/mpv\-player/mpv/blob/master/etc/input.conf
11169+.ft P
11170+.fi
11171+.UNINDENT
11172+.UNINDENT
11173+.sp
11174+A list of special keys can be obtained with
11175+.INDENT 0.0
11176+.INDENT 3.5
11177+\fBmpv \-\-input\-keylist\fP
11178+.UNINDENT
11179+.UNINDENT
11180+.sp
11181+In general, keys can be combined with \fBShift\fP, \fBCtrl\fP and \fBAlt\fP:
11182+.INDENT 0.0
11183+.INDENT 3.5
11184+.sp
11185+.nf
11186+.ft C
11187+ctrl+q quit
11188+.ft P
11189+.fi
11190+.UNINDENT
11191+.UNINDENT
11192+.sp
11193+\fBmpv\fP can be started in input test mode, which displays key bindings and the
11194+commands they\(aqre bound to on the OSD, instead of executing the commands:
11195+.INDENT 0.0
11196+.INDENT 3.5
11197+.sp
11198+.nf
11199+.ft C
11200+mpv \-\-input\-test \-\-force\-window \-\-idle
11201+.ft P
11202+.fi
11203+.UNINDENT
11204+.UNINDENT
11205+.sp
11206+(Only closing the window will make \fBmpv\fP exit, pressing normal keys will
11207+merely display the binding, even if mapped to quit.)
11208+.sp
11209+Also see \fI\%Key names\fP\&.
11210+.SS input.conf syntax
11211+.sp
11212+\fB[Shift+][Ctrl+][Alt+][Meta+]<key> [{<section>}] <command> ( ; <command> )*\fP
11213+.sp
11214+Note that by default, the right Alt key can be used to create special
11215+characters, and thus does not register as a modifier. The option
11216+\fB\-\-no\-input\-right\-alt\-gr\fP changes this behavior.
11217+.sp
11218+Newlines always start a new binding. \fB#\fP starts a comment (outside of quoted
11219+string arguments). To bind commands to the \fB#\fP key, \fBSHARP\fP can be used.
11220+.sp
11221+\fB<key>\fP is either the literal character the key produces (ASCII or Unicode
11222+character), or a symbolic name (as printed by \fB\-\-input\-keylist\fP).
11223+.sp
11224+\fB<section>\fP (braced with \fB{\fP and \fB}\fP) is the input section for this
11225+command.
11226+.sp
11227+\fB<command>\fP is the command itself. It consists of the command name and
11228+multiple (or none) commands, all separated by whitespace. String arguments
11229+need to be quoted with \fB"\fP\&. Details see \fBFlat command syntax\fP\&.
11230+.sp
11231+You can bind multiple commands to one key. For example:
11232+.nf
11233+a show\-text "command 1" ; show\-text "command 2"
11234+.fi
11235+.sp
11236+.sp
11237+It\(aqs also possible to bind a command to a sequence of keys:
11238+.nf
11239+a\-b\-c show\-text "command run after a, b, c have been pressed"
11240+.fi
11241+.sp
11242+.sp
11243+(This is not shown in the general command syntax.)
11244+.sp
11245+If \fBa\fP or \fBa\-b\fP or \fBb\fP are already bound, this will run the first command
11246+that matches, and the multi\-key command will never be called. Intermediate keys
11247+can be remapped to \fBignore\fP in order to avoid this issue. The maximum number
11248+of (non\-modifier) keys for combinations is currently 4.
11249+.SS Key names
11250+.sp
11251+All mouse and keyboard input is to converted to mpv\-specific key names. Key
11252+names are either special symbolic identifiers representing a physical key, or a
11253+text key names, which are unicode code points encoded as UTF\-8. These are what
11254+keyboard input would normally produce, for example \fBa\fP for the A key. As a
11255+consequence, mpv uses input translated by the current OS keyboard layout, rather
11256+than physical scan codes.
11257+.sp
11258+Currently there is the hardcoded assumption that every text key can be
11259+represented as a single unicode code point (in NFKC form).
11260+.sp
11261+All key names can be combined with the modifiers \fBShift\fP, \fBCtrl\fP, \fBAlt\fP,
11262+\fBMeta\fP\&. They must be prefixed to the actual key name, where each modifier
11263+is followed by a \fB+\fP (for example \fBctrl+q\fP).
11264+.sp
11265+Symbolic key names and modifier names are case\-insensitive. Unicode key names
11266+are case\-sensitive because input bindings typically respect the shift key.
11267+.sp
11268+Another type of key names are hexadecimal key names, that serve as fallback
11269+for special keys that are neither unicode, nor have a special mpv defined name.
11270+They will break as soon as mpv adds proper names for them, but can enable you
11271+to use a key at all if that does not happen.
11272+.sp
11273+All symbolic names are listed by \fB\-\-input\-keylist\fP\&. \fB\-\-input\-test\fP is a
11274+special mode that prints all input on the OSD.
11275+.sp
11276+Comments on some symbolic names:
11277+.INDENT 0.0
11278+.TP
11279+.B \fBKP*\fP
11280+Keypad names. Behavior varies by backend (whether they implement this, and
11281+on how they treat numlock), but typically, mpv tries to map keys on the
11282+keypad to separate names, even if they produce the same text as normal keys.
11283+.TP
11284+.B \fBMOUSE_BTN*\fP, \fBMBTN*\fP
11285+Various mouse buttons.
11286+.sp
11287+Depending on backend, the mouse wheel might also be represented as a button.
11288+In addition, \fBMOUSE_BTN3\fP to \fBMOUSE_BTN6\fP are deprecated aliases for
11289+\fBWHEEL_UP\fP, \fBWHEEL_DOWN\fP, \fBWHEEL_LEFT\fP, \fBWHEEL_RIGHT\fP\&.
11290+.sp
11291+\fBMBTN*\fP are aliases for \fBMOUSE_BTN*\fP\&.
11292+.TP
11293+.B \fBWHEEL_*\fP
11294+Mouse wheels (typically).
11295+.TP
11296+.B \fBAXIS_*\fP
11297+Deprecated aliases for \fBWHEEL_*\fP\&.
11298+.TP
11299+.B \fB*_DBL\fP
11300+Mouse button double clicks.
11301+.TP
11302+.B \fBMOUSE_MOVE\fP, \fBMOUSE_ENTER\fP, \fBMOUSE_LEAVE\fP
11303+Emitted by mouse move events. Enter/leave happens when the mouse enters or
11304+leave the mpv window (or the current mouse region, using the deprecated
11305+mouse region input section mechanism).
11306+.TP
11307+.B \fBCLOSE_WIN\fP
11308+Pseudo key emitted when closing the mpv window using the OS window manager
11309+(for example, by clicking the close button in the window title bar).
11310+.TP
11311+.B \fBGAMEPAD_*\fP
11312+Keys emitted by the SDL gamepad backend.
11313+.TP
11314+.B \fBUNMAPPED\fP
11315+Pseudo\-key that matches any unmapped key. (You should probably avoid this
11316+if possible, because it might change behavior or get removed in the future.)
11317+.TP
11318+.B \fBANY_UNICODE\fP
11319+Pseudo\-key that matches any key that produces text. (You should probably
11320+avoid this if possible, because it might change behavior or get removed in
11321+the future.)
11322+.UNINDENT
11323+.SS Flat command syntax
11324+.sp
11325+This is the syntax used in input.conf, and referred to "input.conf syntax" in
11326+a number of other places.
11327+.sp
11328+\fB<command> ::= [<prefixes>] <command_name> (<argument>)*\fP
11329+\fB<argument> ::= (<string> | " <quoted_string> " )\fP
11330+.sp
11331+\fBcommand_name\fP is an unquoted string with the command name itself. See
11332+\fI\%List of Input Commands\fP for a list.
11333+.sp
11334+Arguments are separated by whitespace. This applies even to string arguments.
11335+For this reason, string arguments should be quoted with \fB"\fP\&. If a string
11336+argument contains spaces or certain special characters, quoting and possibly
11337+escaping is mandatory, or the command cannot be parsed correctly.
11338+.sp
11339+Inside quotes, C\-style escaping can be used. JSON escapes according to RFC 8259,
11340+minus surrogate pair escapes, should be a safe subset that can be used.
11341+.SS Commands specified as arrays
11342+.sp
11343+This applies to certain APIs, such as \fBmp.commandv()\fP or
11344+\fBmp.command_native()\fP (with array parameters) in Lua scripting, or
11345+\fBmpv_command()\fP or \fBmpv_command_node()\fP (with MPV_FORMAT_NODE_ARRAY) in the
11346+C libmpv client API.
11347+.sp
11348+The command as well as all arguments are passed as a single array. Similar to
11349+the \fI\%Flat command syntax\fP, you can first pass prefixes as strings (each as
11350+separate array item), then the command name as string, and then each argument
11351+as string or a native value.
11352+.sp
11353+Since these APIs pass arguments as separate strings or native values, they do
11354+not expect quotes, and do support escaping. Technically, there is the input.conf
11355+parser, which first splits the command string into arguments, and then invokes
11356+argument parsers for each argument. The input.conf parser normally handles
11357+quotes and escaping. The array command APIs mentioned above pass strings
11358+directly to the argument parsers, or can sidestep them by the ability to pass
11359+non\-string values.
11360+.sp
11361+Sometimes commands have string arguments, that in turn are actually parsed by
11362+other components (e.g. filter strings with \fBvf add\fP) \- in these cases, you
11363+you would have to double\-escape in input.conf, but not with the array APIs.
11364+.sp
11365+For complex commands, consider using \fI\%Named arguments\fP instead, which should
11366+give slightly more compatibility. Some commands do not support named arguments
11367+and inherently take an array, though.
11368+.SS Named arguments
11369+.sp
11370+This applies to certain APIs, such as \fBmp.command_native()\fP (with tables that
11371+have string keys) in Lua scripting, or \fBmpv_command_node()\fP (with
11372+MPV_FORMAT_NODE_MAP) in the C libmpv client API.
11373+.sp
11374+Like with array commands, quoting and escaping is inherently not needed in the
11375+normal case.
11376+.sp
11377+The name of each command is defined in each command description in the
11378+\fI\%List of Input Commands\fP\&. \fB\-\-input\-cmdlist\fP also lists them.
11379+.sp
11380+Some commands do not support named arguments (e.g. \fBrun\fP command). You need
11381+to use APIs that pass arguments as arrays.
11382+.sp
11383+Named arguments are not supported in the "flat" input.conf syntax, which means
11384+you cannot use them for key bindings in input.conf at all.
11385+.SS List of Input Commands
11386+.sp
11387+Commands with parameters have the parameter name enclosed in \fB<\fP / \fB>\fP\&.
11388+Don\(aqt add those to the actual command. Optional arguments are enclosed in
11389+\fB[\fP / \fB]\fP\&. If you don\(aqt pass them, they will be set to a default value.
11390+.sp
11391+Remember to quote string arguments in input.conf (see \fI\%Flat command syntax\fP).
11392+.INDENT 0.0
11393+.TP
11394+.B \fBignore\fP
11395+Use this to "block" keys that should be unbound, and do nothing. Useful for
11396+disabling default bindings, without disabling all bindings with
11397+\fB\-\-no\-input\-default\-bindings\fP\&.
11398+.TP
11399+.B \fBseek <target> [<flags>]\fP
11400+Change the playback position. By default, seeks by a relative amount of
11401+seconds.
11402+.sp
11403+The second argument consists of flags controlling the seek mode:
11404+.INDENT 7.0
11405+.TP
11406+.B relative (default)
11407+Seek relative to current position (a negative value seeks backwards).
11408+.TP
11409+.B absolute
11410+Seek to a given time (a negative value starts from the end of the file).
11411+.TP
11412+.B absolute\-percent
11413+Seek to a given percent position.
11414+.TP
11415+.B relative\-percent
11416+Seek relative to current position in percent.
11417+.TP
11418+.B keyframes
11419+Always restart playback at keyframe boundaries (fast).
11420+.TP
11421+.B exact
11422+Always do exact/hr/precise seeks (slow).
11423+.UNINDENT
11424+.sp
11425+Multiple flags can be combined, e.g.: \fBabsolute+keyframes\fP\&.
11426+.sp
11427+By default, \fBkeyframes\fP is used for \fBrelative\fP, \fBrelative\-percent\fP,
11428+and \fBabsolute\-percent\fP seeks, while \fBexact\fP is used for \fBabsolute\fP
11429+seeks.
11430+.sp
11431+Before mpv 0.9, the \fBkeyframes\fP and \fBexact\fP flags had to be passed as
11432+3rd parameter (essentially using a space instead of \fB+\fP). The 3rd
11433+parameter is still parsed, but is considered deprecated.
11434+.TP
11435+.B \fBrevert\-seek [<flags>]\fP
11436+Undoes the \fBseek\fP command, and some other commands that seek (but not
11437+necessarily all of them). Calling this command once will jump to the
11438+playback position before the seek. Calling it a second time undoes the
11439+\fBrevert\-seek\fP command itself. This only works within a single file.
11440+.sp
11441+The first argument is optional, and can change the behavior:
11442+.INDENT 7.0
11443+.TP
11444+.B mark
11445+Mark the current time position. The next normal \fBrevert\-seek\fP command
11446+will seek back to this point, no matter how many seeks happened since
11447+last time.
11448+.UNINDENT
11449+.sp
11450+Using it without any arguments gives you the default behavior.
11451+.TP
11452+.B \fBframe\-step\fP
11453+Play one frame, then pause. Does nothing with audio\-only playback.
11454+.TP
11455+.B \fBframe\-back\-step\fP
11456+Go back by one frame, then pause. Note that this can be very slow (it tries
11457+to be precise, not fast), and sometimes fails to behave as expected. How
11458+well this works depends on whether precise seeking works correctly (e.g.
11459+see the \fB\-\-hr\-seek\-demuxer\-offset\fP option). Video filters or other video
11460+post\-processing that modifies timing of frames (e.g. deinterlacing) should
11461+usually work, but might make backstepping silently behave incorrectly in
11462+corner cases. Using \fB\-\-hr\-seek\-framedrop=no\fP should help, although it
11463+might make precise seeking slower.
11464+.sp
11465+This does not work with audio\-only playback.
11466+.TP
11467+.B \fBset <name> <value>\fP
11468+Set the given property or option to the given value.
11469+.TP
11470+.B \fBadd <name> [<value>]\fP
11471+Add the given value to the property or option. On overflow or underflow,
11472+clamp the property to the maximum. If \fB<value>\fP is omitted, assume \fB1\fP\&.
11473+.TP
11474+.B \fBcycle <name> [<value>]\fP
11475+Cycle the given property or option. The second argument can be \fBup\fP or
11476+\fBdown\fP to set the cycle direction. On overflow, set the property back to
11477+the minimum, on underflow set it to the maximum. If \fBup\fP or \fBdown\fP is
11478+omitted, assume \fBup\fP\&.
11479+.TP
11480+.B \fBmultiply <name> <value>\fP
11481+Similar to \fBadd\fP, but multiplies the property or option with the numeric
11482+value.
11483+.TP
11484+.B \fBscreenshot <flags>\fP
11485+Take a screenshot.
11486+.sp
11487+Multiple flags are available (some can be combined with \fB+\fP):
11488+.INDENT 7.0
11489+.TP
11490+.B <subtitles> (default)
11491+Save the video image, in its original resolution, and with subtitles.
11492+Some video outputs may still include the OSD in the output under certain
11493+circumstances.
11494+.TP
11495+.B <video>
11496+Like \fBsubtitles\fP, but typically without OSD or subtitles. The exact
11497+behavior depends on the selected video output.
11498+.TP
11499+.B <window>
11500+Save the contents of the mpv window. Typically scaled, with OSD and
11501+subtitles. The exact behavior depends on the selected video output, and
11502+if no support is available, this will act like \fBvideo\fP\&.
11503+.TP
11504+.B <each\-frame>
11505+Take a screenshot each frame. Issue this command again to stop taking
11506+screenshots. Note that you should disable frame\-dropping when using
11507+this mode \- or you might receive duplicate images in cases when a
11508+frame was dropped. This flag can be combined with the other flags,
11509+e.g. \fBvideo+each\-frame\fP\&.
11510+.UNINDENT
11511+.sp
11512+Older mpv versions required passing \fBsingle\fP and \fBeach\-frame\fP as
11513+second argument (and did not have flags). This syntax is still understood,
11514+but deprecated and might be removed in the future.
11515+.sp
11516+If you combine this command with another one using \fB;\fP, you can use the
11517+\fBasync\fP flag to make encoding/writing the image file asynchronous. For
11518+normal standalone commands, this is always asynchronous, and the flag has
11519+no effect. (This behavior changed with mpv 0.29.0.)
11520+.TP
11521+.B \fBscreenshot\-to\-file <filename> <flags>\fP
11522+Take a screenshot and save it to a given file. The format of the file will
11523+be guessed by the extension (and \fB\-\-screenshot\-format\fP is ignored \- the
11524+behavior when the extension is missing or unknown is arbitrary).
11525+.sp
11526+The second argument is like the first argument to \fBscreenshot\fP and
11527+supports \fBsubtitles\fP, \fBvideo\fP, \fBwindow\fP\&.
11528+.sp
11529+If the file already exists, it\(aqs overwritten.
11530+.sp
11531+Like all input command parameters, the filename is subject to property
11532+expansion as described in \fI\%Property Expansion\fP\&.
11533+.TP
11534+.B \fBplaylist\-next <flags>\fP
11535+Go to the next entry on the playlist.
11536+.sp
11537+First argument:
11538+.INDENT 7.0
11539+.TP
11540+.B weak (default)
11541+If the last file on the playlist is currently played, do nothing.
11542+.TP
11543+.B force
11544+Terminate playback if there are no more files on the playlist.
11545+.UNINDENT
11546+.TP
11547+.B \fBplaylist\-prev <flags>\fP
11548+Go to the previous entry on the playlist.
11549+.sp
11550+First argument:
11551+.INDENT 7.0
11552+.TP
11553+.B weak (default)
11554+If the first file on the playlist is currently played, do nothing.
11555+.TP
11556+.B force
11557+Terminate playback if the first file is being played.
11558+.UNINDENT
11559+.TP
11560+.B \fBloadfile <url> [<flags> [<options>]]\fP
11561+Load the given file or URL and play it.
11562+.sp
11563+Second argument:
11564+.INDENT 7.0
11565+.TP
11566+.B <replace> (default)
11567+Stop playback of the current file, and play the new file immediately.
11568+.TP
11569+.B <append>
11570+Append the file to the playlist.
11571+.TP
11572+.B <append\-play>
11573+Append the file, and if nothing is currently playing, start playback.
11574+(Always starts with the added file, even if the playlist was not empty
11575+before running this command.)
11576+.UNINDENT
11577+.sp
11578+The third argument is a list of options and values which should be set
11579+while the file is playing. It is of the form \fBopt1=value1,opt2=value2,..\fP\&.
11580+Not all options can be changed this way. Some options require a restart
11581+of the player.
11582+.TP
11583+.B \fBloadlist <url> [<flags>]\fP
11584+Load the given playlist file or URL (like \fB\-\-playlist\fP).
11585+.sp
11586+Second argument:
11587+.INDENT 7.0
11588+.TP
11589+.B <replace> (default)
11590+Stop playback and replace the internal playlist with the new one.
11591+.TP
11592+.B <append>
11593+Append the new playlist at the end of the current internal playlist.
11594+.UNINDENT
11595+.TP
11596+.B \fBplaylist\-clear\fP
11597+Clear the playlist, except the currently played file.
11598+.TP
11599+.B \fBplaylist\-remove <index>\fP
11600+Remove the playlist entry at the given index. Index values start counting
11601+with 0. The special value \fBcurrent\fP removes the current entry. Note that
11602+removing the current entry also stops playback and starts playing the next
11603+entry.
11604+.TP
11605+.B \fBplaylist\-move <index1> <index2>\fP
11606+Move the playlist entry at index1, so that it takes the place of the
11607+entry index2. (Paradoxically, the moved playlist entry will not have
11608+the index value index2 after moving if index1 was lower than index2,
11609+because index2 refers to the target entry, not the index the entry
11610+will have after moving.)
11611+.TP
11612+.B \fBplaylist\-shuffle\fP
11613+Shuffle the playlist. This is similar to what is done on start if the
11614+\fB\-\-shuffle\fP option is used.
11615+.TP
11616+.B \fBplaylist\-unshuffle\fP
11617+Attempt to revert the previous \fBplaylist\-shuffle\fP command. This works
11618+only once (multiple successive \fBplaylist\-unshuffle\fP commands do nothing).
11619+May not work correctly if new recursive playlists have been opened since
11620+a \fBplaylist\-shuffle\fP command.
11621+.TP
11622+.B \fBrun <command> [<arg1> [<arg2> [...]]]\fP
11623+Run the given command. Unlike in MPlayer/mplayer2 and earlier versions of
11624+mpv (0.2.x and older), this doesn\(aqt call the shell. Instead, the command
11625+is run directly, with each argument passed separately. Each argument is
11626+expanded like in \fI\%Property Expansion\fP\&.
11627+.sp
11628+This command has a variable number of arguments, and cannot be used with
11629+named arguments.
11630+.sp
11631+The program is run in a detached way. mpv doesn\(aqt wait until the command
11632+is completed, but continues playback right after spawning it.
11633+.sp
11634+To get the old behavior, use \fB/bin/sh\fP and \fB\-c\fP as the first two
11635+arguments.
11636+.INDENT 7.0
11637+.INDENT 3.5
11638+.IP "Example"
11639+.sp
11640+\fBrun "/bin/sh" "\-c" "echo ${title} > /tmp/playing"\fP
11641+.sp
11642+This is not a particularly good example, because it doesn\(aqt handle
11643+escaping, and a specially prepared file might allow an attacker to
11644+execute arbitrary shell commands. It is recommended to write a small
11645+shell script, and call that with \fBrun\fP\&.
11646+.UNINDENT
11647+.UNINDENT
11648+.TP
11649+.B \fBsubprocess\fP
11650+Similar to \fBrun\fP, but gives more control about process execution to the
11651+caller, and does does not detach the process.
11652+.sp
11653+You can avoid blocking until the process terminates by running this command
11654+asynchronously. (For example \fBmp.command_native_async()\fP in Lua scripting.)
11655+.sp
11656+This has the following named arguments. The order of them is not guaranteed,
11657+so you should always call them with named arguments, see \fI\%Named arguments\fP\&.
11658+.INDENT 7.0
11659+.TP
11660+.B \fBargs\fP (\fBMPV_FORMAT_NODE_ARRAY[MPV_FORMAT_STRING]\fP)
11661+Array of strings with the command as first argument, and subsequent
11662+command line arguments following. This is just like the \fBrun\fP command
11663+argument list.
11664+.sp
11665+The first array entry is either an absolute path to the executable, or
11666+a filename with no path components, in which case the \fBPATH\fP
11667+environment variable. On Unix, this is equivalent to \fBposix_spawnp\fP
11668+and \fBexecvp\fP behavior.
11669+.TP
11670+.B \fBplayback_only\fP (\fBMPV_FORMAT_FLAG\fP)
11671+Boolean indicating whether the process should be killed when playback
11672+terminates (optional, default: yes). If enabled, stopping playback
11673+will automatically kill the process, and you can\(aqt start it outside of
11674+playback.
11675+.TP
11676+.B \fBcapture_size\fP (\fBMPV_FORMAT_INT64\fP)
11677+Integer setting the maximum number of stdout plus stderr bytes that can
11678+be captured (optional, default: 64MB). If the number of bytes exceeds
11679+this, capturing is stopped. The limit is per captured stream.
11680+.TP
11681+.B \fBcapture_stdout\fP (\fBMPV_FORMAT_FLAG\fP)
11682+Capture all data the process outputs to stdout and return it once the
11683+process ends (optional, default: no).
11684+.TP
11685+.B \fBcapture_stderr\fP (\fBMPV_FORMAT_FLAG\fP)
11686+Same as \fBcapture_stdout\fP, but for stderr.
11687+.UNINDENT
11688+.sp
11689+The command returns the following result (as \fBMPV_FORMAT_NODE_MAP\fP):
11690+.INDENT 7.0
11691+.TP
11692+.B \fBstatus\fP (\fBMPV_FORMAT_INT64\fP)
11693+The raw exit status of the process. It will be negative on error. The
11694+meaning of negative values is undefined, other than meaning error (and
11695+does not necessarily correspond to OS low level exit status values).
11696+.sp
11697+On Windows, it can happen that a negative return value is returned
11698+even if the process exits gracefully, because the win32 \fBUINT\fP exit
11699+code is assigned to an \fBint\fP variable before being set as \fBint64_t\fP
11700+field in the result map. This might be fixed later.
11701+.TP
11702+.B \fBstdout\fP (\fBMPV_FORMAT_BYTE_ARRAY\fP)
11703+Captured stdout stream, limited to \fBcapture_size\fP\&.
11704+.TP
11705+.B \fBstderr\fP (\fBMPV_FORMAT_BYTE_ARRAY\fP)
11706+Same as \fBstdout\fP, but for stderr.
11707+.TP
11708+.B \fBerror_string\fP (\fBMPV_FORMAT_STRING\fP)
11709+Empty string if the process exited gracefully. The string \fBkilled\fP if
11710+the process was terminated in an unusual way. The string \fBinit\fP if the
11711+process could not be started.
11712+.sp
11713+On Windows, \fBkilled\fP is only returned when the process has been
11714+killed by mpv as a result of \fBplayback_only\fP being set to \fByes\fP\&.
11715+.TP
11716+.B \fBkilled_by_us\fP (\fBMPV_FORMAT_FLAG\fP)
11717+Set to \fByes\fP if the process has been killed by mpv, for example as a
11718+result of \fBplayback_only\fP being set to \fByes\fP, aborting the command
11719+(e.g. by \fBmp.abort_async_command()\fP), or if the player is about to
11720+exit.
11721+.UNINDENT
11722+.sp
11723+Note that the command itself will always return success as long as the
11724+parameters are correct. Whether the process could be spawned or whether
11725+it was somehow killed or returned an error status has to be queried from
11726+the result value.
11727+.sp
11728+This command can be asynchronously aborted via API.
11729+.sp
11730+In all cases, the subprocess will be terminated on player exit. Also see
11731+\fI\%Asynchronous command details\fP\&. Only the \fBrun\fP command can start
11732+processes in a truly detached way.
11733+.INDENT 7.0
11734+.INDENT 3.5
11735+.IP "Warning"
11736+.sp
11737+Don\(aqt forget to set the \fBplayback_only\fP field if you want the command
11738+run while the player is in idle mode, or if you don\(aqt want that end of
11739+playback kills the command.
11740+.UNINDENT
11741+.UNINDENT
11742+.TP
11743+.B \fBquit [<code>]\fP
11744+Exit the player. If an argument is given, it\(aqs used as process exit code.
11745+.TP
11746+.B \fBquit\-watch\-later [<code>]\fP
11747+Exit player, and store current playback position. Playing that file later
11748+will seek to the previous position on start. The (optional) argument is
11749+exactly as in the \fBquit\fP command.
11750+.TP
11751+.B \fBsub\-add <url> [<flags> [<title> [<lang>]]]\fP
11752+Load the given subtitle file or stream. By default, it is selected as
11753+current subtitle  after loading.
11754+.sp
11755+The \fBflags\fP argument is one of the following values:
11756+.sp
11757+<select>
11758+.INDENT 7.0
11759+.INDENT 3.5
11760+Select the subtitle immediately (default).
11761+.UNINDENT
11762+.UNINDENT
11763+.sp
11764+<auto>
11765+.INDENT 7.0
11766+.INDENT 3.5
11767+Don\(aqt select the subtitle. (Or in some special situations, let the
11768+default stream selection mechanism decide.)
11769+.UNINDENT
11770+.UNINDENT
11771+.sp
11772+<cached>
11773+.INDENT 7.0
11774+.INDENT 3.5
11775+Select the subtitle. If a subtitle with the same filename was already
11776+added, that one is selected, instead of loading a duplicate entry.
11777+(In this case, title/language are ignored, and if the was changed since
11778+it was loaded, these changes won\(aqt be reflected.)
11779+.UNINDENT
11780+.UNINDENT
11781+.sp
11782+The \fBtitle\fP argument sets the track title in the UI.
11783+.sp
11784+The \fBlang\fP argument sets the track language, and can also influence
11785+stream selection with \fBflags\fP set to \fBauto\fP\&.
11786+.TP
11787+.B \fBsub\-remove [<id>]\fP
11788+Remove the given subtitle track. If the \fBid\fP argument is missing, remove
11789+the current track. (Works on external subtitle files only.)
11790+.TP
11791+.B \fBsub\-reload [<id>]\fP
11792+Reload the given subtitle tracks. If the \fBid\fP argument is missing, reload
11793+the current track. (Works on external subtitle files only.)
11794+.sp
11795+This works by unloading and re\-adding the subtitle track.
11796+.TP
11797+.B \fBsub\-step <skip>\fP
11798+Change subtitle timing such, that the subtitle event after the next
11799+\fB<skip>\fP subtitle events is displayed. \fB<skip>\fP can be negative to step
11800+backwards.
11801+.TP
11802+.B \fBsub\-seek <skip>\fP
11803+Seek to the next (skip set to 1) or the previous (skip set to \-1) subtitle.
11804+This is similar to \fBsub\-step\fP, except that it seeks video and audio
11805+instead of adjusting the subtitle delay.
11806+.sp
11807+For embedded subtitles (like with Matroska), this works only with subtitle
11808+events that have already been displayed, or are within a short prefetch
11809+range.
11810+.TP
11811+.B \fBprint\-text <text>\fP
11812+Print text to stdout. The string can contain properties (see
11813+\fI\%Property Expansion\fP). Take care to put the argument in quotes.
11814+.TP
11815+.B \fBshow\-text <text> [<duration>|\-1 [<level>]]\fP
11816+Show text on the OSD. The string can contain properties, which are expanded
11817+as described in \fI\%Property Expansion\fP\&. This can be used to show playback
11818+time, filename, and so on.
11819+.INDENT 7.0
11820+.TP
11821+.B <duration>
11822+The time in ms to show the message for. By default, it uses the same
11823+value as \fB\-\-osd\-duration\fP\&.
11824+.TP
11825+.B <level>
11826+The minimum OSD level to show the text at (see \fB\-\-osd\-level\fP).
11827+.UNINDENT
11828+.TP
11829+.B \fBexpand\-text <string>\fP
11830+Property\-expand the argument and return the expanded string. This can be
11831+used only through the client API or from a script using
11832+\fBmp.command_native\fP\&. (see \fI\%Property Expansion\fP).
11833+.TP
11834+.B \fBexpand\-path "<string>"\fP
11835+Expand a path\(aqs double\-tilde placeholders into a platform\-specific path.
11836+As \fBexpand\-text\fP, this can only be used through the client API or from
11837+a script using \fBmp.command_native\fP\&.
11838+.INDENT 7.0
11839+.INDENT 3.5
11840+.IP "Example"
11841+.sp
11842+\fBmp.osd_message(mp.command_native({"expand\-path", "~~home/"}))\fP
11843+.sp
11844+This line of Lua would show the location of the user\(aqs mpv
11845+configuration directory on the OSD.
11846+.UNINDENT
11847+.UNINDENT
11848+.TP
11849+.B \fBshow\-progress\fP
11850+Show the progress bar, the elapsed time and the total duration of the file
11851+on the OSD.
11852+.TP
11853+.B \fBwrite\-watch\-later\-config\fP
11854+Write the resume config file that the \fBquit\-watch\-later\fP command writes,
11855+but continue playback normally.
11856+.TP
11857+.B \fBstop\fP
11858+Stop playback and clear playlist. With default settings, this is
11859+essentially like \fBquit\fP\&. Useful for the client API: playback can be
11860+stopped without terminating the player.
11861+.TP
11862+.B \fBmouse <x> <y> [<button> [<mode>]]\fP
11863+Send a mouse event with given coordinate (\fB<x>\fP, \fB<y>\fP).
11864+.sp
11865+Second argument:
11866+.INDENT 7.0
11867+.TP
11868+.B <button>
11869+The button number of clicked mouse button. This should be one of 0\-19.
11870+If \fB<button>\fP is omitted, only the position will be updated.
11871+.UNINDENT
11872+.sp
11873+Third argument:
11874+.INDENT 7.0
11875+.TP
11876+.B <single> (default)
11877+The mouse event represents regular single click.
11878+.TP
11879+.B <double>
11880+The mouse event represents double\-click.
11881+.UNINDENT
11882+.TP
11883+.B \fBkeypress <name>\fP
11884+Send a key event through mpv\(aqs input handler, triggering whatever
11885+behavior is configured to that key. \fBname\fP uses the \fBinput.conf\fP
11886+naming scheme for keys and modifiers. Useful for the client API: key events
11887+can be sent to libmpv to handle internally.
11888+.TP
11889+.B \fBkeydown <name>\fP
11890+Similar to \fBkeypress\fP, but sets the \fBKEYDOWN\fP flag so that if the key is
11891+bound to a repeatable command, it will be run repeatedly with mpv\(aqs key
11892+repeat timing until the \fBkeyup\fP command is called.
11893+.TP
11894+.B \fBkeyup [<name>]\fP
11895+Set the \fBKEYUP\fP flag, stopping any repeated behavior that had been
11896+triggered. \fBname\fP is optional. If \fBname\fP is not given or is an
11897+empty string, \fBKEYUP\fP will be set on all keys. Otherwise, \fBKEYUP\fP will
11898+only be set on the key specified by \fBname\fP\&.
11899+.TP
11900+.B \fBkeybind <name> <command>\fP
11901+Binds a key to an input command. \fBcommand\fP must be a complete command
11902+containing all the desired arguments and flags. Both \fBname\fP and
11903+\fBcommand\fP use the \fBinput.conf\fP naming scheme. This is primarily
11904+useful for the client API.
11905+.TP
11906+.B \fBaudio\-add <url> [<flags> [<title> [<lang>]]]\fP
11907+Load the given audio file. See \fBsub\-add\fP command.
11908+.TP
11909+.B \fBaudio\-remove [<id>]\fP
11910+Remove the given audio track. See \fBsub\-remove\fP command.
11911+.TP
11912+.B \fBaudio\-reload [<id>]\fP
11913+Reload the given audio tracks. See \fBsub\-reload\fP command.
11914+.TP
11915+.B \fBvideo\-add <url> [<flags> [<title> [<lang>]]]\fP
11916+Load the given video file. See \fBsub\-add\fP command.
11917+.TP
11918+.B \fBvideo\-remove [<id>]\fP
11919+Remove the given video track. See \fBsub\-remove\fP command.
11920+.TP
11921+.B \fBvideo\-reload [<id>]\fP
11922+Reload the given video tracks. See \fBsub\-reload\fP command.
11923+.TP
11924+.B \fBrescan\-external\-files [<mode>]\fP
11925+Rescan external files according to the current \fB\-\-sub\-auto\fP and
11926+\fB\-\-audio\-file\-auto\fP settings. This can be used to auto\-load external
11927+files \fIafter\fP the file was loaded.
11928+.sp
11929+The \fBmode\fP argument is one of the following:
11930+.INDENT 7.0
11931+.TP
11932+.B <reselect> (default)
11933+Select the default audio and subtitle streams, which typically selects
11934+external files with the highest preference. (The implementation is not
11935+perfect, and could be improved on request.)
11936+.TP
11937+.B <keep\-selection>
11938+Do not change current track selections.
11939+.UNINDENT
11940+.UNINDENT
11941+.SS Input Commands that are Possibly Subject to Change
11942+.INDENT 0.0
11943+.TP
11944+.B \fBaf <operation> <value>\fP
11945+Change audio filter chain. See \fBvf\fP command.
11946+.TP
11947+.B \fBvf <operation> <value>\fP
11948+Change video filter chain.
11949+.sp
11950+The semantics are exactly the same as with option parsing (see
11951+\fI\%VIDEO FILTERS\fP). As such the text below is a redundant and incomplete
11952+summary.
11953+.sp
11954+The first argument decides what happens:
11955+.INDENT 7.0
11956+.TP
11957+.B <set>
11958+Overwrite the previous filter chain with the new one.
11959+.TP
11960+.B <add>
11961+Append the new filter chain to the previous one.
11962+.TP
11963+.B <toggle>
11964+Check if the given filter (with the exact parameters) is already
11965+in the video chain. If yes, remove the filter. If no, add the filter.
11966+(If several filters are passed to the command, this is done for
11967+each filter.)
11968+.sp
11969+A special variant is combining this with labels, and using \fB@name\fP
11970+without filter name and parameters as filter entry. This toggles the
11971+enable/disable flag.
11972+.TP
11973+.B <del>
11974+Remove the given filters from the video chain. Unlike in the other
11975+cases, the second parameter is a comma separated list of filter names
11976+or integer indexes. \fB0\fP would denote the first filter. Negative
11977+indexes start from the last filter, and \fB\-1\fP denotes the last
11978+filter. Deprecated.
11979+.TP
11980+.B <clr>
11981+Remove all filters. Note that like the other sub\-commands, this does
11982+not control automatically inserted filters.
11983+.UNINDENT
11984+.sp
11985+The argument is always needed. E.g. in case of \fBclr\fP use \fBvf clr ""\fP\&.
11986+.sp
11987+You can assign labels to filter by prefixing them with \fB@name:\fP (where
11988+\fBname\fP is a user\-chosen arbitrary identifier). Labels can be used to
11989+refer to filters by name in all of the filter chain modification commands.
11990+For \fBadd\fP, using an already used label will replace the existing filter.
11991+.sp
11992+The \fBvf\fP command shows the list of requested filters on the OSD after
11993+changing the filter chain. This is roughly equivalent to
11994+\fBshow\-text ${vf}\fP\&. Note that auto\-inserted filters for format conversion
11995+are not shown on the list, only what was requested by the user.
11996+.sp
11997+Normally, the commands will check whether the video chain is recreated
11998+successfully, and will undo the operation on failure. If the command is run
11999+before video is configured (can happen if the command is run immediately
12000+after opening a file and before a video frame is decoded), this check can\(aqt
12001+be run. Then it can happen that creating the video chain fails.
12002+.INDENT 7.0
12003+.INDENT 3.5
12004+.IP "Example for input.conf"
12005+.INDENT 0.0
12006+.IP \(bu 2
12007+\fBa vf set flip\fP turn video upside\-down on the \fBa\fP key
12008+.IP \(bu 2
12009+\fBb vf set ""\fP remove all video filters on \fBb\fP
12010+.IP \(bu 2
12011+\fBc vf toggle gradfun\fP toggle debanding on \fBc\fP
12012+.UNINDENT
12013+.UNINDENT
12014+.UNINDENT
12015+.INDENT 7.0
12016+.INDENT 3.5
12017+.IP "Example how to toggle disabled filters at runtime"
12018+.INDENT 0.0
12019+.IP \(bu 2
12020+Add something like \fBvf\-add=@deband:!gradfun\fP to \fBmpv.conf\fP\&.
12021+The \fB@deband:\fP is the label, an arbitrary, user\-given name for this
12022+filter entry. The \fB!\fP before the filter name disables the filter by
12023+default. Everything after this is the normal filter name and possibly
12024+filter parameters, like in the normal \fB\-\-vf\fP syntax.
12025+.IP \(bu 2
12026+Add \fBa vf toggle @deband\fP to \fBinput.conf\fP\&. This toggles the
12027+"disabled" flag for the filter with the label \fBdeband\fP when the
12028+\fBa\fP key is hit.
12029+.UNINDENT
12030+.UNINDENT
12031+.UNINDENT
12032+.TP
12033+.B \fBcycle\-values [<"!reverse">] <property> <value1> [<value2> [...]]\fP
12034+Cycle through a list of values. Each invocation of the command will set the
12035+given property to the next value in the list. The command will use the
12036+current value of the property/option, and use it to determine the current
12037+position in the list of values. Once it has found it, it will set the
12038+next value in the list (wrapping around to the first item if needed).
12039+.sp
12040+This command has a variable number of arguments, and cannot be used with
12041+named arguments.
12042+.sp
12043+The special argument \fB!reverse\fP can be used to cycle the value list in
12044+reverse. The only advantage is that you don\(aqt need to reverse the value
12045+list yourself when adding a second key binding for cycling backwards.
12046+.TP
12047+.B \fBenable\-section <name> [<flags>]\fP
12048+This command is deprecated, except for mpv\-internal uses.
12049+.sp
12050+Enable all key bindings in the named input section.
12051+.sp
12052+The enabled input sections form a stack. Bindings in sections on the top of
12053+the stack are preferred to lower sections. This command puts the section
12054+on top of the stack. If the section was already on the stack, it is
12055+implicitly removed beforehand. (A section cannot be on the stack more than
12056+once.)
12057+.sp
12058+The \fBflags\fP parameter can be a combination (separated by \fB+\fP) of the
12059+following flags:
12060+.INDENT 7.0
12061+.TP
12062+.B <exclusive>
12063+All sections enabled before the newly enabled section are disabled.
12064+They will be re\-enabled as soon as all exclusive sections above them
12065+are removed. In other words, the new section shadows all previous
12066+sections.
12067+.TP
12068+.B <allow\-hide\-cursor>
12069+This feature can\(aqt be used through the public API.
12070+.TP
12071+.B <allow\-vo\-dragging>
12072+Same.
12073+.UNINDENT
12074+.TP
12075+.B \fBdisable\-section <name>\fP
12076+This command is deprecated, except for mpv\-internal uses.
12077+.sp
12078+Disable the named input section. Undoes \fBenable\-section\fP\&.
12079+.TP
12080+.B \fBdefine\-section <name> <contents> [<flags>]\fP
12081+This command is deprecated, except for mpv\-internal uses.
12082+.sp
12083+Create a named input section, or replace the contents of an already existing
12084+input section. The \fBcontents\fP parameter uses the same syntax as the
12085+\fBinput.conf\fP file (except that using the section syntax in it is not
12086+allowed), including the need to separate bindings with a newline character.
12087+.sp
12088+If the \fBcontents\fP parameter is an empty string, the section is removed.
12089+.sp
12090+The section with the name \fBdefault\fP is the normal input section.
12091+.sp
12092+In general, input sections have to be enabled with the \fBenable\-section\fP
12093+command, or they are ignored.
12094+.sp
12095+The last parameter has the following meaning:
12096+.INDENT 7.0
12097+.TP
12098+.B <default> (also used if parameter omitted)
12099+Use a key binding defined by this section only if the user hasn\(aqt
12100+already bound this key to a command.
12101+.TP
12102+.B <force>
12103+Always bind a key. (The input section that was made active most recently
12104+wins if there are ambiguities.)
12105+.UNINDENT
12106+.sp
12107+This command can be used to dispatch arbitrary keys to a script or a client
12108+API user. If the input section defines \fBscript\-binding\fP commands, it is
12109+also possible to get separate events on key up/down, and relatively detailed
12110+information about the key state. The special key name \fBunmapped\fP can be
12111+used to match any unmapped key.
12112+.TP
12113+.B \fBoverlay\-add <id> <x> <y> <file> <offset> <fmt> <w> <h> <stride>\fP
12114+Add an OSD overlay sourced from raw data. This might be useful for scripts
12115+and applications controlling mpv, and which want to display things on top
12116+of the video window.
12117+.sp
12118+Overlays are usually displayed in screen resolution, but with some VOs,
12119+the resolution is reduced to that of the video\(aqs. You can read the
12120+\fBosd\-width\fP and \fBosd\-height\fP properties. At least with \fB\-\-vo\-xv\fP and
12121+anamorphic video (such as DVD), \fBosd\-par\fP should be read as well, and the
12122+overlay should be aspect\-compensated.
12123+.sp
12124+This has the following named arguments. The order of them is not guaranteed,
12125+so you should always call them with named arguments, see \fI\%Named arguments\fP\&.
12126+.sp
12127+\fBid\fP is an integer between 0 and 63 identifying the overlay element. The
12128+ID can be used to add multiple overlay parts, update a part by using this
12129+command with an already existing ID, or to remove a part with
12130+\fBoverlay\-remove\fP\&. Using a previously unused ID will add a new overlay,
12131+while reusing an ID will update it.
12132+.sp
12133+\fBx\fP and \fBy\fP specify the position where the OSD should be displayed.
12134+.sp
12135+\fBfile\fP specifies the file the raw image data is read from. It can be
12136+either a numeric UNIX file descriptor prefixed with \fB@\fP (e.g. \fB@4\fP),
12137+or a filename. The file will be mapped into memory with \fBmmap()\fP,
12138+copied, and unmapped before the command returns (changed in mpv 0.18.1).
12139+.sp
12140+It is also possible to pass a raw memory address for use as bitmap memory
12141+by passing a memory address as integer prefixed with an \fB&\fP character.
12142+Passing the wrong thing here will crash the player. This mode might be
12143+useful for use with libmpv. The \fBoffset\fP parameter is simply added to the
12144+memory address (since mpv 0.8.0, ignored before).
12145+.sp
12146+\fBoffset\fP is the byte offset of the first pixel in the source file.
12147+(The current implementation always mmap\(aqs the whole file from position 0 to
12148+the end of the image, so large offsets should be avoided. Before mpv 0.8.0,
12149+the offset was actually passed directly to \fBmmap\fP, but it was changed to
12150+make using it easier.)
12151+.sp
12152+\fBfmt\fP is a string identifying the image format. Currently, only \fBbgra\fP
12153+is defined. This format has 4 bytes per pixels, with 8 bits per component.
12154+The least significant 8 bits are blue, and the most significant 8 bits
12155+are alpha (in little endian, the components are B\-G\-R\-A, with B as first
12156+byte). This uses premultiplied alpha: every color component is already
12157+multiplied with the alpha component. This means the numeric value of each
12158+component is equal to or smaller than the alpha component. (Violating this
12159+rule will lead to different results with different VOs: numeric overflows
12160+resulting from blending broken alpha values is considered something that
12161+shouldn\(aqt happen, and consequently implementations don\(aqt ensure that you
12162+get predictable behavior in this case.)
12163+.sp
12164+\fBw\fP, \fBh\fP, and \fBstride\fP specify the size of the overlay. \fBw\fP is the
12165+visible width of the overlay, while \fBstride\fP gives the width in bytes in
12166+memory. In the simple case, and with the \fBbgra\fP format, \fBstride==4*w\fP\&.
12167+In general, the total amount of memory accessed is \fBstride * h\fP\&.
12168+(Technically, the minimum size would be \fBstride * (h \- 1) + w * 4\fP, but
12169+for simplicity, the player will access all \fBstride * h\fP bytes.)
12170+.sp
12171+\fBNOTE:\fP
12172+.INDENT 7.0
12173+.INDENT 3.5
12174+Before mpv 0.18.1, you had to do manual "double buffering" when updating
12175+an overlay by replacing it with a different memory buffer. Since mpv
12176+0.18.1, the memory is simply copied and doesn\(aqt reference any of the
12177+memory indicated by the command\(aqs arguments after the commend returns.
12178+If you want to use this command before mpv 0.18.1, reads the old docs
12179+to see how to handle this correctly.
12180+.UNINDENT
12181+.UNINDENT
12182+.TP
12183+.B \fBoverlay\-remove <id>\fP
12184+Remove an overlay added with \fBoverlay\-add\fP and the same ID. Does nothing
12185+if no overlay with this ID exists.
12186+.TP
12187+.B \fBosd\-overlay\fP
12188+Add/update/remove an OSD overlay.
12189+.sp
12190+(Although this sounds similar to \fBoverlay\-add\fP, \fBosd\-overlay\fP is for
12191+text overlays, while \fBoverlay\-add\fP is for bitmaps. Maybe \fBoverlay\-add\fP
12192+will be merged into \fBosd\-overlay\fP to remove this oddity.)
12193+.sp
12194+You can use this to add text overlays in ASS format. ASS has advanced
12195+positioning and rendering tags, which can be used to render almost any kind
12196+of vector graphics.
12197+.sp
12198+This command accepts the following parameters:
12199+.INDENT 7.0
12200+.TP
12201+.B \fBid\fP
12202+Arbitrary integer that identifies the overlay. Multiple overlays can be
12203+added by calling this command with different \fBid\fP parameters. Calling
12204+this command with the same \fBid\fP replaces the previously set overlay.
12205+.sp
12206+There is a separate namespace for each libmpv client (i.e. IPC
12207+connection, script), so IDs can be made up and assigned by the API user
12208+without conflicting with other API users.
12209+.sp
12210+If the libmpv client is destroyed, all overlays associated with it are
12211+also deleted. In particular, connecting via \fB\-\-input\-ipc\-server\fP,
12212+adding an overlay, and disconnecting will remove the overlay immediately
12213+again.
12214+.TP
12215+.B \fBformat\fP
12216+String that gives the type of the overlay. Accepts the following values:
12217+.INDENT 7.0
12218+.TP
12219+.B \fBass\-events\fP
12220+The \fBdata\fP parameter is a string. The string is split on the
12221+newline character. Every line is turned into the \fBText\fP part of
12222+a \fBDialogue\fP ASS event. Timing is unused (but behavior of timing
12223+dependent ASS tags may change in future mpv versions).
12224+.sp
12225+Note that it\(aqs better to put multiple lines into \fBdata\fP, instead
12226+of adding multiple OSD overlays.
12227+.sp
12228+This provides 2 ASS \fBStyles\fP\&. \fBOSD\fP contains the text style as
12229+defined by the current \fB\-\-osd\-...\fP options. \fBDefault\fP is
12230+similar, and contains style that \fBOSD\fP would have if all options
12231+were set to the default.
12232+.sp
12233+In addition, the \fBres_x\fP and \fBres_y\fP options specify the value
12234+of the ASS \fBPlayResX\fP and \fBPlayResY\fP header fields. If \fBres_y\fP
12235+is set to 0, \fBPlayResY\fP is initialized to an arbitrary default
12236+value (but note that the default for this command is 720, not 0).
12237+If \fBres_x\fP is set to 0, \fBPlayResX\fP is set based on \fBres_y\fP
12238+such that a virtual ASS pixel has a square pixel aspect ratio.
12239+.TP
12240+.B \fBnone\fP
12241+Special value that causes the overlay to be removed. Most parameters
12242+other than \fBid\fP and \fBformat\fP are mostly ignored.
12243+.UNINDENT
12244+.TP
12245+.B \fBdata\fP
12246+String defining the overlay contents according to the \fBformat\fP
12247+parameter.
12248+.TP
12249+.B \fBres_x\fP, \fBres_y\fP
12250+Used if \fBformat\fP is set to \fBass\-events\fP (see description there).
12251+Optional, defaults to 0/720.
12252+.TP
12253+.B \fBz\fP
12254+The Z order of the overlay. Optional, defaults to 0.
12255+.sp
12256+Note that Z order between different overlays of different formats is
12257+static, and cannot be changed (currently, this means that bitmap
12258+overlays added by \fBoverlay\-add\fP are always on top of the ASS overlays
12259+added by \fBosd\-overlay\fP). In addition, the builtin OSD components are
12260+always below any of the custom OSD. (This includes subtitles of any kind
12261+as well as text rendered by \fBshow\-text\fP\&.)
12262+.sp
12263+It\(aqs possible that future mpv versions will randomly change how Z order
12264+between different OSD formats and builtin OSD is handled.
12265+.UNINDENT
12266+.sp
12267+Note: always use named arguments (\fBmpv_command_node()\fP). Scripts should
12268+use the \fBmp.create_osd_overlay()\fP helper instead of invoking this command
12269+directly.
12270+.TP
12271+.B \fBscript\-message [<arg1> [<arg2> [...]]]\fP
12272+Send a message to all clients, and pass it the following list of arguments.
12273+What this message means, how many arguments it takes, and what the arguments
12274+mean is fully up to the receiver and the sender. Every client receives the
12275+message, so be careful about name clashes (or use \fBscript\-message\-to\fP).
12276+.sp
12277+This command has a variable number of arguments, and cannot be used with
12278+named arguments.
12279+.TP
12280+.B \fBscript\-message\-to <target> [<arg1> [<arg2> [...]]]\fP
12281+Same as \fBscript\-message\fP, but send it only to the client named
12282+\fB<target>\fP\&. Each client (scripts etc.) has a unique name. For example,
12283+Lua scripts can get their name via \fBmp.get_script_name()\fP\&.
12284+.sp
12285+This command has a variable number of arguments, and cannot be used with
12286+named arguments.
12287+.TP
12288+.B \fBscript\-binding <name>\fP
12289+Invoke a script\-provided key binding. This can be used to remap key
12290+bindings provided by external Lua scripts.
12291+.sp
12292+The argument is the name of the binding.
12293+.sp
12294+It can optionally be prefixed with the name of the script, using \fB/\fP as
12295+separator, e.g. \fBscript\-binding scriptname/bindingname\fP\&.
12296+.sp
12297+For completeness, here is how this command works internally. The details
12298+could change any time. On any matching key event, \fBscript\-message\-to\fP
12299+or \fBscript\-message\fP is called (depending on whether the script name is
12300+included), with the following arguments:
12301+.INDENT 7.0
12302+.IP 1. 3
12303+The string \fBkey\-binding\fP\&.
12304+.IP 2. 3
12305+The name of the binding (as established above).
12306+.IP 3. 3
12307+The key state as string (see below).
12308+.IP 4. 3
12309+The key name (since mpv 0.15.0).
12310+.IP 5. 3
12311+The text the key would produce, or empty string if not applicable.
12312+.UNINDENT
12313+.sp
12314+The 5th argument is only set if no modifiers are present (using the shift
12315+key with a letter is normally not emitted as having a modifier, and results
12316+in upper case text instead, but some backends may mess up).
12317+.sp
12318+The key state consists of 2 characters:
12319+.INDENT 7.0
12320+.IP 1. 3
12321+One of \fBd\fP (key was pressed down), \fBu\fP (was released), \fBr\fP (key
12322+is still down, and was repeated; only if key repeat is enabled for this
12323+binding), \fBp\fP (key was pressed; happens if up/down can\(aqt be tracked).
12324+.IP 2. 3
12325+Whether the event originates from the mouse, either \fBm\fP (mouse button)
12326+or \fB\-\fP (something else).
12327+.UNINDENT
12328+.sp
12329+Future versions can add more arguments and more key state characters to
12330+support more input peculiarities.
12331+.TP
12332+.B \fBab\-loop\fP
12333+Cycle through A\-B loop states. The first command will set the \fBA\fP point
12334+(the \fBab\-loop\-a\fP property); the second the \fBB\fP point, and the third
12335+will clear both points.
12336+.TP
12337+.B \fBdrop\-buffers\fP
12338+Drop audio/video/demuxer buffers, and restart from fresh. Might help with
12339+unseekable streams that are going out of sync.
12340+This command might be changed or removed in the future.
12341+.TP
12342+.B \fBscreenshot\-raw [<flags>]\fP
12343+Return a screenshot in memory. This can be used only through the client
12344+API. The MPV_FORMAT_NODE_MAP returned by this command has the \fBw\fP, \fBh\fP,
12345+\fBstride\fP fields set to obvious contents. The \fBformat\fP field is set to
12346+\fBbgr0\fP by default. This format is organized as \fBB8G8R8X8\fP (where \fBB\fP
12347+is the LSB). The contents of the padding \fBX\fP are undefined. The \fBdata\fP
12348+field is of type MPV_FORMAT_BYTE_ARRAY with the actual image data. The image
12349+is freed as soon as the result mpv_node is freed. As usual with client API
12350+semantics, you are not allowed to write to the image data.
12351+.sp
12352+The \fBstride\fP is the number of bytes from a pixel at \fB(x0, y0)\fP to the
12353+pixel at \fB(x0, y0 + 1)\fP\&. This can be larger than \fBw * 4\fP if the image
12354+was cropped, or if there is padding. This number can be negative as well.
12355+You access a pixel with \fBbyte_index = y * stride + x * 4\fP (assuming the
12356+\fBbgr0\fP format).
12357+.sp
12358+The \fBflags\fP argument is like the first argument to \fBscreenshot\fP and
12359+supports \fBsubtitles\fP, \fBvideo\fP, \fBwindow\fP\&.
12360+.TP
12361+.B \fBvf\-command <label> <command> <argument>\fP
12362+Send a command to the filter with the given \fB<label>\fP\&. Use \fBall\fP to send
12363+it to all filters at once. The command and argument string is filter
12364+specific. Currently, this only works with the \fBlavfi\fP filter \- see
12365+the libavfilter documentation for which commands a filter supports.
12366+.sp
12367+Note that the \fB<label>\fP is a mpv filter label, not a libavfilter filter
12368+name.
12369+.TP
12370+.B \fBaf\-command <label> <command> <argument>\fP
12371+Same as \fBvf\-command\fP, but for audio filters.
12372+.TP
12373+.B \fBapply\-profile <name>\fP
12374+Apply the contents of a named profile. This is like using \fBprofile=name\fP
12375+in a config file, except you can map it to a key binding to change it at
12376+runtime.
12377+.sp
12378+There is no such thing as "unapplying" a profile \- applying a profile
12379+merely sets all option values listed within the profile.
12380+.TP
12381+.B \fBload\-script <filename>\fP
12382+Load a script, similar to the \fB\-\-script\fP option. Whether this waits for
12383+the script to finish initialization or not changed multiple times, and the
12384+future behavior is left undefined.
12385+.TP
12386+.B \fBchange\-list <name> <operation> <value>\fP
12387+This command changes list options as described in \fI\%List Options\fP\&. The
12388+\fB<name>\fP parameter is the normal option name, while \fB<operation>\fP is
12389+the suffix or action used on the option.
12390+.sp
12391+Some operations take no value, but the command still requires the value
12392+parameter. In these cases, the value must be an empty string.
12393+.INDENT 7.0
12394+.INDENT 3.5
12395+.IP "Example"
12396+.sp
12397+\fBchange\-list glsl\-shaders append file.glsl\fP
12398+.sp
12399+Add a filename to the \fBglsl\-shaders\fP list. The command line
12400+equivalent is \fB\-\-glsl\-shaders\-append=file.glsl\fP or alternatively
12401+\fB\-\-glsl\-shader=file.glsl\fP\&.
12402+.UNINDENT
12403+.UNINDENT
12404+.TP
12405+.B \fBdump\-cache <start> <end> <filename>\fP
12406+Dump the current cache to the given filename. The \fB<filename>\fP file is
12407+overwritten if it already exists. \fB<start>\fP and \fB<end>\fP give the
12408+time range of what to dump. If no data is cached at the given time range,
12409+nothing may be dumped (creating a file with no packets).
12410+.sp
12411+Dumping a larger part of the cache will freeze the player. No effort was
12412+made to fix this, as this feature was meant mostly for creating small
12413+excerpts.
12414+.sp
12415+See \fB\-\-stream\-record\fP for various caveats that mostly apply to this
12416+command too, as both use the same underlying code for writing the output
12417+file.
12418+.sp
12419+If \fB<filename>\fP is an empty string, an ongoing \fBdump\-cache\fP is stopped.
12420+.sp
12421+If \fB<end>\fP is \fBno\fP, then continuous dumping is enabled. Then, after
12422+dumping the existing parts of the cache, anything read from network is
12423+appended to the cache as well. This behaves similar to \fB\-\-stream\-record\fP
12424+(although it does not conflict with that option, and they can be both active
12425+at the same time).
12426+.sp
12427+If the \fB<end>\fP time is after the cache, the command will _not_ wait and
12428+write newly received data to it.
12429+.sp
12430+The end of the resulting file may be slightly damaged or incomplete at the
12431+end. (Not enough effort was made to ensure that the end lines up properly.)
12432+.sp
12433+Note that this command will finish only once dumping ends. That means it
12434+works similar to the \fBscreenshot\fP command, just that it can block much
12435+longer. If continuous dumping is used, the command will not finish until
12436+playback is stopped, an error happens, another \fBdump\-cache\fP command is
12437+run, or an API like \fBmp.abort_async_command\fP was called to explicitly stop
12438+the command. See \fI\%Synchronous vs. Asynchronous\fP\&.
12439+.sp
12440+\fBNOTE:\fP
12441+.INDENT 7.0
12442+.INDENT 3.5
12443+This was mostly created for network streams. For local files, there may
12444+be much better methods to create excerpts and such. There are tons of
12445+much more user\-friendly Lua scripts, that will reencode parts of a file
12446+by spawning a separate instance of \fBffmpeg\fP\&. With network streams,
12447+this is not that easily possible, as the stream would have to be
12448+downloaded again. Even if \fB\-\-stream\-record\fP is used to record the
12449+stream to the local filesystem, there may be problems, because the
12450+recorded file is still written to.
12451+.UNINDENT
12452+.UNINDENT
12453+.sp
12454+This command is experimental, and all details about it may change in the
12455+future.
12456+.TP
12457+.B \fBab\-loop\-dump\-cache <filename>\fP
12458+Essentially calls \fBdump\-cache\fP with the current AB\-loop points as
12459+arguments. Like \fBdump\-cache\fP, this will overwrite the file at
12460+\fB<filename>\fP\&. Likewise, if the B point is set to \fBno\fP, it will enter
12461+continuous dumping after the existing cache was dumped.
12462+.sp
12463+The author reserves the right to remove this command if enough motivation
12464+is found to move this functionality to a trivial Lua script.
12465+.TP
12466+.B \fBab\-loop\-align\-cache\fP
12467+Re\-adjust the A/B loop points to the start and end within the cache the
12468+\fBab\-loop\-dump\-cache\fP command will (probably) dump. Basically, it aligns
12469+the times on keyframes. The guess might be off especially at the end (due to
12470+granularity issues due to remuxing). If the cache shrinks in the meantime,
12471+the points set by the command will not be the effective parameters either.
12472+.sp
12473+This command has an even more uncertain future than \fBab\-loop\-dump\-cache\fP
12474+and might disappear without replacement if the author decides it\(aqs useless.
12475+.UNINDENT
12476+.sp
12477+Undocumented commands: \fBao\-reload\fP (experimental/internal).
12478+.SS Hooks
12479+.sp
12480+Hooks are synchronous events between player core and a script or similar. This
12481+applies to client API (including the Lua scripting interface). Normally,
12482+events are supposed to be asynchronous, and the hook API provides an awkward
12483+and obscure way to handle events that require stricter coordination. There are
12484+no API stability guarantees made. Not following the protocol exactly can make
12485+the player freeze randomly. Basically, nobody should use this API.
12486+.sp
12487+The C API is described in the header files. The Lua API is described in the
12488+Lua section.
12489+.sp
12490+The following hooks are currently defined:
12491+.INDENT 0.0
12492+.TP
12493+.B \fBon_load\fP
12494+Called when a file is to be opened, before anything is actually done.
12495+For example, you could read and write the \fBstream\-open\-filename\fP
12496+property to redirect an URL to something else (consider support for
12497+streaming sites which rarely give the user a direct media URL), or
12498+you could set per\-file options with by setting the property
12499+\fBfile\-local\-options/<option name>\fP\&. The player will wait until all
12500+hooks are run.
12501+.TP
12502+.B \fBon_load_fail\fP
12503+Called after after a file has been opened, but failed to. This can be
12504+used to provide a fallback in case native demuxers failed to recognize
12505+the file, instead of always running before the native demuxers like
12506+\fBon_load\fP\&. Demux will only be retried if \fBstream\-open\-filename\fP
12507+was changed.
12508+.TP
12509+.B \fBon_preloaded\fP
12510+Called after a file has been opened, and before tracks are selected and
12511+decoders are created. This has some usefulness if an API users wants
12512+to select tracks manually, based on the set of available tracks. It\(aqs
12513+also useful to initialize \fB\-\-lavfi\-complex\fP in a specific way by API,
12514+without having to "probe" the available streams at first.
12515+.sp
12516+Note that this does not yet apply default track selection. Which operations
12517+exactly can be done and not be done, and what information is available and
12518+what is not yet available yet, is all subject to change.
12519+.TP
12520+.B \fBon_unload\fP
12521+Run before closing a file, and before actually uninitializing
12522+everything. It\(aqs not possible to resume playback in this state.
12523+.UNINDENT
12524+.SS Legacy hook API
12525+.sp
12526+\fBWARNING:\fP
12527+.INDENT 0.0
12528+.INDENT 3.5
12529+The legacy API is deprecated and will be removed soon.
12530+.UNINDENT
12531+.UNINDENT
12532+.sp
12533+There are two special commands involved. Also, the client must listen for
12534+client messages (\fBMPV_EVENT_CLIENT_MESSAGE\fP in the C API).
12535+.INDENT 0.0
12536+.TP
12537+.B \fBhook\-add <hook\-name> <id> <priority>\fP
12538+Subscribe to the hook identified by the first argument (basically, the
12539+name of event). The \fBid\fP argument is an arbitrary integer chosen by the
12540+user. \fBpriority\fP is used to sort all hook handlers globally across all
12541+clients. Each client can register multiple hook handlers (even for the
12542+same hook\-name). Once the hook is registered, it cannot be unregistered.
12543+.sp
12544+When a specific event happens, all registered handlers are run serially.
12545+This uses a protocol every client has to follow explicitly. When a hook
12546+handler is run, a client message (\fBMPV_EVENT_CLIENT_MESSAGE\fP) is sent to
12547+the client which registered the hook. This message has the following
12548+arguments:
12549+.INDENT 7.0
12550+.IP 1. 3
12551+the string \fBhook_run\fP
12552+.IP 2. 3
12553+the \fBid\fP argument the hook was registered with as string (this can be
12554+used to correctly handle multiple hooks registered by the same client,
12555+as long as the \fBid\fP argument is unique in the client)
12556+.IP 3. 3
12557+something undefined, used by the hook mechanism to track hook execution
12558+.UNINDENT
12559+.sp
12560+Upon receiving this message, the client can handle the event. While doing
12561+this, the player core will still react to requests, but playback will
12562+typically be stopped.
12563+.sp
12564+When the client is done, it must continue the core\(aqs hook execution by
12565+running the \fBhook\-ack\fP command.
12566+.TP
12567+.B \fBhook\-ack <string>\fP
12568+Run the next hook in the global chain of hooks. The argument is the 3rd
12569+argument of the client message that starts hook execution for the
12570+current client.
12571+.UNINDENT
12572+.SS Input Command Prefixes
12573+.sp
12574+These prefixes are placed between key name and the actual command. Multiple
12575+prefixes can be specified. They are separated by whitespace.
12576+.INDENT 0.0
12577+.TP
12578+.B \fBosd\-auto\fP
12579+Use the default behavior for this command. This is the default for
12580+\fBinput.conf\fP commands. Some libmpv/scripting/IPC APIs do not use this as
12581+default, but use \fBno\-osd\fP instead.
12582+.TP
12583+.B \fBno\-osd\fP
12584+Do not use any OSD for this command.
12585+.TP
12586+.B \fBosd\-bar\fP
12587+If possible, show a bar with this command. Seek commands will show the
12588+progress bar, property changing commands may show the newly set value.
12589+.TP
12590+.B \fBosd\-msg\fP
12591+If possible, show an OSD message with this command. Seek command show
12592+the current playback time, property changing commands show the newly set
12593+value as text.
12594+.TP
12595+.B \fBosd\-msg\-bar\fP
12596+Combine osd\-bar and osd\-msg.
12597+.TP
12598+.B \fBraw\fP
12599+Do not expand properties in string arguments. (Like \fB"${property\-name}"\fP\&.)
12600+This is the default for some libmpv/scripting/IPC APIs.
12601+.TP
12602+.B \fBexpand\-properties\fP
12603+All string arguments are expanded as described in \fI\%Property Expansion\fP\&.
12604+This is the default for \fBinput.conf\fP commands.
12605+.TP
12606+.B \fBrepeatable\fP
12607+For some commands, keeping a key pressed doesn\(aqt run the command repeatedly.
12608+This prefix forces enabling key repeat in any case.
12609+.TP
12610+.B \fBasync\fP
12611+Allow asynchronous execution (if possible). Note that only a few commands
12612+will support this (usually this is explicitly documented). Some commands
12613+are asynchronous by default (or rather, their effects might manifest
12614+after completion of the command). The semantics of this flag might change
12615+in the future. Set it only if you don\(aqt rely on the effects of this command
12616+being fully realized when it returns. See \fI\%Synchronous vs. Asynchronous\fP\&.
12617+.TP
12618+.B \fBsync\fP
12619+Allow synchronous execution (if possible). Normally, all commands are
12620+synchronous by default, but some are asynchronous by default for
12621+compatibility with older behavior.
12622+.UNINDENT
12623+.sp
12624+All of the osd prefixes are still overridden by the global \fB\-\-osd\-level\fP
12625+settings.
12626+.SS Synchronous vs. Asynchronous
12627+.sp
12628+The \fBasync\fP and \fBsync\fP prefix matter only for how the issuer of the command
12629+waits on the completion of the command. Normally it does not affect how the
12630+command behaves by itself. There are the following cases:
12631+.INDENT 0.0
12632+.IP \(bu 2
12633+Normal input.conf commands are always run asynchronously. Slow running
12634+commands are queued up or run in parallel.
12635+.IP \(bu 2
12636+"Multi" input.conf commands (1 key binding, concatenated with \fB;\fP) will be
12637+executed in order, except for commands that are async (either prefixed with
12638+\fBasync\fP, or async by default for some commands). The async commands are
12639+run in a detached manner, possibly in parallel to the remaining sync commands
12640+in the list.
12641+.IP \(bu 2
12642+Normal Lua and libmpv commands (e.g. \fBmpv_command()\fP) are run in a blocking
12643+manner, unless the \fBasync\fP prefix is used, or the command is async by
12644+default. This means in the sync case the caller will block, even if the core
12645+continues playback. Async mode runs the command in a detached manner.
12646+.IP \(bu 2
12647+Async libmpv command API (e.g. \fBmpv_command_async()\fP) never blocks the
12648+caller, and always notify their completion with a message. The \fBsync\fP and
12649+\fBasync\fP prefixes make no difference.
12650+.IP \(bu 2
12651+Lua also provides APIs for running async commands, which behave similar to the
12652+C counterparts.
12653+.IP \(bu 2
12654+In all cases, async mode can still run commands in a synchronous manner, even
12655+in detached mode. This can for example happen in cases when a command does not
12656+have an  asynchronous implementation. The async libmpv API still never blocks
12657+the caller in these cases.
12658+.UNINDENT
12659+.sp
12660+Before mpv 0.29.0, the \fBasync\fP prefix was only used by screenshot commands,
12661+and made them run the file saving code in a detached manner. This is the
12662+default now, and \fBasync\fP changes behavior only in the ways mentioned above.
12663+.sp
12664+Currently the following commands have different waiting characteristics with
12665+sync vs. async: sub\-add, audio\-add, sub\-reload, audio\-reload,
12666+rescan\-external\-files, screenshot, screenshot\-to\-file, dump\-cache,
12667+ab\-loop\-dump\-cache.
12668+.SS Asynchronous command details
12669+.sp
12670+On the API level, every asynchronous command is bound to the context which
12671+started it. For example, an asynchronous command started by \fBmpv_command_async\fP
12672+is bound to the \fBmpv_handle\fP passed to the function. Only this \fBmpv_handle\fP
12673+receives the completion notification (\fBMPV_EVENT_COMMAND_REPLY\fP), and only
12674+this handle can abort a still running command directly. If the \fBmpv_handle\fP is
12675+destroyed, any still running async. commands started by it are terminated.
12676+.sp
12677+The scripting APIs and JSON IPC give each script/connection its own implicit
12678+\fBmpv_handle\fP\&.
12679+.sp
12680+If the player is closed, the core may abort all pending async. commands on its
12681+own (like a forced \fBmpv_abort_async_command()\fP call for each pending command
12682+on behalf of the API user). This happens at the same time \fBMPV_EVENT_SHUTDOWN\fP
12683+is sent, and there is no way to prevent this.
12684+.SS Input Sections
12685+.sp
12686+Input sections group a set of bindings, and enable or disable them at once.
12687+In \fBinput.conf\fP, each key binding is assigned to an input section, rather
12688+than actually having explicit text sections.
12689+.sp
12690+See also: \fBenable\-section\fP and \fBdisable\-section\fP commands.
12691+.sp
12692+Predefined bindings:
12693+.INDENT 0.0
12694+.TP
12695+.B \fBdefault\fP
12696+Bindings without input section are implicitly assigned to this section. It
12697+is enabled by default during normal playback.
12698+.TP
12699+.B \fBencode\fP
12700+Section which is active in encoding mode. It is enabled exclusively, so
12701+that bindings in the \fBdefault\fP sections are ignored.
12702+.UNINDENT
12703+.SS Properties
12704+.sp
12705+Properties are used to set mpv options during runtime, or to query arbitrary
12706+information. They can be manipulated with the \fBset\fP/\fBadd\fP/\fBcycle\fP
12707+commands, and retrieved with \fBshow\-text\fP, or anything else that uses property
12708+expansion. (See \fI\%Property Expansion\fP\&.)
12709+.sp
12710+The property name is annotated with RW to indicate whether the property is
12711+generally writable.
12712+.sp
12713+If an option is referenced, the property will normally take/return exactly the
12714+same values as the option. In these cases, properties are merely a way to change
12715+an option at runtime.
12716+.SS Property list
12717+.sp
12718+\fBNOTE:\fP
12719+.INDENT 0.0
12720+.INDENT 3.5
12721+Most options can be set as runtime via properties as well. Just remove the
12722+leading \fB\-\-\fP from the option name. These are not documented. Only
12723+properties which do not exist as option with the same name, or which have
12724+very different behavior from the options are documented below.
12725+.UNINDENT
12726+.UNINDENT
12727+.INDENT 0.0
12728+.TP
12729+.B \fBaudio\-speed\-correction\fP, \fBvideo\-speed\-correction\fP
12730+Factor multiplied with \fBspeed\fP at which the player attempts to play the
12731+file. Usually it\(aqs exactly 1. (Display sync mode will make this useful.)
12732+.sp
12733+OSD formatting will display it in the form of \fB+1.23456%\fP, with the number
12734+being \fB(raw \- 1) * 100\fP for the given raw property value.
12735+.TP
12736+.B \fBdisplay\-sync\-active\fP
12737+Return whether \fB\-\-video\-sync=display\fP is actually active.
12738+.TP
12739+.B \fBfilename\fP
12740+Currently played file, with path stripped. If this is an URL, try to undo
12741+percent encoding as well. (The result is not necessarily correct, but
12742+looks better for display purposes. Use the \fBpath\fP property to get an
12743+unmodified filename.)
12744+.sp
12745+This has a sub\-property:
12746+.INDENT 7.0
12747+.TP
12748+.B \fBfilename/no\-ext\fP
12749+Like the \fBfilename\fP property, but if the text contains a \fB\&.\fP, strip
12750+all text after the last \fB\&.\fP\&. Usually this removes the file extension.
12751+.UNINDENT
12752+.TP
12753+.B \fBfile\-size\fP
12754+Length in bytes of the source file/stream. (This is the same as
12755+\fB${stream\-end}\fP\&. For segmented/multi\-part files, this will return the
12756+size of the main or manifest file, whatever it is.)
12757+.TP
12758+.B \fBestimated\-frame\-count\fP
12759+Total number of frames in current file.
12760+.sp
12761+\fBNOTE:\fP
12762+.INDENT 7.0
12763+.INDENT 3.5
12764+This is only an estimate. (It\(aqs computed from two unreliable
12765+quantities: fps and stream length.)
12766+.UNINDENT
12767+.UNINDENT
12768+.TP
12769+.B \fBestimated\-frame\-number\fP
12770+Number of current frame in current stream.
12771+.sp
12772+\fBNOTE:\fP
12773+.INDENT 7.0
12774+.INDENT 3.5
12775+This is only an estimate. (It\(aqs computed from two unreliable
12776+quantities: fps and possibly rounded timestamps.)
12777+.UNINDENT
12778+.UNINDENT
12779+.TP
12780+.B \fBpath\fP
12781+Full path of the currently played file. Usually this is exactly the same
12782+string you pass on the mpv command line or the \fBloadfile\fP command, even
12783+if it\(aqs a relative path. If you expect an absolute path, you will have to
12784+determine it yourself, for example by using the \fBworking\-directory\fP
12785+property.
12786+.TP
12787+.B \fBstream\-open\-filename\fP
12788+The full path to the currently played media. This is different only from
12789+\fBpath\fP in special cases. In particular, if \fB\-\-ytdl=yes\fP is used, and
12790+the URL is detected by \fByoutube\-dl\fP, then the script will set this
12791+property to the actual media URL. This property should be set only during
12792+the \fBon_load\fP or \fBon_load_fail\fP hooks, otherwise it will have no effect
12793+(or may do something implementation defined in the future). The property is
12794+reset if playback of the current media ends.
12795+.TP
12796+.B \fBmedia\-title\fP
12797+If the currently played file has a \fBtitle\fP tag, use that.
12798+.sp
12799+Otherwise, return the \fBfilename\fP property.
12800+.TP
12801+.B \fBfile\-format\fP
12802+Symbolic name of the file format. In some cases, this is a comma\-separated
12803+list of format names, e.g. mp4 is \fBmov,mp4,m4a,3gp,3g2,mj2\fP (the list
12804+may grow in the future for any format).
12805+.TP
12806+.B \fBcurrent\-demuxer\fP
12807+Name of the current demuxer. (This is useless.)
12808+.sp
12809+(Renamed from \fBdemuxer\fP\&.)
12810+.TP
12811+.B \fBstream\-path\fP
12812+Filename (full path) of the stream layer filename. (This is probably
12813+useless and is almost never different from \fBpath\fP\&.)
12814+.TP
12815+.B \fBstream\-pos\fP
12816+Raw byte position in source stream. Technically, this returns the position
12817+of the most recent packet passed to a decoder.
12818+.TP
12819+.B \fBstream\-end\fP
12820+Raw end position in bytes in source stream.
12821+.TP
12822+.B \fBduration\fP
12823+Duration of the current file in seconds. If the duration is unknown, the
12824+property is unavailable. Note that the file duration is not always exactly
12825+known, so this is an estimate.
12826+.sp
12827+This replaces the \fBlength\fP property, which was deprecated after the
12828+mpv 0.9 release. (The semantics are the same.)
12829+.TP
12830+.B \fBavsync\fP
12831+Last A/V synchronization difference. Unavailable if audio or video is
12832+disabled.
12833+.TP
12834+.B \fBtotal\-avsync\-change\fP
12835+Total A\-V sync correction done. Unavailable if audio or video is
12836+disabled.
12837+.TP
12838+.B \fBdecoder\-frame\-drop\-count\fP
12839+Video frames dropped by decoder, because video is too far behind audio (when
12840+using \fB\-\-framedrop=decoder\fP). Sometimes, this may be incremented in other
12841+situations, e.g. when video packets are damaged, or the decoder doesn\(aqt
12842+follow the usual rules. Unavailable if video is disabled.
12843+.sp
12844+\fBdrop\-frame\-count\fP is a deprecated alias.
12845+.TP
12846+.B \fBframe\-drop\-count\fP
12847+Frames dropped by VO (when using \fB\-\-framedrop=vo\fP).
12848+.sp
12849+\fBvo\-drop\-frame\-count\fP is a deprecated alias.
12850+.TP
12851+.B \fBmistimed\-frame\-count\fP
12852+Number of video frames that were not timed correctly in display\-sync mode
12853+for the sake of keeping A/V sync. This does not include external
12854+circumstances, such as video rendering being too slow or the graphics
12855+driver somehow skipping a vsync. It does not include rounding errors either
12856+(which can happen especially with bad source timestamps). For example,
12857+using the \fBdisplay\-desync\fP mode should never change this value from 0.
12858+.TP
12859+.B \fBvsync\-ratio\fP
12860+For how many vsyncs a frame is displayed on average. This is available if
12861+display\-sync is active only. For 30 FPS video on a 60 Hz screen, this will
12862+be 2. This is the moving average of what actually has been scheduled, so
12863+24 FPS on 60 Hz will never remain exactly on 2.5, but jitter depending on
12864+the last frame displayed.
12865+.TP
12866+.B \fBvo\-delayed\-frame\-count\fP
12867+Estimated number of frames delayed due to external circumstances in
12868+display\-sync mode. Note that in general, mpv has to guess that this is
12869+happening, and the guess can be inaccurate.
12870+.TP
12871+.B \fBpercent\-pos\fP (RW)
12872+Position in current file (0\-100). The advantage over using this instead of
12873+calculating it out of other properties is that it properly falls back to
12874+estimating the playback position from the byte position, if the file
12875+duration is not known.
12876+.TP
12877+.B \fBtime\-pos\fP (RW)
12878+Position in current file in seconds.
12879+.TP
12880+.B \fBtime\-start\fP
12881+Deprecated. Always returns 0. Before mpv 0.14, this used to return the start
12882+time of the file (could affect e.g. transport streams). See
12883+\fB\-\-rebase\-start\-time\fP option.
12884+.TP
12885+.B \fBtime\-remaining\fP
12886+Remaining length of the file in seconds. Note that the file duration is not
12887+always exactly known, so this is an estimate.
12888+.TP
12889+.B \fBaudio\-pts\fP (R)
12890+Current audio playback position in current file in seconds. Unlike time\-pos,
12891+this updates more often than once per frame. For audio\-only files, it is
12892+mostly equivalent to time\-pos, while for video\-only files this property is
12893+not available.
12894+.TP
12895+.B \fBplaytime\-remaining\fP
12896+\fBtime\-remaining\fP scaled by the current \fBspeed\fP\&.
12897+.TP
12898+.B \fBplayback\-time\fP (RW)
12899+Position in current file in seconds. Unlike \fBtime\-pos\fP, the time is
12900+clamped to the range of the file. (Inaccurate file durations etc. could
12901+make it go out of range. Useful on attempts to seek outside of the file,
12902+as the seek target time is considered the current position during seeking.)
12903+.TP
12904+.B \fBchapter\fP (RW)
12905+Current chapter number. The number of the first chapter is 0.
12906+.TP
12907+.B \fBedition\fP (RW)
12908+Current MKV edition number. Setting this property to a different value will
12909+restart playback. The number of the first edition is 0.
12910+.sp
12911+Before mpv 0.31.0, this showed the actual edition selected at runtime, if
12912+you didn\(aqt set the option or property manually. With mpv 0.31.0 and later,
12913+this strictly returns the user\-set option or property value, and the
12914+\fBcurrent\-edition\fP property was added to return the runtime selected
12915+edition (this matters with \fB\-\-edition=auto\fP, the default).
12916+.TP
12917+.B \fBcurrent\-edition\fP
12918+Currently selected edition. This property is unavailable if no file is
12919+loaded, or the file has no editions. (Matroska files make a difference
12920+between having no editions and a single edition, which will be reflected by
12921+the property, although in practice it does not matter.)
12922+.TP
12923+.B \fBchapters\fP
12924+Number of chapters.
12925+.TP
12926+.B \fBeditions\fP
12927+Number of MKV editions.
12928+.TP
12929+.B \fBedition\-list\fP
12930+List of editions, current entry marked. Currently, the raw property value
12931+is useless.
12932+.sp
12933+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based edition
12934+index.
12935+.INDENT 7.0
12936+.TP
12937+.B \fBedition\-list/count\fP
12938+Number of editions. If there are no editions, this can be 0 or 1 (1
12939+if there\(aqs a useless dummy edition).
12940+.TP
12941+.B \fBedition\-list/N/id\fP
12942+Edition ID as integer. Use this to set the \fBedition\fP property.
12943+Currently, this is the same as the edition index.
12944+.TP
12945+.B \fBedition\-list/N/default\fP
12946+\fByes\fP if this is the default edition, \fBno\fP otherwise.
12947+.TP
12948+.B \fBedition\-list/N/title\fP
12949+Edition title as stored in the file. Not always available.
12950+.UNINDENT
12951+.sp
12952+When querying the property with the client API using \fBMPV_FORMAT_NODE\fP,
12953+or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with
12954+the following contents:
12955+.INDENT 7.0
12956+.INDENT 3.5
12957+.sp
12958+.nf
12959+.ft C
12960+MPV_FORMAT_NODE_ARRAY
12961+    MPV_FORMAT_NODE_MAP (for each edition)
12962+        "id"                MPV_FORMAT_INT64
12963+        "title"             MPV_FORMAT_STRING
12964+        "default"           MPV_FORMAT_FLAG
12965+.ft P
12966+.fi
12967+.UNINDENT
12968+.UNINDENT
12969+.TP
12970+.B \fBmetadata\fP
12971+Metadata key/value pairs.
12972+.sp
12973+If the property is accessed with Lua\(aqs \fBmp.get_property_native\fP, this
12974+returns a table with metadata keys mapping to metadata values. If it is
12975+accessed with the client API, this returns a \fBMPV_FORMAT_NODE_MAP\fP,
12976+with tag keys mapping to tag values.
12977+.sp
12978+For OSD, it returns a formatted list. Trying to retrieve this property as
12979+a raw string doesn\(aqt work.
12980+.sp
12981+This has a number of sub\-properties:
12982+.INDENT 7.0
12983+.TP
12984+.B \fBmetadata/by\-key/<key>\fP
12985+Value of metadata entry \fB<key>\fP\&.
12986+.TP
12987+.B \fBmetadata/list/count\fP
12988+Number of metadata entries.
12989+.TP
12990+.B \fBmetadata/list/N/key\fP
12991+Key name of the Nth metadata entry. (The first entry is \fB0\fP).
12992+.TP
12993+.B \fBmetadata/list/N/value\fP
12994+Value of the Nth metadata entry.
12995+.TP
12996+.B \fBmetadata/<key>\fP
12997+Old version of \fBmetadata/by\-key/<key>\fP\&. Use is discouraged, because
12998+the metadata key string could conflict with other sub\-properties.
12999+.UNINDENT
13000+.sp
13001+The layout of this property might be subject to change. Suggestions are
13002+welcome how exactly this property should work.
13003+.sp
13004+When querying the property with the client API using \fBMPV_FORMAT_NODE\fP,
13005+or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with
13006+the following contents:
13007+.INDENT 7.0
13008+.INDENT 3.5
13009+.sp
13010+.nf
13011+.ft C
13012+MPV_FORMAT_NODE_MAP
13013+    (key and string value for each metadata entry)
13014+.ft P
13015+.fi
13016+.UNINDENT
13017+.UNINDENT
13018+.TP
13019+.B \fBfiltered\-metadata\fP
13020+Like \fBmetadata\fP, but includes only fields listed in the \fB\-\-display\-tags\fP
13021+option. This is the same set of tags that is printed to the terminal.
13022+.TP
13023+.B \fBchapter\-metadata\fP
13024+Metadata of current chapter. Works similar to \fBmetadata\fP property. It
13025+also allows the same access methods (using sub\-properties).
13026+.sp
13027+Per\-chapter metadata is very rare. Usually, only the chapter name
13028+(\fBtitle\fP) is set.
13029+.sp
13030+For accessing other information, like chapter start, see the
13031+\fBchapter\-list\fP property.
13032+.TP
13033+.B \fBvf\-metadata/<filter\-label>\fP
13034+Metadata added by video filters. Accessed by the filter label,
13035+which, if not explicitly specified using the \fB@filter\-label:\fP syntax,
13036+will be \fB<filter\-name>NN\fP\&.
13037+.sp
13038+Works similar to \fBmetadata\fP property. It allows the same access
13039+methods (using sub\-properties).
13040+.sp
13041+An example of this kind of metadata are the cropping parameters
13042+added by \fB\-\-vf=lavfi=cropdetect\fP\&.
13043+.TP
13044+.B \fBaf\-metadata/<filter\-label>\fP
13045+Equivalent to \fBvf\-metadata/<filter\-label>\fP, but for audio filters.
13046+.TP
13047+.B \fBidle\-active\fP
13048+Return \fByes\fP if no file is loaded, but the player is staying around
13049+because of the \fB\-\-idle\fP option.
13050+.sp
13051+(Renamed from \fBidle\fP\&.)
13052+.TP
13053+.B \fBcore\-idle\fP
13054+Return \fByes\fP if the playback core is paused, otherwise \fBno\fP\&. This can
13055+be different \fBpause\fP in special situations, such as when the player
13056+pauses itself due to low network cache.
13057+.sp
13058+This also returns \fByes\fP if playback is restarting or if nothing is
13059+playing at all. In other words, it\(aqs only \fBno\fP if there\(aqs actually
13060+video playing. (Behavior since mpv 0.7.0.)
13061+.TP
13062+.B \fBcache\-speed\fP (R)
13063+Current I/O read speed between the cache and the lower layer (like network).
13064+This gives the number bytes per seconds over a 1 second window (using
13065+the type \fBMPV_FORMAT_INT64\fP for the client API).
13066+.TP
13067+.B \fBdemuxer\-cache\-duration\fP
13068+Approximate duration of video buffered in the demuxer, in seconds. The
13069+guess is very unreliable, and often the property will not be available
13070+at all, even if data is buffered.
13071+.TP
13072+.B \fBdemuxer\-cache\-time\fP
13073+Approximate time of video buffered in the demuxer, in seconds. Same as
13074+\fBdemuxer\-cache\-duration\fP but returns the last timestamp of buffered
13075+data in demuxer.
13076+.TP
13077+.B \fBdemuxer\-cache\-idle\fP
13078+Returns \fByes\fP if the demuxer is idle, which means the demuxer cache is
13079+filled to the requested amount, and is currently not reading more data.
13080+.TP
13081+.B \fBdemuxer\-cache\-state\fP
13082+Various undocumented or half\-documented things.
13083+.sp
13084+Each entry in \fBseekable\-ranges\fP represents a region in the demuxer cache
13085+that can be seeked to. If there are multiple demuxers active, this only
13086+returns information about the "main" demuxer, but might be changed in
13087+future to return unified information about all demuxers. The ranges are in
13088+arbitrary order. Often, ranges will overlap for a bit, before being joined.
13089+In broken corner cases, ranges may overlap all over the place.
13090+.sp
13091+The end of a seek range is usually smaller than the value returned by the
13092+\fBdemuxer\-cache\-time\fP property, because that property returns the guessed
13093+buffering amount, while the seek ranges represent the buffered data that
13094+can actually be used for cached seeking.
13095+.sp
13096+\fBbof\-cached\fP indicates whether the seek range with the lowest timestamp
13097+points to the beginning of the stream (BOF). This implies you cannot seek
13098+before this position at all. \fBeof\-cached\fP indicates whether the seek range
13099+with the highest timestamp points to the end of the stream (EOF). If both
13100+\fBbof\-cached\fP and \fBeof\-cached\fP are set to \fByes\fP, and there\(aqs only 1
13101+cache range, the entire stream is cached.
13102+.sp
13103+\fBfw\-bytes\fP is the number of bytes of packets buffered in the range
13104+starting from the current decoding position. This is a rough estimate
13105+(may not account correctly for various overhead), and stops at the
13106+demuxer position (it ignores seek ranges after it).
13107+.sp
13108+\fBfile\-cache\-bytes\fP is the number of bytes stored in the file cache. This
13109+includes all overhead, and possibly unused data (like pruned data). This
13110+member is missing if the file cache is not active.
13111+.sp
13112+When querying the property with the client API using \fBMPV_FORMAT_NODE\fP,
13113+or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with
13114+the following contents:
13115+.INDENT 7.0
13116+.INDENT 3.5
13117+.sp
13118+.nf
13119+.ft C
13120+MPV_FORMAT_NODE_MAP
13121+    "seekable\-ranges"   MPV_FORMAT_NODE_ARRAY
13122+        MPV_FORMAT_NODE_MAP
13123+            "start"             MPV_FORMAT_DOUBLE
13124+            "end"               MPV_FORMAT_DOUBLE
13125+    "bof\-cached"        MPV_FORMAT_FLAG
13126+    "eof\-cached"        MPV_FORMAT_FLAG
13127+    "fw\-bytes"          MPV_FORMAT_INT64
13128+    "file\-cache\-bytes"  MPV_FORMAT_INT64
13129+.ft P
13130+.fi
13131+.UNINDENT
13132+.UNINDENT
13133+.sp
13134+Other fields (might be changed or removed in the future):
13135+.INDENT 7.0
13136+.TP
13137+.B \fBeof\fP
13138+True if the reader thread has hit the end of the file.
13139+.TP
13140+.B \fBunderrun\fP
13141+True if the reader thread could not satisfy a decoder\(aqs request for a
13142+new packet.
13143+.TP
13144+.B \fBidle\fP
13145+True if the thread is currently not reading.
13146+.TP
13147+.B \fBtotal\-bytes\fP
13148+Sum of packet bytes (plus some overhead estimation) of the entire packet
13149+queue, including cached seekable ranges.
13150+.UNINDENT
13151+.TP
13152+.B \fBdemuxer\-via\-network\fP
13153+Returns \fByes\fP if the stream demuxed via the main demuxer is most likely
13154+played via network. What constitutes "network" is not always clear, might
13155+be used for other types of untrusted streams, could be wrong in certain
13156+cases, and its definition might be changing. Also, external files (like
13157+separate audio files or streams) do not influence the value of this
13158+property (currently).
13159+.TP
13160+.B \fBdemuxer\-start\-time\fP (R)
13161+Returns the start time reported by the demuxer in fractional seconds.
13162+.TP
13163+.B \fBpaused\-for\-cache\fP
13164+Returns \fByes\fP when playback is paused because of waiting for the cache.
13165+.TP
13166+.B \fBcache\-buffering\-state\fP
13167+Return the percentage (0\-100) of the cache fill status until the player
13168+will unpause (related to \fBpaused\-for\-cache\fP).
13169+.TP
13170+.B \fBeof\-reached\fP
13171+Returns \fByes\fP if end of playback was reached, \fBno\fP otherwise. Note
13172+that this is usually interesting only if \fB\-\-keep\-open\fP is enabled,
13173+since otherwise the player will immediately play the next file (or exit
13174+or enter idle mode), and in these cases the \fBeof\-reached\fP property will
13175+logically be cleared immediately after it\(aqs set.
13176+.TP
13177+.B \fBseeking\fP
13178+Returns \fByes\fP if the player is currently seeking, or otherwise trying
13179+to restart playback. (It\(aqs possible that it returns \fByes\fP while a file
13180+is loaded. This is because the same underlying code is used for seeking and
13181+resyncing.)
13182+.TP
13183+.B \fBmixer\-active\fP
13184+Return \fByes\fP if the audio mixer is active, \fBno\fP otherwise.
13185+.sp
13186+This option is relatively useless. Before mpv 0.18.1, it could be used to
13187+infer behavior of the \fBvolume\fP property.
13188+.TP
13189+.B \fBao\-volume\fP (RW)
13190+System volume. This property is available only if mpv audio output is
13191+currently active, and only if the underlying implementation supports volume
13192+control. What this option does depends on the API. For example, on ALSA
13193+this usually changes system\-wide audio, while with PulseAudio this controls
13194+per\-application volume.
13195+.TP
13196+.B \fBao\-mute\fP (RW)
13197+Similar to \fBao\-volume\fP, but controls the mute state. May be unimplemented
13198+even if \fBao\-volume\fP works.
13199+.TP
13200+.B \fBaudio\-codec\fP
13201+Audio codec selected for decoding.
13202+.TP
13203+.B \fBaudio\-codec\-name\fP
13204+Audio codec.
13205+.TP
13206+.B \fBaudio\-params\fP
13207+Audio format as output by the audio decoder.
13208+This has a number of sub\-properties:
13209+.INDENT 7.0
13210+.TP
13211+.B \fBaudio\-params/format\fP
13212+The sample format as string. This uses the same names as used in other
13213+places of mpv.
13214+.TP
13215+.B \fBaudio\-params/samplerate\fP
13216+Samplerate.
13217+.TP
13218+.B \fBaudio\-params/channels\fP
13219+The channel layout as a string. This is similar to what the
13220+\fB\-\-audio\-channels\fP accepts.
13221+.TP
13222+.B \fBaudio\-params/hr\-channels\fP
13223+As \fBchannels\fP, but instead of the possibly cryptic actual layout
13224+sent to the audio device, return a hopefully more human readable form.
13225+(Usually only \fBaudio\-out\-params/hr\-channels\fP makes sense.)
13226+.TP
13227+.B \fBaudio\-params/channel\-count\fP
13228+Number of audio channels. This is redundant to the \fBchannels\fP field
13229+described above.
13230+.UNINDENT
13231+.sp
13232+When querying the property with the client API using \fBMPV_FORMAT_NODE\fP,
13233+or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with
13234+the following contents:
13235+.INDENT 7.0
13236+.INDENT 3.5
13237+.sp
13238+.nf
13239+.ft C
13240+MPV_FORMAT_NODE_MAP
13241+    "format"            MPV_FORMAT_STRING
13242+    "samplerate"        MPV_FORMAT_INT64
13243+    "channels"          MPV_FORMAT_STRING
13244+    "channel\-count"     MPV_FORMAT_INT64
13245+    "hr\-channels"       MPV_FORMAT_STRING
13246+.ft P
13247+.fi
13248+.UNINDENT
13249+.UNINDENT
13250+.TP
13251+.B \fBaudio\-out\-params\fP
13252+Same as \fBaudio\-params\fP, but the format of the data written to the audio
13253+API.
13254+.TP
13255+.B \fBcolormatrix\fP (R)
13256+Redirects to \fBvideo\-params/colormatrix\fP\&. This parameter (as well as
13257+similar ones) can be overridden with the \fBformat\fP video filter.
13258+.TP
13259+.B \fBcolormatrix\-input\-range\fP (R)
13260+See \fBcolormatrix\fP\&.
13261+.TP
13262+.B \fBcolormatrix\-primaries\fP (R)
13263+See \fBcolormatrix\fP\&.
13264+.TP
13265+.B \fBhwdec\fP (RW)
13266+Reflects the \fB\-\-hwdec\fP option.
13267+.sp
13268+Writing to it may change the currently used hardware decoder, if possible.
13269+(Internally, the player may reinitialize the decoder, and will perform a
13270+seek to refresh the video properly.) You can watch the other hwdec
13271+properties to see whether this was successful.
13272+.sp
13273+Unlike in mpv 0.9.x and before, this does not return the currently active
13274+hardware decoder. Since mpv 0.18.0, \fBhwdec\-current\fP is available for
13275+this purpose.
13276+.TP
13277+.B \fBhwdec\-current\fP
13278+Return the current hardware decoding in use. If decoding is active, return
13279+one of the values used by the \fBhwdec\fP option/property. \fBno\fP indicates
13280+software decoding. If no decoder is loaded, the property is unavailable.
13281+.TP
13282+.B \fBhwdec\-interop\fP
13283+This returns the currently loaded hardware decoding/output interop driver.
13284+This is known only once the VO has opened (and possibly later). With some
13285+VOs (like \fBgpu\fP), this might be never known in advance, but only when
13286+the decoder attempted to create the hw decoder successfully. (Using
13287+\fB\-\-gpu\-hwdec\-interop\fP can load it eagerly.) If there are multiple
13288+drivers loaded, they will be separated by \fB,\fP\&.
13289+.sp
13290+If no VO is active or no interop driver is known, this property is
13291+unavailable.
13292+.sp
13293+This does not necessarily use the same values as \fBhwdec\fP\&. There can be
13294+multiple interop drivers for the same hardware decoder, depending on
13295+platform and VO.
13296+.TP
13297+.B \fBvideo\-format\fP
13298+Video format as string.
13299+.TP
13300+.B \fBvideo\-codec\fP
13301+Video codec selected for decoding.
13302+.TP
13303+.B \fBwidth\fP, \fBheight\fP
13304+Video size. This uses the size of the video as decoded, or if no video
13305+frame has been decoded yet, the (possibly incorrect) container indicated
13306+size.
13307+.TP
13308+.B \fBvideo\-params\fP
13309+Video parameters, as output by the decoder (with overrides like aspect
13310+etc. applied). This has a number of sub\-properties:
13311+.INDENT 7.0
13312+.TP
13313+.B \fBvideo\-params/pixelformat\fP
13314+The pixel format as string. This uses the same names as used in other
13315+places of mpv.
13316+.TP
13317+.B \fBvideo\-params/average\-bpp\fP
13318+Average bits\-per\-pixel as integer. Subsampled planar formats use a
13319+different resolution, which is the reason this value can sometimes be
13320+odd or confusing. Can be unavailable with some formats.
13321+.TP
13322+.B \fBvideo\-params/plane\-depth\fP
13323+Bit depth for each color component as integer. This is only exposed
13324+for planar or single\-component formats, and is unavailable for other
13325+formats.
13326+.TP
13327+.B \fBvideo\-params/w\fP, \fBvideo\-params/h\fP
13328+Video size as integers, with no aspect correction applied.
13329+.TP
13330+.B \fBvideo\-params/dw\fP, \fBvideo\-params/dh\fP
13331+Video size as integers, scaled for correct aspect ratio.
13332+.TP
13333+.B \fBvideo\-params/aspect\fP
13334+Display aspect ratio as float.
13335+.TP
13336+.B \fBvideo\-params/par\fP
13337+Pixel aspect ratio.
13338+.TP
13339+.B \fBvideo\-params/colormatrix\fP
13340+The colormatrix in use as string. (Exact values subject to change.)
13341+.TP
13342+.B \fBvideo\-params/colorlevels\fP
13343+The colorlevels as string. (Exact values subject to change.)
13344+.TP
13345+.B \fBvideo\-params/primaries\fP
13346+The primaries in use as string. (Exact values subject to change.)
13347+.TP
13348+.B \fBvideo\-params/gamma\fP
13349+The gamma function in use as string. (Exact values subject to change.)
13350+.TP
13351+.B \fBvideo\-params/sig\-peak\fP
13352+The video file\(aqs tagged signal peak as float.
13353+.TP
13354+.B \fBvideo\-params/light\fP
13355+The light type in use as a string. (Exact values subject to change.)
13356+.TP
13357+.B \fBvideo\-params/chroma\-location\fP
13358+Chroma location as string. (Exact values subject to change.)
13359+.TP
13360+.B \fBvideo\-params/rotate\fP
13361+Intended display rotation in degrees (clockwise).
13362+.TP
13363+.B \fBvideo\-params/stereo\-in\fP
13364+Source file stereo 3D mode. (See the \fBformat\fP video filter\(aqs
13365+\fBstereo\-in\fP option.)
13366+.UNINDENT
13367+.sp
13368+When querying the property with the client API using \fBMPV_FORMAT_NODE\fP,
13369+or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with
13370+the following contents:
13371+.INDENT 7.0
13372+.INDENT 3.5
13373+.sp
13374+.nf
13375+.ft C
13376+MPV_FORMAT_NODE_MAP
13377+    "pixelformat"       MPV_FORMAT_STRING
13378+    "w"                 MPV_FORMAT_INT64
13379+    "h"                 MPV_FORMAT_INT64
13380+    "dw"                MPV_FORMAT_INT64
13381+    "dh"                MPV_FORMAT_INT64
13382+    "aspect"            MPV_FORMAT_DOUBLE
13383+    "par"               MPV_FORMAT_DOUBLE
13384+    "colormatrix"       MPV_FORMAT_STRING
13385+    "colorlevels"       MPV_FORMAT_STRING
13386+    "primaries"         MPV_FORMAT_STRING
13387+    "gamma"             MPV_FORMAT_STRING
13388+    "sig\-peak"          MPV_FORMAT_DOUBLE
13389+    "light"             MPV_FORMAT_STRING
13390+    "chroma\-location"   MPV_FORMAT_STRING
13391+    "rotate"            MPV_FORMAT_INT64
13392+    "stereo\-in"         MPV_FORMAT_STRING
13393+.ft P
13394+.fi
13395+.UNINDENT
13396+.UNINDENT
13397+.TP
13398+.B \fBdwidth\fP, \fBdheight\fP
13399+Video display size. This is the video size after filters and aspect scaling
13400+have been applied. The actual video window size can still be different
13401+from this, e.g. if the user resized the video window manually.
13402+.sp
13403+These have the same values as \fBvideo\-out\-params/dw\fP and
13404+\fBvideo\-out\-params/dh\fP\&.
13405+.TP
13406+.B \fBvideo\-dec\-params\fP
13407+Exactly like \fBvideo\-params\fP, but no overrides applied.
13408+.TP
13409+.B \fBvideo\-out\-params\fP
13410+Same as \fBvideo\-params\fP, but after video filters have been applied. If
13411+there are no video filters in use, this will contain the same values as
13412+\fBvideo\-params\fP\&. Note that this is still not necessarily what the video
13413+window uses, since the user can change the window size, and all real VOs
13414+do their own scaling independently from the filter chain.
13415+.sp
13416+Has the same sub\-properties as \fBvideo\-params\fP\&.
13417+.TP
13418+.B \fBvideo\-frame\-info\fP
13419+Approximate information of the current frame. Note that if any of these
13420+are used on OSD, the information might be off by a few frames due to OSD
13421+redrawing and frame display being somewhat disconnected, and you might
13422+have to pause and force a redraw.
13423+.sp
13424+Sub\-properties:
13425+.INDENT 7.0
13426+.INDENT 3.5
13427+.sp
13428+.nf
13429+.ft C
13430+video\-frame\-info/picture\-type
13431+video\-frame\-info/interlaced
13432+video\-frame\-info/tff
13433+video\-frame\-info/repeat
13434+.ft P
13435+.fi
13436+.UNINDENT
13437+.UNINDENT
13438+.TP
13439+.B \fBcontainer\-fps\fP
13440+Container FPS. This can easily contain bogus values. For videos that use
13441+modern container formats or video codecs, this will often be incorrect.
13442+.sp
13443+(Renamed from \fBfps\fP\&.)
13444+.TP
13445+.B \fBestimated\-vf\-fps\fP
13446+Estimated/measured FPS of the video filter chain output. (If no filters
13447+are used, this corresponds to decoder output.) This uses the average of
13448+the 10 past frame durations to calculate the FPS. It will be inaccurate
13449+if frame\-dropping is involved (such as when framedrop is explicitly
13450+enabled, or after precise seeking). Files with imprecise timestamps (such
13451+as Matroska) might lead to unstable results.
13452+.TP
13453+.B \fBwindow\-scale\fP (RW)
13454+Window size multiplier. Setting this will resize the video window to the
13455+values contained in \fBdwidth\fP and \fBdheight\fP multiplied with the value
13456+set with this property. Setting \fB1\fP will resize to original video size
13457+(or to be exact, the size the video filters output). \fB2\fP will set the
13458+double size, \fB0.5\fP halves the size.
13459+.sp
13460+See \fBcurrent\-window\-scale\fP for the value derived from the actual window
13461+size.
13462+.sp
13463+Since mpv 0.31.0, this always returns the previously set value (or the
13464+default value), instead of the value implied by the actual window size.
13465+Before mpv 0.31.0, this returned what \fBcurrent\-window\-scale\fP returns now,
13466+after the window was created.
13467+.TP
13468+.B \fBcurrent\-window\-scale\fP
13469+The \fBwindow\-scale\fP value calculated from the current window size. This
13470+has the same value as \fBwindow\-scale\fP if the window size was not changed
13471+since setting the option, and the window size was not restricted in other
13472+ways. The property is unavailable if no video is active.
13473+.TP
13474+.B \fBdisplay\-names\fP
13475+Names of the displays that the mpv window covers. On X11, these
13476+are the xrandr names (LVDS1, HDMI1, DP1, VGA1, etc.). On Windows, these
13477+are the GDI names (\e.DISPLAY1, \e.DISPLAY2, etc.) and the first display
13478+in the list will be the one that Windows considers associated with the
13479+window (as determined by the MonitorFromWindow API.) On macOS these are the
13480+Display Product Names as used in the System Information and only one display
13481+name is returned since a window can only be on one screen.
13482+.TP
13483+.B \fBdisplay\-fps\fP
13484+The refresh rate of the current display. Currently, this is the lowest FPS
13485+of any display covered by the video, as retrieved by the underlying system
13486+APIs (e.g. xrandr on X11). It is not the measured FPS. It\(aqs not necessarily
13487+available on all platforms. Note that any of the listed facts may change
13488+any time without a warning.
13489+.sp
13490+Writing to this property is deprecated. It has the same effect as writing to
13491+\fBoverride\-display\-fps\fP\&. Since mpv 0.31.0, this property is unavailable
13492+if no display FPS was reported (e.g. if no video is active), while in older
13493+versions, it returned the \fB\-\-display\-fps\fP option value.
13494+.TP
13495+.B \fBestimated\-display\-fps\fP
13496+Only available if display\-sync mode (as selected by \fB\-\-video\-sync\fP) is
13497+active. Returns the actual rate at which display refreshes seem to occur,
13498+measured by system time.
13499+.TP
13500+.B \fBvsync\-jitter\fP
13501+Estimated deviation factor of the vsync duration.
13502+.TP
13503+.B \fBdisplay\-hidpi\-scale\fP
13504+The HiDPI scale factor as reported by the windowing backend. If no VO is
13505+active, or if the VO does not report a value, this property is unavailable.
13506+It may be saner to report an absolute DPI, however, this is the way HiDPI
13507+support is implemented on most OS APIs. See also \fB\-\-hidpi\-window\-scale\fP\&.
13508+.TP
13509+.B \fBvideo\-aspect\fP (RW)
13510+Deprecated. This is tied to \fB\-\-video\-aspect\-override\fP, but always
13511+reports the current video aspect if video is active.
13512+.sp
13513+The read and write components of this option can be split up into
13514+\fBvideo\-params/aspect\fP and \fBvideo\-aspect\-override\fP respectively.
13515+.TP
13516+.B \fBosd\-width\fP, \fBosd\-height\fP
13517+Last known OSD width (can be 0). This is needed if you want to use the
13518+\fBoverlay\-add\fP command. It gives you the actual OSD size, which can be
13519+different from the window size in some cases.
13520+.sp
13521+Alias to \fBosd\-dimensions/w\fP and \fBosd\-dimensions/h\fP\&.
13522+.TP
13523+.B \fBosd\-par\fP
13524+Last known OSD display pixel aspect (can be 0).
13525+.sp
13526+Alias to \fBosd\-dimensions/osd\-par\fP\&.
13527+.TP
13528+.B \fBosd\-dimensions\fP
13529+Last known OSD dimensions.
13530+.sp
13531+Has the following sub\-properties (which can be read as \fBMPV_FORMAT_NODE\fP
13532+or Lua table with \fBmp.get_property_native\fP):
13533+.INDENT 7.0
13534+.TP
13535+.B \fBw\fP
13536+Size of the VO window in OSD render units (usually pixels, but may be
13537+scaled pixels with VOs like \fBxv\fP).
13538+.TP
13539+.B \fBh\fP
13540+Size of the VO window in OSD render units,
13541+.TP
13542+.B \fBpar\fP
13543+Pixel aspect ratio of the OSD (usually 1).
13544+.TP
13545+.B \fBaspect\fP
13546+Display aspect ratio of the VO window. (Computing from the properties
13547+above.)
13548+.TP
13549+.B \fBmt\fP, \fBmb\fP, \fBml\fP, \fBmr\fP
13550+OSD to video margins (top, bottom, left, right). This describes the
13551+area into which the video is rendered.
13552+.UNINDENT
13553+.sp
13554+Any of these properties may be unavailable or set to dummy values if the
13555+VO window is not created or visible.
13556+.TP
13557+.B \fBsub\-text\fP
13558+Return the current subtitle text regardless of sub visibility.
13559+Formatting is stripped. If the subtitle is not text\-based
13560+(i.e. DVD/BD subtitles), an empty string is returned.
13561+.sp
13562+This property is experimental and might be removed in the future.
13563+.TP
13564+.B \fBsub\-start\fP
13565+Return the current subtitle start time (in seconds). If there\(aqs multiple
13566+current subtitles, returns the first start time. If no current subtitle is
13567+present null is returned instead.
13568+.TP
13569+.B \fBsub\-end\fP
13570+Return the current subtitle start time (in seconds). If there\(aqs multiple
13571+current subtitles, return the last end time. If no current subtitle is
13572+present, or if it\(aqs present but has unknown or incorrect duration, null
13573+is returned instead.
13574+.TP
13575+.B \fBplaylist\-pos\fP (RW)
13576+Current position on playlist. The first entry is on position 0. Writing
13577+to the property will restart playback at the written entry.
13578+.TP
13579+.B \fBplaylist\-pos\-1\fP (RW)
13580+Same as \fBplaylist\-pos\fP, but 1\-based.
13581+.TP
13582+.B \fBplaylist\-count\fP
13583+Number of total playlist entries.
13584+.TP
13585+.B \fBplaylist\fP
13586+Playlist, current entry marked. Currently, the raw property value is
13587+useless.
13588+.sp
13589+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based playlist
13590+entry index.
13591+.INDENT 7.0
13592+.TP
13593+.B \fBplaylist/count\fP
13594+Number of playlist entries (same as \fBplaylist\-count\fP).
13595+.TP
13596+.B \fBplaylist/N/filename\fP
13597+Filename of the Nth entry.
13598+.TP
13599+.B \fBplaylist/N/current\fP, \fBplaylist/N/playing\fP
13600+\fByes\fP if this entry is currently playing (or being loaded).
13601+Unavailable or \fBno\fP otherwise. When changing files, \fBcurrent\fP and
13602+\fBplaying\fP can be different, because the currently playing file hasn\(aqt
13603+been unloaded yet; in this case, \fBcurrent\fP refers to the new
13604+selection. (Since mpv 0.7.0.)
13605+.TP
13606+.B \fBplaylist/N/title\fP
13607+Name of the Nth entry. Only available if the playlist file contains
13608+such fields, and only if mpv\(aqs parser supports it for the given
13609+playlist format.
13610+.UNINDENT
13611+.sp
13612+When querying the property with the client API using \fBMPV_FORMAT_NODE\fP,
13613+or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with
13614+the following contents:
13615+.INDENT 7.0
13616+.INDENT 3.5
13617+.sp
13618+.nf
13619+.ft C
13620+MPV_FORMAT_NODE_ARRAY
13621+    MPV_FORMAT_NODE_MAP (for each playlist entry)
13622+        "filename"  MPV_FORMAT_STRING
13623+        "current"   MPV_FORMAT_FLAG (might be missing; since mpv 0.7.0)
13624+        "playing"   MPV_FORMAT_FLAG (same)
13625+        "title"     MPV_FORMAT_STRING (optional)
13626+.ft P
13627+.fi
13628+.UNINDENT
13629+.UNINDENT
13630+.TP
13631+.B \fBtrack\-list\fP
13632+List of audio/video/sub tracks, current entry marked. Currently, the raw
13633+property value is useless.
13634+.sp
13635+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based track
13636+index.
13637+.INDENT 7.0
13638+.TP
13639+.B \fBtrack\-list/count\fP
13640+Total number of tracks.
13641+.TP
13642+.B \fBtrack\-list/N/id\fP
13643+The ID as it\(aqs used for \fB\-sid\fP/\fB\-\-aid\fP/\fB\-\-vid\fP\&. This is unique
13644+within tracks of the same type (sub/audio/video), but otherwise not.
13645+.TP
13646+.B \fBtrack\-list/N/type\fP
13647+String describing the media type. One of \fBaudio\fP, \fBvideo\fP, \fBsub\fP\&.
13648+.TP
13649+.B \fBtrack\-list/N/src\-id\fP
13650+Track ID as used in the source file. Not always available. (It is
13651+missing if the format has no native ID, if the track is a pseudo\-track
13652+that does not exist in this way in the actual file, or if the format
13653+is handled by libavformat, and the format was not whitelisted as having
13654+track IDs.)
13655+.TP
13656+.B \fBtrack\-list/N/title\fP
13657+Track title as it is stored in the file. Not always available.
13658+.TP
13659+.B \fBtrack\-list/N/lang\fP
13660+Track language as identified by the file. Not always available.
13661+.TP
13662+.B \fBtrack\-list/N/albumart\fP
13663+\fByes\fP if this is a video track that consists of a single picture,
13664+\fBno\fP or unavailable otherwise. This is used for video tracks that are
13665+really attached pictures in audio files.
13666+.TP
13667+.B \fBtrack\-list/N/default\fP
13668+\fByes\fP if the track has the default flag set in the file, \fBno\fP
13669+otherwise.
13670+.TP
13671+.B \fBtrack\-list/N/forced\fP
13672+\fByes\fP if the track has the forced flag set in the file, \fBno\fP
13673+otherwise.
13674+.TP
13675+.B \fBtrack\-list/N/codec\fP
13676+The codec name used by this track, for example \fBh264\fP\&. Unavailable
13677+in some rare cases.
13678+.TP
13679+.B \fBtrack\-list/N/external\fP
13680+\fByes\fP if the track is an external file, \fBno\fP otherwise. This is
13681+set for separate subtitle files.
13682+.TP
13683+.B \fBtrack\-list/N/external\-filename\fP
13684+The filename if the track is from an external file, unavailable
13685+otherwise.
13686+.TP
13687+.B \fBtrack\-list/N/selected\fP
13688+\fByes\fP if the track is currently decoded, \fBno\fP otherwise.
13689+.TP
13690+.B \fBtrack\-list/N/ff\-index\fP
13691+The stream index as usually used by the FFmpeg utilities. Note that
13692+this can be potentially wrong if a demuxer other than libavformat
13693+(\fB\-\-demuxer=lavf\fP) is used. For mkv files, the index will usually
13694+match even if the default (builtin) demuxer is used, but there is
13695+no hard guarantee.
13696+.TP
13697+.B \fBtrack\-list/N/decoder\-desc\fP
13698+If this track is being decoded, the human\-readable decoder name,
13699+.TP
13700+.B \fBtrack\-list/N/demux\-w\fP, \fBtrack\-list/N/demux\-h\fP
13701+Video size hint as indicated by the container. (Not always accurate.)
13702+.TP
13703+.B \fBtrack\-list/N/demux\-channel\-count\fP
13704+Number of audio channels as indicated by the container. (Not always
13705+accurate \- in particular, the track could be decoded as a different
13706+number of channels.)
13707+.TP
13708+.B \fBtrack\-list/N/demux\-channels\fP
13709+Channel layout as indicated by the container. (Not always accurate.)
13710+.TP
13711+.B \fBtrack\-list/N/demux\-samplerate\fP
13712+Audio sample rate as indicated by the container. (Not always accurate.)
13713+.TP
13714+.B \fBtrack\-list/N/demux\-fps\fP
13715+Video FPS as indicated by the container. (Not always accurate.)
13716+.TP
13717+.B \fBtrack\-list/N/demux\-bitrate\fP
13718+Audio average bitrate, in bits per second. (Not always accurate.)
13719+.TP
13720+.B \fBtrack\-list/N/demux\-rotation\fP
13721+Video clockwise rotation metadata, in degrees.
13722+.TP
13723+.B \fBtrack\-list/N/demux\-par\fP
13724+Pixel aspect ratio.
13725+.TP
13726+.B \fBtrack\-list/N/audio\-channels\fP (deprecated)
13727+Deprecated alias for \fBtrack\-list/N/demux\-channel\-count\fP\&.
13728+.TP
13729+.B \fBtrack\-list/N/replaygain\-track\-peak\fP, \fBtrack\-list/N/replaygain\-track\-gain\fP
13730+Per\-track replaygain values. Only available for audio tracks with
13731+corresponding information stored in the source file.
13732+.TP
13733+.B \fBtrack\-list/N/replaygain\-album\-peak\fP, \fBtrack\-list/N/replaygain\-album\-gain\fP
13734+Per\-album replaygain values. If the file has per\-track but no per\-album
13735+information, the per\-album values will be copied from the per\-track
13736+values currently. It\(aqs possible that future mpv versions will make
13737+these properties unavailable instead in this case.
13738+.UNINDENT
13739+.sp
13740+When querying the property with the client API using \fBMPV_FORMAT_NODE\fP,
13741+or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with
13742+the following contents:
13743+.INDENT 7.0
13744+.INDENT 3.5
13745+.sp
13746+.nf
13747+.ft C
13748+MPV_FORMAT_NODE_ARRAY
13749+    MPV_FORMAT_NODE_MAP (for each track)
13750+        "id"                MPV_FORMAT_INT64
13751+        "type"              MPV_FORMAT_STRING
13752+        "src\-id"            MPV_FORMAT_INT64
13753+        "title"             MPV_FORMAT_STRING
13754+        "lang"              MPV_FORMAT_STRING
13755+        "albumart"          MPV_FORMAT_FLAG
13756+        "default"           MPV_FORMAT_FLAG
13757+        "forced"            MPV_FORMAT_FLAG
13758+        "selected"          MPV_FORMAT_FLAG
13759+        "external"          MPV_FORMAT_FLAG
13760+        "external\-filename" MPV_FORMAT_STRING
13761+        "codec"             MPV_FORMAT_STRING
13762+        "ff\-index"          MPV_FORMAT_INT64
13763+        "decoder\-desc"      MPV_FORMAT_STRING
13764+        "demux\-w"           MPV_FORMAT_INT64
13765+        "demux\-h"           MPV_FORMAT_INT64
13766+        "demux\-channel\-count" MPV_FORMAT_INT64
13767+        "demux\-channels"    MPV_FORMAT_STRING
13768+        "demux\-samplerate"  MPV_FORMAT_INT64
13769+        "demux\-fps"         MPV_FORMAT_DOUBLE
13770+        "demux\-bitrate"     MPV_FORMAT_INT64
13771+        "demux\-rotation"    MPV_FORMAT_INT64
13772+        "demux\-par"         MPV_FORMAT_DOUBLE
13773+        "audio\-channels"    MPV_FORMAT_INT64
13774+        "replaygain\-track\-peak" MPV_FORMAT_DOUBLE
13775+        "replaygain\-track\-gain" MPV_FORMAT_DOUBLE
13776+        "replaygain\-album\-peak" MPV_FORMAT_DOUBLE
13777+        "replaygain\-album\-gain" MPV_FORMAT_DOUBLE
13778+.ft P
13779+.fi
13780+.UNINDENT
13781+.UNINDENT
13782+.TP
13783+.B \fBchapter\-list\fP
13784+List of chapters, current entry marked. Currently, the raw property value
13785+is useless.
13786+.sp
13787+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based chapter
13788+index.
13789+.INDENT 7.0
13790+.TP
13791+.B \fBchapter\-list/count\fP
13792+Number of chapters.
13793+.TP
13794+.B \fBchapter\-list/N/title\fP
13795+Chapter title as stored in the file. Not always available.
13796+.TP
13797+.B \fBchapter\-list/N/time\fP
13798+Chapter start time in seconds as float.
13799+.UNINDENT
13800+.sp
13801+When querying the property with the client API using \fBMPV_FORMAT_NODE\fP,
13802+or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with
13803+the following contents:
13804+.INDENT 7.0
13805+.INDENT 3.5
13806+.sp
13807+.nf
13808+.ft C
13809+MPV_FORMAT_NODE_ARRAY
13810+    MPV_FORMAT_NODE_MAP (for each chapter)
13811+        "title" MPV_FORMAT_STRING
13812+        "time"  MPV_FORMAT_DOUBLE
13813+.ft P
13814+.fi
13815+.UNINDENT
13816+.UNINDENT
13817+.TP
13818+.B \fBaf\fP, \fBvf\fP (RW)
13819+See \fB\-\-vf\fP/\fB\-\-af\fP and the \fBvf\fP/\fBaf\fP command.
13820+.sp
13821+When querying the property with the client API using \fBMPV_FORMAT_NODE\fP,
13822+or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with
13823+the following contents:
13824+.INDENT 7.0
13825+.INDENT 3.5
13826+.sp
13827+.nf
13828+.ft C
13829+MPV_FORMAT_NODE_ARRAY
13830+    MPV_FORMAT_NODE_MAP (for each filter entry)
13831+        "name"      MPV_FORMAT_STRING
13832+        "label"     MPV_FORMAT_STRING [optional]
13833+        "enabled"   MPV_FORMAT_FLAG [optional]
13834+        "params"    MPV_FORMAT_NODE_MAP [optional]
13835+            "key"   MPV_FORMAT_STRING
13836+            "value" MPV_FORMAT_STRING
13837+.ft P
13838+.fi
13839+.UNINDENT
13840+.UNINDENT
13841+.sp
13842+It\(aqs also possible to write the property using this format.
13843+.TP
13844+.B \fBseekable\fP
13845+Return whether it\(aqs generally possible to seek in the current file.
13846+.TP
13847+.B \fBpartially\-seekable\fP
13848+Return \fByes\fP if the current file is considered seekable, but only because
13849+the cache is active. This means small relative seeks may be fine, but larger
13850+seeks may fail anyway. Whether a seek will succeed or not is generally not
13851+known in advance.
13852+.sp
13853+If this property returns true, \fBseekable\fP will also return true.
13854+.TP
13855+.B \fBplayback\-abort\fP
13856+Return whether playback is stopped or is to be stopped. (Useful in obscure
13857+situations like during \fBon_load\fP hook processing, when the user can
13858+stop playback, but the script has to explicitly end processing.)
13859+.TP
13860+.B \fBcursor\-autohide\fP (RW)
13861+See \fB\-\-cursor\-autohide\fP\&. Setting this to a new value will always update
13862+the cursor, and reset the internal timer.
13863+.TP
13864+.B \fBosd\-sym\-cc\fP
13865+Inserts the current OSD symbol as opaque OSD control code (cc). This makes
13866+sense only with the \fBshow\-text\fP command or options which set OSD messages.
13867+The control code is implementation specific and is useless for anything else.
13868+.TP
13869+.B \fBosd\-ass\-cc\fP
13870+\fB${osd\-ass\-cc/0}\fP disables escaping ASS sequences of text in OSD,
13871+\fB${osd\-ass\-cc/1}\fP enables it again. By default, ASS sequences are
13872+escaped to avoid accidental formatting, and this property can disable
13873+this behavior. Note that the properties return an opaque OSD control
13874+code, which only makes sense for the \fBshow\-text\fP command or options
13875+which set OSD messages.
13876+.INDENT 7.0
13877+.INDENT 3.5
13878+.IP "Example"
13879+.INDENT 0.0
13880+.IP \(bu 2
13881+\fB\-\-osd\-status\-msg=\(aqThis is ${osd\-ass\-cc/0}{\e\eb1}bold text\(aq\fP
13882+.IP \(bu 2
13883+\fBshow\-text "This is ${osd\-ass\-cc/0}{\eb1}bold text"\fP
13884+.UNINDENT
13885+.UNINDENT
13886+.UNINDENT
13887+.sp
13888+Any ASS override tags as understood by libass can be used.
13889+.sp
13890+Note that you need to escape the \fB\e\fP character, because the string is
13891+processed for C escape sequences before passing it to the OSD code.
13892+.sp
13893+A list of tags can be found here: \fI\%http://docs.aegisub.org/latest/ASS_Tags/\fP
13894+.TP
13895+.B \fBvo\-configured\fP
13896+Return whether the VO is configured right now. Usually this corresponds to
13897+whether the video window is visible. If the \fB\-\-force\-window\fP option is
13898+used, this is usually always returns \fByes\fP\&.
13899+.TP
13900+.B \fBvo\-passes\fP
13901+Contains introspection about the VO\(aqs active render passes and their
13902+execution times. Not implemented by all VOs.
13903+.sp
13904+This is further subdivided into two frame types, \fBvo\-passes/fresh\fP for
13905+fresh frames (which have to be uploaded, scaled, etc.) and
13906+\fBvo\-passes/redraw\fP for redrawn frames (which only have to be re\-painted).
13907+The number of passes for any given subtype can change from frame to frame,
13908+and should not be relied upon.
13909+.sp
13910+Each frame type has a number of further sub\-properties. Replace \fBTYPE\fP
13911+with the frame type, \fBN\fP with the 0\-based pass index, and \fBM\fP with the
13912+0\-based sample index.
13913+.INDENT 7.0
13914+.TP
13915+.B \fBvo\-passes/TYPE/count\fP
13916+Number of passes.
13917+.TP
13918+.B \fBvo\-passes/TYPE/N/desc\fP
13919+Human\-friendy description of the pass.
13920+.TP
13921+.B \fBvo\-passes/TYPE/N/last\fP
13922+Last measured execution time, in nanoseconds.
13923+.TP
13924+.B \fBvo\-passes/TYPE/N/avg\fP
13925+Average execution time of this pass, in nanoseconds. The exact
13926+timeframe varies, but it should generally be a handful of seconds.
13927+.TP
13928+.B \fBvo\-passes/TYPE/N/peak\fP
13929+The peak execution time (highest value) within this averaging range, in
13930+nanoseconds.
13931+.TP
13932+.B \fBvo\-passes/TYPE/N/count\fP
13933+The number of samples for this pass.
13934+.TP
13935+.B \fBvo\-passes/TYPE/N/samples/M\fP
13936+The raw execution time of a specific sample for this pass, in
13937+nanoseconds.
13938+.UNINDENT
13939+.sp
13940+When querying the property with the client API using \fBMPV_FORMAT_NODE\fP,
13941+or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with
13942+the following contents:
13943+.INDENT 7.0
13944+.INDENT 3.5
13945+.sp
13946+.nf
13947+.ft C
13948+MPV_FORMAT_NODE_MAP
13949+"TYPE" MPV_FORMAT_NODE_ARRAY
13950+    MPV_FORMAT_NODE_MAP
13951+        "desc"    MPV_FORMAT_STRING
13952+        "last"    MPV_FORMAT_INT64
13953+        "avg"     MPV_FORMAT_INT64
13954+        "peak"    MPV_FORMAT_INT64
13955+        "count"   MPV_FORMAT_INT64
13956+        "samples" MPV_FORMAT_NODE_ARRAY
13957+             MP_FORMAT_INT64
13958+.ft P
13959+.fi
13960+.UNINDENT
13961+.UNINDENT
13962+.sp
13963+Note that directly accessing this structure via subkeys is not supported,
13964+the only access is through aforementioned \fBMPV_FORMAT_NODE\fP\&.
13965+.TP
13966+.B \fBvideo\-bitrate\fP, \fBaudio\-bitrate\fP, \fBsub\-bitrate\fP
13967+Bitrate values calculated on the packet level. This works by dividing the
13968+bit size of all packets between two keyframes by their presentation
13969+timestamp distance. (This uses the timestamps are stored in the file, so
13970+e.g. playback speed does not influence the returned values.) In particular,
13971+the video bitrate will update only per keyframe, and show the "past"
13972+bitrate. To make the property more UI friendly, updates to these properties
13973+are throttled in a certain way.
13974+.sp
13975+The unit is bits per second. OSD formatting turns these values in kilobits
13976+(or megabits, if appropriate), which can be prevented by using the
13977+raw property value, e.g. with \fB${=video\-bitrate}\fP\&.
13978+.sp
13979+Note that the accuracy of these properties is influenced by a few factors.
13980+If the underlying demuxer rewrites the packets on demuxing (done for some
13981+file formats), the bitrate might be slightly off. If timestamps are bad
13982+or jittery (like in Matroska), even constant bitrate streams might show
13983+fluctuating bitrate.
13984+.sp
13985+How exactly these values are calculated might change in the future.
13986+.sp
13987+In earlier versions of mpv, these properties returned a static (but bad)
13988+guess using a completely different method.
13989+.TP
13990+.B \fBpacket\-video\-bitrate\fP, \fBpacket\-audio\-bitrate\fP, \fBpacket\-sub\-bitrate\fP
13991+Old and deprecated properties for \fBvideo\-bitrate\fP, \fBaudio\-bitrate\fP,
13992+\fBsub\-bitrate\fP\&. They behave exactly the same, but return a value in
13993+kilobits. Also, they don\(aqt have any OSD formatting, though the same can be
13994+achieved with e.g. \fB${=video\-bitrate}\fP\&.
13995+.sp
13996+These properties shouldn\(aqt be used anymore.
13997+.TP
13998+.B \fBaudio\-device\-list\fP
13999+Return the list of discovered audio devices. This is mostly for use with
14000+the client API, and reflects what \fB\-\-audio\-device=help\fP with the command
14001+line player returns.
14002+.sp
14003+When querying the property with the client API using \fBMPV_FORMAT_NODE\fP,
14004+or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with
14005+the following contents:
14006+.INDENT 7.0
14007+.INDENT 3.5
14008+.sp
14009+.nf
14010+.ft C
14011+MPV_FORMAT_NODE_ARRAY
14012+    MPV_FORMAT_NODE_MAP (for each device entry)
14013+        "name"          MPV_FORMAT_STRING
14014+        "description"   MPV_FORMAT_STRING
14015+.ft P
14016+.fi
14017+.UNINDENT
14018+.UNINDENT
14019+.sp
14020+The \fBname\fP is what is to be passed to the \fB\-\-audio\-device\fP option (and
14021+often a rather cryptic audio API\-specific ID), while \fBdescription\fP is
14022+human readable free form text. The description is set to the device name
14023+(minus mpv\-specific \fB<driver>/\fP prefix) if no description is available
14024+or the description would have been an empty string.
14025+.sp
14026+The special entry with the name set to \fBauto\fP selects the default audio
14027+output driver and the default device.
14028+.sp
14029+The property can be watched with the property observation mechanism in
14030+the client API and in Lua scripts. (Technically, change notification is
14031+enabled the first time this property is read.)
14032+.TP
14033+.B \fBaudio\-device\fP (RW)
14034+Set the audio device. This directly reads/writes the \fB\-\-audio\-device\fP
14035+option, but on write accesses, the audio output will be scheduled for
14036+reloading.
14037+.sp
14038+Writing this property while no audio output is active will not automatically
14039+enable audio. (This is also true in the case when audio was disabled due to
14040+reinitialization failure after a previous write access to \fBaudio\-device\fP\&.)
14041+.sp
14042+This property also doesn\(aqt tell you which audio device is actually in use.
14043+.sp
14044+How these details are handled may change in the future.
14045+.TP
14046+.B \fBcurrent\-vo\fP
14047+Current video output driver (name as used with \fB\-\-vo\fP).
14048+.TP
14049+.B \fBcurrent\-ao\fP
14050+Current audio output driver (name as used with \fB\-\-ao\fP).
14051+.TP
14052+.B \fBshared\-script\-properties\fP (RW)
14053+This is a key/value map of arbitrary strings shared between scripts for
14054+general use. The player itself does not use any data in it (although some
14055+builtin scripts may). The property is not preserved across player restarts.
14056+.sp
14057+This is very primitive, inefficient, and annoying to use. It\(aqs a makeshift
14058+solution which could go away any time (for example, when a better solution
14059+becomes available). This is also why this property has an annoying name. You
14060+should avoid using it, unless you absolutely have to.
14061+.sp
14062+Lua scripting has helpers starting with \fButils.shared_script_property_\fP\&.
14063+They are undocumented because you should not use this property. If you still
14064+think you must, you should use the helpers instead of the property directly.
14065+.sp
14066+You are supposed to use the \fBchange\-list\fP command to modify the contents.
14067+Reading, modifying, and writing the property manually could data loss if two
14068+scripts update different keys at the same time due to lack of
14069+synchronization. The Lua helpers take care of this.
14070+.sp
14071+(There is no way to ensure synchronization if two scripts try to update the
14072+same key at the same time.)
14073+.TP
14074+.B \fBworking\-directory\fP
14075+Return the working directory of the mpv process. Can be useful for JSON IPC
14076+users, because the command line player usually works with relative paths.
14077+.TP
14078+.B \fBprotocol\-list\fP
14079+List of protocol prefixes potentially recognized by the player. They are
14080+returned without trailing \fB://\fP suffix (which is still always required).
14081+In some cases, the protocol will not actually be supported (consider
14082+\fBhttps\fP if ffmpeg is not compiled with TLS support).
14083+.TP
14084+.B \fBdecoder\-list\fP
14085+List of decoders supported. This lists decoders which can be passed to
14086+\fB\-\-vd\fP and \fB\-\-ad\fP\&.
14087+.INDENT 7.0
14088+.TP
14089+.B \fBcodec\fP
14090+Canonical codec name, which identifies the format the decoder can
14091+handle.
14092+.TP
14093+.B \fBdriver\fP
14094+The name of the decoder itself. Often, this is the same as \fBcodec\fP\&.
14095+Sometimes it can be different. It is used to distinguish multiple
14096+decoders for the same codec.
14097+.TP
14098+.B \fBdescription\fP
14099+Human readable description of the decoder and codec.
14100+.UNINDENT
14101+.sp
14102+When querying the property with the client API using \fBMPV_FORMAT_NODE\fP,
14103+or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with
14104+the following contents:
14105+.INDENT 7.0
14106+.INDENT 3.5
14107+.sp
14108+.nf
14109+.ft C
14110+MPV_FORMAT_NODE_ARRAY
14111+    MPV_FORMAT_NODE_MAP (for each decoder entry)
14112+        "codec"         MPV_FORMAT_STRING
14113+        "driver"        MPV_FORMAT_STRING
14114+        "description"   MPV_FORMAT_STRING
14115+.ft P
14116+.fi
14117+.UNINDENT
14118+.UNINDENT
14119+.TP
14120+.B \fBencoder\-list\fP
14121+List of libavcodec encoders. This has the same format as \fBdecoder\-list\fP\&.
14122+The encoder names (\fBdriver\fP entries) can be passed to \fB\-\-ovc\fP and
14123+\fB\-\-oac\fP (without the \fBlavc:\fP prefix required by \fB\-\-vd\fP and \fB\-\-ad\fP).
14124+.TP
14125+.B \fBdemuxer\-lavf\-list\fP
14126+List of available libavformat demuxers\(aq names. This can be used to check
14127+for support for a specific format or use with \fB\-\-demuxer\-lavf\-format\fP\&.
14128+.TP
14129+.B \fBmpv\-version\fP
14130+Return the mpv version/copyright string. Depending on how the binary was
14131+built, it might contain either a release version, or just a git hash.
14132+.TP
14133+.B \fBmpv\-configuration\fP
14134+Return the configuration arguments which were passed to the build system
14135+(typically the way \fB\&./waf configure ...\fP was invoked).
14136+.TP
14137+.B \fBffmpeg\-version\fP
14138+Return the contents of the \fBav_version_info()\fP API call. This is a string
14139+which identifies the build in some way, either through a release version
14140+number, or a git hash. This applies to Libav as well (the property is
14141+still named the same.) This property is unavailable if mpv is linked against
14142+older FFmpeg and Libav versions.
14143+.TP
14144+.B \fBoptions/<name>\fP (RW)
14145+Read\-only access to value of option \fB\-\-<name>\fP\&. Most options can be
14146+changed at runtime by writing to this property. Note that many options
14147+require reloading the file for changes to take effect. If there is an
14148+equivalent property, prefer setting the property instead.
14149+.sp
14150+There shouldn\(aqt be any reason to access \fBoptions/<name>\fP instead of
14151+\fB<name>\fP, except in situations in which the properties have different
14152+behavior or conflicting semantics.
14153+.TP
14154+.B \fBfile\-local\-options/<name>\fP
14155+Similar to \fBoptions/<name>\fP, but when setting an option through this
14156+property, the option is reset to its old value once the current file has
14157+stopped playing. Trying to write an option while no file is playing (or
14158+is being loaded) results in an error.
14159+.sp
14160+(Note that if an option is marked as file\-local, even \fBoptions/\fP will
14161+access the local value, and the \fBold\fP value, which will be restored on
14162+end of playback, cannot be read or written until end of playback.)
14163+.TP
14164+.B \fBoption\-info/<name>\fP
14165+Additional per\-option information.
14166+.sp
14167+This has a number of sub\-properties. Replace \fB<name>\fP with the name of
14168+a top\-level option. No guarantee of stability is given to any of these
14169+sub\-properties \- they may change radically in the feature.
14170+.INDENT 7.0
14171+.TP
14172+.B \fBoption\-info/<name>/name\fP
14173+Returns the name of the option.
14174+.TP
14175+.B \fBoption\-info/<name>/type\fP
14176+Return the name of the option type, like \fBString\fP or \fBInteger\fP\&.
14177+For many complex types, this isn\(aqt very accurate.
14178+.TP
14179+.B \fBoption\-info/<name>/set\-from\-commandline\fP
14180+Return \fByes\fP if the option was set from the mpv command line,
14181+\fBno\fP otherwise. What this is set to if the option is e.g. changed
14182+at runtime is left undefined (meaning it could change in the future).
14183+.TP
14184+.B \fBoption\-info/<name>/set\-locally\fP
14185+Return \fByes\fP if the option was set per\-file. This is the case with
14186+automatically loaded profiles, file\-dir configs, and other cases. It
14187+means the option value will be restored to the value before playback
14188+start when playback ends.
14189+.TP
14190+.B \fBoption\-info/<name>/default\-value\fP
14191+The default value of the option. May not always be available.
14192+.TP
14193+.B \fBoption\-info/<name>/min\fP, \fBoption\-info/<name>/max\fP
14194+Integer minimum and maximum values allowed for the option. Only
14195+available if the options are numeric, and the minimum/maximum has been
14196+set internally. It\(aqs also possible that only one of these is set.
14197+.TP
14198+.B \fBoption\-info/<name>/choices\fP
14199+If the option is a choice option, the possible choices. Choices that
14200+are integers may or may not be included (they can be implied by \fBmin\fP
14201+and \fBmax\fP). Note that options which behave like choice options, but
14202+are not actual choice options internally, may not have this info
14203+available.
14204+.UNINDENT
14205+.TP
14206+.B \fBproperty\-list\fP
14207+Return the list of top\-level properties.
14208+.TP
14209+.B \fBprofile\-list\fP
14210+Return the list of profiles and their contents. This is highly
14211+implementation\-specific, and may change any time. Currently, it returns
14212+an array of options for each profile. Each option has a name and a value,
14213+with the value currently always being a string. Note that the options array
14214+is not a map, as order matters and duplicate entries are possible. Recursive
14215+profiles are not expanded, and show up as special \fBprofile\fP options.
14216+.TP
14217+.B \fBcommand\-list\fP
14218+Return the list of input commands. This returns an array of maps, where
14219+each map node represents a command. This map currently only has a single
14220+entry: \fBname\fP for the name of the command. (This property is supposed to
14221+be a replacement for \fB\-\-input\-cmdlist\fP\&. The option dumps some more
14222+information, but it\(aqs a valid feature request to extend this property if
14223+needed.)
14224+.TP
14225+.B \fBinput\-bindings\fP
14226+Return list of current input key bindings. This returns an array of maps,
14227+where each map node represents a binding for a single key/command. This map
14228+has the following entries:
14229+.INDENT 7.0
14230+.TP
14231+.B \fBkey\fP
14232+The key name. This is normalized and may look slightly different from
14233+how it was specified in the source (e.g. in input.conf).
14234+.TP
14235+.B \fBcmd\fP
14236+The command mapped to the key. (Currently, this is exactly the same
14237+string as specified in the source, other than stripping whitespace and
14238+comments. It\(aqs possible that it will be normalized in the future.)
14239+.TP
14240+.B \fBis_weak\fP
14241+If set to true, any existing and active user bindings will take priority.
14242+.TP
14243+.B \fBowner\fP
14244+If this entry exists, the name of the script (or similar) which added
14245+this binding.
14246+.TP
14247+.B \fBsection\fP
14248+Name of the section this binding is part of. This is a rarely used
14249+mechanism. This entry may be removed or change meaning in the future.
14250+.TP
14251+.B \fBpriority\fP
14252+A number. Bindings with a higher value are preferred over bindings
14253+with a lower value. If the value is negative, this binding is inactive
14254+and will not be triggered by input. Note that mpv does not use this
14255+value internally, and matching of bindings may work slightly differently
14256+in some cases. In addition, this value is dynamic and can change around
14257+at runtime.
14258+.TP
14259+.B \fBcomment\fP
14260+If available, the comment following the command on the same line. (For
14261+example, the input.conf entry \fBf cycle bla # toggle bla\fP would
14262+result in an entry with \fBcomment = "toggle bla", cmd = "cycle bla"\fP\&.)
14263+.UNINDENT
14264+.sp
14265+This property is read\-only, and change notification is not supported.
14266+Currently, there is no mechanism to change key bindings at runtime, other
14267+than scripts adding or removing their own bindings.
14268+.UNINDENT
14269+.SS Inconsistencies between options and properties
14270+.sp
14271+You can access (almost) all options as properties, though there are some
14272+caveats with some properties (due to historical reasons):
14273+.INDENT 0.0
14274+.TP
14275+.B \fBvid\fP, \fBaid\fP, \fBsid\fP
14276+While playback is active, these result the actually active tracks. For
14277+example, if you set \fBaid=5\fP, and the currently played file contains no
14278+audio track with ID 5, the \fBaid\fP property will return \fBno\fP\&.
14279+.sp
14280+Before mpv 0.31.0, you could set existing tracks at runtime only.
14281+.TP
14282+.B \fBdisplay\-fps\fP
14283+This inconsistent behavior is deprecated. Post\-deprecation, the reported
14284+value and the option value are cleanly separated (\fBoverride\-display\-fps\fP
14285+for the option value).
14286+.TP
14287+.B \fBvf\fP, \fBaf\fP
14288+If you set the properties during playback, and the filter chain fails to
14289+reinitialize, the option will be set, but the runtime filter chain does not
14290+change. On the other hand, the next video to be played will fail, because
14291+the initial filter chain cannot be created.
14292+.sp
14293+This behavior changed in mpv 0.31.0. Before this, the new value was rejected
14294+\fIiff\fP video (for \fBvf\fP) or audio (for \fBaf\fP) was active. If playback was
14295+not active, the behavior was the same as the current behavior.
14296+.TP
14297+.B \fBplaylist\fP
14298+The property is read\-only and returns the current internal playlist. The
14299+option is for loading playlist during command line parsing. For client API
14300+uses, you should use the \fBloadlist\fP command instead.
14301+.TP
14302+.B \fBprofile\fP, \fBinclude\fP
14303+These are write\-only, and will perform actions as they are written to,
14304+exactly as if they were used on the mpv CLI commandline. Their only use is
14305+when using libmpv before \fBmpv_initialize()\fP, which in turn is probably
14306+only useful in encoding mode. Normal libmpv users should use other
14307+mechanisms, such as the \fBapply\-profile\fP command, and the
14308+\fBmpv_load_config_file\fP API function. Avoid these properties.
14309+.UNINDENT
14310+.SS Property Expansion
14311+.sp
14312+All string arguments to input commands as well as certain options (like
14313+\fB\-\-term\-playing\-msg\fP) are subject to property expansion. Note that property
14314+expansion does not work in places where e.g. numeric parameters are expected.
14315+(For example, the \fBadd\fP command does not do property expansion. The \fBset\fP
14316+command is an exception and not a general rule.)
14317+.INDENT 0.0
14318+.INDENT 3.5
14319+.IP "Example for input.conf"
14320+.INDENT 0.0
14321+.TP
14322+.B \fBi show\-text "Filename: ${filename}"\fP
14323+shows the filename of the current file when pressing the \fBi\fP key
14324+.UNINDENT
14325+.UNINDENT
14326+.UNINDENT
14327+.sp
14328+Within \fBinput.conf\fP, property expansion can be inhibited by putting the
14329+\fBraw\fP prefix in front of commands.
14330+.sp
14331+The following expansions are supported:
14332+.INDENT 0.0
14333+.TP
14334+.B \fB${NAME}\fP
14335+Expands to the value of the property \fBNAME\fP\&. If retrieving the property
14336+fails, expand to an error string. (Use \fB${NAME:}\fP with a trailing
14337+\fB:\fP to expand to an empty string instead.)
14338+If \fBNAME\fP is prefixed with \fB=\fP, expand to the raw value of the property
14339+(see section below).
14340+.TP
14341+.B \fB${NAME:STR}\fP
14342+Expands to the value of the property \fBNAME\fP, or \fBSTR\fP if the
14343+property cannot be retrieved. \fBSTR\fP is expanded recursively.
14344+.TP
14345+.B \fB${?NAME:STR}\fP
14346+Expands to \fBSTR\fP (recursively) if the property \fBNAME\fP is available.
14347+.TP
14348+.B \fB${!NAME:STR}\fP
14349+Expands to \fBSTR\fP (recursively) if the property \fBNAME\fP cannot be
14350+retrieved.
14351+.TP
14352+.B \fB${?NAME==VALUE:STR}\fP
14353+Expands to \fBSTR\fP (recursively) if the property \fBNAME\fP expands to a
14354+string equal to \fBVALUE\fP\&. You can prefix \fBNAME\fP with \fB=\fP in order to
14355+compare the raw value of a property (see section below). If the property
14356+is unavailable, or other errors happen when retrieving it, the value is
14357+never considered equal.
14358+Note that \fBVALUE\fP can\(aqt contain any of the characters \fB:\fP or \fB}\fP\&.
14359+Also, it is possible that escaping with \fB"\fP or \fB%\fP might be added in
14360+the future, should the need arise.
14361+.TP
14362+.B \fB${!NAME==VALUE:STR}\fP
14363+Same as with the \fB?\fP variant, but \fBSTR\fP is expanded if the value is
14364+not equal. (Using the same semantics as with \fB?\fP\&.)
14365+.TP
14366+.B \fB$$\fP
14367+Expands to \fB$\fP\&.
14368+.TP
14369+.B \fB$}\fP
14370+Expands to \fB}\fP\&. (To produce this character inside recursive
14371+expansion.)
14372+.TP
14373+.B \fB$>\fP
14374+Disable property expansion and special handling of \fB$\fP for the rest
14375+of the string.
14376+.UNINDENT
14377+.sp
14378+In places where property expansion is allowed, C\-style escapes are often
14379+accepted as well. Example:
14380+.INDENT 0.0
14381+.INDENT 3.5
14382+.INDENT 0.0
14383+.IP \(bu 2
14384+\fB\en\fP becomes a newline character
14385+.IP \(bu 2
14386+\fB\e\e\fP expands to \fB\e\fP
14387+.UNINDENT
14388+.UNINDENT
14389+.UNINDENT
14390+.SS Raw and Formatted Properties
14391+.sp
14392+Normally, properties are formatted as human\-readable text, meant to be
14393+displayed on OSD or on the terminal. It is possible to retrieve an unformatted
14394+(raw) value from a property by prefixing its name with \fB=\fP\&. These raw values
14395+can be parsed by other programs and follow the same conventions as the options
14396+associated with the properties.
14397+.INDENT 0.0
14398+.INDENT 3.5
14399+.IP "Examples"
14400+.INDENT 0.0
14401+.IP \(bu 2
14402+\fB${time\-pos}\fP expands to \fB00:14:23\fP (if playback position is at 14
14403+minutes 23 seconds)
14404+.IP \(bu 2
14405+\fB${=time\-pos}\fP expands to \fB863.4\fP (same time, plus 400 milliseconds \-
14406+milliseconds are normally not shown in the formatted case)
14407+.UNINDENT
14408+.UNINDENT
14409+.UNINDENT
14410+.sp
14411+Sometimes, the difference in amount of information carried by raw and formatted
14412+property values can be rather big. In some cases, raw values have more
14413+information, like higher precision than seconds with \fBtime\-pos\fP\&. Sometimes
14414+it is the other way around, e.g. \fBaid\fP shows track title and language in the
14415+formatted case, but only the track number if it is raw.
14416+.SH ON SCREEN CONTROLLER
14417+.sp
14418+The On Screen Controller (short: OSC) is a minimal GUI integrated with mpv to
14419+offer basic mouse\-controllability. It is intended to make interaction easier
14420+for new users and to enable precise and direct seeking.
14421+.sp
14422+The OSC is enabled by default if mpv was compiled with Lua support. It can be
14423+disabled entirely using the \fB\-\-osc=no\fP option.
14424+.SS Using the OSC
14425+.sp
14426+By default, the OSC will show up whenever the mouse is moved inside the
14427+player window and will hide if the mouse is not moved outside the OSC for
14428+0.5 seconds or if the mouse leaves the window.
14429+.SS The Interface
14430+.INDENT 0.0
14431+.INDENT 3.5
14432+.sp
14433+.nf
14434+.ft C
14435++\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+
14436+| pl prev | pl next  |  title                                   |    cache |
14437++\-\-\-\-\-\-+\-\-+\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-+
14438+| play | skip | skip | time    |  seekbar  | time | audio | sub | vol | fs |
14439+|      | back | frwd | elapsed |           | left |       |     |     |    |
14440++\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-+
14441+.ft P
14442+.fi
14443+.UNINDENT
14444+.UNINDENT
14445+.INDENT 0.0
14446+.TP
14447+.B pl prev
14448+.TS
14449+center;
14450+|l|l|.
14451+_
14452+T{
14453+left\-click
14454+T}	T{
14455+play previous file in playlist
14456+T}
14457+_
14458+T{
14459+right\-click
14460+T}	T{
14461+show playlist
14462+T}
14463+_
14464+T{
14465+shift+L\-click
14466+T}	T{
14467+show playlist
14468+T}
14469+_
14470+.TE
14471+.TP
14472+.B pl next
14473+.TS
14474+center;
14475+|l|l|.
14476+_
14477+T{
14478+left\-click
14479+T}	T{
14480+play next file in playlist
14481+T}
14482+_
14483+T{
14484+right\-click
14485+T}	T{
14486+show playlist
14487+T}
14488+_
14489+T{
14490+shift+L\-click
14491+T}	T{
14492+show playlist
14493+T}
14494+_
14495+.TE
14496+.TP
14497+.B title
14498+.nf
14499+Displays current media\-title, filename, or custom title
14500+.fi
14501+.sp
14502+.TS
14503+center;
14504+|l|l|.
14505+_
14506+T{
14507+left\-click
14508+T}	T{
14509+show playlist position and length and full title
14510+T}
14511+_
14512+T{
14513+right\-click
14514+T}	T{
14515+show filename
14516+T}
14517+_
14518+.TE
14519+.TP
14520+.B cache
14521+.nf
14522+Shows current cache fill status
14523+.fi
14524+.sp
14525+.TP
14526+.B play
14527+.TS
14528+center;
14529+|l|l|.
14530+_
14531+T{
14532+left\-click
14533+T}	T{
14534+toggle play/pause
14535+T}
14536+_
14537+.TE
14538+.TP
14539+.B skip back
14540+.TS
14541+center;
14542+|l|l|.
14543+_
14544+T{
14545+left\-click
14546+T}	T{
14547+go to beginning of chapter / previous chapter
14548+T}
14549+_
14550+T{
14551+right\-click
14552+T}	T{
14553+show chapters
14554+T}
14555+_
14556+T{
14557+shift+L\-click
14558+T}	T{
14559+show chapters
14560+T}
14561+_
14562+.TE
14563+.TP
14564+.B skip frwd
14565+.TS
14566+center;
14567+|l|l|.
14568+_
14569+T{
14570+left\-click
14571+T}	T{
14572+go to next chapter
14573+T}
14574+_
14575+T{
14576+right\-click
14577+T}	T{
14578+show chapters
14579+T}
14580+_
14581+T{
14582+shift+L\-click
14583+T}	T{
14584+show chapters
14585+T}
14586+_
14587+.TE
14588+.TP
14589+.B time elapsed
14590+.nf
14591+Shows current playback position timestamp
14592+.fi
14593+.sp
14594+.TS
14595+center;
14596+|l|l|.
14597+_
14598+T{
14599+left\-click
14600+T}	T{
14601+toggle displaying timecodes with milliseconds
14602+T}
14603+_
14604+.TE
14605+.TP
14606+.B seekbar
14607+.nf
14608+Indicates current playback position and position of chapters
14609+.fi
14610+.sp
14611+.TS
14612+center;
14613+|l|l|.
14614+_
14615+T{
14616+left\-click
14617+T}	T{
14618+seek to position
14619+T}
14620+_
14621+.TE
14622+.TP
14623+.B time left
14624+.nf
14625+Shows remaining playback time timestamp
14626+.fi
14627+.sp
14628+.TS
14629+center;
14630+|l|l|.
14631+_
14632+T{
14633+left\-click
14634+T}	T{
14635+toggle between total and remaining time
14636+T}
14637+_
14638+.TE
14639+.TP
14640+.B audio and sub
14641+.nf
14642+Displays selected track and amount of available tracks
14643+.fi
14644+.sp
14645+.TS
14646+center;
14647+|l|l|.
14648+_
14649+T{
14650+left\-click
14651+T}	T{
14652+cycle audio/sub tracks forward
14653+T}
14654+_
14655+T{
14656+right\-click
14657+T}	T{
14658+cycle audio/sub tracks backwards
14659+T}
14660+_
14661+T{
14662+shift+L\-click
14663+T}	T{
14664+show available audio/sub tracks
14665+T}
14666+_
14667+.TE
14668+.TP
14669+.B vol
14670+.TS
14671+center;
14672+|l|l|.
14673+_
14674+T{
14675+left\-click
14676+T}	T{
14677+toggle mute
14678+T}
14679+_
14680+T{
14681+mouse wheel
14682+T}	T{
14683+volume up/down
14684+T}
14685+_
14686+.TE
14687+.TP
14688+.B fs
14689+.TS
14690+center;
14691+|l|l|.
14692+_
14693+T{
14694+left\-click
14695+T}	T{
14696+toggle fullscreen
14697+T}
14698+_
14699+.TE
14700+.UNINDENT
14701+.SS Key Bindings
14702+.sp
14703+These key bindings are active by default if nothing else is already bound to
14704+these keys. In case of collision, the function needs to be bound to a
14705+different key. See the \fI\%Script Commands\fP section.
14706+.TS
14707+center;
14708+|l|l|.
14709+_
14710+T{
14711+del
14712+T}	T{
14713+Cycles visibility between never / auto (mouse\-move) / always
14714+T}
14715+_
14716+.TE
14717+.SS Configuration
14718+.sp
14719+The OSC offers limited configuration through a config file
14720+\fBscript\-opts/osc.conf\fP placed in mpv\(aqs user dir and through the
14721+\fB\-\-script\-opts\fP command\-line option. Options provided through the command\-line
14722+will override those from the config file.
14723+.SS Config Syntax
14724+.sp
14725+The config file must exactly follow the following syntax:
14726+.INDENT 0.0
14727+.INDENT 3.5
14728+.sp
14729+.nf
14730+.ft C
14731+# this is a comment
14732+optionA=value1
14733+optionB=value2
14734+.ft P
14735+.fi
14736+.UNINDENT
14737+.UNINDENT
14738+.sp
14739+\fB#\fP can only be used at the beginning of a line and there may be no
14740+spaces around the \fB=\fP or anywhere else.
14741+.SS Command\-line Syntax
14742+.sp
14743+To avoid collisions with other scripts, all options need to be prefixed with
14744+\fBosc\-\fP\&.
14745+.sp
14746+Example:
14747+.INDENT 0.0
14748+.INDENT 3.5
14749+.sp
14750+.nf
14751+.ft C
14752+\-\-script\-opts=osc\-optionA=value1,osc\-optionB=value2
14753+.ft P
14754+.fi
14755+.UNINDENT
14756+.UNINDENT
14757+.SS Configurable Options
14758+.INDENT 0.0
14759+.TP
14760+.B \fBlayout\fP
14761+Default: bottombar
14762+.sp
14763+The layout for the OSC. Currently available are: box, slimbox,
14764+bottombar and topbar. Default pre\-0.21.0 was \(aqbox\(aq.
14765+.TP
14766+.B \fBseekbarstyle\fP
14767+Default: bar
14768+.sp
14769+Sets the style of the playback position marker and overall shape
14770+of the seekbar: \fBbar\fP, \fBdiamond\fP or \fBknob\fP\&.
14771+.TP
14772+.B \fBseekbarhandlesize\fP
14773+Default: 0.6
14774+.sp
14775+Size ratio of the seek handle if \fBseekbarstyle\fP is set to \fBdimaond\fP
14776+or \fBknob\fP\&. This is relative to the full height of the seekbar.
14777+.TP
14778+.B \fBseekbarkeyframes\fP
14779+Default: yes
14780+.sp
14781+Controls the mode used to seek when dragging the seekbar. By default,
14782+keyframes are used. If set to false, exact seeking on mouse drags
14783+will be used instead. Keyframes are preferred, but exact seeks may be
14784+useful in cases where keyframes cannot be found. Note that using exact
14785+seeks can potentially make mouse dragging much slower.
14786+.TP
14787+.B \fBseekrangestyle\fP
14788+Default: inverted
14789+.sp
14790+Display seekable ranges on the seekbar. \fBbar\fP shows them on the full
14791+height of the bar, \fBline\fP as a thick line and \fBinverted\fP as a thin
14792+line that is inverted over playback position markers. \fBnone\fP will hide
14793+them. Additionally, \fBslider\fP will show a permanent handle inside the seekbar
14794+with cached ranges marked inside. Note that these will look differently
14795+based on the seekbarstyle option. Also, \fBslider\fP does not work with
14796+\fBseekbarstyle\fP set to \fBbar\fP\&.
14797+.TP
14798+.B \fBseekrangeseparate\fP
14799+Default: yes
14800+.sp
14801+Controls whether to show line\-style seekable ranges on top of the
14802+seekbar or separately if \fBseekbarstyle\fP is set to \fBbar\fP\&.
14803+.TP
14804+.B \fBseekrangealpha\fP
14805+Default: 200
14806+.sp
14807+Alpha of the seekable ranges, 0 (opaque) to 255 (fully transparent).
14808+.TP
14809+.B \fBdeadzonesize\fP
14810+Default: 0.5
14811+.sp
14812+Size of the deadzone. The deadzone is an area that makes the mouse act
14813+like leaving the window. Movement there won\(aqt make the OSC show up and
14814+it will hide immediately if the mouse enters it. The deadzone starts
14815+at the window border opposite to the OSC and the size controls how much
14816+of the window it will span. Values between 0.0 and 1.0, where 0 means the
14817+OSC will always popup with mouse movement in the window, and 1 means the
14818+OSC will only show up when the mouse hovers it. Default pre\-0.21.0 was 0.
14819+.TP
14820+.B \fBminmousemove\fP
14821+Default: 0
14822+.sp
14823+Minimum amount of pixels the mouse has to move between ticks to make
14824+the OSC show up. Default pre\-0.21.0 was 3.
14825+.TP
14826+.B \fBshowwindowed\fP
14827+Default: yes
14828+.sp
14829+Enable the OSC when windowed
14830+.TP
14831+.B \fBshowfullscreen\fP
14832+Default: yes
14833+.sp
14834+Enable the OSC when fullscreen
14835+.TP
14836+.B \fBscalewindowed\fP
14837+Default: 1.0
14838+.sp
14839+Scale factor of the OSC when windowed.
14840+.TP
14841+.B \fBscalefullscreen\fP
14842+Default: 1.0
14843+.sp
14844+Scale factor of the OSC when fullscreen
14845+.TP
14846+.B \fBscaleforcedwindow\fP
14847+Default: 2.0
14848+.sp
14849+Scale factor of the OSC when rendered on a forced (dummy) window
14850+.TP
14851+.B \fBvidscale\fP
14852+Default: yes
14853+.sp
14854+Scale the OSC with the video
14855+\fBno\fP tries to keep the OSC size constant as much as the window size allows
14856+.TP
14857+.B \fBvalign\fP
14858+Default: 0.8
14859+.sp
14860+Vertical alignment, \-1 (top) to 1 (bottom)
14861+.TP
14862+.B \fBhalign\fP
14863+Default: 0.0
14864+.sp
14865+Horizontal alignment, \-1 (left) to 1 (right)
14866+.TP
14867+.B \fBbarmargin\fP
14868+Default: 0
14869+.sp
14870+Margin from bottom (bottombar) or top (topbar), in pixels
14871+.TP
14872+.B \fBboxalpha\fP
14873+Default: 80
14874+.sp
14875+Alpha of the background box, 0 (opaque) to 255 (fully transparent)
14876+.TP
14877+.B \fBhidetimeout\fP
14878+Default: 500
14879+.sp
14880+Duration in ms until the OSC hides if no mouse movement, must not be
14881+negative
14882+.TP
14883+.B \fBfadeduration\fP
14884+Default: 200
14885+.sp
14886+Duration of fade out in ms, 0 = no fade
14887+.TP
14888+.B \fBtitle\fP
14889+Default: ${media\-title}
14890+.sp
14891+String that supports property expansion that will be displayed as
14892+OSC title.
14893+ASS tags are escaped, and newlines and trailing slashes are stripped.
14894+.TP
14895+.B \fBtooltipborder\fP
14896+Default: 1
14897+.sp
14898+Size of the tooltip outline when using bottombar or topbar layouts
14899+.TP
14900+.B \fBtimetotal\fP
14901+Default: no
14902+.sp
14903+Show total time instead of time remaining
14904+.TP
14905+.B \fBtimems\fP
14906+Default: no
14907+.sp
14908+Display timecodes with milliseconds
14909+.TP
14910+.B \fBvisibility\fP
14911+Default: auto (auto hide/show on mouse move)
14912+.sp
14913+Also supports \fBnever\fP and \fBalways\fP
14914+.TP
14915+.B \fBboxmaxchars\fP
14916+Default: 80
14917+.sp
14918+Max chars for the osc title at the box layout. mpv does not measure the
14919+text width on screen and so it needs to limit it by number of chars. The
14920+default is conservative to allow wide fonts to be used without overflow.
14921+However, with many common fonts a bigger number can be used. YMMV.
14922+.TP
14923+.B \fBboxvideo\fP
14924+Default: no
14925+.sp
14926+Whether to overlay the osc over the video (\fBno\fP), or to box the video
14927+within the areas not covered by the osc (\fByes\fP). If this option is set,
14928+the osc may overwrite the \fB\-\-video\-margin\-ratio\-*\fP options, even if the
14929+user has set them. (It will not overwrite them if all of them are set to
14930+default values.)
14931+.sp
14932+Currently, this is supported for the \fBbottombar\fP and \fBtopbar\fP layout
14933+only. The other layouts do not change if this option is set. Separately,
14934+if window controls are present (see below), they will be affected
14935+regardless of which osc layout is in use.
14936+.sp
14937+The border is static and appears even if the OSC is configured to appear
14938+only on mouse interaction. If the OSC is invisible, the border is simply
14939+filled with the background color (black by default).
14940+.sp
14941+This currently still makes the OSC overlap with subtitles (if the
14942+\fB\-\-sub\-use\-margins\fP option is set to \fByes\fP, the default). This may be
14943+fixed later.
14944+.sp
14945+This does not work correctly with video outputs like \fB\-\-vo=xv\fP, which
14946+render OSD into the unscaled video.
14947+.TP
14948+.B \fBwindowcontrols\fP
14949+Default: auto (Show window controls if there is no window border)
14950+.sp
14951+Whether to show window management controls over the video, and if so,
14952+which side of the window to place them. This may be desirable when the
14953+window has no decorations, either because they have been explicitly
14954+disabled (\fBborder=no\fP) or because the current platform doesn\(aqt support
14955+them (eg: gnome\-shell with wayland).
14956+.sp
14957+The set of window controls is fixed, offering \fBminimize\fP, \fBmaximize\fP,
14958+and \fBquit\fP\&. Not all platforms implement \fBminimize\fP and \fBmaximize\fP,
14959+but \fBquit\fP will always work.
14960+.TP
14961+.B \fBwindowcontrols_alignment\fP
14962+Default: right
14963+.sp
14964+If window controls are shown, indicates which side should they be aligned
14965+to.
14966+.sp
14967+Supports \fBleft\fP and \fBright\fP which will place the controls on those
14968+respective sides.
14969+.TP
14970+.B \fBgreenandgrumpy\fP
14971+Default: no
14972+.sp
14973+Set to \fByes\fP to reduce festivity (i.e. disable santa hat in December.)
14974+.UNINDENT
14975+.SS Script Commands
14976+.sp
14977+The OSC script listens to certain script commands. These commands can bound
14978+in \fBinput.conf\fP, or sent by other scripts.
14979+.INDENT 0.0
14980+.TP
14981+.B \fBosc\-message\fP
14982+Show a message on screen using the OSC. First argument is the message,
14983+second the duration in seconds.
14984+.TP
14985+.B \fBosc\-visibility\fP
14986+Controls visibility mode \fBnever\fP / \fBauto\fP (on mouse move) / \fBalways\fP
14987+and also \fBcycle\fP to cycle between the modes
14988+.UNINDENT
14989+.sp
14990+Example
14991+.sp
14992+You could put this into \fBinput.conf\fP to hide the OSC with the \fBa\fP key and
14993+to set auto mode (the default) with \fBb\fP:
14994+.INDENT 0.0
14995+.INDENT 3.5
14996+.sp
14997+.nf
14998+.ft C
14999+a script\-message osc\-visibility never
15000+b script\-message osc\-visibility auto
15001+.ft P
15002+.fi
15003+.UNINDENT
15004+.UNINDENT
15005+.INDENT 0.0
15006+.TP
15007+.B \fBosc\-playlist\fP, \fBosc\-chapterlist\fP, \fBosc\-tracklist\fP
15008+Shows a limited view of the respective type of list using the OSC. First
15009+argument is duration in seconds.
15010+.UNINDENT
15011+.SH STATS
15012+.sp
15013+This builtin script displays information and statistics for the currently
15014+played file. It is enabled by default if mpv was compiled with Lua support.
15015+It can be disabled entirely using the \fB\-\-load\-stats\-overlay=no\fP option.
15016+.SS Usage
15017+.sp
15018+The following key bindings are active by default unless something else is
15019+already bound to them:
15020+.TS
15021+center;
15022+|l|l|.
15023+_
15024+T{
15025+i
15026+T}	T{
15027+Show stats for a fixed duration
15028+T}
15029+_
15030+T{
15031+I
15032+T}	T{
15033+Toggle stats (shown until toggled again)
15034+T}
15035+_
15036+.TE
15037+.sp
15038+While the stats are visible on screen the following key bindings are active,
15039+regardless of existing bindings. They allow you to switch between \fIpages\fP of
15040+stats:
15041+.TS
15042+center;
15043+|l|l|.
15044+_
15045+T{
15046+1
15047+T}	T{
15048+Show usual stats
15049+T}
15050+_
15051+T{
15052+2
15053+T}	T{
15054+Show frame timings
15055+T}
15056+_
15057+T{
15058+3
15059+T}	T{
15060+Input cache stats
15061+T}
15062+_
15063+.TE
15064+.SS Font
15065+.sp
15066+For optimal visual experience, a font with support for many font weights and
15067+monospaced digits is recommended. By default, the open source font
15068+\fI\%Source Sans Pro\fP is used.
15069+.SS Configuration
15070+.sp
15071+This script can be customized through a config file \fBscript\-opts/stats.conf\fP
15072+placed in mpv\(aqs user directory and through the \fB\-\-script\-opts\fP command\-line
15073+option. The configuration syntax is described in \fI\%ON SCREEN CONTROLLER\fP\&.
15074+.SS Configurable Options
15075+.INDENT 0.0
15076+.TP
15077+.B \fBkey_oneshot\fP
15078+Default: i
15079+.TP
15080+.B \fBkey_toggle\fP
15081+Default: I
15082+.sp
15083+Key bindings to display stats.
15084+.TP
15085+.B \fBkey_page_1\fP
15086+Default: 1
15087+.TP
15088+.B \fBkey_page_2\fP
15089+Default: 2
15090+.TP
15091+.B \fBkey_page_3\fP
15092+Default: 3
15093+.sp
15094+Key bindings for page switching while stats are displayed.
15095+.TP
15096+.B \fBduration\fP
15097+Default: 4
15098+.sp
15099+How long the stats are shown in seconds (oneshot).
15100+.TP
15101+.B \fBredraw_delay\fP
15102+Default: 1
15103+.sp
15104+How long it takes to refresh the displayed stats in seconds (toggling).
15105+.TP
15106+.B \fBpersistent_overlay\fP
15107+Default: no
15108+.sp
15109+When \fIno\fP, other scripts printing text to the screen can overwrite the
15110+displayed stats. When \fIyes\fP, displayed stats are persistently shown for the
15111+respective duration. This can result in overlapping text when multiple
15112+scripts decide to print text at the same time.
15113+.TP
15114+.B \fBplot_perfdata\fP
15115+Default: yes
15116+.sp
15117+Show graphs for performance data (page 2).
15118+.TP
15119+.B \fBplot_vsync_ratio\fP
15120+Default: yes
15121+.TP
15122+.B \fBplot_vsync_jitter\fP
15123+Default: yes
15124+.sp
15125+Show graphs for vsync and jitter values (page 1). Only when toggled.
15126+.TP
15127+.B \fBflush_graph_data\fP
15128+Default: yes
15129+.sp
15130+Clear data buffers used for drawing graphs when toggling.
15131+.TP
15132+.B \fBfont\fP
15133+Default: Source Sans Pro
15134+.sp
15135+Font name. Should support as many font weights as possible for optimal
15136+visual experience.
15137+.TP
15138+.B \fBfont_mono\fP
15139+Default: Source Sans Pro
15140+.sp
15141+Font name for parts where monospaced characters are necessary to align
15142+text. Currently, monospaced digits are sufficient.
15143+.TP
15144+.B \fBfont_size\fP
15145+Default: 8
15146+.sp
15147+Font size used to render text.
15148+.TP
15149+.B \fBfont_color\fP
15150+Default: FFFFFF
15151+.sp
15152+Font color.
15153+.TP
15154+.B \fBborder_size\fP
15155+Default: 0.8
15156+.sp
15157+Size of border drawn around the font.
15158+.TP
15159+.B \fBborder_color\fP
15160+Default: 262626
15161+.sp
15162+Color of drawn border.
15163+.TP
15164+.B \fBalpha\fP
15165+Default: 11
15166+.sp
15167+Transparency for drawn text.
15168+.TP
15169+.B \fBplot_bg_border_color\fP
15170+Default: 0000FF
15171+.sp
15172+Border color used for drawing graphs.
15173+.TP
15174+.B \fBplot_bg_color\fP
15175+Default: 262626
15176+.sp
15177+Background color used for drawing graphs.
15178+.TP
15179+.B \fBplot_color\fP
15180+Default: FFFFFF
15181+.sp
15182+Color used for drawing graphs.
15183+.UNINDENT
15184+.sp
15185+Note: colors are given as hexadecimal values and use ASS tag order: BBGGRR
15186+(blue green red).
15187+.SS Different key bindings
15188+.sp
15189+A different key binding can be defined with the aforementioned options
15190+\fBkey_oneshot\fP and \fBkey_toggle\fP but also with commands in \fBinput.conf\fP,
15191+for example:
15192+.INDENT 0.0
15193+.INDENT 3.5
15194+.sp
15195+.nf
15196+.ft C
15197+e script\-binding stats/display\-stats
15198+E script\-binding stats/display\-stats\-toggle
15199+.ft P
15200+.fi
15201+.UNINDENT
15202+.UNINDENT
15203+.sp
15204+Using \fBinput.conf\fP, it is also possible to directly display a certain page:
15205+.INDENT 0.0
15206+.INDENT 3.5
15207+.sp
15208+.nf
15209+.ft C
15210+i script\-binding stats/display\-page\-1
15211+e script\-binding stats/display\-page\-2
15212+.ft P
15213+.fi
15214+.UNINDENT
15215+.UNINDENT
15216+.SH CONSOLE
15217+.sp
15218+The console is a REPL for mpv input commands. It is displayed on the video
15219+window. It also shows log messages. It can be disabled entirely using the
15220+\fB\-\-load\-osd\-console=no\fP option.
15221+.SS Keybindings
15222+.INDENT 0.0
15223+.TP
15224+.B \(ga
15225+Show the console.
15226+.TP
15227+.B ESC
15228+Hide the console.
15229+.TP
15230+.B ENTER
15231+Run the typed command.
15232+.TP
15233+.B Shift+ENTER
15234+Type a literal newline character.
15235+.TP
15236+.B Ctrl+LEFT and Ctrl+RIGHT
15237+Move cursor to previous/next word.
15238+.TP
15239+.B UP and DOWN
15240+Navigate command history.
15241+.TP
15242+.B PGUP
15243+Go to the first command in the history.
15244+.TP
15245+.B PGDN
15246+Stop navigating command history.
15247+.TP
15248+.B INSERT
15249+Toggle insert mode.
15250+.TP
15251+.B Shift+INSERT
15252+Paste text (uses the primary selection on X11.)
15253+.TP
15254+.B TAB
15255+Complete the command or property name at the cursor.
15256+.TP
15257+.B Ctrl+C
15258+Clear current line.
15259+.TP
15260+.B Ctrl+K.
15261+Delete text from the cursor to the end of the line.
15262+.TP
15263+.B Ctrl+L
15264+Clear all log messages from the console.
15265+.TP
15266+.B Ctrl+U
15267+Delete text from the cursor to the beginning of the line.
15268+.TP
15269+.B Ctrl+V
15270+Paste text (uses the clipboard on X11.)
15271+.TP
15272+.B Ctrl+W
15273+Delete text from the cursor to the beginning of the current word.
15274+.UNINDENT
15275+.SS Commands
15276+.INDENT 0.0
15277+.TP
15278+.B \fBscript\-message\-to console type <text>\fP
15279+Show the console and pre\-fill it with the provided text.
15280+.UNINDENT
15281+.SS Known issues
15282+.INDENT 0.0
15283+.IP \(bu 2
15284+Pasting text is slow on Windows
15285+.IP \(bu 2
15286+Non\-ASCII keyboard input has restrictions
15287+.IP \(bu 2
15288+The cursor keys move between Unicode code\-points, not grapheme clusters
15289+.UNINDENT
15290+.SS Configuration
15291+.sp
15292+This script can be customized through a config file \fBscript\-opts/console.conf\fP
15293+placed in mpv\(aqs user directory and through the \fB\-\-script\-opts\fP command\-line
15294+option. The configuration syntax is described in \fI\%ON SCREEN CONTROLLER\fP\&.
15295+.sp
15296+Key bindings can be changed in a standard way, see for example stats.lua
15297+documentation.
15298+.SS Configurable Options
15299+.INDENT 0.0
15300+.TP
15301+.B \fBscale\fP
15302+Default: 1
15303+.sp
15304+All drawing is scaled by this value, including the text borders and the
15305+cursor.
15306+.sp
15307+If the VO backend in use has HiDPI scale reporting implemented, the option
15308+value is scaled with the reported HiDPI scale.
15309+.TP
15310+.B \fBfont\fP
15311+Default: unset (picks a hardcoded font depending on detected platform)
15312+.sp
15313+Set the font used for the REPL and the console. This probably doesn\(aqt
15314+have to be a monospaced font.
15315+.TP
15316+.B \fBfont_size\fP
15317+Default: 16
15318+.sp
15319+Set the font size used for the REPL and the console. This will be
15320+multiplied by "scale."
15321+.UNINDENT
15322+.SH LUA SCRIPTING
15323+.sp
15324+mpv can load Lua scripts. Scripts passed to the \fB\-\-script\fP option, or found in
15325+the \fBscripts\fP subdirectory of the mpv configuration directory (usually
15326+\fB~/.config/mpv/scripts/\fP) will be loaded on program start. mpv also appends the
15327+\fBscripts\fP subdirectory to the end of Lua\(aqs path so you can import scripts from
15328+there too. Since it\(aqs added to the end, don\(aqt name scripts you want to import
15329+the same as Lua libraries because they will be overshadowed by them.
15330+.sp
15331+mpv provides the built\-in module \fBmp\fP, which contains functions to send
15332+commands to the mpv core and to retrieve information about playback state, user
15333+settings, file information, and so on.
15334+.sp
15335+These scripts can be used to control mpv in a similar way to slave mode.
15336+Technically, the Lua code uses the client API internally.
15337+.SS Example
15338+.sp
15339+A script which leaves fullscreen mode when the player is paused:
15340+.INDENT 0.0
15341+.INDENT 3.5
15342+.sp
15343+.nf
15344+.ft C
15345+function on_pause_change(name, value)
15346+    if value == true then
15347+        mp.set_property("fullscreen", "no")
15348+    end
15349+end
15350+mp.observe_property("pause", "bool", on_pause_change)
15351+.ft P
15352+.fi
15353+.UNINDENT
15354+.UNINDENT
15355+.SS Details on the script initialization and lifecycle
15356+.sp
15357+Your script will be loaded by the player at program start from the \fBscripts\fP
15358+configuration subdirectory, or from a path specified with the \fB\-\-script\fP
15359+option. Some scripts are loaded internally (like \fB\-\-osc\fP). Each script runs in
15360+its own thread. Your script is first run "as is", and once that is done, the event loop
15361+is entered. This event loop will dispatch events received by mpv and call your
15362+own event handlers which you have registered with \fBmp.register_event\fP, or
15363+timers added with \fBmp.add_timeout\fP or similar. Note that since the
15364+script starts execution concurrently with player initialization, some properties
15365+may not be populated with meaningful values until the relevant subsystems have
15366+initialized.
15367+.sp
15368+When the player quits, all scripts will be asked to terminate. This happens via
15369+a \fBshutdown\fP event, which by default will make the event loop return. If your
15370+script got into an endless loop, mpv will probably behave fine during playback,
15371+but it won\(aqt terminate when quitting, because it\(aqs waiting on your script.
15372+.sp
15373+Internally, the C code will call the Lua function \fBmp_event_loop\fP after
15374+loading a Lua script. This function is normally defined by the default prelude
15375+loaded before your script (see \fBplayer/lua/defaults.lua\fP in the mpv sources).
15376+The event loop will wait for events and dispatch events registered with
15377+\fBmp.register_event\fP\&. It will also handle timers added with \fBmp.add_timeout\fP
15378+and similar (by waiting with a timeout).
15379+.sp
15380+Since mpv 0.6.0, the player will wait until the script is fully loaded before
15381+continuing normal operation. The player considers a script as fully loaded as
15382+soon as it starts waiting for mpv events (or it exits). In practice this means
15383+the player will more or less hang until the script returns from the main chunk
15384+(and \fBmp_event_loop\fP is called), or the script calls \fBmp_event_loop\fP or
15385+\fBmp.dispatch_events\fP directly. This is done to make it possible for a script
15386+to fully setup event handlers etc. before playback actually starts. In older
15387+mpv versions, this happened asynchronously. With mpv 0.29.0, this changes
15388+slightly, and it merely waits for scripts to be loaded in this manner before
15389+starting playback as part of the player initialization phase. Scripts run though
15390+initialization in parallel. This might change again.
15391+.SS mp functions
15392+.sp
15393+The \fBmp\fP module is preloaded, although it can be loaded manually with
15394+\fBrequire \(aqmp\(aq\fP\&. It provides the core client API.
15395+.INDENT 0.0
15396+.TP
15397+.B \fBmp.command(string)\fP
15398+Run the given command. This is similar to the commands used in input.conf.
15399+See \fI\%List of Input Commands\fP\&.
15400+.sp
15401+By default, this will show something on the OSD (depending on the command),
15402+as if it was used in \fBinput.conf\fP\&. See \fI\%Input Command Prefixes\fP how
15403+to influence OSD usage per command.
15404+.sp
15405+Returns \fBtrue\fP on success, or \fBnil, error\fP on error.
15406+.TP
15407+.B \fBmp.commandv(arg1, arg2, ...)\fP
15408+Similar to \fBmp.command\fP, but pass each command argument as separate
15409+parameter. This has the advantage that you don\(aqt have to care about
15410+quoting and escaping in some cases.
15411+.sp
15412+Example:
15413+.INDENT 7.0
15414+.INDENT 3.5
15415+.sp
15416+.nf
15417+.ft C
15418+mp.command("loadfile " .. filename .. " append")
15419+mp.commandv("loadfile", filename, "append")
15420+.ft P
15421+.fi
15422+.UNINDENT
15423+.UNINDENT
15424+.sp
15425+These two commands are equivalent, except that the first version breaks
15426+if the filename contains spaces or certain special characters.
15427+.sp
15428+Note that properties are \fInot\fP expanded.  You can use either \fBmp.command\fP,
15429+the \fBexpand\-properties\fP prefix, or the \fBmp.get_property\fP family of
15430+functions.
15431+.sp
15432+Unlike \fBmp.command\fP, this will not use OSD by default either (except
15433+for some OSD\-specific commands).
15434+.TP
15435+.B \fBmp.command_native(table [,def])\fP
15436+Similar to \fBmp.commandv\fP, but pass the argument list as table. This has
15437+the advantage that in at least some cases, arguments can be passed as
15438+native types. It also allows you to use named argument.
15439+.sp
15440+If the table is an array, each array item is like an argument in
15441+\fBmp.commandv()\fP (but can be a native type instead of a string).
15442+.sp
15443+If the table contains string keys, it\(aqs interpreted as command with named
15444+arguments. This requires at least an entry with the key \fBname\fP to be
15445+present, which must be a string, and contains the command name. The special
15446+entry \fB_flags\fP is optional, and if present, must be an array of
15447+\fI\%Input Command Prefixes\fP to apply. All other entries are interpreted as
15448+arguments.
15449+.sp
15450+Returns a result table on success (usually empty), or \fBdef, error\fP on
15451+error. \fBdef\fP is the second parameter provided to the function, and is
15452+nil if it\(aqs missing.
15453+.TP
15454+.B \fBmp.command_native_async(table [,fn])\fP
15455+Like \fBmp.command_native()\fP, but the command is ran asynchronously (as far
15456+as possible), and upon completion, fn is called. fn has two arguments:
15457+\fBfn(success, result, error)\fP\&. \fBsuccess\fP is always a Boolean and is true
15458+if the command was successful, otherwise false. The second parameter is
15459+the result value (can be nil) in case of success, nil otherwise (as returned
15460+by \fBmp.command_native()\fP). The third parameter is the error string in case
15461+of an error, nil otherwise.
15462+.sp
15463+Returns a table with undefined contents, which can be used as argument for
15464+\fBmp.abort_async_command\fP\&.
15465+.sp
15466+If starting the command failed for some reason, \fBnil, error\fP is returned,
15467+and \fBfn\fP is called indicating failure, using the same error value.
15468+.TP
15469+.B \fBmp.abort_async_command(t)\fP
15470+Abort a \fBmp.command_native_async\fP call. The argument is the return value
15471+of that command (which starts asynchronous execution of the command).
15472+Whether this works and how long it takes depends on the command and the
15473+situation. The abort call itself is asynchronous. Does not return anything.
15474+.TP
15475+.B \fBmp.get_property(name [,def])\fP
15476+Return the value of the given property as string. These are the same
15477+properties as used in input.conf. See \fI\%Properties\fP for a list of
15478+properties. The returned string is formatted similar to \fB${=name}\fP
15479+(see \fI\%Property Expansion\fP).
15480+.sp
15481+Returns the string on success, or \fBdef, error\fP on error. \fBdef\fP is the
15482+second parameter provided to the function, and is nil if it\(aqs missing.
15483+.TP
15484+.B \fBmp.get_property_osd(name [,def])\fP
15485+Similar to \fBmp.get_property\fP, but return the property value formatted for
15486+OSD. This is the same string as printed with \fB${name}\fP when used in
15487+input.conf.
15488+.sp
15489+Returns the string on success, or \fBdef, error\fP on error. \fBdef\fP is the
15490+second parameter provided to the function, and is an empty string if it\(aqs
15491+missing. Unlike \fBget_property()\fP, assigning the return value to a variable
15492+will always result in a string.
15493+.TP
15494+.B \fBmp.get_property_bool(name [,def])\fP
15495+Similar to \fBmp.get_property\fP, but return the property value as Boolean.
15496+.sp
15497+Returns a Boolean on success, or \fBdef, error\fP on error.
15498+.TP
15499+.B \fBmp.get_property_number(name [,def])\fP
15500+Similar to \fBmp.get_property\fP, but return the property value as number.
15501+.sp
15502+Note that while Lua does not distinguish between integers and floats,
15503+mpv internals do. This function simply request a double float from mpv,
15504+and mpv will usually convert integer property values to float.
15505+.sp
15506+Returns a number on success, or \fBdef, error\fP on error.
15507+.TP
15508+.B \fBmp.get_property_native(name [,def])\fP
15509+Similar to \fBmp.get_property\fP, but return the property value using the best
15510+Lua type for the property. Most time, this will return a string, Boolean,
15511+or number. Some properties (for example \fBchapter\-list\fP) are returned as
15512+tables.
15513+.sp
15514+Returns a value on success, or \fBdef, error\fP on error. Note that \fBnil\fP
15515+might be a possible, valid value too in some corner cases.
15516+.TP
15517+.B \fBmp.set_property(name, value)\fP
15518+Set the given property to the given string value. See \fBmp.get_property\fP
15519+and \fI\%Properties\fP for more information about properties.
15520+.sp
15521+Returns true on success, or \fBnil, error\fP on error.
15522+.TP
15523+.B \fBmp.set_property_bool(name, value)\fP
15524+Similar to \fBmp.set_property\fP, but set the given property to the given
15525+Boolean value.
15526+.TP
15527+.B \fBmp.set_property_number(name, value)\fP
15528+Similar to \fBmp.set_property\fP, but set the given property to the given
15529+numeric value.
15530+.sp
15531+Note that while Lua does not distinguish between integers and floats,
15532+mpv internals do. This function will test whether the number can be
15533+represented as integer, and if so, it will pass an integer value to mpv,
15534+otherwise a double float.
15535+.TP
15536+.B \fBmp.set_property_native(name, value)\fP
15537+Similar to \fBmp.set_property\fP, but set the given property using its native
15538+type.
15539+.sp
15540+Since there are several data types which cannot represented natively in
15541+Lua, this might not always work as expected. For example, while the Lua
15542+wrapper can do some guesswork to decide whether a Lua table is an array
15543+or a map, this would fail with empty tables. Also, there are not many
15544+properties for which it makes sense to use this, instead of
15545+\fBset_property\fP, \fBset_property_bool\fP, \fBset_property_number\fP\&.
15546+For these reasons, this function should probably be avoided for now, except
15547+for properties that use tables natively.
15548+.TP
15549+.B \fBmp.get_time()\fP
15550+Return the current mpv internal time in seconds as a number. This is
15551+basically the system time, with an arbitrary offset.
15552+.TP
15553+.B \fBmp.add_key_binding(key, name|fn [,fn [,flags]])\fP
15554+Register callback to be run on a key binding. The binding will be mapped to
15555+the given \fBkey\fP, which is a string describing the physical key. This uses
15556+the same key names as in input.conf, and also allows combinations
15557+(e.g. \fBctrl+a\fP). If the key is empty or \fBnil\fP, no physical key is
15558+registered, but the user still can create own bindings (see below).
15559+.sp
15560+After calling this function, key presses will cause the function \fBfn\fP to
15561+be called (unless the user remapped the key with another binding).
15562+.sp
15563+The \fBname\fP argument should be a short symbolic string. It allows the user
15564+to remap the key binding via input.conf using the \fBscript\-message\fP
15565+command, and the name of the key binding (see below for
15566+an example). The name should be unique across other bindings in the same
15567+script \- if not, the previous binding with the same name will be
15568+overwritten. You can omit the name, in which case a random name is generated
15569+internally. (Omitting works as follows: either pass \fBnil\fP for \fBname\fP,
15570+or pass the \fBfn\fP argument in place of the name. The latter is not
15571+recommended and is handled for compatibility only.)
15572+.sp
15573+The last argument is used for optional flags. This is a table, which can
15574+have the following entries:
15575+.INDENT 7.0
15576+.INDENT 3.5
15577+.INDENT 0.0
15578+.TP
15579+.B \fBrepeatable\fP
15580+If set to \fBtrue\fP, enables key repeat for this specific binding.
15581+.TP
15582+.B \fBcomplex\fP
15583+If set to \fBtrue\fP, then \fBfn\fP is called on both key up and down
15584+events (as well as key repeat, if enabled), with the first
15585+argument being a table. This table has the following entries (and
15586+may contain undocumented ones):
15587+.INDENT 7.0
15588+.TP
15589+.B \fBevent\fP
15590+Set to one of the strings \fBdown\fP, \fBrepeat\fP, \fBup\fP or
15591+\fBpress\fP (the latter if key up/down can\(aqt be tracked).
15592+.TP
15593+.B \fBis_mouse\fP
15594+Boolean Whether the event was caused by a mouse button.
15595+.TP
15596+.B \fBkey_name\fP
15597+The name of they key that triggered this, or \fBnil\fP if invoked
15598+artificially. If the key name is unknown, it\(aqs an empty string.
15599+.TP
15600+.B \fBkey_text\fP
15601+Text if triggered by a text key, otherwise \fBnil\fP\&. See
15602+description of \fBscript\-binding\fP command for details (this
15603+field is equivalent to the 5th argument).
15604+.UNINDENT
15605+.UNINDENT
15606+.UNINDENT
15607+.UNINDENT
15608+.sp
15609+Internally, key bindings are dispatched via the \fBscript\-message\-to\fP or
15610+\fBscript\-binding\fP input commands and \fBmp.register_script_message\fP\&.
15611+.sp
15612+Trying to map multiple commands to a key will essentially prefer a random
15613+binding, while the other bindings are not called. It is guaranteed that
15614+user defined bindings in the central input.conf are preferred over bindings
15615+added with this function (but see \fBmp.add_forced_key_binding\fP).
15616+.sp
15617+Example:
15618+.INDENT 7.0
15619+.INDENT 3.5
15620+.sp
15621+.nf
15622+.ft C
15623+function something_handler()
15624+    print("the key was pressed")
15625+end
15626+mp.add_key_binding("x", "something", something_handler)
15627+.ft P
15628+.fi
15629+.UNINDENT
15630+.UNINDENT
15631+.sp
15632+This will print the message \fBthe key was pressed\fP when \fBx\fP was pressed.
15633+.sp
15634+The user can remap these key bindings. Then the user has to put the
15635+following into their input.conf to remap the command to the \fBy\fP key:
15636+.INDENT 7.0
15637+.INDENT 3.5
15638+.sp
15639+.nf
15640+.ft C
15641+y script\-binding something
15642+.ft P
15643+.fi
15644+.UNINDENT
15645+.UNINDENT
15646+.sp
15647+This will print the message when the key \fBy\fP is pressed. (\fBx\fP will
15648+still work, unless the user remaps it.)
15649+.sp
15650+You can also explicitly send a message to a named script only. Assume the
15651+above script was using the filename \fBfooscript.lua\fP:
15652+.INDENT 7.0
15653+.INDENT 3.5
15654+.sp
15655+.nf
15656+.ft C
15657+y script\-binding fooscript/something
15658+.ft P
15659+.fi
15660+.UNINDENT
15661+.UNINDENT
15662+.TP
15663+.B \fBmp.add_forced_key_binding(...)\fP
15664+This works almost the same as \fBmp.add_key_binding\fP, but registers the
15665+key binding in a way that will overwrite the user\(aqs custom bindings in their
15666+input.conf. (\fBmp.add_key_binding\fP overwrites default key bindings only,
15667+but not those by the user\(aqs input.conf.)
15668+.TP
15669+.B \fBmp.remove_key_binding(name)\fP
15670+Remove a key binding added with \fBmp.add_key_binding\fP or
15671+\fBmp.add_forced_key_binding\fP\&. Use the same name as you used when adding
15672+the bindings. It\(aqs not possible to remove bindings for which you omitted
15673+the name.
15674+.TP
15675+.B \fBmp.register_event(name, fn)\fP
15676+Call a specific function when an event happens. The event name is a string,
15677+and the function fn is a Lua function value.
15678+.sp
15679+Some events have associated data. This is put into a Lua table and passed
15680+as argument to fn. The Lua table by default contains a \fBname\fP field,
15681+which is a string containing the event name. If the event has an error
15682+associated, the \fBerror\fP field is set to a string describing the error,
15683+on success it\(aqs not set.
15684+.sp
15685+If multiple functions are registered for the same event, they are run in
15686+registration order, which the first registered function running before all
15687+the other ones.
15688+.sp
15689+Returns true if such an event exists, false otherwise.
15690+.sp
15691+See \fI\%Events\fP and \fI\%List of events\fP for details.
15692+.TP
15693+.B \fBmp.unregister_event(fn)\fP
15694+Undo \fBmp.register_event(..., fn)\fP\&. This removes all event handlers that
15695+are equal to the \fBfn\fP parameter. This uses normal Lua \fB==\fP comparison,
15696+so be careful when dealing with closures.
15697+.TP
15698+.B \fBmp.observe_property(name, type, fn)\fP
15699+Watch a property for changes. If the property \fBname\fP is changed, then
15700+the function \fBfn(name)\fP will be called. \fBtype\fP can be \fBnil\fP, or be
15701+set to one of \fBnone\fP, \fBnative\fP, \fBbool\fP, \fBstring\fP, or \fBnumber\fP\&.
15702+\fBnone\fP is the same as \fBnil\fP\&. For all other values, the new value of
15703+the property will be passed as second argument to \fBfn\fP, using
15704+\fBmp.get_property_<type>\fP to retrieve it. This means if \fBtype\fP is for
15705+example \fBstring\fP, \fBfn\fP is roughly called as in
15706+\fBfn(name, mp.get_property_string(name))\fP\&.
15707+.sp
15708+If possible, change events are coalesced. If a property is changed a bunch
15709+of times in a row, only the last change triggers the change function. (The
15710+exact behavior depends on timing and other things.)
15711+.sp
15712+If a property is unavailable, or on error, the value argument to \fBfn\fP is
15713+\fBnil\fP\&. (The \fBobserve_property()\fP call always succeeds, even if a
15714+property does not exist.)
15715+.sp
15716+In some cases the function is not called even if the property changes.
15717+This depends on the property, and it\(aqs a valid feature request to ask for
15718+better update handling of a specific property.
15719+.sp
15720+If the \fBtype\fP is \fBnone\fP or \fBnil\fP, sporadic property change events are
15721+possible. This means the change function \fBfn\fP can be called even if the
15722+property doesn\(aqt actually change.
15723+.sp
15724+You always get an initial change notification. This is meant to initialize
15725+the user\(aqs state to the current value of the property.
15726+.TP
15727+.B \fBmp.unobserve_property(fn)\fP
15728+Undo \fBmp.observe_property(..., fn)\fP\&. This removes all property handlers
15729+that are equal to the \fBfn\fP parameter. This uses normal Lua \fB==\fP
15730+comparison, so be careful when dealing with closures.
15731+.TP
15732+.B \fBmp.add_timeout(seconds, fn)\fP
15733+Call the given function fn when the given number of seconds has elapsed.
15734+Note that the number of seconds can be fractional. For now, the timer\(aqs
15735+resolution may be as low as 50 ms, although this will be improved in the
15736+future.
15737+.sp
15738+This is a one\-shot timer: it will be removed when it\(aqs fired.
15739+.sp
15740+Returns a timer object. See \fBmp.add_periodic_timer\fP for details.
15741+.TP
15742+.B \fBmp.add_periodic_timer(seconds, fn)\fP
15743+Call the given function periodically. This is like \fBmp.add_timeout\fP, but
15744+the timer is re\-added after the function fn is run.
15745+.INDENT 7.0
15746+.TP
15747+.B Returns a timer object. The timer object provides the following methods:
15748+.INDENT 7.0
15749+.TP
15750+.B \fBstop()\fP
15751+Disable the timer. Does nothing if the timer is already disabled.
15752+This will remember the current elapsed time when stopping, so that
15753+\fBresume()\fP essentially unpauses the timer.
15754+.TP
15755+.B \fBkill()\fP
15756+Disable the timer. Resets the elapsed time. \fBresume()\fP will
15757+restart the timer.
15758+.TP
15759+.B \fBresume()\fP
15760+Restart the timer. If the timer was disabled with \fBstop()\fP, this
15761+will resume at the time it was stopped. If the timer was disabled
15762+with \fBkill()\fP, or if it\(aqs a previously fired one\-shot timer (added
15763+with \fBadd_timeout()\fP), this starts the timer from the beginning,
15764+using the initially configured timeout.
15765+.TP
15766+.B \fBis_enabled()\fP
15767+Whether the timer is currently enabled or was previously disabled
15768+(e.g. by \fBstop()\fP or \fBkill()\fP).
15769+.TP
15770+.B \fBtimeout\fP (RW)
15771+This field contains the current timeout period. This value is not
15772+updated as time progresses. It\(aqs only used to calculate when the
15773+timer should fire next when the timer expires.
15774+.sp
15775+If you write this, you can call \fBt:kill() ; t:resume()\fP to reset
15776+the current timeout to the new one. (\fBt:stop()\fP won\(aqt use the
15777+new timeout.)
15778+.TP
15779+.B \fBoneshot\fP (RW)
15780+Whether the timer is periodic (\fBfalse\fP) or fires just once
15781+(\fBtrue\fP). This value is used when the timer expires (but before
15782+the timer callback function fn is run).
15783+.UNINDENT
15784+.UNINDENT
15785+.sp
15786+Note that these are methods, and you have to call them using \fB:\fP instead
15787+of \fB\&.\fP (Refer to \fI\%http://www.lua.org/manual/5.2/manual.html#3.4.9\fP .)
15788+.sp
15789+Example:
15790+.INDENT 7.0
15791+.INDENT 3.5
15792+.sp
15793+.nf
15794+.ft C
15795+seconds = 0
15796+timer = mp.add_periodic_timer(1, function()
15797+    print("called every second")
15798+    # stop it after 10 seconds
15799+    seconds = seconds + 1
15800+    if seconds >= 10 then
15801+        timer:kill()
15802+    end
15803+end)
15804+.ft P
15805+.fi
15806+.UNINDENT
15807+.UNINDENT
15808+.TP
15809+.B \fBmp.get_opt(key)\fP
15810+Return a setting from the \fB\-\-script\-opts\fP option. It\(aqs up to the user and
15811+the script how this mechanism is used. Currently, all scripts can access
15812+this equally, so you should be careful about collisions.
15813+.TP
15814+.B \fBmp.get_script_name()\fP
15815+Return the name of the current script. The name is usually made of the
15816+filename of the script, with directory and file extension removed. If
15817+there are several scripts which would have the same name, it\(aqs made unique
15818+by appending a number.
15819+.INDENT 7.0
15820+.INDENT 3.5
15821+.IP "Example"
15822+.sp
15823+The script \fB/path/to/fooscript.lua\fP becomes \fBfooscript\fP\&.
15824+.UNINDENT
15825+.UNINDENT
15826+.TP
15827+.B \fBmp.osd_message(text [,duration])\fP
15828+Show an OSD message on the screen. \fBduration\fP is in seconds, and is
15829+optional (uses \fB\-\-osd\-duration\fP by default).
15830+.UNINDENT
15831+.SS Advanced mp functions
15832+.sp
15833+These also live in the \fBmp\fP module, but are documented separately as they
15834+are useful only in special situations.
15835+.INDENT 0.0
15836+.TP
15837+.B \fBmp.suspend()\fP
15838+This function has been deprecated in mpv 0.21.0 and does nothing starting
15839+with mpv 0.23.0 (no replacement).
15840+.TP
15841+.B \fBmp.resume()\fP
15842+This function has been deprecated in mpv 0.21.0 and does nothing starting
15843+with mpv 0.23.0 (no replacement).
15844+.TP
15845+.B \fBmp.resume_all()\fP
15846+This function has been deprecated in mpv 0.21.0 and does nothing starting
15847+with mpv 0.23.0 (no replacement).
15848+.TP
15849+.B \fBmp.get_wakeup_pipe()\fP
15850+Calls \fBmpv_get_wakeup_pipe()\fP and returns the read end of the wakeup
15851+pipe. This is deprecated, but still works. (See \fBclient.h\fP for details.)
15852+.TP
15853+.B \fBmp.get_next_timeout()\fP
15854+Return the relative time in seconds when the next timer (\fBmp.add_timeout\fP
15855+and similar) expires. If there is no timer, return \fBnil\fP\&.
15856+.TP
15857+.B \fBmp.dispatch_events([allow_wait])\fP
15858+This can be used to run custom event loops. If you want to have direct
15859+control what the Lua script does (instead of being called by the default
15860+event loop), you can set the global variable \fBmp_event_loop\fP to your
15861+own function running the event loop. From your event loop, you should call
15862+\fBmp.dispatch_events()\fP to dequeue and dispatch mpv events.
15863+.sp
15864+If the \fBallow_wait\fP parameter is set to \fBtrue\fP, the function will block
15865+until the next event is received or the next timer expires. Otherwise (and
15866+this is the default behavior), it returns as soon as the event loop is
15867+emptied. It\(aqs strongly recommended to use \fBmp.get_next_timeout()\fP and
15868+\fBmp.get_wakeup_pipe()\fP if you\(aqre interested in properly working
15869+notification of new events and working timers.
15870+.TP
15871+.B \fBmp.register_idle(fn)\fP
15872+Register an event loop idle handler. Idle handlers are called before the
15873+script goes to sleep after handling all new events. This can be used for
15874+example to delay processing of property change events: if you\(aqre observing
15875+multiple properties at once, you might not want to act on each property
15876+change, but only when all change notifications have been received.
15877+.TP
15878+.B \fBmp.unregister_idle(fn)\fP
15879+Undo \fBmp.register_idle(fn)\fP\&. This removes all idle handlers that
15880+are equal to the \fBfn\fP parameter. This uses normal Lua \fB==\fP comparison,
15881+so be careful when dealing with closures.
15882+.TP
15883+.B \fBmp.enable_messages(level)\fP
15884+Set the minimum log level of which mpv message output to receive. These
15885+messages are normally printed to the terminal. By calling this function,
15886+you can set the minimum log level of messages which should be received with
15887+the \fBlog\-message\fP event. See the description of this event for details.
15888+The level is a string, see \fBmsg.log\fP for allowed log levels.
15889+.TP
15890+.B \fBmp.register_script_message(name, fn)\fP
15891+This is a helper to dispatch \fBscript\-message\fP or \fBscript\-message\-to\fP
15892+invocations to Lua functions. \fBfn\fP is called if \fBscript\-message\fP or
15893+\fBscript\-message\-to\fP (with this script as destination) is run
15894+with \fBname\fP as first parameter. The other parameters are passed to \fBfn\fP\&.
15895+If a message with the given name is already registered, it\(aqs overwritten.
15896+.sp
15897+Used by \fBmp.add_key_binding\fP, so be careful about name collisions.
15898+.TP
15899+.B \fBmp.unregister_script_message(name)\fP
15900+Undo a previous registration with \fBmp.register_script_message\fP\&. Does
15901+nothing if the \fBname\fP wasn\(aqt registered.
15902+.TP
15903+.B \fBmp.create_osd_overlay(format)\fP
15904+Create an OSD overlay. This is a very thin wrapper around the \fBosd\-overlay\fP
15905+command. The function returns a table, which mostly contains fields that
15906+will be passed to \fBosd\-overlay\fP\&. The \fBformat\fP parameter is used to
15907+initialize the \fBformat\fP field. The \fBdata\fP field contains the text to
15908+be used as overlay. For details, see the \fBosd\-overlay\fP command.
15909+.sp
15910+In addition, it provides the following methods:
15911+.INDENT 7.0
15912+.TP
15913+.B \fBupdate()\fP
15914+Commit the OSD overlay to the screen, or in other words, run the
15915+\fBosd\-overlay\fP command with the current fields of the overlay table.
15916+.TP
15917+.B \fBremove()\fP
15918+Remove the overlay from the screen. A \fBupdate()\fP call will add it
15919+again.
15920+.UNINDENT
15921+.sp
15922+Example:
15923+.INDENT 7.0
15924+.INDENT 3.5
15925+.sp
15926+.nf
15927+.ft C
15928+ov = mp.create_osd_overlay("ass\-events")
15929+ov.data = "{\e\ean5}{\e\eb1}hello world!"
15930+ov:update()
15931+.ft P
15932+.fi
15933+.UNINDENT
15934+.UNINDENT
15935+.sp
15936+The advantage of using this wrapper (as opposed to running \fBosd\-overlay\fP
15937+directly) is that the \fBid\fP field is allocated automatically.
15938+.TP
15939+.B \fBmp.get_osd_size()\fP
15940+Returns a tuple of \fBosd_width, osd_height, osd_par\fP\&. The first two give
15941+the size of the OSD in pixels (for video ouputs like \fB\-\-vo=xv\fP, this may
15942+be "scaled" pixels). The third is the display pixel aspect ratio.
15943+.sp
15944+May return invalid/nonsense values if OSD is not initialized yet.
15945+.UNINDENT
15946+.SS mp.msg functions
15947+.sp
15948+This module allows outputting messages to the terminal, and can be loaded
15949+with \fBrequire \(aqmp.msg\(aq\fP\&.
15950+.INDENT 0.0
15951+.TP
15952+.B \fBmsg.log(level, ...)\fP
15953+The level parameter is the message priority. It\(aqs a string and one of
15954+\fBfatal\fP, \fBerror\fP, \fBwarn\fP, \fBinfo\fP, \fBv\fP, \fBdebug\fP, \fBtrace\fP\&. The
15955+user\(aqs settings will determine which of these messages will be
15956+visible. Normally, all messages are visible, except \fBv\fP, \fBdebug\fP and
15957+\fBtrace\fP\&.
15958+.sp
15959+The parameters after that are all converted to strings. Spaces are inserted
15960+to separate multiple parameters.
15961+.sp
15962+You don\(aqt need to add newlines.
15963+.TP
15964+.B \fBmsg.fatal(...)\fP, \fBmsg.error(...)\fP, \fBmsg.warn(...)\fP, \fBmsg.info(...)\fP, \fBmsg.verbose(...)\fP, \fBmsg.debug(...)\fP, \fBmsg.trace(...)\fP
15965+All of these are shortcuts and equivalent to the corresponding
15966+\fBmsg.log(level, ...)\fP call.
15967+.UNINDENT
15968+.SS mp.options functions
15969+.sp
15970+mpv comes with a built\-in module to manage options from config\-files and the
15971+command\-line. All you have to do is to supply a table with default options to
15972+the read_options function. The function will overwrite the default values
15973+with values found in the config\-file and the command\-line (in that order).
15974+.INDENT 0.0
15975+.TP
15976+.B \fBoptions.read_options(table [, identifier [, on_update]])\fP
15977+A \fBtable\fP with key\-value pairs. The type of the default values is
15978+important for converting the values read from the config file or
15979+command\-line back. Do not use \fBnil\fP as a default value!
15980+.sp
15981+The \fBidentifier\fP is used to identify the config\-file and the command\-line
15982+options. These needs to unique to avoid collisions with other scripts.
15983+Defaults to \fBmp.get_script_name()\fP if the parameter is \fBnil\fP or missing.
15984+.sp
15985+The \fBon_update\fP parameter enables run\-time updates of all matching option
15986+values via the \fBscript\-opts\fP option/property. If any of the matching
15987+options changes, the values in the \fBtable\fP (which was originally passed to
15988+the function) are changed, and \fBon_update(list)\fP is called. \fBlist\fP is
15989+a table where each updated option has a \fBlist[option_name] = true\fP entry.
15990+There is no initial \fBon_update()\fP call. This never re\-reads the config file.
15991+\fBscript\-opts\fP is always applied on the original config file, ignoring
15992+previous \fBscript\-opts\fP values (for example, if an option is removed from
15993+\fBscript\-opts\fP at runtime, the option will have the value in the config
15994+file). \fBtable\fP entries are only written for option values whose values
15995+effectively change (this is important if the script changes \fBtable\fP
15996+entries independently).
15997+.UNINDENT
15998+.sp
15999+Example implementation:
16000+.INDENT 0.0
16001+.INDENT 3.5
16002+.sp
16003+.nf
16004+.ft C
16005+require \(aqmp.options\(aq
16006+local options = {
16007+    optionA = "defaultvalueA",
16008+    optionB = \-0.5,
16009+    optionC = true,
16010+}
16011+read_options(options, "myscript")
16012+print(options.optionA)
16013+.ft P
16014+.fi
16015+.UNINDENT
16016+.UNINDENT
16017+.sp
16018+The config file will be stored in \fBscript\-opts/identifier.conf\fP in mpv\(aqs user
16019+folder. Comment lines can be started with # and stray spaces are not removed.
16020+Boolean values will be represented with yes/no.
16021+.sp
16022+Example config:
16023+.INDENT 0.0
16024+.INDENT 3.5
16025+.sp
16026+.nf
16027+.ft C
16028+# comment
16029+optionA=Hello World
16030+optionB=9999
16031+optionC=no
16032+.ft P
16033+.fi
16034+.UNINDENT
16035+.UNINDENT
16036+.sp
16037+Command\-line options are read from the \fB\-\-script\-opts\fP parameter. To avoid
16038+collisions, all keys have to be prefixed with \fBidentifier\-\fP\&.
16039+.sp
16040+Example command\-line:
16041+.INDENT 0.0
16042+.INDENT 3.5
16043+.sp
16044+.nf
16045+.ft C
16046+\-\-script\-opts=myscript\-optionA=TEST,myscript\-optionB=0,myscript\-optionC=yes
16047+.ft P
16048+.fi
16049+.UNINDENT
16050+.UNINDENT
16051+.SS mp.utils functions
16052+.sp
16053+This built\-in module provides generic helper functions for Lua, and have
16054+strictly speaking nothing to do with mpv or video/audio playback. They are
16055+provided for convenience. Most compensate for Lua\(aqs scarce standard library.
16056+.sp
16057+Be warned that any of these functions might disappear any time. They are not
16058+strictly part of the guaranteed API.
16059+.INDENT 0.0
16060+.TP
16061+.B \fButils.getcwd()\fP
16062+Returns the directory that mpv was launched from. On error, \fBnil, error\fP
16063+is returned.
16064+.TP
16065+.B \fButils.readdir(path [, filter])\fP
16066+Enumerate all entries at the given path on the filesystem, and return them
16067+as array. Each entry is a directory entry (without the path).
16068+The list is unsorted (in whatever order the operating system returns it).
16069+.sp
16070+If the \fBfilter\fP argument is given, it must be one of the following
16071+strings:
16072+.INDENT 7.0
16073+.INDENT 3.5
16074+.INDENT 0.0
16075+.TP
16076+.B \fBfiles\fP
16077+List regular files only. This excludes directories, special files
16078+(like UNIX device files or FIFOs), and dead symlinks. It includes
16079+UNIX symlinks to regular files.
16080+.TP
16081+.B \fBdirs\fP
16082+List directories only, or symlinks to directories. \fB\&.\fP and \fB\&..\fP
16083+are not included.
16084+.TP
16085+.B \fBnormal\fP
16086+Include the results of both \fBfiles\fP and \fBdirs\fP\&. (This is the
16087+default.)
16088+.TP
16089+.B \fBall\fP
16090+List all entries, even device files, dead symlinks, FIFOs, and the
16091+\fB\&.\fP and \fB\&..\fP entries.
16092+.UNINDENT
16093+.UNINDENT
16094+.UNINDENT
16095+.sp
16096+On error, \fBnil, error\fP is returned.
16097+.TP
16098+.B \fButils.file_info(path)\fP
16099+Stats the given path for information and returns a table with the
16100+following entries:
16101+.INDENT 7.0
16102+.INDENT 3.5
16103+.INDENT 0.0
16104+.TP
16105+.B \fBmode\fP
16106+protection bits (on Windows, always 755 (octal) for directories
16107+and 644 (octal) for files)
16108+.TP
16109+.B \fBsize\fP
16110+size in bytes
16111+.TP
16112+.B \fBatime\fP
16113+time of last access
16114+.TP
16115+.B \fBmtime\fP
16116+time of last modification
16117+.TP
16118+.B \fBctime\fP
16119+time of last metadata change (Linux) / time of creation (Windows)
16120+.TP
16121+.B \fBis_file\fP
16122+Whether \fBpath\fP is a regular file (boolean)
16123+.TP
16124+.B \fBis_dir\fP
16125+Whether \fBpath\fP is a directory (boolean)
16126+.UNINDENT
16127+.UNINDENT
16128+.UNINDENT
16129+.sp
16130+\fBmode\fP and \fBsize\fP are integers.
16131+Timestamps (\fBatime\fP, \fBmtime\fP and \fBctime\fP) are integer seconds since
16132+the Unix epoch (Unix time).
16133+The booleans \fBis_file\fP and \fBis_dir\fP are provided as a convenience;
16134+they can be and are derived from \fBmode\fP\&.
16135+.sp
16136+On error (eg. path does not exist), \fBnil, error\fP is returned.
16137+.TP
16138+.B \fButils.split_path(path)\fP
16139+Split a path into directory component and filename component, and return
16140+them. The first return value is always the directory. The second return
16141+value is the trailing part of the path, the directory entry.
16142+.TP
16143+.B \fButils.join_path(p1, p2)\fP
16144+Return the concatenation of the 2 paths. Tries to be clever. For example,
16145+if \fB\(gap2\fP is an absolute path, p2 is returned without change.
16146+.TP
16147+.B \fButils.subprocess(t)\fP
16148+Runs an external process and waits until it exits. Returns process status
16149+and the captured output. This is a legacy wrapper around calling the
16150+\fBsubprocess\fP command with \fBmp.command_native\fP\&. It does the following
16151+things:
16152+.INDENT 7.0
16153+.IP \(bu 2
16154+copy the table \fBt\fP
16155+.IP \(bu 2
16156+rename \fBcancellable\fP field to \fBplayback_only\fP
16157+.IP \(bu 2
16158+rename \fBmax_size\fP to \fBcapture_size\fP
16159+.IP \(bu 2
16160+set \fBcapture_stdout\fP field to \fBtrue\fP if unset
16161+.IP \(bu 2
16162+set \fBname\fP field to \fBsubprocess\fP
16163+.IP \(bu 2
16164+call \fBmp.command_native(copied_t)\fP
16165+.IP \(bu 2
16166+if the command failed, create a dummy result table
16167+.IP \(bu 2
16168+copy \fBerror_string\fP to \fBerror\fP field if the string is non\-empty
16169+.IP \(bu 2
16170+return the result table
16171+.UNINDENT
16172+.sp
16173+It is recommended to use \fBmp.command_native\fP or \fBmp.command_native_async\fP
16174+directly, instead of calling this legacy wrapper. It is for compatibility
16175+only.
16176+.sp
16177+See the \fBsubprocess\fP documentation for semantics and further parameters.
16178+.TP
16179+.B \fButils.subprocess_detached(t)\fP
16180+Runs an external process and detaches it from mpv\(aqs control.
16181+.sp
16182+The parameter \fBt\fP is a table. The function reads the following entries:
16183+.INDENT 7.0
16184+.INDENT 3.5
16185+.INDENT 0.0
16186+.TP
16187+.B \fBargs\fP
16188+Array of strings of the same semantics as the \fBargs\fP used in the
16189+\fBsubprocess\fP function.
16190+.UNINDENT
16191+.UNINDENT
16192+.UNINDENT
16193+.sp
16194+The function returns \fBnil\fP\&.
16195+.sp
16196+This is a legacy wrapper around calling the \fBrun\fP command with
16197+\fBmp.commandv\fP and other functions.
16198+.TP
16199+.B \fButils.getpid()\fP
16200+Returns the process ID of the running mpv process. This can be used to identify
16201+the calling mpv when launching (detached) subprocesses.
16202+.TP
16203+.B \fButils.parse_json(str [, trail])\fP
16204+Parses the given string argument as JSON, and returns it as a Lua table. On
16205+error, returns \fBnil, error\fP\&. (Currently, \fBerror\fP is just a string
16206+reading \fBerror\fP, because there is no fine\-grained error reporting of any
16207+kind.)
16208+.sp
16209+The returned value uses similar conventions as \fBmp.get_property_native()\fP
16210+to distinguish empty objects and arrays.
16211+.sp
16212+If the \fBtrail\fP parameter is \fBtrue\fP (or any value equal to \fBtrue\fP),
16213+then trailing non\-whitespace text is tolerated by the function, and the
16214+trailing text is returned as 3rd return value. (The 3rd return value is
16215+always there, but with \fBtrail\fP set, no error is raised.)
16216+.TP
16217+.B \fButils.format_json(v)\fP
16218+Format the given Lua table (or value) as a JSON string and return it. On
16219+error, returns \fBnil, error\fP\&. (Errors usually only happen on value types
16220+incompatible with JSON.)
16221+.sp
16222+The argument value uses similar conventions as \fBmp.set_property_native()\fP
16223+to distinguish empty objects and arrays.
16224+.TP
16225+.B \fButils.to_string(v)\fP
16226+Turn the given value into a string. Formats tables and their contents. This
16227+doesn\(aqt do anything special; it is only needed because Lua is terrible.
16228+.UNINDENT
16229+.SS Events
16230+.sp
16231+Events are notifications from player core to scripts. You can register an
16232+event handler with \fBmp.register_event\fP\&.
16233+.sp
16234+Note that all scripts (and other parts of the player) receive events equally,
16235+and there\(aqs no such thing as blocking other scripts from receiving events.
16236+.sp
16237+Example:
16238+.INDENT 0.0
16239+.INDENT 3.5
16240+.sp
16241+.nf
16242+.ft C
16243+function my_fn(event)
16244+    print("start of playback!")
16245+end
16246+
16247+mp.register_event("file\-loaded", my_fn)
16248+.ft P
16249+.fi
16250+.UNINDENT
16251+.UNINDENT
16252+.SS List of events
16253+.INDENT 0.0
16254+.TP
16255+.B \fBstart\-file\fP
16256+Happens right before a new file is loaded. When you receive this, the
16257+player is loading the file (or possibly already done with it).
16258+.TP
16259+.B \fBend\-file\fP
16260+Happens after a file was unloaded. Typically, the player will load the
16261+next file right away, or quit if this was the last file.
16262+.sp
16263+The event has the \fBreason\fP field, which takes one of these values:
16264+.INDENT 7.0
16265+.TP
16266+.B \fBeof\fP
16267+The file has ended. This can (but doesn\(aqt have to) include
16268+incomplete files or broken network connections under
16269+circumstances.
16270+.TP
16271+.B \fBstop\fP
16272+Playback was ended by a command.
16273+.TP
16274+.B \fBquit\fP
16275+Playback was ended by sending the quit command.
16276+.TP
16277+.B \fBerror\fP
16278+An error happened. In this case, an \fBerror\fP field is present with
16279+the error string.
16280+.TP
16281+.B \fBredirect\fP
16282+Happens with playlists and similar. Details see
16283+\fBMPV_END_FILE_REASON_REDIRECT\fP in the C API.
16284+.TP
16285+.B \fBunknown\fP
16286+Unknown. Normally doesn\(aqt happen, unless the Lua API is out of sync
16287+with the C API. (Likewise, it could happen that your script gets
16288+reason strings that did not exist yet at the time your script was
16289+written.)
16290+.UNINDENT
16291+.TP
16292+.B \fBfile\-loaded\fP
16293+Happens after a file was loaded and begins playback.
16294+.TP
16295+.B \fBseek\fP
16296+Happens on seeking. (This might include cases when the player seeks
16297+internally, even without user interaction. This includes e.g. segment
16298+changes when playing ordered chapters Matroska files.)
16299+.TP
16300+.B \fBplayback\-restart\fP
16301+Start of playback after seek or after file was loaded.
16302+.TP
16303+.B \fBidle\fP
16304+Idle mode is entered. This happens when playback ended, and the player was
16305+started with \fB\-\-idle\fP or \fB\-\-force\-window\fP\&. This mode is implicitly ended
16306+when the \fBstart\-file\fP or \fBshutdown\fP events happen.
16307+.TP
16308+.B \fBtick\fP
16309+Called after a video frame was displayed. This is a hack, and you should
16310+avoid using it. Use timers instead and maybe watch pausing/unpausing events
16311+to avoid wasting CPU when the player is paused.
16312+.TP
16313+.B \fBshutdown\fP
16314+Sent when the player quits, and the script should terminate. Normally
16315+handled automatically. See \fI\%Details on the script initialization and lifecycle\fP\&.
16316+.TP
16317+.B \fBlog\-message\fP
16318+Receives messages enabled with \fBmp.enable_messages\fP\&. The message data
16319+is contained in the table passed as first parameter to the event handler.
16320+The table contains, in addition to the default event fields, the following
16321+fields:
16322+.INDENT 7.0
16323+.TP
16324+.B \fBprefix\fP
16325+The module prefix, identifies the sender of the message. This is what
16326+the terminal player puts in front of the message text when using the
16327+\fB\-\-v\fP option, and is also what is used for \fB\-\-msg\-level\fP\&.
16328+.TP
16329+.B \fBlevel\fP
16330+The log level as string. See \fBmsg.log\fP for possible log level names.
16331+Note that later versions of mpv might add new levels or remove
16332+(undocumented) existing ones.
16333+.TP
16334+.B \fBtext\fP
16335+The log message. The text will end with a newline character. Sometimes
16336+it can contain multiple lines.
16337+.UNINDENT
16338+.sp
16339+Keep in mind that these messages are meant to be hints for humans. You
16340+should not parse them, and prefix/level/text of messages might change
16341+any time.
16342+.TP
16343+.B \fBget\-property\-reply\fP
16344+Undocumented (not useful for Lua scripts).
16345+.TP
16346+.B \fBset\-property\-reply\fP
16347+Undocumented (not useful for Lua scripts).
16348+.TP
16349+.B \fBcommand\-reply\fP
16350+Undocumented (not useful for Lua scripts).
16351+.TP
16352+.B \fBclient\-message\fP
16353+Undocumented (used internally).
16354+.TP
16355+.B \fBvideo\-reconfig\fP
16356+Happens on video output or filter reconfig.
16357+.TP
16358+.B \fBaudio\-reconfig\fP
16359+Happens on audio output or filter reconfig.
16360+.UNINDENT
16361+.sp
16362+The following events also happen, but are deprecated: \fBtracks\-changed\fP,
16363+\fBtrack\-switched\fP, \fBpause\fP, \fBunpause\fP, \fBmetadata\-update\fP,
16364+\fBchapter\-change\fP\&. Use \fBmp.observe_property()\fP instead.
16365+.SS Extras
16366+.sp
16367+This documents experimental features, or features that are "too special" to
16368+guarantee a stable interface.
16369+.INDENT 0.0
16370+.TP
16371+.B \fBmp.add_hook(type, priority, fn)\fP
16372+Add a hook callback for \fBtype\fP (a string identifying a certain kind of
16373+hook). These hooks allow the player to call script functions and wait for
16374+their result (normally, the Lua scripting interface is asynchronous from
16375+the point of view of the player core). \fBpriority\fP is an arbitrary integer
16376+that allows ordering among hooks of the same kind. Using the value 50 is
16377+recommended as neutral default value. \fBfn\fP is the function that will be
16378+called during execution of the hook.
16379+.sp
16380+See \fI\%Hooks\fP for currently existing hooks and what they do \- only the hook
16381+list is interesting; handling hook execution is done by the Lua script
16382+function automatically.
16383+.UNINDENT
16384+.SH JAVASCRIPT
16385+.sp
16386+JavaScript support in mpv is near identical to its Lua support. Use this section
16387+as reference on differences and availability of APIs, but otherwise you should
16388+refer to the Lua documentation for API details and general scripting in mpv.
16389+.SS Example
16390+.sp
16391+JavaScript code which leaves fullscreen mode when the player is paused:
16392+.INDENT 0.0
16393+.INDENT 3.5
16394+.sp
16395+.nf
16396+.ft C
16397+function on_pause_change(name, value) {
16398+    if (value == true)
16399+        mp.set_property("fullscreen", "no");
16400+}
16401+mp.observe_property("pause", "bool", on_pause_change);
16402+.ft P
16403+.fi
16404+.UNINDENT
16405+.UNINDENT
16406+.SS Similarities with Lua
16407+.sp
16408+mpv tries to load a script file as JavaScript if it has a \fB\&.js\fP extension, but
16409+otherwise, the documented Lua options, script directories, loading, etc apply to
16410+JavaScript files too.
16411+.sp
16412+Script initialization and lifecycle is the same as with Lua, and most of the Lua
16413+functions at the modules \fBmp\fP, \fBmp.utils\fP, \fBmp.msg\fP and \fBmp.options\fP are
16414+available to JavaScript with identical APIs \- including running commands,
16415+getting/setting properties, registering events/key\-bindings/hooks, etc.
16416+.SS Differences from Lua
16417+.sp
16418+No need to load modules. \fBmp\fP, \fBmp.utils\fP,  \fBmp.msg\fP and \fBmp.options\fP
16419+are preloaded, and you can use e.g. \fBvar cwd = mp.utils.getcwd();\fP without
16420+prior setup.
16421+.sp
16422+Errors are slightly different. Where the Lua APIs return \fBnil\fP for error,
16423+the JavaScript ones return \fBundefined\fP\&. Where Lua returns \fBsomething, error\fP
16424+JavaScript returns only \fBsomething\fP \- and makes \fBerror\fP available via
16425+\fBmp.last_error()\fP\&. Note that only some of the functions have this additional
16426+\fBerror\fP value \- typically the same ones which have it in Lua.
16427+.sp
16428+Standard APIs are preferred. For instance \fBsetTimeout\fP and \fBJSON.stringify\fP
16429+are available, but \fBmp.add_timeout\fP and \fBmp.utils.format_json\fP are not.
16430+.sp
16431+No standard library. This means that interaction with anything outside of mpv is
16432+limited to the available APIs, typically via \fBmp.utils\fP\&. However, some file
16433+functions were added, and CommonJS \fBrequire\fP is available too \- where the
16434+loaded modules have the same privileges as normal scripts.
16435+.SS Language features \- ECMAScript 5
16436+.sp
16437+The scripting backend which mpv currently uses is MuJS \- a compatible minimal
16438+ES5 interpreter. As such, \fBString.substring\fP is implemented for instance,
16439+while the common but non\-standard \fBString.substr\fP is not. Please consult the
16440+MuJS pages on language features and platform support \- \fI\%http://mujs.com\fP .
16441+.SS Unsupported Lua APIs and their JS alternatives
16442+.sp
16443+\fBmp.add_timeout(seconds, fn)\fP  JS: \fBid = setTimeout(fn, ms)\fP
16444+.sp
16445+\fBmp.add_periodic_timer(seconds, fn)\fP  JS: \fBid = setInterval(fn, ms)\fP
16446+.sp
16447+\fButils.parse_json(str [, trail])\fP  JS: \fBJSON.parse(str)\fP
16448+.sp
16449+\fButils.format_json(v)\fP  JS: \fBJSON.stringify(v)\fP
16450+.sp
16451+\fButils.to_string(v)\fP  see \fBdump\fP below.
16452+.sp
16453+\fBmp.suspend()\fP JS: none (deprecated).
16454+.sp
16455+\fBmp.resume()\fP JS: none (deprecated).
16456+.sp
16457+\fBmp.resume_all()\fP JS: none (deprecated).
16458+.sp
16459+\fBmp.get_next_timeout()\fP see event loop below.
16460+.sp
16461+\fBmp.dispatch_events([allow_wait])\fP see event loop below.
16462+.SS Scripting APIs \- identical to Lua
16463+.sp
16464+(LE) \- Last\-Error, indicates that \fBmp.last_error()\fP can be used after the
16465+call to test for success (empty string) or failure (non empty reason string).
16466+Where the Lua APIs use \fBnil\fP to indicate error, JS APIs use \fBundefined\fP\&.
16467+.sp
16468+\fBmp.command(string)\fP (LE)
16469+.sp
16470+\fBmp.commandv(arg1, arg2, ...)\fP (LE)
16471+.sp
16472+\fBmp.command_native(table [,def])\fP (LE)
16473+.sp
16474+\fBid = mp.command_native_async(table [,fn])\fP (LE) Notes: \fBid\fP is true\-thy on
16475+success, \fBfn\fP is called always a\-sync, \fBerror\fP is empty string on success.
16476+.sp
16477+\fBmp.abort_async_command(id)\fP
16478+.sp
16479+\fBmp.get_property(name [,def])\fP (LE)
16480+.sp
16481+\fBmp.get_property_osd(name [,def])\fP (LE)
16482+.sp
16483+\fBmp.get_property_bool(name [,def])\fP (LE)
16484+.sp
16485+\fBmp.get_property_number(name [,def])\fP (LE)
16486+.sp
16487+\fBmp.get_property_native(name [,def])\fP (LE)
16488+.sp
16489+\fBmp.set_property(name, value)\fP (LE)
16490+.sp
16491+\fBmp.set_property_bool(name, value)\fP (LE)
16492+.sp
16493+\fBmp.set_property_number(name, value)\fP (LE)
16494+.sp
16495+\fBmp.set_property_native(name, value)\fP (LE)
16496+.sp
16497+\fBmp.get_time()\fP
16498+.sp
16499+\fBmp.add_key_binding(key, name|fn [,fn [,flags]])\fP
16500+.sp
16501+\fBmp.add_forced_key_binding(...)\fP
16502+.sp
16503+\fBmp.remove_key_binding(name)\fP
16504+.sp
16505+\fBmp.register_event(name, fn)\fP
16506+.sp
16507+\fBmp.unregister_event(fn)\fP
16508+.sp
16509+\fBmp.observe_property(name, type, fn)\fP
16510+.sp
16511+\fBmp.unobserve_property(fn)\fP
16512+.sp
16513+\fBmp.get_opt(key)\fP
16514+.sp
16515+\fBmp.get_script_name()\fP
16516+.sp
16517+\fBmp.osd_message(text [,duration])\fP
16518+.sp
16519+\fBmp.get_wakeup_pipe()\fP
16520+.sp
16521+\fBmp.register_idle(fn)\fP
16522+.sp
16523+\fBmp.unregister_idle(fn)\fP
16524+.sp
16525+\fBmp.enable_messages(level)\fP
16526+.sp
16527+\fBmp.register_script_message(name, fn)\fP
16528+.sp
16529+\fBmp.unregister_script_message(name)\fP
16530+.sp
16531+\fBmp.create_osd_overlay(format)\fP
16532+.sp
16533+\fBmp.get_osd_size()\fP  (returned object has properties: width, height, aspect)
16534+.sp
16535+\fBmp.msg.log(level, ...)\fP
16536+.sp
16537+\fBmp.msg.fatal(...)\fP
16538+.sp
16539+\fBmp.msg.error(...)\fP
16540+.sp
16541+\fBmp.msg.warn(...)\fP
16542+.sp
16543+\fBmp.msg.info(...)\fP
16544+.sp
16545+\fBmp.msg.verbose(...)\fP
16546+.sp
16547+\fBmp.msg.debug(...)\fP
16548+.sp
16549+\fBmp.msg.trace(...)\fP
16550+.sp
16551+\fBmp.utils.getcwd()\fP (LE)
16552+.sp
16553+\fBmp.utils.readdir(path [, filter])\fP (LE)
16554+.sp
16555+\fBmp.utils.file_info(path)\fP (LE)
16556+.sp
16557+\fBmp.utils.split_path(path)\fP
16558+.sp
16559+\fBmp.utils.join_path(p1, p2)\fP
16560+.sp
16561+\fBmp.utils.subprocess(t)\fP
16562+.sp
16563+\fBmp.utils.subprocess_detached(t)\fP
16564+.sp
16565+\fBmp.utils.getpid()\fP (LE)
16566+.sp
16567+\fBmp.add_hook(type, priority, fn)\fP
16568+.sp
16569+\fBmp.options.read_options(obj [, identifier [, on_update]])\fP (types:
16570+string/boolean/number)
16571+.SS Additional utilities
16572+.INDENT 0.0
16573+.TP
16574+.B \fBmp.last_error()\fP
16575+If used after an API call which updates last error, returns an empty string
16576+if the API call succeeded, or a non\-empty error reason string otherwise.
16577+.TP
16578+.B \fBError.stack\fP (string)
16579+When using \fBtry { ... } catch(e) { ... }\fP, then \fBe.stack\fP is the stack
16580+trace of the error \- if it was created using the \fBError(...)\fP constructor.
16581+.TP
16582+.B \fBprint\fP (global)
16583+A convenient alias to \fBmp.msg.info\fP\&.
16584+.TP
16585+.B \fBdump\fP (global)
16586+Like \fBprint\fP but also expands objects and arrays recursively.
16587+.TP
16588+.B \fBmp.utils.getenv(name)\fP
16589+Returns the value of the host environment variable \fBname\fP, or
16590+\fBundefined\fP if the variable is not defined.
16591+.TP
16592+.B \fBmp.utils.get_user_path(path)\fP
16593+Expands (mpv) meta paths like \fB~/x\fP, \fB~~/y\fP, \fB~~desktop/z\fP etc.
16594+\fBread_file\fP, \fBwrite_file\fP and \fBrequire\fP already use this internaly.
16595+.TP
16596+.B \fBmp.utils.read_file(fname [,max])\fP
16597+Returns the content of file \fBfname\fP as string. If \fBmax\fP is provided and
16598+not negative, limit the read to \fBmax\fP bytes.
16599+.TP
16600+.B \fBmp.utils.write_file(fname, str)\fP
16601+(Over)write file \fBfname\fP with text content \fBstr\fP\&. \fBfname\fP must be
16602+prefixed with \fBfile://\fP as simple protection against accidental arguments
16603+switch, e.g. \fBmp.utils.write_file("file://~/abc.txt", "hello world")\fP\&.
16604+.UNINDENT
16605+.sp
16606+Note: \fBread_file\fP and \fBwrite_file\fP throw on errors, allow text content only.
16607+.INDENT 0.0
16608+.TP
16609+.B \fBmp.get_time_ms()\fP
16610+Same as \fBmp.get_time()\fP but in ms instead of seconds.
16611+.TP
16612+.B \fBmp.get_script_file()\fP
16613+Returns the file name of the current script.
16614+.TP
16615+.B \fBexit()\fP (global)
16616+Make the script exit at the end of the current event loop iteration.
16617+Note: please remove added key bindings before calling \fBexit()\fP\&.
16618+.TP
16619+.B \fBmp.utils.compile_js(fname, content_str)\fP
16620+Compiles the JS code \fBcontent_str\fP as file name \fBfname\fP (without loading
16621+anything from the filesystem), and returns it as a function. Very similar
16622+to a \fBFunction\fP constructor, but shows at stack traces as \fBfname\fP\&.
16623+.TP
16624+.B \fBmp.module_paths\fP
16625+Global modules search paths array for the \fBrequire\fP function (see below).
16626+.UNINDENT
16627+.SS Timers (global)
16628+.sp
16629+The standard HTML/node.js timers are available:
16630+.sp
16631+\fBid = setTimeout(fn [,duration [,arg1 [,arg2...]]])\fP
16632+.sp
16633+\fBid = setTimeout(code_string [,duration])\fP
16634+.sp
16635+\fBclearTimeout(id)\fP
16636+.sp
16637+\fBid = setInterval(fn [,duration [,arg1 [,arg2...]]])\fP
16638+.sp
16639+\fBid = setInterval(code_string [,duration])\fP
16640+.sp
16641+\fBclearInterval(id)\fP
16642+.sp
16643+\fBsetTimeout\fP and \fBsetInterval\fP return id, and later call \fBfn\fP (or execute
16644+\fBcode_string\fP) after \fBduration\fP ms. Interval also repeat every \fBduration\fP\&.
16645+.sp
16646+\fBduration\fP has a minimum and default value of 0, \fBcode_string\fP is
16647+a plain string which is evaluated as JS code, and \fB[,arg1 [,arg2..]]\fP are used
16648+as arguments (if provided) when calling back \fBfn\fP\&.
16649+.sp
16650+The \fBclear...(id)\fP functions cancel timer \fBid\fP, and are irreversible.
16651+.sp
16652+Note: timers always call back asynchronously, e.g. \fBsetTimeout(fn)\fP will never
16653+call \fBfn\fP before returning. \fBfn\fP will be called either at the end of this
16654+event loop iteration or at a later event loop iteration. This is true also for
16655+intervals \- which also never call back twice at the same event loop iteration.
16656+.sp
16657+Additionally, timers are processed after the event queue is empty, so it\(aqs valid
16658+to use \fBsetTimeout(fn)\fP as a one\-time idle observer.
16659+.SS CommonJS modules and \fBrequire(id)\fP
16660+.sp
16661+CommonJS Modules are a standard system where scripts can export common functions
16662+for use by other scripts. Specifically, a module is a script which adds
16663+properties (functions, etc) to its pre\-existing \fBexports\fP object, which
16664+another script can access with \fBrequire(module\-id)\fP\&. This runs the module and
16665+returns its \fBexports\fP object. Further calls to \fBrequire\fP for the same module
16666+will return its cached \fBexports\fP object without running the module again.
16667+.sp
16668+Modules and \fBrequire\fP are supported, standard compliant, and generally similar
16669+to node.js. However, most node.js modules won\(aqt run due to missing modules such
16670+as \fBfs\fP, \fBprocess\fP, etc, but some node.js modules with minimal dependencies
16671+do work. In general, this is for mpv modules and not a node.js replacement.
16672+.sp
16673+A \fB\&.js\fP file extension is always added to \fBid\fP, e.g. \fBrequire("./foo")\fP
16674+will load the file \fB\&./foo.js\fP and return its \fBexports\fP object.
16675+.sp
16676+An id is relative (to the script which \fBrequire\fP\(aqd it) if it starts with
16677+\fB\&./\fP or \fB\&../\fP\&. Otherwise, it\(aqs considered a "top\-level id" (CommonJS term).
16678+.sp
16679+Top level id is evaluated as absolute filesystem path if possible, e.g. \fB/x/y\fP
16680+or \fB~/x\fP\&. Otherwise, it\(aqs considered a global module id and searched at
16681+\fBscripts/modules.js/\fP in mpv config dirs \- in normal config search order. E.g.
16682+\fBrequire("x")\fP is searched as file \fBx.js\fP at those dirs, and id \fBfoo/x\fP is
16683+searched as file \fBx.js\fP inside dir \fBfoo\fP at those dirs.
16684+.sp
16685+Search paths for global module id\(aqs are at the array \fBmp.module_paths\fP, which
16686+is searched in order. Initially it contains one item: \fB~~/scripts/modules.js\fP
16687+such that it behaves as described above. Modifying it will affect future
16688+\fBrequire\fP calls with global module id\(aqs which are not already loaded/cached.
16689+.sp
16690+No \fBglobal\fP variable, but a module\(aqs \fBthis\fP at its top lexical scope is the
16691+global object \- also in strict mode. If you have a module which needs \fBglobal\fP
16692+as the global object, you could do \fBthis.global = this;\fP before \fBrequire\fP\&.
16693+.sp
16694+Functions and variables declared at a module don\(aqt pollute the global object.
16695+.SS The event loop
16696+.sp
16697+The event loop poll/dispatch mpv events as long as the queue is not empty, then
16698+processes the timers, then waits for the next event, and repeats this forever.
16699+.sp
16700+You could put this code at your script to replace the built\-in event loop, and
16701+also print every event which mpv sends to your script:
16702+.INDENT 0.0
16703+.INDENT 3.5
16704+.sp
16705+.nf
16706+.ft C
16707+function mp_event_loop() {
16708+    var wait = 0;
16709+    do {
16710+        var e = mp.wait_event(wait);
16711+        dump(e);  // there could be a lot of prints...
16712+        if (e.event != "none") {
16713+            mp.dispatch_event(e);
16714+            wait = 0;
16715+        } else {
16716+            wait = mp.process_timers() / 1000;
16717+            if (wait != 0) {
16718+                mp.notify_idle_observers();
16719+                wait = mp.peek_timers_wait() / 1000;
16720+            }
16721+        }
16722+    } while (mp.keep_running);
16723+}
16724+.ft P
16725+.fi
16726+.UNINDENT
16727+.UNINDENT
16728+.sp
16729+\fBmp_event_loop\fP is a name which mpv tries to call after the script loads.
16730+The internal implementation is similar to this (without \fBdump\fP though..).
16731+.sp
16732+\fBe = mp.wait_event(wait)\fP returns when the next mpv event arrives, or after
16733+\fBwait\fP seconds if positive and no mpv events arrived. \fBwait\fP value of 0
16734+returns immediately (with \fBe.event == "none"\fP if the queue is empty).
16735+.sp
16736+\fBmp.dispatch_event(e)\fP calls back the handlers registered for \fBe.event\fP,
16737+if there are such (event handlers, property observers, script messages, etc).
16738+.sp
16739+\fBmp.process_timers()\fP calls back the already\-added, non\-canceled due timers,
16740+and returns the duration in ms till the next due timer (possibly 0), or \-1 if
16741+there are no pending timers. Must not be called recursively.
16742+.sp
16743+\fBmp.notify_idle_observers()\fP calls back the idle observers, which we do when
16744+we\(aqre about to sleep (wait != 0), but the observers may add timers or take
16745+non\-negligible duration to complete, so we re\-calculate \fBwait\fP afterwards.
16746+.sp
16747+\fBmp.peek_timers_wait()\fP returns the same values as \fBmp.process_timers()\fP
16748+but without doing anything. Invalid result if called from a timer callback.
16749+.sp
16750+Note: \fBexit()\fP is also registered for the \fBshutdown\fP event, and its
16751+implementation is a simple \fBmp.keep_running = false\fP\&.
16752+.SH JSON IPC
16753+.sp
16754+mpv can be controlled by external programs using the JSON\-based IPC protocol.
16755+It can be enabled by specifying the path to a unix socket or a named pipe using
16756+the option \fB\-\-input\-ipc\-server\fP\&. Clients can connect to this socket and send
16757+commands to the player or receive events from it.
16758+.sp
16759+\fBWARNING:\fP
16760+.INDENT 0.0
16761+.INDENT 3.5
16762+This is not intended to be a secure network protocol. It is explicitly
16763+insecure: there is no authentication, no encryption, and the commands
16764+themselves are insecure too. For example, the \fBrun\fP command is exposed,
16765+which can run arbitrary system commands. The use\-case is controlling the
16766+player locally. This is not different from the MPlayer slave protocol.
16767+.UNINDENT
16768+.UNINDENT
16769+.SS Socat example
16770+.sp
16771+You can use the \fBsocat\fP tool to send commands (and receive replies) from the
16772+shell. Assuming mpv was started with:
16773+.INDENT 0.0
16774+.INDENT 3.5
16775+.sp
16776+.nf
16777+.ft C
16778+mpv file.mkv \-\-input\-ipc\-server=/tmp/mpvsocket
16779+.ft P
16780+.fi
16781+.UNINDENT
16782+.UNINDENT
16783+.sp
16784+Then you can control it using socat:
16785+.INDENT 0.0
16786+.INDENT 3.5
16787+.sp
16788+.nf
16789+.ft C
16790+> echo \(aq{ "command": ["get_property", "playback\-time"] }\(aq | socat \- /tmp/mpvsocket
16791+{"data":190.482000,"error":"success"}
16792+.ft P
16793+.fi
16794+.UNINDENT
16795+.UNINDENT
16796+.sp
16797+In this case, socat copies data between stdin/stdout and the mpv socket
16798+connection.
16799+.sp
16800+See the \fB\-\-idle\fP option how to make mpv start without exiting immediately or
16801+playing a file.
16802+.sp
16803+It\(aqs also possible to send input.conf style text\-only commands:
16804+.INDENT 0.0
16805+.INDENT 3.5
16806+.sp
16807+.nf
16808+.ft C
16809+> echo \(aqshow\-text ${playback\-time}\(aq | socat \- /tmp/mpvsocket
16810+.ft P
16811+.fi
16812+.UNINDENT
16813+.UNINDENT
16814+.sp
16815+But you won\(aqt get a reply over the socket. (This particular command shows the
16816+playback time on the player\(aqs OSD.)
16817+.SS Command Prompt example
16818+.sp
16819+Unfortunately, it\(aqs not as easy to test the IPC protocol on Windows, since
16820+Windows ports of socat (in Cygwin and MSYS2) don\(aqt understand named pipes. In
16821+the absence of a simple tool to send and receive from bidirectional pipes, the
16822+\fBecho\fP command can be used to send commands, but not receive replies from the
16823+command prompt.
16824+.sp
16825+Assuming mpv was started with:
16826+.INDENT 0.0
16827+.INDENT 3.5
16828+.sp
16829+.nf
16830+.ft C
16831+mpv file.mkv \-\-input\-ipc\-server=\e\e.\epipe\empvsocket
16832+.ft P
16833+.fi
16834+.UNINDENT
16835+.UNINDENT
16836+.sp
16837+You can send commands from a command prompt:
16838+.INDENT 0.0
16839+.INDENT 3.5
16840+.sp
16841+.nf
16842+.ft C
16843+echo show\-text ${playback\-time} >\e\e.\epipe\empvsocket
16844+.ft P
16845+.fi
16846+.UNINDENT
16847+.UNINDENT
16848+.sp
16849+To be able to simultaneously read and write from the IPC pipe, like on Linux,
16850+it\(aqs necessary to write an external program that uses overlapped file I/O (or
16851+some wrapper like .NET\(aqs NamedPipeClientStream.)
16852+.SS Protocol
16853+.sp
16854+The protocol uses UTF\-8\-only JSON as defined by RFC\-8259. Unlike standard JSON,
16855+"u" escape sequences are not allowed to construct surrogate pairs. To avoid
16856+getting conflicts, encode all text characters including and above codepoint
16857+U+0020 as UTF\-8. mpv might output broken UTF\-8 in corner cases (see "UTF\-8"
16858+section below).
16859+.sp
16860+Clients can execute commands on the player by sending JSON messages of the
16861+following form:
16862+.INDENT 0.0
16863+.INDENT 3.5
16864+.sp
16865+.nf
16866+.ft C
16867+{ "command": ["command_name", "param1", "param2", ...] }
16868+.ft P
16869+.fi
16870+.UNINDENT
16871+.UNINDENT
16872+.sp
16873+where \fBcommand_name\fP is the name of the command to be executed, followed by a
16874+list of parameters. Parameters must be formatted as native JSON values
16875+(integers, strings, booleans, ...). Every message \fBmust\fP be terminated with
16876+\fB\en\fP\&. Additionally, \fB\en\fP must not appear anywhere inside the message. In
16877+practice this means that messages should be minified before being sent to mpv.
16878+.sp
16879+mpv will then send back a reply indicating whether the command was run
16880+correctly, and an additional field holding the command\-specific return data (it
16881+can also be null).
16882+.INDENT 0.0
16883+.INDENT 3.5
16884+.sp
16885+.nf
16886+.ft C
16887+{ "error": "success", "data": null }
16888+.ft P
16889+.fi
16890+.UNINDENT
16891+.UNINDENT
16892+.sp
16893+mpv will also send events to clients with JSON messages of the following form:
16894+.INDENT 0.0
16895+.INDENT 3.5
16896+.sp
16897+.nf
16898+.ft C
16899+{ "event": "event_name" }
16900+.ft P
16901+.fi
16902+.UNINDENT
16903+.UNINDENT
16904+.sp
16905+where \fBevent_name\fP is the name of the event. Additional event\-specific fields
16906+can also be present. See \fI\%List of events\fP for a list of all supported events.
16907+.sp
16908+Because events can occur at any time, it may be difficult at times to determine
16909+which response goes with which command. Commands may optionally include a
16910+\fBrequest_id\fP which, if provided in the command request, will be copied
16911+verbatim into the response. mpv does not intrepret the \fBrequest_id\fP in any
16912+way; it is solely for the use of the requester. The only requirement is that
16913+the \fBrequest_id\fP field must be an integer (a number without fractional parts
16914+in the range \fB\-2^63..2^63\-1\fP). Using other types is deprecated and will
16915+currently show a warning. In the future, this will raise an error.
16916+.sp
16917+For example, this request:
16918+.INDENT 0.0
16919+.INDENT 3.5
16920+.sp
16921+.nf
16922+.ft C
16923+{ "command": ["get_property", "time\-pos"], "request_id": 100 }
16924+.ft P
16925+.fi
16926+.UNINDENT
16927+.UNINDENT
16928+.sp
16929+Would generate this response:
16930+.INDENT 0.0
16931+.INDENT 3.5
16932+.sp
16933+.nf
16934+.ft C
16935+{ "error": "success", "data": 1.468135, "request_id": 100 }
16936+.ft P
16937+.fi
16938+.UNINDENT
16939+.UNINDENT
16940+.sp
16941+If you don\(aqt specify a \fBrequest_id\fP, command replies will set it to 0.
16942+.sp
16943+Commands may run asynchronously in the future, instead of blocking the  socket
16944+until a reply is sent.
16945+.sp
16946+All commands, replies, and events are separated from each other with a line
16947+break character (\fB\en\fP).
16948+.sp
16949+If the first character (after skipping whitespace) is not \fB{\fP, the command
16950+will be interpreted as non\-JSON text command, as they are used in input.conf
16951+(or \fBmpv_command_string()\fP in the client API). Additionally, lines starting
16952+with \fB#\fP and empty lines are ignored.
16953+.sp
16954+Currently, embedded 0 bytes terminate the current line, but you should not
16955+rely on this.
16956+.SS Commands
16957+.sp
16958+In addition to the commands described in \fI\%List of Input Commands\fP, a few
16959+extra commands can also be used as part of the protocol:
16960+.INDENT 0.0
16961+.TP
16962+.B \fBclient_name\fP
16963+Return the name of the client as string. This is the string \fBipc\-N\fP with
16964+N being an integer number.
16965+.TP
16966+.B \fBget_time_us\fP
16967+Return the current mpv internal time in microseconds as a number. This is
16968+basically the system time, with an arbitrary offset.
16969+.TP
16970+.B \fBget_property\fP
16971+Return the value of the given property. The value will be sent in the data
16972+field of the replay message.
16973+.sp
16974+Example:
16975+.INDENT 7.0
16976+.INDENT 3.5
16977+.sp
16978+.nf
16979+.ft C
16980+{ "command": ["get_property", "volume"] }
16981+{ "data": 50.0, "error": "success" }
16982+.ft P
16983+.fi
16984+.UNINDENT
16985+.UNINDENT
16986+.TP
16987+.B \fBget_property_string\fP
16988+Like \fBget_property\fP, but the resulting data will always be a string.
16989+.sp
16990+Example:
16991+.INDENT 7.0
16992+.INDENT 3.5
16993+.sp
16994+.nf
16995+.ft C
16996+{ "command": ["get_property_string", "volume"] }
16997+{ "data": "50.000000", "error": "success" }
16998+.ft P
16999+.fi
17000+.UNINDENT
17001+.UNINDENT
17002+.TP
17003+.B \fBset_property\fP
17004+Set the given property to the given value. See \fI\%Properties\fP for more
17005+information about properties.
17006+.sp
17007+Example:
17008+.INDENT 7.0
17009+.INDENT 3.5
17010+.sp
17011+.nf
17012+.ft C
17013+{ "command": ["set_property", "pause", true] }
17014+{ "error": "success" }
17015+.ft P
17016+.fi
17017+.UNINDENT
17018+.UNINDENT
17019+.TP
17020+.B \fBset_property_string\fP
17021+Alias for \fBset_property\fP\&. Both commands accept native values and strings.
17022+.TP
17023+.B \fBobserve_property\fP
17024+Watch a property for changes. If the given property is changed, then an
17025+event of type \fBproperty\-change\fP will be generated
17026+.sp
17027+Example:
17028+.INDENT 7.0
17029+.INDENT 3.5
17030+.sp
17031+.nf
17032+.ft C
17033+{ "command": ["observe_property", 1, "volume"] }
17034+{ "error": "success" }
17035+{ "event": "property\-change", "id": 1, "data": 52.0, "name": "volume" }
17036+.ft P
17037+.fi
17038+.UNINDENT
17039+.UNINDENT
17040+.sp
17041+\fBWARNING:\fP
17042+.INDENT 7.0
17043+.INDENT 3.5
17044+If the connection is closed, the IPC client is destroyed internally,
17045+and the observed properties are unregistered. This happens for example
17046+when sending commands to a socket with separate \fBsocat\fP invocations.
17047+This can make it seem like property observation does not work. You must
17048+keep the IPC connection open to make it work.
17049+.UNINDENT
17050+.UNINDENT
17051+.TP
17052+.B \fBobserve_property_string\fP
17053+Like \fBobserve_property\fP, but the resulting data will always be a string.
17054+.sp
17055+Example:
17056+.INDENT 7.0
17057+.INDENT 3.5
17058+.sp
17059+.nf
17060+.ft C
17061+{ "command": ["observe_property_string", 1, "volume"] }
17062+{ "error": "success" }
17063+{ "event": "property\-change", "id": 1, "data": "52.000000", "name": "volume" }
17064+.ft P
17065+.fi
17066+.UNINDENT
17067+.UNINDENT
17068+.TP
17069+.B \fBunobserve_property\fP
17070+Undo \fBobserve_property\fP or \fBobserve_property_string\fP\&. This requires the
17071+numeric id passed to the observed command as argument.
17072+.sp
17073+Example:
17074+.INDENT 7.0
17075+.INDENT 3.5
17076+.sp
17077+.nf
17078+.ft C
17079+{ "command": ["unobserve_property", 1] }
17080+{ "error": "success" }
17081+.ft P
17082+.fi
17083+.UNINDENT
17084+.UNINDENT
17085+.TP
17086+.B \fBrequest_log_messages\fP
17087+Enable output of mpv log messages. They will be received as events. The
17088+parameter to this command is the log\-level (see \fBmpv_request_log_messages\fP
17089+C API function).
17090+.sp
17091+Log message output is meant for humans only (mostly for debugging).
17092+Attempting to retrieve information by parsing these messages will just
17093+lead to breakages with future mpv releases. Instead, make a feature request,
17094+and ask for a proper event that returns the information you need.
17095+.TP
17096+.B \fBenable_event\fP, \fBdisable_event\fP
17097+Enables or disables the named event. Mirrors the \fBmpv_request_event\fP C
17098+API function. If the string \fBall\fP is used instead of an event name, all
17099+events are enabled or disabled.
17100+.sp
17101+By default, most events are enabled, and there is not much use for this
17102+command.
17103+.TP
17104+.B \fBget_version\fP
17105+Returns the client API version the C API of the remote mpv instance
17106+provides.
17107+.sp
17108+See also: \fBDOCS/client\-api\-changes.rst\fP\&.
17109+.UNINDENT
17110+.SS UTF\-8
17111+.sp
17112+Normally, all strings are in UTF\-8. Sometimes it can happen that strings are
17113+in some broken encoding (often happens with file tags and such, and filenames
17114+on many Unixes are not required to be in UTF\-8 either). This means that mpv
17115+sometimes sends invalid JSON. If that is a problem for the client application\(aqs
17116+parser, it should filter the raw data for invalid UTF\-8 sequences and perform
17117+the desired replacement, before feeding the data to its JSON parser.
17118+.sp
17119+mpv will not attempt to construct invalid UTF\-8 with broken "u" escape
17120+sequences. This includes surrogate pairs.
17121+.SS JSON extensions
17122+.sp
17123+The following non\-standard extensions are supported:
17124+.INDENT 0.0
17125+.INDENT 3.5
17126+.INDENT 0.0
17127+.IP \(bu 2
17128+a list or object item can have a trailing ","
17129+.IP \(bu 2
17130+object syntax accepts "=" in addition of ":"
17131+.IP \(bu 2
17132+object keys can be unquoted, if they start with a character in "A\-Za\-z_"
17133+and contain only characters in "A\-Za\-z0\-9_"
17134+.IP \(bu 2
17135+byte escapes with "xAB" are allowed (with AB being a 2 digit hex number)
17136+.UNINDENT
17137+.UNINDENT
17138+.UNINDENT
17139+.sp
17140+Example:
17141+.INDENT 0.0
17142+.INDENT 3.5
17143+.sp
17144+.nf
17145+.ft C
17146+{ objkey = "value\ex0A" }
17147+.ft P
17148+.fi
17149+.UNINDENT
17150+.UNINDENT
17151+.sp
17152+Is equivalent to:
17153+.INDENT 0.0
17154+.INDENT 3.5
17155+.sp
17156+.nf
17157+.ft C
17158+{ "objkey": "value\en" }
17159+.ft P
17160+.fi
17161+.UNINDENT
17162+.UNINDENT
17163+.SH CHANGELOG
17164+.sp
17165+There is no real changelog, but you can look at the following things:
17166+.INDENT 0.0
17167+.IP \(bu 2
17168+The release changelog, which should contain most user\-visible changes,
17169+including new features and bug fixes:
17170+.sp
17171+\fI\%https://github.com/mpv\-player/mpv/releases\fP
17172+.IP \(bu 2
17173+The git log, which is the "real" changelog
17174+.IP \(bu 2
17175+The files \fBclient\-api\-changes.rst\fP and \fBinterface\-changes.rst\fP in the
17176+\fBDOCS\fP sub directoryon the git repository, which document API and user
17177+interface changes (the latter usually documents breaking changes only, rather
17178+than additions).
17179+.IP \(bu 2
17180+The file \fBmplayer\-changes.rst\fP in the \fBDOCS\fP sub directory on the git
17181+repository, which used to be in place of this section. It documents some
17182+changes that happened since mplayer2 forked off MPlayer. (Not updated
17183+anymore.)
17184+.UNINDENT
17185+.SH EMBEDDING INTO OTHER PROGRAMS (LIBMPV)
17186+.sp
17187+mpv can be embedded into other programs as video/audio playback backend. The
17188+recommended way to do so is using libmpv. See \fBlibmpv/client.h\fP in the mpv
17189+source code repository. This provides a C API. Bindings for other languages
17190+might be available (see wiki).
17191+.sp
17192+Since libmpv merely allows access to underlying mechanisms that can control
17193+mpv, further documentation is spread over a few places:
17194+.INDENT 0.0
17195+.IP \(bu 2
17196+\fI\%https://github.com/mpv\-player/mpv/blob/master/libmpv/client.h\fP
17197+.IP \(bu 2
17198+\fI\%http://mpv.io/manual/master/#options\fP
17199+.IP \(bu 2
17200+\fI\%http://mpv.io/manual/master/#list\-of\-input\-commands\fP
17201+.IP \(bu 2
17202+\fI\%http://mpv.io/manual/master/#properties\fP
17203+.IP \(bu 2
17204+\fI\%https://github.com/mpv\-player/mpv\-examples/tree/master/libmpv\fP
17205+.UNINDENT
17206+.SH C PLUGINS
17207+.sp
17208+You can write C plugins for mpv. These use the libmpv API, although they do not
17209+use the libmpv library itself.
17210+.sp
17211+Currently, they must be explicitly enabled at build time with
17212+\fB\-\-enable\-cplugins\fP\&. They are available on Linux/BSD platforms only.
17213+.SS C plugins location
17214+.sp
17215+C plugins are put into the mpv scripts directory in its config directory
17216+(see the \fI\%FILES\fP section for details). They must have a \fB\&.so\fP file extension.
17217+They can also be explicitly loaded with the \fB\-\-script\fP option.
17218+.SS API
17219+.sp
17220+A C plugin must export the following function:
17221+.INDENT 0.0
17222+.INDENT 3.5
17223+.sp
17224+.nf
17225+.ft C
17226+int mpv_open_cplugin(mpv_handle *handle)
17227+.ft P
17228+.fi
17229+.UNINDENT
17230+.UNINDENT
17231+.sp
17232+The plugin function will be called on loading time. This function does not
17233+return as long as your plugin is loaded (it runs in its own thread). The
17234+\fBhandle\fP will be deallocated as soon as the plugin function returns.
17235+.sp
17236+The return value is interpreted as error status. A value of \fB0\fP is
17237+interpreted as success, while \fB\-1\fP signals an error. In the latter case,
17238+the player prints an uninformative error message that loading failed.
17239+.sp
17240+Return values other than \fB0\fP and \fB\-1\fP are reserved, and trigger undefined
17241+behavior.
17242+.sp
17243+Within the plugin function, you can call libmpv API functions. The \fBhandle\fP
17244+is created by \fBmpv_create_client()\fP (or actually an internal equivalent),
17245+and belongs to you. You can call \fBmpv_wait_event()\fP to wait for things
17246+happening, and so on.
17247+.sp
17248+Note that the player might block until your plugin calls \fBmpv_wait_event()\fP
17249+for the first time. This gives you a chance to install initial hooks etc.
17250+before playback begins.
17251+.sp
17252+The details are quite similar to Lua scripts.
17253+.SS Linkage to libmpv
17254+.sp
17255+The current implementation requires that your plugins are \fBnot\fP linked against
17256+libmpv. What your plugins uses are not symbols from a libmpv binary, but
17257+symbols from the mpv host binary.
17258+.SS Examples
17259+.sp
17260+See:
17261+.INDENT 0.0
17262+.IP \(bu 2
17263+\fI\%https://github.com/mpv\-player/mpv\-examples/tree/master/cplugins\fP
17264+.UNINDENT
17265+.SH ENVIRONMENT VARIABLES
17266+.sp
17267+There are a number of environment variables that can be used to control the
17268+behavior of mpv.
17269+.INDENT 0.0
17270+.TP
17271+.B \fBHOME\fP, \fBXDG_CONFIG_HOME\fP
17272+Used to determine mpv config directory. If \fBXDG_CONFIG_HOME\fP is not set,
17273+\fB$HOME/.config/mpv\fP is used.
17274+.sp
17275+\fB$HOME/.mpv\fP is always added to the list of config search paths with a
17276+lower priority.
17277+.TP
17278+.B \fBXDG_CONFIG_DIRS\fP
17279+If set, XDG\-style system configuration directories are used. Otherwise,
17280+the UNIX convention (\fBPREFIX/etc/mpv/\fP) is used.
17281+.TP
17282+.B \fBMPV_HOME\fP
17283+Directory where mpv looks for user settings. Overrides \fBHOME\fP, and mpv
17284+will try to load the config file as \fB$MPV_HOME/mpv.conf\fP\&.
17285+.TP
17286+.B \fBMPV_VERBOSE\fP (see also \fB\-v\fP and \fB\-\-msg\-level\fP)
17287+Set the initial verbosity level across all message modules (default: 0).
17288+This is an integer, and the resulting verbosity corresponds to the number
17289+of \fB\-\-v\fP options passed to the command line.
17290+.TP
17291+.B \fBMPV_LEAK_REPORT\fP
17292+If set to \fB1\fP, enable internal talloc leak reporting. If set to another
17293+value, disable leak reporting. If unset, use the default, which normally is
17294+\fB0\fP\&. If mpv was built with \fB\-\-enable\-ta\-leak\-report\fP, the default is
17295+\fB1\fP\&. If leak reporting was disabled at compile time (\fBNDEBUG\fP in
17296+custom \fBCFLAGS\fP), this environment variable is ignored.
17297+.TP
17298+.B \fBLADSPA_PATH\fP
17299+Specifies the search path for LADSPA plugins. If it is unset, fully
17300+qualified path names must be used.
17301+.TP
17302+.B \fBDISPLAY\fP
17303+Standard X11 display name to use.
17304+.TP
17305+.B FFmpeg/Libav:
17306+This library accesses various environment variables. However, they are not
17307+centrally documented, and documenting them is not our job. Therefore, this
17308+list is incomplete.
17309+.sp
17310+Notable environment variables:
17311+.INDENT 7.0
17312+.TP
17313+.B \fBhttp_proxy\fP
17314+URL to proxy for \fBhttp://\fP and \fBhttps://\fP URLs.
17315+.TP
17316+.B \fBno_proxy\fP
17317+List of domain patterns for which no proxy should be used.
17318+List entries are separated by \fB,\fP\&. Patterns can include \fB*\fP\&.
17319+.UNINDENT
17320+.TP
17321+.B libdvdcss:
17322+.INDENT 7.0
17323+.TP
17324+.B \fBDVDCSS_CACHE\fP
17325+Specify a directory in which to store title key values. This will
17326+speed up descrambling of DVDs which are in the cache. The
17327+\fBDVDCSS_CACHE\fP directory is created if it does not exist, and a
17328+subdirectory is created named after the DVD\(aqs title or manufacturing
17329+date. If \fBDVDCSS_CACHE\fP is not set or is empty, libdvdcss will use
17330+the default value which is \fB${HOME}/.dvdcss/\fP under Unix and
17331+the roaming application data directory (\fB%APPDATA%\fP) under
17332+Windows. The special value "off" disables caching.
17333+.TP
17334+.B \fBDVDCSS_METHOD\fP
17335+Sets the authentication and decryption method that libdvdcss will use
17336+to read scrambled discs. Can be one of \fBtitle\fP, \fBkey\fP or \fBdisc\fP\&.
17337+.INDENT 7.0
17338+.TP
17339+.B key
17340+is the default method. libdvdcss will use a set of calculated
17341+player keys to try to get the disc key. This can fail if the drive
17342+does not recognize any of the player keys.
17343+.TP
17344+.B disc
17345+is a fallback method when key has failed. Instead of using player
17346+keys, libdvdcss will crack the disc key using a brute force
17347+algorithm. This process is CPU intensive and requires 64 MB of
17348+memory to store temporary data.
17349+.TP
17350+.B title
17351+is the fallback when all other methods have failed. It does not
17352+rely on a key exchange with the DVD drive, but rather uses a crypto
17353+attack to guess the title key. On rare cases this may fail because
17354+there is not enough encrypted data on the disc to perform a
17355+statistical attack, but on the other hand it is the only way to
17356+decrypt a DVD stored on a hard disc, or a DVD with the wrong region
17357+on an RPC2 drive.
17358+.UNINDENT
17359+.TP
17360+.B \fBDVDCSS_RAW_DEVICE\fP
17361+Specify the raw device to use. Exact usage will depend on your
17362+operating system, the Linux utility to set up raw devices is raw(8)
17363+for instance. Please note that on most operating systems, using a raw
17364+device requires highly aligned buffers: Linux requires a 2048 bytes
17365+alignment (which is the size of a DVD sector).
17366+.TP
17367+.B \fBDVDCSS_VERBOSE\fP
17368+Sets the libdvdcss verbosity level.
17369+.INDENT 7.0
17370+.TP
17371+.B 0
17372+Outputs no messages at all.
17373+.TP
17374+.B 1
17375+Outputs error messages to stderr.
17376+.TP
17377+.B 2
17378+Outputs error messages and debug messages to stderr.
17379+.UNINDENT
17380+.TP
17381+.B \fBDVDREAD_NOKEYS\fP
17382+Skip retrieving all keys on startup. Currently disabled.
17383+.TP
17384+.B \fBHOME\fP
17385+FIXME: Document this.
17386+.UNINDENT
17387+.UNINDENT
17388+.SH EXIT CODES
17389+.sp
17390+Normally \fBmpv\fP returns 0 as exit code after finishing playback successfully.
17391+If errors happen, the following exit codes can be returned:
17392+.INDENT 0.0
17393+.INDENT 3.5
17394+.INDENT 0.0
17395+.TP
17396+.B 1
17397+Error initializing mpv. This is also returned if unknown options are
17398+passed to mpv.
17399+.TP
17400+.B 2
17401+The file passed to mpv couldn\(aqt be played. This is somewhat fuzzy:
17402+currently, playback of a file is considered to be successful if
17403+initialization was mostly successful, even if playback fails
17404+immediately after initialization.
17405+.TP
17406+.B 3
17407+There were some files that could be played, and some files which
17408+couldn\(aqt (using the definition of success from above).
17409+.TP
17410+.B 4
17411+Quit due to a signal, Ctrl+c in a VO window (by default), or from the
17412+default quit key bindings in encoding mode.
17413+.UNINDENT
17414+.UNINDENT
17415+.UNINDENT
17416+.sp
17417+Note that quitting the player manually will always lead to exit code 0,
17418+overriding the exit code that would be returned normally. Also, the \fBquit\fP
17419+input command can take an exit code: in this case, that exit code is returned.
17420+.SH FILES
17421+.sp
17422+For Windows\-specifics, see \fI\%FILES ON WINDOWS\fP section.
17423+.INDENT 0.0
17424+.TP
17425+.B \fB/usr/local/etc/mpv/mpv.conf\fP
17426+mpv system\-wide settings (depends on \fB\-\-prefix\fP passed to configure \- mpv
17427+in default configuration will use \fB/usr/local/etc/mpv/\fP as config
17428+directory, while most Linux distributions will set it to \fB/etc/mpv/\fP).
17429+.TP
17430+.B \fB~/.config/mpv/mpv.conf\fP
17431+mpv user settings (see \fI\%CONFIGURATION FILES\fP section)
17432+.TP
17433+.B \fB~/.config/mpv/input.conf\fP
17434+key bindings (see \fI\%INPUT.CONF\fP section)
17435+.TP
17436+.B \fB~/.config/mpv/fonts.conf\fP
17437+Fontconfig fonts.conf that is customized for mpv. You should include system
17438+fonts.conf in this file or mpv would not know about fonts that you already
17439+have in the system.
17440+.sp
17441+Only available when libass is built with fontconfig.
17442+.TP
17443+.B \fB~/.config/mpv/subfont.ttf\fP
17444+fallback subtitle font
17445+.TP
17446+.B \fB~/.config/mpv/fonts/\fP
17447+Font files in this directory are used by mpv/libass for subtitles. Useful
17448+if you do not want to install fonts to your system. Note that files in this
17449+directory are loaded into memory before being used by mpv. If you have a
17450+lot of fonts, consider using fonts.conf (see above) to include additional
17451+fonts, which is more memory\-efficient.
17452+.TP
17453+.B \fB~/.config/mpv/scripts/\fP
17454+All files in this directory are loaded as if they were passed to the
17455+\fB\-\-script\fP option. They are loaded in alphabetical order. Directory entries
17456+other than files are ignored. Files with unknown extension lead to an
17457+initialization error. Files with \fB\&.disable\fP extension are ignored. The
17458+\fB\-\-load\-scripts=no\fP option disables loading these files.
17459+.TP
17460+.B \fB~/.config/mpv/watch_later/\fP
17461+Contains temporary config files needed for resuming playback of files with
17462+the watch later feature. See for example the \fBQ\fP key binding, or the
17463+\fBquit\-watch\-later\fP input command.
17464+.sp
17465+Each file is a small config file which is loaded if the corresponding media
17466+file is loaded. It contains the playback position and some (not necessarily
17467+all) settings that were changed during playback. The filenames are hashed
17468+from the full paths of the media files. It\(aqs in general not possible to
17469+extract the media filename from this hash. However, you can set the
17470+\fB\-\-write\-filename\-in\-watch\-later\-config\fP option, and the player will
17471+add the media filename to the contents of the resume config file.
17472+.TP
17473+.B \fB~/.config/mpv/script\-opts/osc.conf\fP
17474+This is loaded by the OSC script. See the \fI\%ON SCREEN CONTROLLER\fP docs
17475+for details.
17476+.sp
17477+Other files in this directory are specific to the corresponding scripts
17478+as well, and the mpv core doesn\(aqt touch them.
17479+.UNINDENT
17480+.sp
17481+Note that the environment variables \fB$XDG_CONFIG_HOME\fP and \fB$MPV_HOME\fP can
17482+override the standard directory \fB~/.config/mpv/\fP\&.
17483+.sp
17484+Also, the old config location at \fB~/.mpv/\fP is still read, and if the XDG
17485+variant does not exist, will still be preferred.
17486+.SH FILES ON WINDOWS
17487+.sp
17488+On win32 (if compiled with MinGW, but not Cygwin), the default config file
17489+locations are different. They are generally located under \fB%APPDATA%/mpv/\fP\&.
17490+For example, the path to mpv.conf is \fB%APPDATA%/mpv/mpv.conf\fP, which maps to
17491+a system and user\-specific path, for example
17492+.INDENT 0.0
17493+.INDENT 3.5
17494+\fBC:\eusers\eUSERNAME\eAppData\eRoaming\empv\empv.conf\fP
17495+.UNINDENT
17496+.UNINDENT
17497+.sp
17498+You can find the exact path by running \fBecho %APPDATA%\empv\empv.conf\fP in cmd.exe.
17499+.sp
17500+Other config files (such as \fBinput.conf\fP) are in the same directory. See the
17501+\fI\%FILES\fP section above.
17502+.sp
17503+The environment variable \fB$MPV_HOME\fP completely overrides these, like on
17504+UNIX.
17505+.sp
17506+If a directory named \fBportable_config\fP next to the mpv.exe exists, all
17507+config will be loaded from this directory only. Watch later config files are
17508+written to this directory as well. (This exists on Windows only and is redundant
17509+with \fB$MPV_HOME\fP\&. However, since Windows is very scripting unfriendly, a
17510+wrapper script just setting \fB$MPV_HOME\fP, like you could do it on other
17511+systems, won\(aqt work. \fBportable_config\fP is provided for convenience to get
17512+around this restriction.)
17513+.sp
17514+Config files located in the same directory as \fBmpv.exe\fP are loaded with
17515+lower priority. Some config files are loaded only once, which means that
17516+e.g. of 2 \fBinput.conf\fP files located in two config directories, only the
17517+one from the directory with higher priority will be loaded.
17518+.sp
17519+A third config directory with the lowest priority is the directory named \fBmpv\fP
17520+in the same directory as \fBmpv.exe\fP\&. This used to be the directory with the
17521+highest priority, but is now discouraged to use and might be removed in the
17522+future.
17523+.sp
17524+Note that mpv likes to mix \fB/\fP and \fB\e\fP path separators for simplicity.
17525+kernel32.dll accepts this, but cmd.exe does not.
17526+.SH COPYRIGHT
17527+GPLv2+
17528+.\" Generated by docutils manpage writer.
17529+.
+1284, -0
   1@@ -0,0 +1,1284 @@
   2+From 500b8f9510babd4e5d2d9cd35af689617946a1d9 Mon Sep 17 00:00:00 2001
   3+From: Michael Forney <mforney@mforney.org>
   4+Date: Wed, 14 Aug 2024 20:07:19 -0700
   5+Subject: [PATCH] Add generated ebml sources
   6+
   7+These require python to generate.
   8+
   9+$ python TOOLS/matroska.py --generate-header ebml_types.h
  10+$ python TOOLS/matroska.py --generate-definitions ebml_defs.inc
  11+---
  12+ ebml_defs.inc | 595 +++++++++++++++++++++++++++++++++++++++++++++
  13+ ebml_types.h  | 658 ++++++++++++++++++++++++++++++++++++++++++++++++++
  14+ 2 files changed, 1253 insertions(+)
  15+ create mode 100644 ebml_defs.inc
  16+ create mode 100644 ebml_types.h
  17+
  18+diff --git a/ebml_defs.inc b/ebml_defs.inc
  19+new file mode 100644
  20+index 0000000000..da65194639
  21+--- /dev/null
  22++++ b/ebml_defs.inc
  23+@@ -0,0 +1,595 @@
  24++// Generated by TOOLS/matroska.py, do not edit manually
  25++
  26++
  27++E("TagDefault", tag_default, EBML_TYPE_UINT)
  28++
  29++E("TagString", tag_string, EBML_TYPE_STR)
  30++
  31++E("TagLanguageBCP47", tag_language_bcp47, EBML_TYPE_STR)
  32++
  33++E("TagLanguage", tag_language, EBML_TYPE_STR)
  34++
  35++E("TagName", tag_name, EBML_TYPE_STR)
  36++
  37++#define N simple_tag
  38++E_S("SimpleTag", 5)
  39++F(MATROSKA_ID_TAGNAME, tag_name, 0)
  40++F(MATROSKA_ID_TAGLANGUAGE, tag_language, 0)
  41++F(MATROSKA_ID_TAGLANGUAGEBCP47, tag_language_bcp47, 0)
  42++F(MATROSKA_ID_TAGSTRING, tag_string, 0)
  43++F(MATROSKA_ID_TAGDEFAULT, tag_default, 0)
  44++}};
  45++#undef N
  46++
  47++E("TargetAttachmentUID", target_attachment_uid, EBML_TYPE_UINT)
  48++
  49++E("TargetChapterUID", target_chapter_uid, EBML_TYPE_UINT)
  50++
  51++E("TargetEditionUID", target_edition_uid, EBML_TYPE_UINT)
  52++
  53++E("TargetTrackUID", target_track_uid, EBML_TYPE_UINT)
  54++
  55++E("TargetType", target_type, EBML_TYPE_STR)
  56++
  57++E("TargetTypeValue", target_type_value, EBML_TYPE_UINT)
  58++
  59++#define N targets
  60++E_S("Targets", 6)
  61++F(MATROSKA_ID_TARGETTYPEVALUE, target_type_value, 0)
  62++F(MATROSKA_ID_TARGETTYPE, target_type, 0)
  63++F(MATROSKA_ID_TARGETTRACKUID, target_track_uid, 0)
  64++F(MATROSKA_ID_TARGETEDITIONUID, target_edition_uid, 0)
  65++F(MATROSKA_ID_TARGETCHAPTERUID, target_chapter_uid, 0)
  66++F(MATROSKA_ID_TARGETATTACHMENTUID, target_attachment_uid, 0)
  67++}};
  68++#undef N
  69++
  70++#define N tag
  71++E_S("Tag", 2)
  72++F(MATROSKA_ID_TARGETS, targets, 0)
  73++F(MATROSKA_ID_SIMPLETAG, simple_tag, 1)
  74++}};
  75++#undef N
  76++
  77++#define N tags
  78++E_S("Tags", 1)
  79++F(MATROSKA_ID_TAG, tag, 1)
  80++}};
  81++#undef N
  82++
  83++E("ChapCountry", chap_country, EBML_TYPE_STR)
  84++
  85++E("ChapLanguageBCP47", chap_language_bcp47, EBML_TYPE_STR)
  86++
  87++E("ChapLanguage", chap_language, EBML_TYPE_STR)
  88++
  89++E("ChapString", chap_string, EBML_TYPE_STR)
  90++
  91++#define N chapter_display
  92++E_S("ChapterDisplay", 4)
  93++F(MATROSKA_ID_CHAPSTRING, chap_string, 0)
  94++F(MATROSKA_ID_CHAPLANGUAGE, chap_language, 1)
  95++F(MATROSKA_ID_CHAPLANGUAGEBCP47, chap_language_bcp47, 1)
  96++F(MATROSKA_ID_CHAPCOUNTRY, chap_country, 1)
  97++}};
  98++#undef N
  99++
 100++E("ChapterSegmentEditionUID", chapter_segment_edition_uid, EBML_TYPE_UINT)
 101++
 102++E("ChapterSegmentUID", chapter_segment_uid, EBML_TYPE_BINARY)
 103++
 104++E("ChapterFlagEnabled", chapter_flag_enabled, EBML_TYPE_UINT)
 105++
 106++E("ChapterFlagHidden", chapter_flag_hidden, EBML_TYPE_UINT)
 107++
 108++E("ChapterTimeEnd", chapter_time_end, EBML_TYPE_UINT)
 109++
 110++E("ChapterTimeStart", chapter_time_start, EBML_TYPE_UINT)
 111++
 112++E("ChapterUID", chapter_uid, EBML_TYPE_UINT)
 113++
 114++#define N chapter_atom
 115++E_S("ChapterAtom", 8)
 116++F(MATROSKA_ID_CHAPTERUID, chapter_uid, 0)
 117++F(MATROSKA_ID_CHAPTERTIMESTART, chapter_time_start, 0)
 118++F(MATROSKA_ID_CHAPTERTIMEEND, chapter_time_end, 0)
 119++F(MATROSKA_ID_CHAPTERFLAGHIDDEN, chapter_flag_hidden, 0)
 120++F(MATROSKA_ID_CHAPTERFLAGENABLED, chapter_flag_enabled, 0)
 121++F(MATROSKA_ID_CHAPTERSEGMENTUID, chapter_segment_uid, 0)
 122++F(MATROSKA_ID_CHAPTERSEGMENTEDITIONUID, chapter_segment_edition_uid, 0)
 123++F(MATROSKA_ID_CHAPTERDISPLAY, chapter_display, 1)
 124++}};
 125++#undef N
 126++
 127++E("EditionFlagOrdered", edition_flag_ordered, EBML_TYPE_UINT)
 128++
 129++E("EditionFlagDefault", edition_flag_default, EBML_TYPE_UINT)
 130++
 131++E("EditionFlagHidden", edition_flag_hidden, EBML_TYPE_UINT)
 132++
 133++E("EditionUID", edition_uid, EBML_TYPE_UINT)
 134++
 135++#define N edition_entry
 136++E_S("EditionEntry", 5)
 137++F(MATROSKA_ID_EDITIONUID, edition_uid, 0)
 138++F(MATROSKA_ID_EDITIONFLAGHIDDEN, edition_flag_hidden, 0)
 139++F(MATROSKA_ID_EDITIONFLAGDEFAULT, edition_flag_default, 0)
 140++F(MATROSKA_ID_EDITIONFLAGORDERED, edition_flag_ordered, 0)
 141++F(MATROSKA_ID_CHAPTERATOM, chapter_atom, 1)
 142++}};
 143++#undef N
 144++
 145++#define N chapters
 146++E_S("Chapters", 1)
 147++F(MATROSKA_ID_EDITIONENTRY, edition_entry, 1)
 148++}};
 149++#undef N
 150++
 151++E("FileUID", file_uid, EBML_TYPE_UINT)
 152++
 153++E("FileData", file_data, EBML_TYPE_BINARY)
 154++
 155++E("FileMimeType", file_mime_type, EBML_TYPE_STR)
 156++
 157++E("FileName", file_name, EBML_TYPE_STR)
 158++
 159++E("FileDescription", file_description, EBML_TYPE_STR)
 160++
 161++#define N attached_file
 162++E_S("AttachedFile", 5)
 163++F(MATROSKA_ID_FILEDESCRIPTION, file_description, 0)
 164++F(MATROSKA_ID_FILENAME, file_name, 0)
 165++F(MATROSKA_ID_FILEMIMETYPE, file_mime_type, 0)
 166++F(MATROSKA_ID_FILEDATA, file_data, 0)
 167++F(MATROSKA_ID_FILEUID, file_uid, 0)
 168++}};
 169++#undef N
 170++
 171++#define N attachments
 172++E_S("Attachments", 1)
 173++F(MATROSKA_ID_ATTACHEDFILE, attached_file, 1)
 174++}};
 175++#undef N
 176++
 177++E("CueDuration", cue_duration, EBML_TYPE_UINT)
 178++
 179++E("CueRelativePosition", cue_relative_position, EBML_TYPE_UINT)
 180++
 181++E("CueClusterPosition", cue_cluster_position, EBML_TYPE_UINT)
 182++
 183++E("CueTrack", cue_track, EBML_TYPE_UINT)
 184++
 185++#define N cue_track_positions
 186++E_S("CueTrackPositions", 4)
 187++F(MATROSKA_ID_CUETRACK, cue_track, 0)
 188++F(MATROSKA_ID_CUECLUSTERPOSITION, cue_cluster_position, 0)
 189++F(MATROSKA_ID_CUERELATIVEPOSITION, cue_relative_position, 0)
 190++F(MATROSKA_ID_CUEDURATION, cue_duration, 0)
 191++}};
 192++#undef N
 193++
 194++E("CueTime", cue_time, EBML_TYPE_UINT)
 195++
 196++#define N cue_point
 197++E_S("CuePoint", 2)
 198++F(MATROSKA_ID_CUETIME, cue_time, 0)
 199++F(MATROSKA_ID_CUETRACKPOSITIONS, cue_track_positions, 1)
 200++}};
 201++#undef N
 202++
 203++#define N cues
 204++E_S("Cues", 1)
 205++F(MATROSKA_ID_CUEPOINT, cue_point, 1)
 206++}};
 207++#undef N
 208++
 209++E("ContentCompSettings", content_comp_settings, EBML_TYPE_BINARY)
 210++
 211++E("ContentCompAlgo", content_comp_algo, EBML_TYPE_UINT)
 212++
 213++#define N content_compression
 214++E_S("ContentCompression", 2)
 215++F(MATROSKA_ID_CONTENTCOMPALGO, content_comp_algo, 0)
 216++F(MATROSKA_ID_CONTENTCOMPSETTINGS, content_comp_settings, 0)
 217++}};
 218++#undef N
 219++
 220++E("ContentEncodingType", content_encoding_type, EBML_TYPE_UINT)
 221++
 222++E("ContentEncodingScope", content_encoding_scope, EBML_TYPE_UINT)
 223++
 224++E("ContentEncodingOrder", content_encoding_order, EBML_TYPE_UINT)
 225++
 226++#define N content_encoding
 227++E_S("ContentEncoding", 4)
 228++F(MATROSKA_ID_CONTENTENCODINGORDER, content_encoding_order, 0)
 229++F(MATROSKA_ID_CONTENTENCODINGSCOPE, content_encoding_scope, 0)
 230++F(MATROSKA_ID_CONTENTENCODINGTYPE, content_encoding_type, 0)
 231++F(MATROSKA_ID_CONTENTCOMPRESSION, content_compression, 0)
 232++}};
 233++#undef N
 234++
 235++#define N content_encodings
 236++E_S("ContentEncodings", 1)
 237++F(MATROSKA_ID_CONTENTENCODING, content_encoding, 1)
 238++}};
 239++#undef N
 240++
 241++E("BitDepth", bit_depth, EBML_TYPE_UINT)
 242++
 243++E("Channels", channels, EBML_TYPE_UINT)
 244++
 245++E("OutputSamplingFrequency", output_sampling_frequency, EBML_TYPE_FLOAT)
 246++
 247++E("SamplingFrequency", sampling_frequency, EBML_TYPE_FLOAT)
 248++
 249++#define N audio
 250++E_S("Audio", 4)
 251++F(MATROSKA_ID_SAMPLINGFREQUENCY, sampling_frequency, 0)
 252++F(MATROSKA_ID_OUTPUTSAMPLINGFREQUENCY, output_sampling_frequency, 0)
 253++F(MATROSKA_ID_CHANNELS, channels, 0)
 254++F(MATROSKA_ID_BITDEPTH, bit_depth, 0)
 255++}};
 256++#undef N
 257++
 258++E("ProjectionPoseRoll", projection_pose_roll, EBML_TYPE_FLOAT)
 259++
 260++E("ProjectionPosePitch", projection_pose_pitch, EBML_TYPE_FLOAT)
 261++
 262++E("ProjectionPoseYaw", projection_pose_yaw, EBML_TYPE_FLOAT)
 263++
 264++E("ProjectionPrivate", projection_private, EBML_TYPE_BINARY)
 265++
 266++E("ProjectionType", projection_type, EBML_TYPE_UINT)
 267++
 268++#define N projection
 269++E_S("Projection", 5)
 270++F(MATROSKA_ID_PROJECTIONTYPE, projection_type, 0)
 271++F(MATROSKA_ID_PROJECTIONPRIVATE, projection_private, 0)
 272++F(MATROSKA_ID_PROJECTIONPOSEYAW, projection_pose_yaw, 0)
 273++F(MATROSKA_ID_PROJECTIONPOSEPITCH, projection_pose_pitch, 0)
 274++F(MATROSKA_ID_PROJECTIONPOSEROLL, projection_pose_roll, 0)
 275++}};
 276++#undef N
 277++
 278++E("LuminanceMin", luminance_min, EBML_TYPE_FLOAT)
 279++
 280++E("LuminanceMax", luminance_max, EBML_TYPE_FLOAT)
 281++
 282++E("WhitePointChromaticityY", white_point_chromaticity_y, EBML_TYPE_FLOAT)
 283++
 284++E("WhitePointChromaticityX", white_point_chromaticity_x, EBML_TYPE_FLOAT)
 285++
 286++E("PrimaryBChromaticityY", primary_b_chromaticity_y, EBML_TYPE_FLOAT)
 287++
 288++E("PrimaryBChromaticityX", primary_b_chromaticity_x, EBML_TYPE_FLOAT)
 289++
 290++E("PrimaryGChromaticityY", primary_g_chromaticity_y, EBML_TYPE_FLOAT)
 291++
 292++E("PrimaryGChromaticityX", primary_g_chromaticity_x, EBML_TYPE_FLOAT)
 293++
 294++E("PrimaryRChromaticityY", primary_r_chromaticity_y, EBML_TYPE_FLOAT)
 295++
 296++E("PrimaryRChromaticityX", primary_r_chromaticity_x, EBML_TYPE_FLOAT)
 297++
 298++#define N mastering_metadata
 299++E_S("MasteringMetadata", 10)
 300++F(MATROSKA_ID_PRIMARYRCHROMATICITYX, primary_r_chromaticity_x, 0)
 301++F(MATROSKA_ID_PRIMARYRCHROMATICITYY, primary_r_chromaticity_y, 0)
 302++F(MATROSKA_ID_PRIMARYGCHROMATICITYX, primary_g_chromaticity_x, 0)
 303++F(MATROSKA_ID_PRIMARYGCHROMATICITYY, primary_g_chromaticity_y, 0)
 304++F(MATROSKA_ID_PRIMARYBCHROMATICITYX, primary_b_chromaticity_x, 0)
 305++F(MATROSKA_ID_PRIMARYBCHROMATICITYY, primary_b_chromaticity_y, 0)
 306++F(MATROSKA_ID_WHITEPOINTCHROMATICITYX, white_point_chromaticity_x, 0)
 307++F(MATROSKA_ID_WHITEPOINTCHROMATICITYY, white_point_chromaticity_y, 0)
 308++F(MATROSKA_ID_LUMINANCEMAX, luminance_max, 0)
 309++F(MATROSKA_ID_LUMINANCEMIN, luminance_min, 0)
 310++}};
 311++#undef N
 312++
 313++E("MaxFALL", max_fall, EBML_TYPE_UINT)
 314++
 315++E("MaxCLL", max_cll, EBML_TYPE_UINT)
 316++
 317++E("Primaries", primaries, EBML_TYPE_UINT)
 318++
 319++E("TransferCharacteristics", transfer_characteristics, EBML_TYPE_UINT)
 320++
 321++E("Range", range, EBML_TYPE_UINT)
 322++
 323++E("ChromaSitingVert", chroma_siting_vert, EBML_TYPE_UINT)
 324++
 325++E("ChromaSitingHorz", chroma_siting_horz, EBML_TYPE_UINT)
 326++
 327++E("CbSubsamplingVert", cb_subsampling_vert, EBML_TYPE_UINT)
 328++
 329++E("CbSubsamplingHorz", cb_subsampling_horz, EBML_TYPE_UINT)
 330++
 331++E("ChromaSubsamplingVert", chroma_subsampling_vert, EBML_TYPE_UINT)
 332++
 333++E("ChromaSubsamplingHorz", chroma_subsampling_horz, EBML_TYPE_UINT)
 334++
 335++E("BitsPerChannel", bits_per_channel, EBML_TYPE_UINT)
 336++
 337++E("MatrixCoefficients", matrix_coefficients, EBML_TYPE_UINT)
 338++
 339++#define N colour
 340++E_S("Colour", 14)
 341++F(MATROSKA_ID_MATRIXCOEFFICIENTS, matrix_coefficients, 0)
 342++F(MATROSKA_ID_BITSPERCHANNEL, bits_per_channel, 0)
 343++F(MATROSKA_ID_CHROMASUBSAMPLINGHORZ, chroma_subsampling_horz, 0)
 344++F(MATROSKA_ID_CHROMASUBSAMPLINGVERT, chroma_subsampling_vert, 0)
 345++F(MATROSKA_ID_CBSUBSAMPLINGHORZ, cb_subsampling_horz, 0)
 346++F(MATROSKA_ID_CBSUBSAMPLINGVERT, cb_subsampling_vert, 0)
 347++F(MATROSKA_ID_CHROMASITINGHORZ, chroma_siting_horz, 0)
 348++F(MATROSKA_ID_CHROMASITINGVERT, chroma_siting_vert, 0)
 349++F(MATROSKA_ID_RANGE, range, 0)
 350++F(MATROSKA_ID_TRANSFERCHARACTERISTICS, transfer_characteristics, 0)
 351++F(MATROSKA_ID_PRIMARIES, primaries, 0)
 352++F(MATROSKA_ID_MAXCLL, max_cll, 0)
 353++F(MATROSKA_ID_MAXFALL, max_fall, 0)
 354++F(MATROSKA_ID_MASTERINGMETADATA, mastering_metadata, 0)
 355++}};
 356++#undef N
 357++
 358++E("StereoMode", stereo_mode, EBML_TYPE_UINT)
 359++
 360++E("ColourSpace", colour_space, EBML_TYPE_BINARY)
 361++
 362++E("FrameRate", frame_rate, EBML_TYPE_FLOAT)
 363++
 364++E("PixelCropBottom", pixel_crop_bottom, EBML_TYPE_UINT)
 365++
 366++E("PixelCropRight", pixel_crop_right, EBML_TYPE_UINT)
 367++
 368++E("PixelCropLeft", pixel_crop_left, EBML_TYPE_UINT)
 369++
 370++E("PixelCropTop", pixel_crop_top, EBML_TYPE_UINT)
 371++
 372++E("DisplayUnit", display_unit, EBML_TYPE_UINT)
 373++
 374++E("DisplayHeight", display_height, EBML_TYPE_UINT)
 375++
 376++E("DisplayWidth", display_width, EBML_TYPE_UINT)
 377++
 378++E("PixelHeight", pixel_height, EBML_TYPE_UINT)
 379++
 380++E("PixelWidth", pixel_width, EBML_TYPE_UINT)
 381++
 382++E("FlagInterlaced", flag_interlaced, EBML_TYPE_UINT)
 383++
 384++#define N video
 385++E_S("Video", 15)
 386++F(MATROSKA_ID_FLAGINTERLACED, flag_interlaced, 0)
 387++F(MATROSKA_ID_PIXELWIDTH, pixel_width, 0)
 388++F(MATROSKA_ID_PIXELHEIGHT, pixel_height, 0)
 389++F(MATROSKA_ID_DISPLAYWIDTH, display_width, 0)
 390++F(MATROSKA_ID_DISPLAYHEIGHT, display_height, 0)
 391++F(MATROSKA_ID_DISPLAYUNIT, display_unit, 0)
 392++F(MATROSKA_ID_PIXELCROPTOP, pixel_crop_top, 0)
 393++F(MATROSKA_ID_PIXELCROPLEFT, pixel_crop_left, 0)
 394++F(MATROSKA_ID_PIXELCROPRIGHT, pixel_crop_right, 0)
 395++F(MATROSKA_ID_PIXELCROPBOTTOM, pixel_crop_bottom, 0)
 396++F(MATROSKA_ID_FRAMERATE, frame_rate, 0)
 397++F(MATROSKA_ID_COLOURSPACE, colour_space, 0)
 398++F(MATROSKA_ID_STEREOMODE, stereo_mode, 0)
 399++F(MATROSKA_ID_COLOUR, colour, 0)
 400++F(MATROSKA_ID_PROJECTION, projection, 0)
 401++}};
 402++#undef N
 403++
 404++E("SeekPreRoll", seek_pre_roll, EBML_TYPE_UINT)
 405++
 406++E("CodecDelay", codec_delay, EBML_TYPE_UINT)
 407++
 408++E("CodecDecodeAll", codec_decode_all, EBML_TYPE_UINT)
 409++
 410++E("CodecName", codec_name, EBML_TYPE_STR)
 411++
 412++E("CodecPrivate", codec_private, EBML_TYPE_BINARY)
 413++
 414++E("CodecID", codec_id, EBML_TYPE_STR)
 415++
 416++E("LanguageBCP47", language_bcp47, EBML_TYPE_STR)
 417++
 418++E("Language", language, EBML_TYPE_STR)
 419++
 420++E("Name", name, EBML_TYPE_STR)
 421++
 422++E("MaxBlockAdditionID", max_block_addition_id, EBML_TYPE_UINT)
 423++
 424++E("TrackTimecodeScale", track_timecode_scale, EBML_TYPE_FLOAT)
 425++
 426++E("DefaultDuration", default_duration, EBML_TYPE_UINT)
 427++
 428++E("MaxCache", max_cache, EBML_TYPE_UINT)
 429++
 430++E("MinCache", min_cache, EBML_TYPE_UINT)
 431++
 432++E("FlagLacing", flag_lacing, EBML_TYPE_UINT)
 433++
 434++E("FlagForced", flag_forced, EBML_TYPE_UINT)
 435++
 436++E("FlagDefault", flag_default, EBML_TYPE_UINT)
 437++
 438++E("FlagEnabled", flag_enabled, EBML_TYPE_UINT)
 439++
 440++E("TrackType", track_type, EBML_TYPE_UINT)
 441++
 442++E("TrackUID", track_uid, EBML_TYPE_UINT)
 443++
 444++E("TrackNumber", track_number, EBML_TYPE_UINT)
 445++
 446++#define N track_entry
 447++E_S("TrackEntry", 24)
 448++F(MATROSKA_ID_TRACKNUMBER, track_number, 0)
 449++F(MATROSKA_ID_TRACKUID, track_uid, 0)
 450++F(MATROSKA_ID_TRACKTYPE, track_type, 0)
 451++F(MATROSKA_ID_FLAGENABLED, flag_enabled, 0)
 452++F(MATROSKA_ID_FLAGDEFAULT, flag_default, 0)
 453++F(MATROSKA_ID_FLAGFORCED, flag_forced, 0)
 454++F(MATROSKA_ID_FLAGLACING, flag_lacing, 0)
 455++F(MATROSKA_ID_MINCACHE, min_cache, 0)
 456++F(MATROSKA_ID_MAXCACHE, max_cache, 0)
 457++F(MATROSKA_ID_DEFAULTDURATION, default_duration, 0)
 458++F(MATROSKA_ID_TRACKTIMECODESCALE, track_timecode_scale, 0)
 459++F(MATROSKA_ID_MAXBLOCKADDITIONID, max_block_addition_id, 0)
 460++F(MATROSKA_ID_NAME, name, 0)
 461++F(MATROSKA_ID_LANGUAGE, language, 0)
 462++F(MATROSKA_ID_LANGUAGEBCP47, language_bcp47, 0)
 463++F(MATROSKA_ID_CODECID, codec_id, 0)
 464++F(MATROSKA_ID_CODECPRIVATE, codec_private, 0)
 465++F(MATROSKA_ID_CODECNAME, codec_name, 0)
 466++F(MATROSKA_ID_CODECDECODEALL, codec_decode_all, 0)
 467++F(MATROSKA_ID_CODECDELAY, codec_delay, 0)
 468++F(MATROSKA_ID_SEEKPREROLL, seek_pre_roll, 0)
 469++F(MATROSKA_ID_VIDEO, video, 0)
 470++F(MATROSKA_ID_AUDIO, audio, 0)
 471++F(MATROSKA_ID_CONTENTENCODINGS, content_encodings, 0)
 472++}};
 473++#undef N
 474++
 475++#define N tracks
 476++E_S("Tracks", 1)
 477++F(MATROSKA_ID_TRACKENTRY, track_entry, 1)
 478++}};
 479++#undef N
 480++
 481++E("SimpleBlock", simple_block, EBML_TYPE_BINARY)
 482++
 483++E("BlockAdditional", block_additional, EBML_TYPE_BINARY)
 484++
 485++E("BlockAddID", block_add_id, EBML_TYPE_UINT)
 486++
 487++#define N block_more
 488++E_S("BlockMore", 2)
 489++F(MATROSKA_ID_BLOCKADDID, block_add_id, 0)
 490++F(MATROSKA_ID_BLOCKADDITIONAL, block_additional, 0)
 491++}};
 492++#undef N
 493++
 494++#define N block_additions
 495++E_S("BlockAdditions", 1)
 496++F(MATROSKA_ID_BLOCKMORE, block_more, 1)
 497++}};
 498++#undef N
 499++
 500++E("DiscardPadding", discard_padding, EBML_TYPE_SINT)
 501++
 502++E("ReferenceBlock", reference_block, EBML_TYPE_SINT)
 503++
 504++E("BlockDuration", block_duration, EBML_TYPE_UINT)
 505++
 506++E("Block", block, EBML_TYPE_BINARY)
 507++
 508++#define N block_group
 509++E_S("BlockGroup", 5)
 510++F(MATROSKA_ID_BLOCK, block, 0)
 511++F(MATROSKA_ID_BLOCKDURATION, block_duration, 0)
 512++F(MATROSKA_ID_REFERENCEBLOCK, reference_block, 1)
 513++F(MATROSKA_ID_DISCARDPADDING, discard_padding, 0)
 514++F(MATROSKA_ID_BLOCKADDITIONS, block_additions, 0)
 515++}};
 516++#undef N
 517++
 518++E("Timecode", timecode, EBML_TYPE_UINT)
 519++
 520++#define N cluster
 521++E_S("Cluster", 3)
 522++F(MATROSKA_ID_TIMECODE, timecode, 0)
 523++F(MATROSKA_ID_BLOCKGROUP, block_group, 1)
 524++F(MATROSKA_ID_SIMPLEBLOCK, simple_block, 1)
 525++}};
 526++#undef N
 527++
 528++E("Duration", duration, EBML_TYPE_FLOAT)
 529++
 530++E("WritingApp", writing_app, EBML_TYPE_STR)
 531++
 532++E("MuxingApp", muxing_app, EBML_TYPE_STR)
 533++
 534++E("Title", title, EBML_TYPE_STR)
 535++
 536++E("DateUTC", date_utc, EBML_TYPE_SINT)
 537++
 538++E("TimecodeScale", timecode_scale, EBML_TYPE_UINT)
 539++
 540++E("NextUID", next_uid, EBML_TYPE_BINARY)
 541++
 542++E("PrevUID", prev_uid, EBML_TYPE_BINARY)
 543++
 544++E("SegmentUID", segment_uid, EBML_TYPE_BINARY)
 545++
 546++#define N info
 547++E_S("Info", 9)
 548++F(MATROSKA_ID_SEGMENTUID, segment_uid, 0)
 549++F(MATROSKA_ID_PREVUID, prev_uid, 0)
 550++F(MATROSKA_ID_NEXTUID, next_uid, 0)
 551++F(MATROSKA_ID_TIMECODESCALE, timecode_scale, 0)
 552++F(MATROSKA_ID_DATEUTC, date_utc, 0)
 553++F(MATROSKA_ID_TITLE, title, 0)
 554++F(MATROSKA_ID_MUXINGAPP, muxing_app, 0)
 555++F(MATROSKA_ID_WRITINGAPP, writing_app, 0)
 556++F(MATROSKA_ID_DURATION, duration, 0)
 557++}};
 558++#undef N
 559++
 560++E("SeekPosition", seek_position, EBML_TYPE_UINT)
 561++
 562++E("SeekID", seek_id, EBML_TYPE_EBML_ID)
 563++
 564++#define N seek
 565++E_S("Seek", 2)
 566++F(MATROSKA_ID_SEEKID, seek_id, 0)
 567++F(MATROSKA_ID_SEEKPOSITION, seek_position, 0)
 568++}};
 569++#undef N
 570++
 571++#define N seek_head
 572++E_S("SeekHead", 1)
 573++F(MATROSKA_ID_SEEK, seek, 1)
 574++}};
 575++#undef N
 576++
 577++#define N segment
 578++E_S("Segment", 8)
 579++F(MATROSKA_ID_SEEKHEAD, seek_head, 1)
 580++F(MATROSKA_ID_INFO, info, 1)
 581++F(MATROSKA_ID_CLUSTER, cluster, 1)
 582++F(MATROSKA_ID_TRACKS, tracks, 1)
 583++F(MATROSKA_ID_CUES, cues, 0)
 584++F(MATROSKA_ID_ATTACHMENTS, attachments, 0)
 585++F(MATROSKA_ID_CHAPTERS, chapters, 0)
 586++F(MATROSKA_ID_TAGS, tags, 1)
 587++}};
 588++#undef N
 589++
 590++E("Void", void, EBML_TYPE_BINARY)
 591++
 592++E("CRC32", crc32, EBML_TYPE_BINARY)
 593++
 594++E("DocTypeReadVersion", doc_type_read_version, EBML_TYPE_UINT)
 595++
 596++E("DocTypeVersion", doc_type_version, EBML_TYPE_UINT)
 597++
 598++E("DocType", doc_type, EBML_TYPE_STR)
 599++
 600++E("EBMLMaxSizeLength", ebml_max_size_length, EBML_TYPE_UINT)
 601++
 602++E("EBMLMaxIDLength", ebml_max_id_length, EBML_TYPE_UINT)
 603++
 604++E("EBMLReadVersion", ebml_read_version, EBML_TYPE_UINT)
 605++
 606++E("EBMLVersion", ebml_version, EBML_TYPE_UINT)
 607++
 608++#define N ebml
 609++E_S("EBML", 7)
 610++F(EBML_ID_EBMLVERSION, ebml_version, 0)
 611++F(EBML_ID_EBMLREADVERSION, ebml_read_version, 0)
 612++F(EBML_ID_EBMLMAXIDLENGTH, ebml_max_id_length, 0)
 613++F(EBML_ID_EBMLMAXSIZELENGTH, ebml_max_size_length, 0)
 614++F(EBML_ID_DOCTYPE, doc_type, 0)
 615++F(EBML_ID_DOCTYPEVERSION, doc_type_version, 0)
 616++F(EBML_ID_DOCTYPEREADVERSION, doc_type_read_version, 0)
 617++}};
 618++#undef N
 619+diff --git a/ebml_types.h b/ebml_types.h
 620+new file mode 100644
 621+index 0000000000..d544694d48
 622+--- /dev/null
 623++++ b/ebml_types.h
 624+@@ -0,0 +1,658 @@
 625++// Generated by TOOLS/matroska.py, do not edit manually
 626++
 627++#define EBML_ID_EBML                             0x1a45dfa3
 628++#define EBML_ID_EBMLVERSION                      0x4286
 629++#define EBML_ID_EBMLREADVERSION                  0x42f7
 630++#define EBML_ID_EBMLMAXIDLENGTH                  0x42f2
 631++#define EBML_ID_EBMLMAXSIZELENGTH                0x42f3
 632++#define EBML_ID_DOCTYPE                          0x4282
 633++#define EBML_ID_DOCTYPEVERSION                   0x4287
 634++#define EBML_ID_DOCTYPEREADVERSION               0x4285
 635++#define EBML_ID_CRC32                            0xbf
 636++#define EBML_ID_VOID                             0xec
 637++#define MATROSKA_ID_SEGMENT                      0x18538067
 638++#define MATROSKA_ID_SEEKHEAD                     0x114d9b74
 639++#define MATROSKA_ID_SEEK                         0x4dbb
 640++#define MATROSKA_ID_SEEKID                       0x53ab
 641++#define MATROSKA_ID_SEEKPOSITION                 0x53ac
 642++#define MATROSKA_ID_INFO                         0x1549a966
 643++#define MATROSKA_ID_SEGMENTUID                   0x73a4
 644++#define MATROSKA_ID_PREVUID                      0x3cb923
 645++#define MATROSKA_ID_NEXTUID                      0x3eb923
 646++#define MATROSKA_ID_TIMECODESCALE                0x2ad7b1
 647++#define MATROSKA_ID_DATEUTC                      0x4461
 648++#define MATROSKA_ID_TITLE                        0x7ba9
 649++#define MATROSKA_ID_MUXINGAPP                    0x4d80
 650++#define MATROSKA_ID_WRITINGAPP                   0x5741
 651++#define MATROSKA_ID_DURATION                     0x4489
 652++#define MATROSKA_ID_CLUSTER                      0x1f43b675
 653++#define MATROSKA_ID_TIMECODE                     0xe7
 654++#define MATROSKA_ID_BLOCKGROUP                   0xa0
 655++#define MATROSKA_ID_BLOCK                        0xa1
 656++#define MATROSKA_ID_BLOCKDURATION                0x9b
 657++#define MATROSKA_ID_REFERENCEBLOCK               0xfb
 658++#define MATROSKA_ID_DISCARDPADDING               0x75a2
 659++#define MATROSKA_ID_BLOCKADDITIONS               0x75a1
 660++#define MATROSKA_ID_BLOCKMORE                    0xa6
 661++#define MATROSKA_ID_BLOCKADDID                   0xee
 662++#define MATROSKA_ID_BLOCKADDITIONAL              0xa5
 663++#define MATROSKA_ID_SIMPLEBLOCK                  0xa3
 664++#define MATROSKA_ID_TRACKS                       0x1654ae6b
 665++#define MATROSKA_ID_TRACKENTRY                   0xae
 666++#define MATROSKA_ID_TRACKNUMBER                  0xd7
 667++#define MATROSKA_ID_TRACKUID                     0x73c5
 668++#define MATROSKA_ID_TRACKTYPE                    0x83
 669++#define MATROSKA_ID_FLAGENABLED                  0xb9
 670++#define MATROSKA_ID_FLAGDEFAULT                  0x88
 671++#define MATROSKA_ID_FLAGFORCED                   0x55aa
 672++#define MATROSKA_ID_FLAGLACING                   0x9c
 673++#define MATROSKA_ID_MINCACHE                     0x6de7
 674++#define MATROSKA_ID_MAXCACHE                     0x6df8
 675++#define MATROSKA_ID_DEFAULTDURATION              0x23e383
 676++#define MATROSKA_ID_TRACKTIMECODESCALE           0x23314f
 677++#define MATROSKA_ID_MAXBLOCKADDITIONID           0x55ee
 678++#define MATROSKA_ID_NAME                         0x536e
 679++#define MATROSKA_ID_LANGUAGE                     0x22b59c
 680++#define MATROSKA_ID_LANGUAGEBCP47                0x22b59d
 681++#define MATROSKA_ID_CODECID                      0x86
 682++#define MATROSKA_ID_CODECPRIVATE                 0x63a2
 683++#define MATROSKA_ID_CODECNAME                    0x258688
 684++#define MATROSKA_ID_CODECDECODEALL               0xaa
 685++#define MATROSKA_ID_CODECDELAY                   0x56aa
 686++#define MATROSKA_ID_SEEKPREROLL                  0x56bb
 687++#define MATROSKA_ID_VIDEO                        0xe0
 688++#define MATROSKA_ID_FLAGINTERLACED               0x9a
 689++#define MATROSKA_ID_PIXELWIDTH                   0xb0
 690++#define MATROSKA_ID_PIXELHEIGHT                  0xba
 691++#define MATROSKA_ID_DISPLAYWIDTH                 0x54b0
 692++#define MATROSKA_ID_DISPLAYHEIGHT                0x54ba
 693++#define MATROSKA_ID_DISPLAYUNIT                  0x54b2
 694++#define MATROSKA_ID_PIXELCROPTOP                 0x54bb
 695++#define MATROSKA_ID_PIXELCROPLEFT                0x54cc
 696++#define MATROSKA_ID_PIXELCROPRIGHT               0x54dd
 697++#define MATROSKA_ID_PIXELCROPBOTTOM              0x54aa
 698++#define MATROSKA_ID_FRAMERATE                    0x2383e3
 699++#define MATROSKA_ID_COLOURSPACE                  0x2eb524
 700++#define MATROSKA_ID_STEREOMODE                   0x53b8
 701++#define MATROSKA_ID_COLOUR                       0x55b0
 702++#define MATROSKA_ID_MATRIXCOEFFICIENTS           0x55b1
 703++#define MATROSKA_ID_BITSPERCHANNEL               0x55b2
 704++#define MATROSKA_ID_CHROMASUBSAMPLINGHORZ        0x55b3
 705++#define MATROSKA_ID_CHROMASUBSAMPLINGVERT        0x55b4
 706++#define MATROSKA_ID_CBSUBSAMPLINGHORZ            0x55b5
 707++#define MATROSKA_ID_CBSUBSAMPLINGVERT            0x55b6
 708++#define MATROSKA_ID_CHROMASITINGHORZ             0x55b7
 709++#define MATROSKA_ID_CHROMASITINGVERT             0x55b8
 710++#define MATROSKA_ID_RANGE                        0x55b9
 711++#define MATROSKA_ID_TRANSFERCHARACTERISTICS      0x55ba
 712++#define MATROSKA_ID_PRIMARIES                    0x55bb
 713++#define MATROSKA_ID_MAXCLL                       0x55bc
 714++#define MATROSKA_ID_MAXFALL                      0x55bd
 715++#define MATROSKA_ID_MASTERINGMETADATA            0x55d0
 716++#define MATROSKA_ID_PRIMARYRCHROMATICITYX        0x55d1
 717++#define MATROSKA_ID_PRIMARYRCHROMATICITYY        0x55d2
 718++#define MATROSKA_ID_PRIMARYGCHROMATICITYX        0x55d3
 719++#define MATROSKA_ID_PRIMARYGCHROMATICITYY        0x55d4
 720++#define MATROSKA_ID_PRIMARYBCHROMATICITYX        0x55d5
 721++#define MATROSKA_ID_PRIMARYBCHROMATICITYY        0x55d6
 722++#define MATROSKA_ID_WHITEPOINTCHROMATICITYX      0x55d7
 723++#define MATROSKA_ID_WHITEPOINTCHROMATICITYY      0x55d8
 724++#define MATROSKA_ID_LUMINANCEMAX                 0x55d9
 725++#define MATROSKA_ID_LUMINANCEMIN                 0x55da
 726++#define MATROSKA_ID_PROJECTION                   0x7670
 727++#define MATROSKA_ID_PROJECTIONTYPE               0x7671
 728++#define MATROSKA_ID_PROJECTIONPRIVATE            0x7672
 729++#define MATROSKA_ID_PROJECTIONPOSEYAW            0x7673
 730++#define MATROSKA_ID_PROJECTIONPOSEPITCH          0x7674
 731++#define MATROSKA_ID_PROJECTIONPOSEROLL           0x7675
 732++#define MATROSKA_ID_AUDIO                        0xe1
 733++#define MATROSKA_ID_SAMPLINGFREQUENCY            0xb5
 734++#define MATROSKA_ID_OUTPUTSAMPLINGFREQUENCY      0x78b5
 735++#define MATROSKA_ID_CHANNELS                     0x9f
 736++#define MATROSKA_ID_BITDEPTH                     0x6264
 737++#define MATROSKA_ID_CONTENTENCODINGS             0x6d80
 738++#define MATROSKA_ID_CONTENTENCODING              0x6240
 739++#define MATROSKA_ID_CONTENTENCODINGORDER         0x5031
 740++#define MATROSKA_ID_CONTENTENCODINGSCOPE         0x5032
 741++#define MATROSKA_ID_CONTENTENCODINGTYPE          0x5033
 742++#define MATROSKA_ID_CONTENTCOMPRESSION           0x5034
 743++#define MATROSKA_ID_CONTENTCOMPALGO              0x4254
 744++#define MATROSKA_ID_CONTENTCOMPSETTINGS          0x4255
 745++#define MATROSKA_ID_CUES                         0x1c53bb6b
 746++#define MATROSKA_ID_CUEPOINT                     0xbb
 747++#define MATROSKA_ID_CUETIME                      0xb3
 748++#define MATROSKA_ID_CUETRACKPOSITIONS            0xb7
 749++#define MATROSKA_ID_CUETRACK                     0xf7
 750++#define MATROSKA_ID_CUECLUSTERPOSITION           0xf1
 751++#define MATROSKA_ID_CUERELATIVEPOSITION          0xf0
 752++#define MATROSKA_ID_CUEDURATION                  0xb2
 753++#define MATROSKA_ID_ATTACHMENTS                  0x1941a469
 754++#define MATROSKA_ID_ATTACHEDFILE                 0x61a7
 755++#define MATROSKA_ID_FILEDESCRIPTION              0x467e
 756++#define MATROSKA_ID_FILENAME                     0x466e
 757++#define MATROSKA_ID_FILEMIMETYPE                 0x4660
 758++#define MATROSKA_ID_FILEDATA                     0x465c
 759++#define MATROSKA_ID_FILEUID                      0x46ae
 760++#define MATROSKA_ID_CHAPTERS                     0x1043a770
 761++#define MATROSKA_ID_EDITIONENTRY                 0x45b9
 762++#define MATROSKA_ID_EDITIONUID                   0x45bc
 763++#define MATROSKA_ID_EDITIONFLAGHIDDEN            0x45bd
 764++#define MATROSKA_ID_EDITIONFLAGDEFAULT           0x45db
 765++#define MATROSKA_ID_EDITIONFLAGORDERED           0x45dd
 766++#define MATROSKA_ID_CHAPTERATOM                  0xb6
 767++#define MATROSKA_ID_CHAPTERUID                   0x73c4
 768++#define MATROSKA_ID_CHAPTERTIMESTART             0x91
 769++#define MATROSKA_ID_CHAPTERTIMEEND               0x92
 770++#define MATROSKA_ID_CHAPTERFLAGHIDDEN            0x98
 771++#define MATROSKA_ID_CHAPTERFLAGENABLED           0x4598
 772++#define MATROSKA_ID_CHAPTERSEGMENTUID            0x6e67
 773++#define MATROSKA_ID_CHAPTERSEGMENTEDITIONUID     0x6ebc
 774++#define MATROSKA_ID_CHAPTERDISPLAY               0x80
 775++#define MATROSKA_ID_CHAPSTRING                   0x85
 776++#define MATROSKA_ID_CHAPLANGUAGE                 0x437c
 777++#define MATROSKA_ID_CHAPLANGUAGEBCP47            0x437d
 778++#define MATROSKA_ID_CHAPCOUNTRY                  0x437e
 779++#define MATROSKA_ID_TAGS                         0x1254c367
 780++#define MATROSKA_ID_TAG                          0x7373
 781++#define MATROSKA_ID_TARGETS                      0x63c0
 782++#define MATROSKA_ID_TARGETTYPEVALUE              0x68ca
 783++#define MATROSKA_ID_TARGETTYPE                   0x63ca
 784++#define MATROSKA_ID_TARGETTRACKUID               0x63c5
 785++#define MATROSKA_ID_TARGETEDITIONUID             0x63c9
 786++#define MATROSKA_ID_TARGETCHAPTERUID             0x63c4
 787++#define MATROSKA_ID_TARGETATTACHMENTUID          0x63c6
 788++#define MATROSKA_ID_SIMPLETAG                    0x67c8
 789++#define MATROSKA_ID_TAGNAME                      0x45a3
 790++#define MATROSKA_ID_TAGLANGUAGE                  0x447a
 791++#define MATROSKA_ID_TAGLANGUAGEBCP47             0x447b
 792++#define MATROSKA_ID_TAGSTRING                    0x4487
 793++#define MATROSKA_ID_TAGDEFAULT                   0x4484
 794++
 795++
 796++struct ebml_simple_tag {
 797++    char *     tag_name;
 798++    char *     tag_language;
 799++    char *     tag_language_bcp47;
 800++    char *     tag_string;
 801++    uint64_t   tag_default;
 802++
 803++    int  n_tag_name;
 804++    int  n_tag_language;
 805++    int  n_tag_language_bcp47;
 806++    int  n_tag_string;
 807++    int  n_tag_default;
 808++};
 809++
 810++struct ebml_targets {
 811++    uint64_t   target_type_value;
 812++    char *     target_type;
 813++    uint64_t   target_track_uid;
 814++    uint64_t   target_edition_uid;
 815++    uint64_t   target_chapter_uid;
 816++    uint64_t   target_attachment_uid;
 817++
 818++    int  n_target_type_value;
 819++    int  n_target_type;
 820++    int  n_target_track_uid;
 821++    int  n_target_edition_uid;
 822++    int  n_target_chapter_uid;
 823++    int  n_target_attachment_uid;
 824++};
 825++
 826++struct ebml_tag {
 827++    struct ebml_targets      targets;
 828++    struct ebml_simple_tag  *simple_tag;
 829++
 830++    int  n_targets;
 831++    int  n_simple_tag;
 832++};
 833++
 834++struct ebml_tags {
 835++    struct ebml_tag  *tag;
 836++
 837++    int  n_tag;
 838++};
 839++
 840++struct ebml_chapter_display {
 841++    char *   chap_string;
 842++    char *  *chap_language;
 843++    char *  *chap_language_bcp47;
 844++    char *  *chap_country;
 845++
 846++    int  n_chap_string;
 847++    int  n_chap_language;
 848++    int  n_chap_language_bcp47;
 849++    int  n_chap_country;
 850++};
 851++
 852++struct ebml_chapter_atom {
 853++    uint64_t                      chapter_uid;
 854++    uint64_t                      chapter_time_start;
 855++    uint64_t                      chapter_time_end;
 856++    uint64_t                      chapter_flag_hidden;
 857++    uint64_t                      chapter_flag_enabled;
 858++    bstr                          chapter_segment_uid;
 859++    uint64_t                      chapter_segment_edition_uid;
 860++    struct ebml_chapter_display  *chapter_display;
 861++
 862++    int  n_chapter_uid;
 863++    int  n_chapter_time_start;
 864++    int  n_chapter_time_end;
 865++    int  n_chapter_flag_hidden;
 866++    int  n_chapter_flag_enabled;
 867++    int  n_chapter_segment_uid;
 868++    int  n_chapter_segment_edition_uid;
 869++    int  n_chapter_display;
 870++};
 871++
 872++struct ebml_edition_entry {
 873++    uint64_t                   edition_uid;
 874++    uint64_t                   edition_flag_hidden;
 875++    uint64_t                   edition_flag_default;
 876++    uint64_t                   edition_flag_ordered;
 877++    struct ebml_chapter_atom  *chapter_atom;
 878++
 879++    int  n_edition_uid;
 880++    int  n_edition_flag_hidden;
 881++    int  n_edition_flag_default;
 882++    int  n_edition_flag_ordered;
 883++    int  n_chapter_atom;
 884++};
 885++
 886++struct ebml_chapters {
 887++    struct ebml_edition_entry  *edition_entry;
 888++
 889++    int  n_edition_entry;
 890++};
 891++
 892++struct ebml_attached_file {
 893++    char *     file_description;
 894++    char *     file_name;
 895++    char *     file_mime_type;
 896++    bstr       file_data;
 897++    uint64_t   file_uid;
 898++
 899++    int  n_file_description;
 900++    int  n_file_name;
 901++    int  n_file_mime_type;
 902++    int  n_file_data;
 903++    int  n_file_uid;
 904++};
 905++
 906++struct ebml_attachments {
 907++    struct ebml_attached_file  *attached_file;
 908++
 909++    int  n_attached_file;
 910++};
 911++
 912++struct ebml_cue_track_positions {
 913++    uint64_t   cue_track;
 914++    uint64_t   cue_cluster_position;
 915++    uint64_t   cue_relative_position;
 916++    uint64_t   cue_duration;
 917++
 918++    int  n_cue_track;
 919++    int  n_cue_cluster_position;
 920++    int  n_cue_relative_position;
 921++    int  n_cue_duration;
 922++};
 923++
 924++struct ebml_cue_point {
 925++    uint64_t                          cue_time;
 926++    struct ebml_cue_track_positions  *cue_track_positions;
 927++
 928++    int  n_cue_time;
 929++    int  n_cue_track_positions;
 930++};
 931++
 932++struct ebml_cues {
 933++    struct ebml_cue_point  *cue_point;
 934++
 935++    int  n_cue_point;
 936++};
 937++
 938++struct ebml_content_compression {
 939++    uint64_t   content_comp_algo;
 940++    bstr       content_comp_settings;
 941++
 942++    int  n_content_comp_algo;
 943++    int  n_content_comp_settings;
 944++};
 945++
 946++struct ebml_content_encoding {
 947++    uint64_t                          content_encoding_order;
 948++    uint64_t                          content_encoding_scope;
 949++    uint64_t                          content_encoding_type;
 950++    struct ebml_content_compression   content_compression;
 951++
 952++    int  n_content_encoding_order;
 953++    int  n_content_encoding_scope;
 954++    int  n_content_encoding_type;
 955++    int  n_content_compression;
 956++};
 957++
 958++struct ebml_content_encodings {
 959++    struct ebml_content_encoding  *content_encoding;
 960++
 961++    int  n_content_encoding;
 962++};
 963++
 964++struct ebml_audio {
 965++    double     sampling_frequency;
 966++    double     output_sampling_frequency;
 967++    uint64_t   channels;
 968++    uint64_t   bit_depth;
 969++
 970++    int  n_sampling_frequency;
 971++    int  n_output_sampling_frequency;
 972++    int  n_channels;
 973++    int  n_bit_depth;
 974++};
 975++
 976++struct ebml_projection {
 977++    uint64_t   projection_type;
 978++    bstr       projection_private;
 979++    double     projection_pose_yaw;
 980++    double     projection_pose_pitch;
 981++    double     projection_pose_roll;
 982++
 983++    int  n_projection_type;
 984++    int  n_projection_private;
 985++    int  n_projection_pose_yaw;
 986++    int  n_projection_pose_pitch;
 987++    int  n_projection_pose_roll;
 988++};
 989++
 990++struct ebml_mastering_metadata {
 991++    double   primary_r_chromaticity_x;
 992++    double   primary_r_chromaticity_y;
 993++    double   primary_g_chromaticity_x;
 994++    double   primary_g_chromaticity_y;
 995++    double   primary_b_chromaticity_x;
 996++    double   primary_b_chromaticity_y;
 997++    double   white_point_chromaticity_x;
 998++    double   white_point_chromaticity_y;
 999++    double   luminance_max;
1000++    double   luminance_min;
1001++
1002++    int  n_primary_r_chromaticity_x;
1003++    int  n_primary_r_chromaticity_y;
1004++    int  n_primary_g_chromaticity_x;
1005++    int  n_primary_g_chromaticity_y;
1006++    int  n_primary_b_chromaticity_x;
1007++    int  n_primary_b_chromaticity_y;
1008++    int  n_white_point_chromaticity_x;
1009++    int  n_white_point_chromaticity_y;
1010++    int  n_luminance_max;
1011++    int  n_luminance_min;
1012++};
1013++
1014++struct ebml_colour {
1015++    uint64_t                         matrix_coefficients;
1016++    uint64_t                         bits_per_channel;
1017++    uint64_t                         chroma_subsampling_horz;
1018++    uint64_t                         chroma_subsampling_vert;
1019++    uint64_t                         cb_subsampling_horz;
1020++    uint64_t                         cb_subsampling_vert;
1021++    uint64_t                         chroma_siting_horz;
1022++    uint64_t                         chroma_siting_vert;
1023++    uint64_t                         range;
1024++    uint64_t                         transfer_characteristics;
1025++    uint64_t                         primaries;
1026++    uint64_t                         max_cll;
1027++    uint64_t                         max_fall;
1028++    struct ebml_mastering_metadata   mastering_metadata;
1029++
1030++    int  n_matrix_coefficients;
1031++    int  n_bits_per_channel;
1032++    int  n_chroma_subsampling_horz;
1033++    int  n_chroma_subsampling_vert;
1034++    int  n_cb_subsampling_horz;
1035++    int  n_cb_subsampling_vert;
1036++    int  n_chroma_siting_horz;
1037++    int  n_chroma_siting_vert;
1038++    int  n_range;
1039++    int  n_transfer_characteristics;
1040++    int  n_primaries;
1041++    int  n_max_cll;
1042++    int  n_max_fall;
1043++    int  n_mastering_metadata;
1044++};
1045++
1046++struct ebml_video {
1047++    uint64_t                 flag_interlaced;
1048++    uint64_t                 pixel_width;
1049++    uint64_t                 pixel_height;
1050++    uint64_t                 display_width;
1051++    uint64_t                 display_height;
1052++    uint64_t                 display_unit;
1053++    uint64_t                 pixel_crop_top;
1054++    uint64_t                 pixel_crop_left;
1055++    uint64_t                 pixel_crop_right;
1056++    uint64_t                 pixel_crop_bottom;
1057++    double                   frame_rate;
1058++    bstr                     colour_space;
1059++    uint64_t                 stereo_mode;
1060++    struct ebml_colour       colour;
1061++    struct ebml_projection   projection;
1062++
1063++    int  n_flag_interlaced;
1064++    int  n_pixel_width;
1065++    int  n_pixel_height;
1066++    int  n_display_width;
1067++    int  n_display_height;
1068++    int  n_display_unit;
1069++    int  n_pixel_crop_top;
1070++    int  n_pixel_crop_left;
1071++    int  n_pixel_crop_right;
1072++    int  n_pixel_crop_bottom;
1073++    int  n_frame_rate;
1074++    int  n_colour_space;
1075++    int  n_stereo_mode;
1076++    int  n_colour;
1077++    int  n_projection;
1078++};
1079++
1080++struct ebml_track_entry {
1081++    uint64_t                        track_number;
1082++    uint64_t                        track_uid;
1083++    uint64_t                        track_type;
1084++    uint64_t                        flag_enabled;
1085++    uint64_t                        flag_default;
1086++    uint64_t                        flag_forced;
1087++    uint64_t                        flag_lacing;
1088++    uint64_t                        min_cache;
1089++    uint64_t                        max_cache;
1090++    uint64_t                        default_duration;
1091++    double                          track_timecode_scale;
1092++    uint64_t                        max_block_addition_id;
1093++    char *                          name;
1094++    char *                          language;
1095++    char *                          language_bcp47;
1096++    char *                          codec_id;
1097++    bstr                            codec_private;
1098++    char *                          codec_name;
1099++    uint64_t                        codec_decode_all;
1100++    uint64_t                        codec_delay;
1101++    uint64_t                        seek_pre_roll;
1102++    struct ebml_video               video;
1103++    struct ebml_audio               audio;
1104++    struct ebml_content_encodings   content_encodings;
1105++
1106++    int  n_track_number;
1107++    int  n_track_uid;
1108++    int  n_track_type;
1109++    int  n_flag_enabled;
1110++    int  n_flag_default;
1111++    int  n_flag_forced;
1112++    int  n_flag_lacing;
1113++    int  n_min_cache;
1114++    int  n_max_cache;
1115++    int  n_default_duration;
1116++    int  n_track_timecode_scale;
1117++    int  n_max_block_addition_id;
1118++    int  n_name;
1119++    int  n_language;
1120++    int  n_language_bcp47;
1121++    int  n_codec_id;
1122++    int  n_codec_private;
1123++    int  n_codec_name;
1124++    int  n_codec_decode_all;
1125++    int  n_codec_delay;
1126++    int  n_seek_pre_roll;
1127++    int  n_video;
1128++    int  n_audio;
1129++    int  n_content_encodings;
1130++};
1131++
1132++struct ebml_tracks {
1133++    struct ebml_track_entry  *track_entry;
1134++
1135++    int  n_track_entry;
1136++};
1137++
1138++struct ebml_block_more {
1139++    uint64_t   block_add_id;
1140++    bstr       block_additional;
1141++
1142++    int  n_block_add_id;
1143++    int  n_block_additional;
1144++};
1145++
1146++struct ebml_block_additions {
1147++    struct ebml_block_more  *block_more;
1148++
1149++    int  n_block_more;
1150++};
1151++
1152++struct ebml_block_group {
1153++    bstr                          block;
1154++    uint64_t                      block_duration;
1155++    int64_t                      *reference_block;
1156++    int64_t                       discard_padding;
1157++    struct ebml_block_additions   block_additions;
1158++
1159++    int  n_block;
1160++    int  n_block_duration;
1161++    int  n_reference_block;
1162++    int  n_discard_padding;
1163++    int  n_block_additions;
1164++};
1165++
1166++struct ebml_cluster {
1167++    uint64_t                  timecode;
1168++    struct ebml_block_group  *block_group;
1169++    bstr                     *simple_block;
1170++
1171++    int  n_timecode;
1172++    int  n_block_group;
1173++    int  n_simple_block;
1174++};
1175++
1176++struct ebml_info {
1177++    bstr       segment_uid;
1178++    bstr       prev_uid;
1179++    bstr       next_uid;
1180++    uint64_t   timecode_scale;
1181++    int64_t    date_utc;
1182++    char *     title;
1183++    char *     muxing_app;
1184++    char *     writing_app;
1185++    double     duration;
1186++
1187++    int  n_segment_uid;
1188++    int  n_prev_uid;
1189++    int  n_next_uid;
1190++    int  n_timecode_scale;
1191++    int  n_date_utc;
1192++    int  n_title;
1193++    int  n_muxing_app;
1194++    int  n_writing_app;
1195++    int  n_duration;
1196++};
1197++
1198++struct ebml_seek {
1199++    uint32_t   seek_id;
1200++    uint64_t   seek_position;
1201++
1202++    int  n_seek_id;
1203++    int  n_seek_position;
1204++};
1205++
1206++struct ebml_seek_head {
1207++    struct ebml_seek  *seek;
1208++
1209++    int  n_seek;
1210++};
1211++
1212++struct ebml_segment {
1213++    struct ebml_seek_head    *seek_head;
1214++    struct ebml_info         *info;
1215++    struct ebml_cluster      *cluster;
1216++    struct ebml_tracks       *tracks;
1217++    struct ebml_cues          cues;
1218++    struct ebml_attachments   attachments;
1219++    struct ebml_chapters      chapters;
1220++    struct ebml_tags         *tags;
1221++
1222++    int  n_seek_head;
1223++    int  n_info;
1224++    int  n_cluster;
1225++    int  n_tracks;
1226++    int  n_cues;
1227++    int  n_attachments;
1228++    int  n_chapters;
1229++    int  n_tags;
1230++};
1231++
1232++struct ebml_ebml {
1233++    uint64_t   ebml_version;
1234++    uint64_t   ebml_read_version;
1235++    uint64_t   ebml_max_id_length;
1236++    uint64_t   ebml_max_size_length;
1237++    char *     doc_type;
1238++    uint64_t   doc_type_version;
1239++    uint64_t   doc_type_read_version;
1240++
1241++    int  n_ebml_version;
1242++    int  n_ebml_read_version;
1243++    int  n_ebml_max_id_length;
1244++    int  n_ebml_max_size_length;
1245++    int  n_doc_type;
1246++    int  n_doc_type_version;
1247++    int  n_doc_type_read_version;
1248++};
1249++extern const struct ebml_elem_desc ebml_ebml_desc;
1250++extern const struct ebml_elem_desc ebml_segment_desc;
1251++extern const struct ebml_elem_desc ebml_seek_head_desc;
1252++extern const struct ebml_elem_desc ebml_seek_desc;
1253++extern const struct ebml_elem_desc ebml_info_desc;
1254++extern const struct ebml_elem_desc ebml_cluster_desc;
1255++extern const struct ebml_elem_desc ebml_block_group_desc;
1256++extern const struct ebml_elem_desc ebml_block_additions_desc;
1257++extern const struct ebml_elem_desc ebml_block_more_desc;
1258++extern const struct ebml_elem_desc ebml_tracks_desc;
1259++extern const struct ebml_elem_desc ebml_track_entry_desc;
1260++extern const struct ebml_elem_desc ebml_video_desc;
1261++extern const struct ebml_elem_desc ebml_colour_desc;
1262++extern const struct ebml_elem_desc ebml_mastering_metadata_desc;
1263++extern const struct ebml_elem_desc ebml_projection_desc;
1264++extern const struct ebml_elem_desc ebml_audio_desc;
1265++extern const struct ebml_elem_desc ebml_content_encodings_desc;
1266++extern const struct ebml_elem_desc ebml_content_encoding_desc;
1267++extern const struct ebml_elem_desc ebml_content_compression_desc;
1268++extern const struct ebml_elem_desc ebml_cues_desc;
1269++extern const struct ebml_elem_desc ebml_cue_point_desc;
1270++extern const struct ebml_elem_desc ebml_cue_track_positions_desc;
1271++extern const struct ebml_elem_desc ebml_attachments_desc;
1272++extern const struct ebml_elem_desc ebml_attached_file_desc;
1273++extern const struct ebml_elem_desc ebml_chapters_desc;
1274++extern const struct ebml_elem_desc ebml_edition_entry_desc;
1275++extern const struct ebml_elem_desc ebml_chapter_atom_desc;
1276++extern const struct ebml_elem_desc ebml_chapter_display_desc;
1277++extern const struct ebml_elem_desc ebml_tags_desc;
1278++extern const struct ebml_elem_desc ebml_tag_desc;
1279++extern const struct ebml_elem_desc ebml_targets_desc;
1280++extern const struct ebml_elem_desc ebml_simple_tag_desc;
1281++
1282++#define MAX_EBML_SUBELEMENTS 24
1283+-- 
1284+2.44.0
1285+
+48, -0
 1@@ -0,0 +1,48 @@
 2+From d7c460e5ccc89d30165decb7579486d5bcc26ba4 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Tue, 2 Jul 2019 17:41:43 -0700
 5+Subject: [PATCH] Use memset to initialize large structures
 6+
 7+These are over 256 KiB in size.
 8+---
 9+ video/out/gpu/video.c | 17 ++++++++---------
10+ 1 file changed, 8 insertions(+), 9 deletions(-)
11+
12+diff --git a/video/out/gpu/video.c b/video/out/gpu/video.c
13+index 1478ec4687..49101b3f0d 100644
14+--- a/video/out/gpu/video.c
15++++ b/video/out/gpu/video.c
16+@@ -3630,7 +3630,7 @@ static void frame_perf_data(struct pass_info pass[], struct mp_frame_perf *out)
17+ 
18+ void gl_video_perfdata(struct gl_video *p, struct voctrl_performance_data *out)
19+ {
20+-    *out = (struct voctrl_performance_data){0};
21++    memset(out, 0, sizeof(*out));
22+     frame_perf_data(p->pass_fresh,  &out->fresh);
23+     frame_perf_data(p->pass_redraw, &out->redraw);
24+ }
25+@@ -4074,14 +4074,13 @@ struct gl_video *gl_video_init(struct ra *ra, struct mp_log *log,
26+                                struct mpv_global *g)
27+ {
28+     struct gl_video *p = talloc_ptrtype(NULL, p);
29+-    *p = (struct gl_video) {
30+-        .ra = ra,
31+-        .global = g,
32+-        .log = log,
33+-        .sc = gl_sc_create(ra, g, log),
34+-        .video_eq = mp_csp_equalizer_create(p, g),
35+-        .opts_cache = m_config_cache_alloc(p, g, &gl_video_conf),
36+-    };
37++    memset(p, 0, sizeof(*p));
38++    p->ra = ra;
39++    p->global = g;
40++    p->log = log;
41++    p->sc = gl_sc_create(ra, g, log);
42++    p->video_eq = mp_csp_equalizer_create(p, g);
43++    p->opts_cache = m_config_cache_alloc(p, g, &gl_video_conf);
44+     // make sure this variable is initialized to *something*
45+     p->pass = p->pass_fresh;
46+     struct gl_video_opts *opts = p->opts_cache->opts;
47+-- 
48+2.44.0
49+
+70, -0
 1@@ -0,0 +1,70 @@
 2+From 13ced625d99b119bde0bb207a6b2ace7098f3880 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Wed, 3 Jul 2019 02:21:16 -0700
 5+Subject: [PATCH] video/out/gpu: Prevent empty array when no compilers or
 6+ contexts are enabled
 7+
 8+---
 9+ video/out/gpu/context.c | 11 ++++++-----
10+ 1 file changed, 6 insertions(+), 5 deletions(-)
11+
12+diff --git a/video/out/gpu/context.c b/video/out/gpu/context.c
13+index 88d4f4232d..5630c81f88 100644
14+--- a/video/out/gpu/context.c
15++++ b/video/out/gpu/context.c
16+@@ -115,6 +115,7 @@ static const struct ra_ctx_fns *contexts[] = {
17+ #if HAVE_DMABUF_WAYLAND
18+     &ra_ctx_wldmabuf,
19+ #endif
20++    NULL
21+ };
22+ 
23+ static int ra_ctx_api_help(struct mp_log *log, const struct m_option *opt,
24+@@ -122,7 +123,7 @@ static int ra_ctx_api_help(struct mp_log *log, const struct m_option *opt,
25+ {
26+     mp_info(log, "GPU APIs (contexts):\n");
27+     mp_info(log, "    auto (autodetect)\n");
28+-    for (int n = 0; n < MP_ARRAY_SIZE(contexts); n++) {
29++    for (int n = 0; n < MP_ARRAY_SIZE(contexts) - 1; n++) {
30+         if (!contexts[n]->hidden)
31+             mp_info(log, "    %s (%s)\n", contexts[n]->type, contexts[n]->name);
32+     }
33+@@ -134,7 +135,7 @@ static inline OPT_STRING_VALIDATE_FUNC(ra_ctx_validate_api)
34+     struct bstr param = bstr0(*value);
35+     if (bstr_equals0(param, "auto"))
36+         return 1;
37+-    for (int i = 0; i < MP_ARRAY_SIZE(contexts); i++) {
38++    for (int i = 0; i < MP_ARRAY_SIZE(contexts) - 1; i++) {
39+         if (bstr_equals0(param, contexts[i]->type) && !contexts[i]->hidden)
40+             return 1;
41+     }
42+@@ -146,7 +147,7 @@ static int ra_ctx_context_help(struct mp_log *log, const struct m_option *opt,
43+ {
44+     mp_info(log, "GPU contexts (APIs):\n");
45+     mp_info(log, "    auto (autodetect)\n");
46+-    for (int n = 0; n < MP_ARRAY_SIZE(contexts); n++) {
47++    for (int n = 0; n < MP_ARRAY_SIZE(contexts) - 1; n++) {
48+         if (!contexts[n]->hidden)
49+             mp_info(log, "    %s (%s)\n", contexts[n]->name, contexts[n]->type);
50+     }
51+@@ -158,7 +159,7 @@ static inline OPT_STRING_VALIDATE_FUNC(ra_ctx_validate_context)
52+     struct bstr param = bstr0(*value);
53+     if (bstr_equals0(param, "auto"))
54+         return 1;
55+-    for (int i = 0; i < MP_ARRAY_SIZE(contexts); i++) {
56++    for (int i = 0; i < MP_ARRAY_SIZE(contexts) - 1; i++) {
57+         if (bstr_equals0(param, contexts[i]->name) && !contexts[i]->hidden)
58+             return 1;
59+     }
60+@@ -182,7 +183,7 @@ struct ra_ctx *ra_ctx_create(struct vo *vo, struct ra_ctx_opts opts)
61+     bool old_probing = vo->probing;
62+     vo->probing = opts.probing;
63+ 
64+-    for (int i = 0; i < MP_ARRAY_SIZE(contexts); i++) {
65++    for (int i = 0; i < MP_ARRAY_SIZE(contexts) - 1; i++) {
66+         if (contexts[i]->hidden)
67+             continue;
68+         if (!opts.probing && strcmp(contexts[i]->name, opts.context_name) != 0)
69+-- 
70+2.44.0
71+
+24, -0
 1@@ -0,0 +1,24 @@
 2+From 1c8ae213f7d683c69298f131d424c9006a9650d3 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Thu, 21 Jul 2022 14:00:02 -0700
 5+Subject: [PATCH] wayland: include <math.h> for ceil
 6+
 7+---
 8+ video/out/wayland_common.c | 1 +
 9+ 1 file changed, 1 insertion(+)
10+
11+diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c
12+index 3cebab9e99..4ec5c148e7 100644
13+--- a/video/out/wayland_common.c
14++++ b/video/out/wayland_common.c
15+@@ -18,6 +18,7 @@
16+ #include <errno.h>
17+ #include <limits.h>
18+ #include <linux/input-event-codes.h>
19++#include <math.h>
20+ #include <poll.h>
21+ #include <time.h>
22+ #include <unistd.h>
23+-- 
24+2.35.1
25+
+69, -0
 1@@ -0,0 +1,69 @@
 2+From ae44889fc30137f38b74cd0119fe7196c0a1b043 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Sun, 3 Dec 2023 11:57:01 -0800
 5+Subject: [PATCH] Support lua 5.4
 6+
 7+---
 8+ player/lua.c       | 5 -----
 9+ player/lua/osc.lua | 8 ++++----
10+ 2 files changed, 4 insertions(+), 9 deletions(-)
11+
12+diff --git a/player/lua.c b/player/lua.c
13+index 63547694e2..0b8c632acd 100644
14+--- a/player/lua.c
15++++ b/player/lua.c
16+@@ -455,11 +455,6 @@ static int load_lua(struct mp_script_args *args)
17+ 
18+     stats_register_thread_cputime(ctx->stats, "cpu");
19+ 
20+-    if (LUA_VERSION_NUM != 501 && LUA_VERSION_NUM != 502) {
21+-        MP_FATAL(ctx, "Only Lua 5.1 and 5.2 are supported.\n");
22+-        goto error_out;
23+-    }
24+-
25+     lua_State *L = ctx->state = luaL_newstate();
26+     if (!L) {
27+         MP_FATAL(ctx, "Could not initialize Lua.\n");
28+diff --git a/player/lua/osc.lua b/player/lua/osc.lua
29+index 3ba1890a92..945af861f0 100644
30+--- a/player/lua/osc.lua
31++++ b/player/lua/osc.lua
32+@@ -175,7 +175,7 @@ local margins_opts = {
33+ function get_virt_scale_factor()
34+     local w, h = mp.get_osd_size()
35+     if w <= 0 or h <= 0 then
36+-        return 0, 0
37++        return 1, 1
38+     end
39+     return osc_param.playresx / w, osc_param.playresy / h
40+ end
41+@@ -193,7 +193,7 @@ end
42+ 
43+ function set_virt_mouse_area(x0, y0, x1, y1, name)
44+     local sx, sy = get_virt_scale_factor()
45+-    mp.set_mouse_area(x0 / sx, y0 / sy, x1 / sx, y1 / sy, name)
46++    mp.set_mouse_area(x0 // sx, y0 // sy, x1 // sx, y1 // sy, name)
47+ end
48+ 
49+ function scale_value(x0, x1, y0, y1, val)
50+@@ -299,7 +299,7 @@ end
51+ 
52+ -- multiplies two alpha values, formular can probably be improved
53+ function mult_alpha(alphaA, alphaB)
54+-    return 255 - (((1-(alphaA/255)) * (1-(alphaB/255))) * 255)
55++    return alphaA + alphaB - alphaA * alphaB / 255
56+ end
57+ 
58+ function add_area(name, x1, y1, x2, y2)
59+@@ -318,7 +318,7 @@ function ass_append_alpha(ass, alpha, modifier)
60+         if state.animation then
61+             av = mult_alpha(av, state.animation)
62+         end
63+-        ar[ai] = av
64++        ar[ai] = math.floor(av)
65+     end
66+ 
67+     ass:append(string.format("{\\1a&H%X&\\2a&H%X&\\3a&H%X&\\4a&H%X&}",
68+-- 
69+2.44.0
70+
+26, -0
 1@@ -0,0 +1,26 @@
 2+From 2415a57a73ff5cdf9dab16a77a7917ca726ae109 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Wed, 14 Aug 2024 22:51:59 -0700
 5+Subject: [PATCH] Revert "wayland: fix missing lround in cursor surface"
 6+
 7+This reverts commit c1029aaa820de8193e2a466039d2acccca610fd6.
 8+---
 9+ video/out/wayland_common.c | 2 +-
10+ 1 file changed, 1 insertion(+), 1 deletion(-)
11+
12+diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c
13+index 5c4cccf3ef..edcc922122 100644
14+--- a/video/out/wayland_common.c
15++++ b/video/out/wayland_common.c
16+@@ -2010,7 +2010,7 @@ static int set_cursor_visibility(struct vo_wayland_seat *s, bool on)
17+             wl_pointer_set_cursor(s->pointer, s->pointer_enter_serial, wl->cursor_surface,
18+                                   img->hotspot_x / scale, img->hotspot_y / scale);
19+             wp_viewport_set_destination(wl->cursor_viewport, lround(img->width / scale),
20+-                                        lround(img->height / scale));
21++                                        img->height / scale);
22+             wl_surface_attach(wl->cursor_surface, buffer, 0, 0);
23+             wl_surface_damage_buffer(wl->cursor_surface, 0, 0, img->width, img->height);
24+         }
25+-- 
26+2.44.0
27+
+106, -0
  1@@ -0,0 +1,106 @@
  2+From 59550f4615bbf0a4e8bca23df163abfe37c52636 Mon Sep 17 00:00:00 2001
  3+From: Michael Forney <mforney@mforney.org>
  4+Date: Wed, 14 Aug 2024 22:52:17 -0700
  5+Subject: [PATCH] Revert "wayland: drop buffer scale for cursor as well"
  6+
  7+This reverts commit f0a6578259f508a8863afcf9a1487872d7ae1878.
  8+---
  9+ video/out/wayland_common.c | 32 +++++++++++++++++++++++---------
 10+ video/out/wayland_common.h |  1 -
 11+ 2 files changed, 23 insertions(+), 10 deletions(-)
 12+
 13+diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c
 14+index edcc922122..4ccd4bda9c 100644
 15+--- a/video/out/wayland_common.c
 16++++ b/video/out/wayland_common.c
 17+@@ -893,6 +893,7 @@ static void output_handle_done(void *data, struct wl_output *wl_output)
 18+      * geometry and scaling should be recalculated. */
 19+     if (wl->current_output && wl->current_output->output == wl_output) {
 20+         set_surface_scaling(wl);
 21++        spawn_cursor(wl);
 22+         set_geometry(wl, false);
 23+         prepare_resize(wl);
 24+     }
 25+@@ -957,6 +958,23 @@ static void surface_handle_enter(void *data, struct wl_surface *wl_surface,
 26+     if (outputs == 1)
 27+         update_output_geometry(wl, old_geometry, old_output_geometry);
 28+ 
 29++    wl->current_output->has_surface = true;
 30++    bool force_resize = false;
 31++
 32++    if (wl->scaling != wl->current_output->scale) {
 33++        set_surface_scaling(wl);
 34++        spawn_cursor(wl);
 35++        force_resize = true;
 36++    }
 37++
 38++    if (!mp_rect_equals(&old_output_geometry, &wl->current_output->geometry)) {
 39++        set_geometry(wl, false);
 40++        force_resize = true;
 41++    }
 42++
 43++    if (!mp_rect_equals(&old_geometry, &wl->geometry) || force_resize)
 44++        prepare_resize(wl);
 45++
 46+     MP_VERBOSE(wl, "Surface entered output %s %s (0x%x), scale = %f, refresh rate = %f Hz\n",
 47+                wl->current_output->make, wl->current_output->model,
 48+                wl->current_output->id, wl->scaling, wl->current_output->refresh_rate);
 49+@@ -1696,7 +1714,6 @@ static bool create_input(struct vo_wayland_state *wl)
 50+ static int create_viewports(struct vo_wayland_state *wl)
 51+ {
 52+     wl->viewport = wp_viewporter_get_viewport(wl->viewporter, wl->surface);
 53+-    wl->cursor_viewport = wp_viewporter_get_viewport(wl->viewporter, wl->cursor_surface);
 54+     wl->osd_viewport = wp_viewporter_get_viewport(wl->viewporter, wl->osd_surface);
 55+     wl->video_viewport = wp_viewporter_get_viewport(wl->viewporter, wl->video_surface);
 56+ 
 57+@@ -2009,8 +2026,7 @@ static int set_cursor_visibility(struct vo_wayland_seat *s, bool on)
 58+             int scale = MPMAX(wl->scaling, 1);
 59+             wl_pointer_set_cursor(s->pointer, s->pointer_enter_serial, wl->cursor_surface,
 60+                                   img->hotspot_x / scale, img->hotspot_y / scale);
 61+-            wp_viewport_set_destination(wl->cursor_viewport, lround(img->width / scale),
 62+-                                        img->height / scale);
 63++            wl_surface_set_buffer_scale(wl->cursor_surface, scale);
 64+             wl_surface_attach(wl->cursor_surface, buffer, 0, 0);
 65+             wl_surface_damage_buffer(wl->cursor_surface, 0, 0, img->width, img->height);
 66+         }
 67+@@ -2145,11 +2161,12 @@ static bool single_output_spanned(struct vo_wayland_state *wl)
 68+ 
 69+ static int spawn_cursor(struct vo_wayland_state *wl)
 70+ {
 71+-    if (wl->allocated_cursor_scale == wl->scaling) {
 72++    if (wl->cursor_shape_manager)
 73++        return 0;
 74++    if (wl->allocated_cursor_scale == wl->scaling)
 75+         return 0;
 76+-    } else if (wl->cursor_theme) {
 77++    else if (wl->cursor_theme)
 78+         wl_cursor_theme_destroy(wl->cursor_theme);
 79+-    }
 80+ 
 81+     const char *xcursor_theme = getenv("XCURSOR_THEME");
 82+     const char *size_str = getenv("XCURSOR_SIZE");
 83+@@ -2801,9 +2818,6 @@ void vo_wayland_uninit(struct vo *vo)
 84+     if (wl->viewport)
 85+         wp_viewport_destroy(wl->viewport);
 86+ 
 87+-    if (wl->cursor_viewport)
 88+-        wp_viewport_destroy(wl->cursor_viewport);
 89+-
 90+     if (wl->osd_viewport)
 91+         wp_viewport_destroy(wl->osd_viewport);
 92+ 
 93+diff --git a/video/out/wayland_common.h b/video/out/wayland_common.h
 94+index 7a2f31918e..f5fcb80445 100644
 95+--- a/video/out/wayland_common.h
 96++++ b/video/out/wayland_common.h
 97+@@ -139,7 +139,6 @@ struct vo_wayland_state {
 98+     /* viewporter */
 99+     struct wp_viewporter *viewporter;
100+     struct wp_viewport   *viewport;
101+-    struct wp_viewport   *cursor_viewport;
102+     struct wp_viewport   *osd_viewport;
103+     struct wp_viewport   *video_viewport;
104+ 
105+-- 
106+2.44.0
107+
+173, -0
  1@@ -0,0 +1,173 @@
  2+From 9c07bab33a0bd57fb74a0368a3d5483cc2820d77 Mon Sep 17 00:00:00 2001
  3+From: Michael Forney <mforney@mforney.org>
  4+Date: Wed, 14 Aug 2024 23:01:11 -0700
  5+Subject: [PATCH] Revert "wayland: drop buffer_scale use for viewporter"
  6+
  7+This reverts commit e32554cd570d984efb712a7214a40237233a3cea.
  8+---
  9+ video/out/opengl/context_wayland.c |  4 ++--
 10+ video/out/vo_dmabuf_wayland.c      |  6 ++++++
 11+ video/out/vo_wlshm.c               |  2 +-
 12+ video/out/vulkan/context_wayland.c |  2 +-
 13+ video/out/wayland_common.c         | 34 ++++++++++++++----------------
 14+ video/out/wayland_common.h         |  2 +-
 15+ 6 files changed, 27 insertions(+), 23 deletions(-)
 16+
 17+diff --git a/video/out/opengl/context_wayland.c b/video/out/opengl/context_wayland.c
 18+index 2c5611b2e6..26c52688d3 100644
 19+--- a/video/out/opengl/context_wayland.c
 20++++ b/video/out/opengl/context_wayland.c
 21+@@ -47,14 +47,14 @@ static void resize(struct ra_ctx *ctx)
 22+     const int32_t width = mp_rect_w(wl->geometry);
 23+     const int32_t height = mp_rect_h(wl->geometry);
 24+ 
 25+-    vo_wayland_handle_scale(wl);
 26+-
 27+     vo_wayland_set_opaque_region(wl, ctx->opts.want_alpha);
 28+     if (p->egl_window)
 29+         wl_egl_window_resize(p->egl_window, width, height, 0, 0);
 30+ 
 31+     wl->vo->dwidth  = width;
 32+     wl->vo->dheight = height;
 33++
 34++    vo_wayland_handle_fractional_scale(wl);
 35+ }
 36+ 
 37+ static bool wayland_egl_check_visible(struct ra_ctx *ctx)
 38+diff --git a/video/out/vo_dmabuf_wayland.c b/video/out/vo_dmabuf_wayland.c
 39+index 35a4dac464..040c73e8a1 100644
 40+--- a/video/out/vo_dmabuf_wayland.c
 41++++ b/video/out/vo_dmabuf_wayland.c
 42+@@ -781,6 +781,12 @@ static int preinit(struct vo *vo)
 43+         goto err;
 44+     }
 45+ 
 46++    if (!vo->wl->viewport) {
 47++        MP_FATAL(vo->wl, "Compositor doesn't support the %s protocol!\n",
 48++                 wp_viewporter_interface.name);
 49++        goto err;
 50++    }
 51++
 52+     if (vo->wl->single_pixel_manager) {
 53+ #if HAVE_WAYLAND_PROTOCOLS_1_27
 54+         p->solid_buffer = wp_single_pixel_buffer_manager_v1_create_u32_rgba_buffer(
 55+diff --git a/video/out/vo_wlshm.c b/video/out/vo_wlshm.c
 56+index 0b63426a23..0dd22ae940 100644
 57+--- a/video/out/vo_wlshm.c
 58++++ b/video/out/vo_wlshm.c
 59+@@ -215,7 +215,7 @@ static int resize(struct vo *vo)
 60+         talloc_free(buf);
 61+     }
 62+ 
 63+-    vo_wayland_handle_scale(wl);
 64++    vo_wayland_handle_fractional_scale(wl);
 65+ 
 66+     return mp_sws_reinit(p->sws);
 67+ }
 68+diff --git a/video/out/vulkan/context_wayland.c b/video/out/vulkan/context_wayland.c
 69+index cdf1ba60b8..761ff5b12c 100644
 70+--- a/video/out/vulkan/context_wayland.c
 71++++ b/video/out/vulkan/context_wayland.c
 72+@@ -118,7 +118,7 @@ static bool resize(struct ra_ctx *ctx)
 73+     const int32_t height = mp_rect_h(wl->geometry);
 74+ 
 75+     vo_wayland_set_opaque_region(wl, ctx->opts.want_alpha);
 76+-    vo_wayland_handle_scale(wl);
 77++    vo_wayland_handle_fractional_scale(wl);
 78+     return ra_vk_ctx_resize(ctx, width, height);
 79+ }
 80+ 
 81+diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c
 82+index 4ccd4bda9c..7da864b59f 100644
 83+--- a/video/out/wayland_common.c
 84++++ b/video/out/wayland_common.c
 85+@@ -1185,13 +1185,13 @@ static void handle_toplevel_config(void *data, struct xdg_toplevel *toplevel,
 86+         apply_keepaspect(wl, &width, &height);
 87+         wl->window_size.x0 = 0;
 88+         wl->window_size.y0 = 0;
 89+-        wl->window_size.x1 = lround(width * wl->scaling);
 90+-        wl->window_size.y1 = lround(height * wl->scaling);
 91++        wl->window_size.x1 = round(width * wl->scaling);
 92++        wl->window_size.y1 = round(height * wl->scaling);
 93+     }
 94+     wl->geometry.x0 = 0;
 95+     wl->geometry.y0 = 0;
 96+-    wl->geometry.x1 = lround(width * wl->scaling);
 97+-    wl->geometry.y1 = lround(height * wl->scaling);
 98++    wl->geometry.x1 = round(width * wl->scaling);
 99++    wl->geometry.y1 = round(height * wl->scaling);
100+ 
101+     if (mp_rect_equals(&old_geometry, &wl->geometry))
102+         return;
103+@@ -1713,11 +1713,13 @@ static bool create_input(struct vo_wayland_state *wl)
104+ 
105+ static int create_viewports(struct vo_wayland_state *wl)
106+ {
107+-    wl->viewport = wp_viewporter_get_viewport(wl->viewporter, wl->surface);
108+-    wl->osd_viewport = wp_viewporter_get_viewport(wl->viewporter, wl->osd_surface);
109+-    wl->video_viewport = wp_viewporter_get_viewport(wl->viewporter, wl->video_surface);
110++    if (wl->viewporter) {
111++        wl->viewport = wp_viewporter_get_viewport(wl->viewporter, wl->surface);
112++        wl->osd_viewport = wp_viewporter_get_viewport(wl->viewporter, wl->osd_surface);
113++        wl->video_viewport = wp_viewporter_get_viewport(wl->viewporter, wl->video_surface);
114++    }
115+ 
116+-    if (!wl->viewport || !wl->osd_viewport || !wl->video_viewport) {
117++    if (wl->viewporter && (!wl->viewport || !wl->osd_viewport || !wl->video_viewport)) {
118+         MP_ERR(wl, "failed to create viewport interfaces!\n");
119+         return 1;
120+     }
121+@@ -2125,6 +2127,7 @@ static void set_surface_scaling(struct vo_wayland_state *wl)
122+     wl->scaling = wl->current_output->scale;
123+     rescale_geometry(wl, old_scale);
124+     wl->pending_vo_events |= VO_EVENT_DPI;
125++    wl_surface_set_buffer_scale(wl->surface, wl->scaling);
126+ }
127+ 
128+ static void set_window_bounds(struct vo_wayland_state *wl)
129+@@ -2510,11 +2513,12 @@ int vo_wayland_control(struct vo *vo, int *events, int request, void *arg)
130+     return VO_NOTIMPL;
131+ }
132+ 
133+-void vo_wayland_handle_scale(struct vo_wayland_state *wl)
134++void vo_wayland_handle_fractional_scale(struct vo_wayland_state *wl)
135+ {
136+-    wp_viewport_set_destination(wl->viewport,
137+-                                lround(mp_rect_w(wl->geometry) / wl->scaling),
138+-                                lround(mp_rect_h(wl->geometry) / wl->scaling));
139++    if (wl->fractional_scale_manager && wl->viewport)
140++        wp_viewport_set_destination(wl->viewport,
141++                                    round(mp_rect_w(wl->geometry) / wl->scaling),
142++                                    round(mp_rect_h(wl->geometry) / wl->scaling));
143+ }
144+ 
145+ bool vo_wayland_init(struct vo *vo)
146+@@ -2575,12 +2579,6 @@ bool vo_wayland_init(struct vo *vo)
147+         goto err;
148+     }
149+ 
150+-    if (!wl->viewporter) {
151+-        MP_FATAL(wl, "Compositor doesn't support the required %s protocol!\n",
152+-                 wp_viewporter_interface.name);
153+-        goto err;
154+-    }
155+-
156+     /* Can't be initialized during registry due to multi-protocol dependence */
157+     if (create_viewports(wl))
158+         goto err;
159+diff --git a/video/out/wayland_common.h b/video/out/wayland_common.h
160+index f5fcb80445..c489c5db98 100644
161+--- a/video/out/wayland_common.h
162++++ b/video/out/wayland_common.h
163+@@ -170,7 +170,7 @@ bool vo_wayland_reconfig(struct vo *vo);
164+ int vo_wayland_allocate_memfd(struct vo *vo, size_t size);
165+ int vo_wayland_control(struct vo *vo, int *events, int request, void *arg);
166+ 
167+-void vo_wayland_handle_scale(struct vo_wayland_state *wl);
168++void vo_wayland_handle_fractional_scale(struct vo_wayland_state *wl);
169+ void vo_wayland_set_opaque_region(struct vo_wayland_state *wl, bool alpha);
170+ void vo_wayland_sync_swap(struct vo_wayland_state *wl);
171+ void vo_wayland_uninit(struct vo *vo);
172+-- 
173+2.44.0
174+
+70, -0
 1@@ -0,0 +1,70 @@
 2+From c951d848007b2938b805a4faf32e8c3344d45a43 Mon Sep 17 00:00:00 2001
 3+From: Michael Forney <mforney@mforney.org>
 4+Date: Thu, 15 Aug 2024 00:28:33 -0700
 5+Subject: [PATCH] Disable vo_gpu
 6+
 7+---
 8+ options/options.c     | 2 ++
 9+ video/out/vo.c        | 4 ++++
10+ video/out/vo_libmpv.c | 2 ++
11+ 3 files changed, 8 insertions(+)
12+
13+diff --git a/options/options.c b/options/options.c
14+index 8640ecb27f..f0f85a5b2d 100644
15+--- a/options/options.c
16++++ b/options/options.c
17+@@ -877,10 +877,12 @@ static const m_option_t mp_opts[] = {
18+     {"", OPT_SUBSTRUCT(demux_cache_opts, demux_cache_conf)},
19+     {"", OPT_SUBSTRUCT(stream_opts, stream_conf)},
20+ 
21++#if 0
22+     {"", OPT_SUBSTRUCT(ra_ctx_opts, ra_ctx_conf)},
23+     {"", OPT_SUBSTRUCT(gl_video_opts, gl_video_conf)},
24+     {"", OPT_SUBSTRUCT(gl_next_opts, gl_next_conf)},
25+     {"", OPT_SUBSTRUCT(spirv_opts, spirv_conf)},
26++#endif
27+ 
28+ #if HAVE_GL
29+     {"", OPT_SUBSTRUCT(opengl_opts, opengl_conf)},
30+diff --git a/video/out/vo.c b/video/out/vo.c
31+index db29690950..3081f9878d 100644
32+--- a/video/out/vo.c
33++++ b/video/out/vo.c
34+@@ -72,8 +72,10 @@ static const struct vo_driver *const video_out_drivers[] =
35+ #if HAVE_ANDROID
36+     &video_out_mediacodec_embed,
37+ #endif
38++#if 0
39+     &video_out_gpu,
40+     &video_out_gpu_next,
41++#endif
42+ #if HAVE_VDPAU
43+     &video_out_vdpau,
44+ #endif
45+@@ -304,7 +306,9 @@ static struct vo *vo_create(bool probing, struct mpv_global *global,
46+     m_config_cache_set_dispatch_change_cb(vo->opts_cache, vo->in->dispatch,
47+                                           update_opts, vo);
48+ 
49++#if 0
50+     vo->gl_opts_cache = m_config_cache_alloc(NULL, global, &gl_video_conf);
51++#endif
52+     vo->eq_opts_cache = m_config_cache_alloc(NULL, global, &mp_csp_equalizer_conf);
53+ 
54+     mp_input_set_mouse_transform(vo->input_ctx, NULL, NULL);
55+diff --git a/video/out/vo_libmpv.c b/video/out/vo_libmpv.c
56+index 7974eed3f7..cf8d7ff477 100644
57+--- a/video/out/vo_libmpv.c
58++++ b/video/out/vo_libmpv.c
59+@@ -112,7 +112,9 @@ struct mpv_render_context {
60+ };
61+ 
62+ const struct render_backend_fns *render_backends[] = {
63++#if 0
64+     &render_backend_gpu,
65++#endif
66+     &render_backend_sw,
67+     NULL
68+ };
69+-- 
70+2.44.0
71+
+1, -0
1@@ -0,0 +1 @@
2+Subproject commit 02254b92dd237f03aa0a151c2a68778c4ea848f9
+1, -0
1@@ -0,0 +1 @@
2+0.38.0 r0
+9, -0
 1@@ -0,0 +1,9 @@
 2+{
 3+	version = $0
 4+}
 5+
 6+END {
 7+	printf("#define VERSION \"%s\"\n", version)
 8+	print("#define BUILDDATE \"UNKNOWN\"")
 9+	print("#define MPVCOPYRIGHT \"Copyright © 2000-2024 mpv/MPlayer/mplayer2 projects\"")
10+}
+2, -0
1@@ -0,0 +1,2 @@
2+/opus-1.3.1.tar.gz
3+/src
+6, -0
1@@ -0,0 +1,6 @@
2+#define HAVE_LRINTF
3+#if __STDC_NO_VLA__
4+#define USE_ALLOCA
5+#else
6+#define VAR_ARRAYS
7+#endif
+166, -0
  1@@ -0,0 +1,166 @@
  2+cflags{
  3+	'-Wall', '-Wpedantic',
  4+	'-D OPUS_BUILD',
  5+	'-I $srcdir/include',
  6+	'-I $srcdir/celt',
  7+	'-I $srcdir/silk',
  8+	'-I $srcdir/silk/float',
  9+	'-include $dir/config.h',
 10+}
 11+
 12+pkg.hdrs = copy('$outdir/include', '$srcdir/include', {
 13+	'opus.h',
 14+	'opus_defines.h',
 15+	'opus_multistream.h',
 16+	'opus_types.h',
 17+})
 18+
 19+lib('libopus.a', [[
 20+	src/(
 21+		opus.c
 22+		opus_decoder.c
 23+		opus_encoder.c
 24+		opus_multistream.c
 25+		opus_multistream_encoder.c
 26+		opus_multistream_decoder.c
 27+		repacketizer.c
 28+		opus_projection_encoder.c
 29+		opus_projection_decoder.c
 30+		mapping_matrix.c
 31+
 32+		analysis.c
 33+		mlp.c
 34+		mlp_data.c
 35+	)
 36+	celt/(
 37+		bands.c
 38+		celt.c
 39+		celt_encoder.c
 40+		celt_decoder.c
 41+		cwrs.c
 42+		entcode.c
 43+		entdec.c
 44+		entenc.c
 45+		kiss_fft.c
 46+		laplace.c
 47+		mathops.c
 48+		mdct.c
 49+		modes.c
 50+		pitch.c
 51+		celt_lpc.c
 52+		quant_bands.c
 53+		rate.c
 54+		vq.c
 55+	)
 56+	silk/(
 57+		CNG.c
 58+		code_signs.c
 59+		init_decoder.c
 60+		decode_core.c
 61+		decode_frame.c
 62+		decode_parameters.c
 63+		decode_indices.c
 64+		decode_pulses.c
 65+		decoder_set_fs.c
 66+		dec_API.c
 67+		enc_API.c
 68+		encode_indices.c
 69+		encode_pulses.c
 70+		gain_quant.c
 71+		interpolate.c
 72+		LP_variable_cutoff.c
 73+		NLSF_decode.c
 74+		NSQ.c
 75+		NSQ_del_dec.c
 76+		PLC.c
 77+		shell_coder.c
 78+		tables_gain.c
 79+		tables_LTP.c
 80+		tables_NLSF_CB_NB_MB.c
 81+		tables_NLSF_CB_WB.c
 82+		tables_other.c
 83+		tables_pitch_lag.c
 84+		tables_pulses_per_block.c
 85+		VAD.c
 86+		control_audio_bandwidth.c
 87+		quant_LTP_gains.c
 88+		VQ_WMat_EC.c
 89+		HP_variable_cutoff.c
 90+		NLSF_encode.c
 91+		NLSF_VQ.c
 92+		NLSF_unpack.c
 93+		NLSF_del_dec_quant.c
 94+		process_NLSFs.c
 95+		stereo_LR_to_MS.c
 96+		stereo_MS_to_LR.c
 97+		check_control_input.c
 98+		control_SNR.c
 99+		init_encoder.c
100+		control_codec.c
101+		A2NLSF.c
102+		ana_filt_bank_1.c
103+		biquad_alt.c
104+		bwexpander_32.c
105+		bwexpander.c
106+		debug.c
107+		decode_pitch.c
108+		inner_prod_aligned.c
109+		lin2log.c
110+		log2lin.c
111+		LPC_analysis_filter.c
112+		LPC_inv_pred_gain.c
113+		table_LSF_cos.c
114+		NLSF2A.c
115+		NLSF_stabilize.c
116+		NLSF_VQ_weights_laroia.c
117+		pitch_est_tables.c
118+		resampler.c
119+		resampler_down2_3.c
120+		resampler_down2.c
121+		resampler_private_AR2.c
122+		resampler_private_down_FIR.c
123+		resampler_private_IIR_FIR.c
124+		resampler_private_up2_HQ.c
125+		resampler_rom.c
126+		sigm_Q15.c
127+		sort.c
128+		sum_sqr_shift.c
129+		stereo_decode_pred.c
130+		stereo_encode_pred.c
131+		stereo_find_predictor.c
132+		stereo_quant_pred.c
133+		LPC_fit.c
134+		float/(
135+			apply_sine_window_FLP.c
136+			corrMatrix_FLP.c
137+			encode_frame_FLP.c
138+			find_LPC_FLP.c
139+			find_LTP_FLP.c
140+			find_pitch_lags_FLP.c
141+			find_pred_coefs_FLP.c
142+			LPC_analysis_filter_FLP.c
143+			LTP_analysis_filter_FLP.c
144+			LTP_scale_ctrl_FLP.c
145+			noise_shape_analysis_FLP.c
146+			process_gains_FLP.c
147+			regularize_correlations_FLP.c
148+			residual_energy_FLP.c
149+			warped_autocorrelation_FLP.c
150+			wrappers_FLP.c
151+			autocorrelation_FLP.c
152+			burg_modified_FLP.c
153+			bwexpander_FLP.c
154+			energy_FLP.c
155+			inner_product_FLP.c
156+			k2a_FLP.c
157+			LPC_inv_pred_gain_FLP.c
158+			pitch_analysis_core_FLP.c
159+			scale_copy_vector_FLP.c
160+			scale_vector_FLP.c
161+			schur_FLP.c
162+			sort_FLP.c
163+		)
164+	)
165+]])
166+
167+fetch 'curl'
+1, -0
1@@ -0,0 +1 @@
2+65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d  opus-1.3.1.tar.gz
+1, -0
1@@ -0,0 +1 @@
2+url = "https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz"
+1, -0
1@@ -0,0 +1 @@
2+1.3.1 r0
+3, -0
1@@ -0,0 +1,3 @@
2+/host.ninja
3+/src
4+/texi2mdoc-0.1.2.tgz
+17, -0
 1@@ -0,0 +1,17 @@
 2+cflags{
 3+        '-D __BEGIN_DECLS=',
 4+        '-D __END_DECLS=',
 5+        '-Wall',
 6+}
 7+
 8+sub('host.ninja', function()
 9+	toolchain(config.host)
10+	cflags{'-D __BEGIN_DECLS=', '-D __END_DECLS='}
11+	set('outdir', '$outdir/host')
12+	exe('texi2mdoc', {'main.c', 'util.c'})
13+end)
14+
15+file('bin/texi2mdoc', '755', exe('texi2mdoc', {'main.c', 'util.c'}))
16+man{'texi2mdoc.1'}
17+
18+fetch 'curl'
+180, -0
  1@@ -0,0 +1,180 @@
  2+From 5b40a091f4d31fa6d21a84536f5998135faf6dfa Mon Sep 17 00:00:00 2001
  3+From: schwarze <schwarze>
  4+Date: Tue, 13 Nov 2018 08:45:29 +0000
  5+Subject: [PATCH] Add the -d option to specify the .Dd date, and fall back to
  6+ the mtime before resorting to the current time. Patch from Michael Forney
  7+ <mforney at mforney dot org> with minimal tweaks by me.
  8+Upstream: Yes, main.c@1.72 util.c@1.35
  9+
 10+While here, fix the date format, "%F" is wrong for mdoc(7).
 11+Change it to "%B %e, %Y" which isn't perfect due to the
 12+spurious blank before single-digit day numbers, but closer.
 13+---
 14+ extern.h    |  1 +
 15+ main.c      | 35 ++++++++++++++++++++++++++---------
 16+ texi2mdoc.1 | 14 +++++++++++++-
 17+ util.c      |  1 -
 18+ 4 files changed, 40 insertions(+), 11 deletions(-)
 19+
 20+diff --git a/extern.h b/extern.h
 21+index f713e0b..643edde 100644
 22+--- a/extern.h
 23++++ b/extern.h
 24+@@ -365,6 +365,7 @@ struct	texi {
 25+ 	size_t		  dirsz; /* number of texi directories */
 26+ 	char		 *title; /* title of document */
 27+ 	char		 *subtitle; /* subtitle of document */
 28++	char		 *date; /* date of document */
 29+ 	int		  secoffs; /* see sectioner() */
 30+ 	char		**indexs; /* @defindex indices */
 31+ 	size_t		  indexsz; /* entries in indexs */
 32+diff --git a/main.c b/main.c
 33+index d343727..308fe5e 100644
 34+--- a/main.c
 35++++ b/main.c
 36+@@ -17,6 +17,9 @@
 37+ #if defined(__linux__) || defined(__MINT__)
 38+ # define _GNU_SOURCE /* memmem */
 39+ #endif
 40++
 41++#include <sys/stat.h>
 42++
 43+ #include <assert.h>
 44+ #include <ctype.h>
 45+ #include <getopt.h>
 46+@@ -1587,8 +1590,6 @@ static void
 47+ dotop(struct texi *p, enum texicmd cmd, size_t *pos)
 48+ {
 49+ 	const char	*cp;
 50+-	time_t		 t;
 51+-	char		 date[32];
 52+ 
 53+ 	if (--p->ign)
 54+ 		texierr(p, "@top command while ignoring");
 55+@@ -1598,13 +1599,11 @@ dotop(struct texi *p, enum texicmd cmd, size_t *pos)
 56+ 	 * We use the title set with @settitle for the `Nd' description
 57+ 	 * and the source document filename (the first one as invoked on
 58+ 	 * the command line) for the title.
 59+-	 * The date is set to the current date.
 60++	 * The date is set to the modification time of the input.
 61+ 	 */
 62+-	t = time(NULL);
 63+-	strftime(date, sizeof(date), "%F", localtime(&t));
 64+ 
 65+ 	teximacroopen(p, "Dd");
 66+-	texiputchars(p, date);
 67++	texiputchars(p, p->date);
 68+ 	teximacroclose(p);
 69+ 	teximacroopen(p, "Dt");
 70+ 	for (cp = p->title; '\0' != *cp; cp++)
 71+@@ -1864,9 +1863,12 @@ int
 72+ main(int argc, char *argv[])
 73+ {
 74+ 	struct texi	 texi;
 75+-	int		 c;
 76++	char		 date[32];
 77++	struct stat	 st;
 78+ 	char		*dirpath, *dir, *ccp;
 79+ 	const char	*progname, *Idir, *cp;
 80++	time_t		 t;
 81++	int		 c;
 82+ 
 83+ 	progname = strrchr(argv[0], '/');
 84+ 	if (progname == NULL)
 85+@@ -1878,8 +1880,11 @@ main(int argc, char *argv[])
 86+ 	texi.ign = 1;
 87+ 	Idir = NULL;
 88+ 
 89+-	while (-1 != (c = getopt(argc, argv, "I:"))) 
 90++	while (-1 != (c = getopt(argc, argv, "d:I:")))
 91+ 		switch (c) {
 92++		case ('d'):
 93++			texi.date = optarg;
 94++			break;
 95+ 		case ('I'):
 96+ 			Idir = optarg;
 97+ 			break;
 98+@@ -1905,16 +1910,28 @@ main(int argc, char *argv[])
 99+ 			*ccp = '\0';
100+ 		texi.dirs = parsedirs(&texi, dir, Idir, &texi.dirsz);
101+ 		free(dirpath);
102++		if (NULL == texi.date) {
103++			t = stat(argv[0], &st) == 0 ? st.st_mtime : time(NULL);
104++			strftime(date, sizeof(date),
105++			     "%B %e, %Y", localtime(&t));
106++			texi.date = date;
107++		}
108+ 		parsefile(&texi, argv[0], 1);
109+ 	} else {
110+ 		texi.title = strdup("Unknown Manual");
111+ 		texi.dirs = parsedirs(&texi, NULL, Idir, &texi.dirsz);
112++		if (NULL == texi.date) {
113++			t = time(NULL);
114++			strftime(date, sizeof(date),
115++			     "%B %e, %Y", localtime(&t));
116++			texi.date = date;
117++		}
118+ 		parsestdin(&texi);
119+ 	}
120+ 
121+ 	texiexit(&texi);
122+ 	return(EXIT_FAILURE);
123+ usage:
124+-	fprintf(stderr, "usage: %s [-Idirs] [file]\n", progname);
125++	fprintf(stderr, "usage: %s [-d date] [-I dirs] [file]\n", progname);
126+ 	return(EXIT_FAILURE);
127+ }
128+diff --git a/texi2mdoc.1 b/texi2mdoc.1
129+index 9f8169e..f479adc 100644
130+--- a/texi2mdoc.1
131++++ b/texi2mdoc.1
132+@@ -14,7 +14,7 @@
133+ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
134+ .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
135+ .\"
136+-.Dd $Mdocdate: February 25 2015 $
137++.Dd $Mdocdate: November 13 2018 $
138+ .Dt TEXI2MDOC 1
139+ .Os
140+ .Sh NAME
141+@@ -22,6 +22,7 @@
142+ .Nd convert texinfo documents to mdoc
143+ .Sh SYNOPSIS
144+ .Nm texi2mdoc
145++.Op Fl d Ar date
146+ .Op Fl I Ar dirs
147+ .Op Ar file
148+ .Sh DESCRIPTION
149+@@ -39,6 +40,17 @@ By default,
150+ reads from standard input.
151+ Its arguments are as follows:
152+ .Bl -tag -width Ds
153++.It Fl d Ar date
154++Set the output document date in the
155++.Ic \&Dd
156++macro to
157++.Ar date ,
158++to be specified in the format
159++.Dq Ar Month Day , Year .
160++If unspecified,
161++.Nm
162++uses the file modification date
163++or the current date when reading from standard input.
164+ .It Fl I Ar dirs
165+ Colon-separated directories to search for
166+ .Li @include
167+diff --git a/util.c b/util.c
168+index 944872f..c6de818 100644
169+--- a/util.c
170++++ b/util.c
171+@@ -27,7 +27,6 @@
172+ #include <stdio.h>
173+ #include <stdlib.h>
174+ #include <string.h>
175+-#include <time.h>
176+ #include <unistd.h>
177+ 
178+ #include "extern.h"
179+-- 
180+2.19.1
181+
+1, -0
1@@ -0,0 +1 @@
2+7a45fd87c27cc8970a18db9ddddb2f09f18b8dd5152bf0ca377c3a5e7d304bfe  texi2mdoc-0.1.2.tgz
+1, -0
1@@ -0,0 +1 @@
2+url = "http://mandoc.bsd.lv/texi2mdoc/snapshots/texi2mdoc-0.1.2.tgz"
+1, -0
1@@ -0,0 +1 @@
2+0.1.2 r0
+6, -0
 1@@ -55,6 +55,12 @@ return {
 2 		'transmission',
 3 		'wpa_supplicant',
 4 	},
 5+	media={
 6+		'alsa-lib',
 7+		'ffmpeg',
 8+		'mpv',
 9+		'tinyalsa',
10+		},
11 	desktop={
12 		'liberation-fonts',
13 		'adobe-source-fonts',