commit 9a54093
hovercats
·
2024-08-30 09:34:56 +0000 UTC
parent 70fe167
import sets.media + deps from oasis
94 files changed,
+31451,
-0
M
sets.lua
+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'
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+
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+
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+
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+
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+
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+
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'
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+
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};')
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+
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+
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+
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+
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+
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+
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'
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+.
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+
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+
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+
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+
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+
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+
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'
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
M
sets.lua
+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',