summaryrefslogtreecommitdiffstats
path: root/DOCS
diff options
context:
space:
mode:
Diffstat (limited to 'DOCS')
-rw-r--r--DOCS/compatibility.rst22
-rw-r--r--DOCS/compile-windows.md438
-rw-r--r--DOCS/contribute.md5
-rw-r--r--DOCS/interface-changes.rst8
-rw-r--r--DOCS/interface-changes/cmd-nonrepeatable.txt1
-rw-r--r--DOCS/interface-changes/dolby-vision-configuration.txt1
-rw-r--r--DOCS/interface-changes/egl-output-format.txt2
-rw-r--r--DOCS/interface-changes/input-builtin-dragging.txt1
-rw-r--r--DOCS/interface-changes/input-dragging-deadzone.txt1
-rw-r--r--DOCS/interface-changes/input-select.txt2
-rw-r--r--DOCS/interface-changes/input-touch-emulate-mouse.txt1
-rw-r--r--DOCS/interface-changes/keybind-cancel.txt2
-rw-r--r--DOCS/interface-changes/native-touch.txt4
-rw-r--r--DOCS/interface-changes/option-info-expects-file.txt1
-rw-r--r--DOCS/interface-changes/osdscale.txt3
-rw-r--r--DOCS/interface-changes/show-playlist-titles.txt2
-rw-r--r--DOCS/interface-changes/sub-ass-override-default.txt3
-rw-r--r--DOCS/interface-changes/touch-pos.txt1
-rw-r--r--DOCS/man/ao.rst4
-rw-r--r--DOCS/man/console.rst1
-rw-r--r--DOCS/man/encode.rst2
-rw-r--r--DOCS/man/input.rst36
-rw-r--r--DOCS/man/lua.rst26
-rw-r--r--DOCS/man/mpv.rst40
-rw-r--r--DOCS/man/options.rst97
-rw-r--r--DOCS/man/osc.rst34
-rw-r--r--DOCS/man/stats.rst17
-rw-r--r--DOCS/man/vf.rst14
-rw-r--r--DOCS/man/vo.rst4
29 files changed, 522 insertions, 251 deletions
diff --git a/DOCS/compatibility.rst b/DOCS/compatibility.rst
index 3d6ec2cdfc..aeef8fc7ca 100644
--- a/DOCS/compatibility.rst
+++ b/DOCS/compatibility.rst
@@ -29,7 +29,16 @@ All of these are important for interfacing both with end users and API users
(which include Lua scripts, libmpv, and the JSON IPC). As such, they constitute
a large part of the user interface and APIs.
-All incompatible changes to this must be declared in interface-changes.rst.
+Certain options and commands may have documented default values. These default
+values are considered a part of the API since scripts may already rely on these
+documented behaviors. Changing these defaults are considered incompatible
+changes and must be documented. Undocumented default values do not subject to
+this requirement, and it is recommended to discourage such usage in the related
+documentations if there is a need to frequently change such defaults.
+
+All incompatible changes to this must be declared in interface-changes.rst,
+which include the types of changes, the impact of these changes, and suggested
+actions to address such impact so that the incompatibility is alleviated.
(This may also list compatible additions, but it's not a requirement.)
Degrees of importance and compatibility preservation
@@ -49,8 +58,17 @@ functionality still works, and a replacement is available (if technically
reasonable). For example, a feature deprecated in mpv 0.30.0 may be removed in
mpv 0.32.0. Minor releases do not count towards this.
+Under extraordinary circumstances, such as missed incompatible changes that are
+already included in a release, critical security fixes, or a severe shortage of
+developer time to address the known incompatible changes, important/often used
+parts may be broken immediately, but the change must be extensively documented:
+all of the related documentations (including manpage, interface-changes.rst,
+etc., retrospectively modified if applicable) must clearly state the following:
+the fact that the change is a breaking change; the version when the breaking
+change happened; and the reason, impact, and suggested remedy actions.
+
Less useful parts can be broken immediately, but must come with some sort of
-removal warning-
+removal warning.
Parts for debugging and testing may be removed any time, potentially even
without any sort of documentation.
diff --git a/DOCS/compile-windows.md b/DOCS/compile-windows.md
index 04bc200f37..f2b2ba65db 100644
--- a/DOCS/compile-windows.md
+++ b/DOCS/compile-windows.md
@@ -1,214 +1,270 @@
-Compiling for Windows
-=====================
-
-Compiling for Windows is supported with MinGW-w64. This can be used to produce
-both 32-bit and 64-bit executables, and it works for building on Windows and
-cross-compiling from Linux and Cygwin. MinGW-w64 is available from:
-https://www.mingw-w64.org/
-
-While building a complete MinGW-w64 toolchain yourself is possible, there are a
-few build environments and scripts to help ease the process, such as MSYS2 and
-MXE. Note that MinGW environments included in Linux distributions are often
-broken, outdated and useless, and usually don't use MinGW-w64.
-
-**Warning**: the original MinGW (https://osdn.net/projects/mingw/) is unsupported.
-
-Cross-compilation
-=================
-
-When cross-compiling, it is recommended to use a meson crossfile to setup
-the cross compiling environment. A minimal example is included below:
-
-```ini
-[binaries]
-c = 'x86_64-w64-mingw32-gcc'
-cpp = 'x86_64-w64-mingw32-g++'
-ar = 'x86_64-w64-mingw32-ar'
-strip = 'x86_64-w64-mingw32-strip'
-exe_wrapper = 'wine64'
-
-[host_machine]
-system = 'windows'
-cpu_family = 'x86_64'
-cpu = 'x86_64'
-endian = 'little'
+# Compiling for Windows
+
+Compiling for Windows is supported using GNU-like compilers (GCC/Clang). Clang
+is compatible with both the ``w64-windows-gnu`` [MinGW-w64](https://www.mingw-w64.org/)
+and ``pc-windows-msvc`` [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk)
+targets. It supports the production of both 32-bit and 64-bit binaries and is
+suitable for building on Windows as well as cross-compiling from Linux and Cygwin.
+
+Although it is possible to build a complete MinGW-w64 toolchain yourself, there
+are build environments and scripts available to simplify the process, such as
+MSYS2 on Windows or a packaged toolchain provided by your favorite Linux
+distribution. Note that MinGW-w64 environments included in Linux distributions
+can vary in versions. As a general guideline, mpv only supports the MinGW-w64
+toolchain version included in the latest Ubuntu LTS release.
+
+mpv employs Meson for building, and the process is the same as any standard Meson
+compilation.
+
+For the most up-to-date reference on build scripts, you can refer to
+[build.yml](https://github.com/mpv-player/mpv/blob/master/.github/workflows/build.yml),
+which builds and tests all supported configurations: ``MinGW-w64``, ``Windows SDK``,
+and ``MSYS2`` builds.
+
+## Cross-compilation
+
+When cross-compiling, it is recommended to use a Meson ``--cross-file`` to set up the
+cross-compiling environment. For a basic example, please refer to
+[Cross-compilation](https://mesonbuild.com/Cross-compilation.html).
+
+Alternatively, consider using [mpv-winbuild-cmake](https://github.com/shinchiro/mpv-winbuild-cmake),
+which bootstraps a MinGW-w64 toolchain and builds mpv along with its dependencies.
+
+### Example with Meson
+
+1. Create ``cross-file.txt`` with definitions for your toolchain and target platform.
+ Refer to [x86_64-w64-mingw32.txt](https://mesonbuild.com/Cross-compilation.html)
+ as a directly usable example.
+ - **Important**: Beware of pkg-config usage. By default, it uses build machine
+ files for dependency detection, even when ``--cross-file`` is used. It must
+ be configured correctly. Refer to ``pkg_config_libdir`` and ``sys_root``
+ in the [documentation](https://mesonbuild.com/Cross-compilation.html#defining-the-environment)
+ for proper setup. **In this example pkg-config is not used/required.**
+2. Initialize subprojects. This step is optional; other methods are also
+ available to provide the necessary dependencies.
+
+ ``` bash
+ # Update the subprojects database from Meson's WrapDB.
+ meson wrap update-db
+
+ # Explicitly download wraps as nested projects may have older versions of them.
+ meson wrap install expat
+ meson wrap install harfbuzz
+ meson wrap install libpng
+ meson wrap install zlib
+
+ # Add wraps for mpv's required dependencies
+ mkdir -p subprojects
+
+ cat <<EOF > subprojects/libplacebo.wrap
+ [wrap-git]
+ url = https://github.com/haasn/libplacebo
+ revision = master
+ depth = 1
+ clone-recursive = true
+ EOF
+
+ cat <<EOF > subprojects/libass.wrap
+ [wrap-git]
+ revision = master
+ url = https://github.com/libass/libass
+ depth = 1
+ EOF
+
+ # For FFmpeg, use Meson's build system port; alternatively, you can compile
+ # the upstream version yourself. See https://trac.ffmpeg.org/wiki/CompilationGuide
+ cat <<EOF > subprojects/ffmpeg.wrap
+ [wrap-git]
+ url = https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg.git
+ revision = meson-6.1
+ depth = 1
+ [provide]
+ libavcodec = libavcodec_dep
+ libavdevice = libavdevice_dep
+ libavfilter = libavfilter_dep
+ libavformat = libavformat_dep
+ libavutil = libavutil_dep
+ libswresample = libswresample_dep
+ libswscale = libswscale_dep
+ EOF
+ ```
+
+3. Build
+
+ ``` bash
+ meson setup -Ddefault_library=static -Dprefer_static=true \
+ -Dc_link_args='-static' -Dcpp_link_args='-static' \
+ --cross-file cross-file.txt build
+
+ ninja -C build mpv.exe mpv.com
+ ```
+
+ This will produce fully portabiel, statically linked, ``mpv.exe`` and ``mpv.com``
+ binaries.
+
+#### Building libmpv
+
+- To also build ``libmpv``, execute the following commands:
+
+ ``` bash
+ # For a static library
+ meson configure build -Dlibmpv=true -Ddefault_library=static
+ ninja -C build libmpv.a
+
+ # For a shared library
+ meson configure build -Dlibmpv=true -Ddefault_library=shared
+ ninja -C build libmpv-2.dll
+ ```
+
+- Depending on the use case, you might want to use ``-Dgpl=false`` and review
+ similar options for subprojects.
+- If any of Meson's subprojects are not linked statically, you might need to
+ specify options like the following example for ffmpeg:
+ ``-Dffmpeg:default_library=static``.
+
+#### Enabling more mpv features
+
+The process above produces a basic mpv build. You can enable additional features.
+Check the Meson
+[WrapDB packages](https://mesonbuild.com/Wrapdb-projects.html) for available
+dependencies or by providing them through other means.
+
+Enhancing mpv with more features is as simple as adding more arguments to the
+Meson setup command, for example:
+
+``` bash
+-Dlua=enabled -Djavascript=enabled -Dlcms2=enabled -Dlibplacebo:lcms=enabled
```
-See [meson's documentation](https://mesonbuild.com/Cross-compilation.html) for
-more information.
+they will be automatically downloaded and built by Meson.
+
+## Native Compilation with Clang (Windows SDK Build)
+
+1. Install [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022)
+ or the full [Visual Studio](https://visualstudio.microsoft.com/downloads/#visual-studio-community-2022):
+ - From the installer, select the necessary components:
+ - Clang compiler for Windows
+ - C++ CMake tools for Windows
+ - Windows SDK
+ - Activate the developer shell:
+ ```
+ & "<Visual Studio Path>\Common7\Tools\Launch-VsDevShell.ps1" -Arch amd64 -HostArch amd64 -SkipAutomaticLocation | Out-Null
+ ```
+2. Install Meson, as outlined in [Getting Meson](https://mesonbuild.com/Getting-meson.html):
+ - **Important**: At the time of writing, there is an issue in Meson with
+ escaping response files.
+
+ See: [mesonbuild/meson#8981](https://github.com/mesonbuild/meson/issues/8981)
+ and [mesonbuild/meson#11715](https://github.com/mesonbuild/meson/pull/11715)
+
+ If you wish to install a fixed version, follow the steps outlined
+ [here](https://github.com/mpv-player/mpv/blob/481e498427fc34956ad24b94157553908f5cd638/.github/workflows/build.yml#L132-L135).
+3. The following build script utilizes the Meson subprojects system to build mpv and its dependencies.
+ To make sure all dependency versions are up-to-date, update the subprojects database from Meson's WrapDB.
+ Also explicitly download several wraps as some nested projects may pull older versions of them.
+ ```
+ meson wrap update-db
+
+ meson wrap install expat
+ meson wrap install harfbuzz
+ meson wrap install libpng
+ meson wrap install zlib
+ ```
+4. Set environment variables or use the `--native-file` option in Meson.
+ ```powershell
+ $env:CC = 'clang'
+ $env:CXX = 'clang++'
+ $env:CC_LD = 'lld'
+ $env:CXX_LD = 'lld'
+ $env:WINDRES = 'llvm-rc'
+ ```
+ Note that some dependencies (e.g. LuaJIT) may require `sed` to configure. Fortunately, it is already bundled in
+ [Git for Windows](https://www.git-scm.com/download/win):
+ ```powershell
+ $env:PATH += ';<Git Path>\usr\bin'
+ ```
+5. Execute [ci\build-win32.ps1](https://github.com/mpv-player/mpv/blob/master/ci/build-win32.ps1). Refer to the script for more details.
+
+This process will produce a fully static ``mpv.exe`` and ``mpv.com``, as well as
+a static ``libmpv.a``.
+
+## Native Compilation with MSYS2
+
+For Windows developers seeking a quick setup, MSYS2 is an effective tool for
+compiling mpv natively on a Windows machine. The MSYS2 repositories provide
+binary packages for most of mpv's dependencies, simplifying the process to
+primarily involve building mpv itself.
+
+### Installing MSYS2
+
+1. Follow the installation steps from [MSYS2](https://www.msys2.org/).
+2. Initiate one of the [Environments](https://www.msys2.org/docs/environments/),
+ with the CLANG64 (``clang64.exe``) being the recommended option.
+ **Note:** This environment is distinct from the MSYS2 shell that opens
+ automatically after the final installation dialog. You must close that
+ initial shell and open a new one for the appropriate environment.
+
+### Updating MSYS2
+
+For guidance on updating MSYS2, please refer to the official documentation:
+[Updating MSYS2](https://www.msys2.org/docs/updating/).
+
+### Installing mpv Dependencies
+
+``` bash
+# Install pacboy
+pacman -S pactoys
-[MXE](https://mxe.cc) makes it very easy to bootstrap a complete MingGW-w64
-environment from a Linux machine. See a working example below.
-
-Alternatively, you can try [mpv-winbuild-cmake](https://github.com/shinchiro/mpv-winbuild-cmake),
-which bootstraps a MinGW-w64 environment and builds mpv and dependencies.
-
-Example with MXE
-----------------
-
-```bash
-# Before starting, make sure you install MXE prerequisites. MXE will download
-# and build all target dependencies, but no host dependencies. For example,
-# you need a working compiler, or MXE can't build the crosscompiler.
-#
-# Refer to
-#
-# https://mxe.cc/#requirements
-#
-# Scroll down for disto/OS-specific instructions to install them.
-
-# Download MXE. Note that compiling the required packages requires about 1.4 GB
-# or more!
-
-cd /opt
-git clone https://github.com/mxe/mxe mxe
-cd mxe
-
-# Set build options.
-
-# The JOBS environment variable controls threads to use when building. DO NOT
-# use the regular `make -j4` option with MXE as it will slow down the build.
-# Alternatively, you can set this in the make command by appending "JOBS=4"
-# to the end of command:
-echo "JOBS := 4" >> settings.mk
-
-# The MXE_TARGET environment variable builds MinGW-w64 for 32 bit targets.
-# Alternatively, you can specify this in the make command by appending
-# "MXE_TARGETS=i686-w64-mingw32" to the end of command:
-echo "MXE_TARGETS := i686-w64-mingw32.static" >> settings.mk
-
-# If you want to build 64 bit version, use this:
-# echo "MXE_TARGETS := x86_64-w64-mingw32.static" >> settings.mk
-
-# Build required packages. The following provide a minimum required to build
-# a reasonable mpv binary (though not an absolute minimum).
-
-make gcc ffmpeg libass jpeg lua luajit
-
-# Add MXE binaries to $PATH
-export PATH=/opt/mxe/usr/bin/:$PATH
-
-# Build mpv. The target will be used to automatically select the name of the
-# build tools involved (e.g. it will use i686-w64-mingw32.static-gcc).
-
-cd ..
-git clone https://github.com/mpv-player/mpv.git
-cd mpv
-meson setup build --crossfile crossfile
-meson compile -C build
-```
-
-Native compilation with MSYS2
-=============================
-
-For Windows developers looking to get started quickly, MSYS2 can be used to
-compile mpv natively on a Windows machine. The MSYS2 repositories have binary
-packages for most of mpv's dependencies, so the process should only involve
-building mpv itself.
-
-To build 64-bit mpv on Windows:
-
-Installing MSYS2
-----------------
-
-1. Download an installer from https://www.msys2.org/
-
- Both the i686 and the x86_64 version of MSYS2 can build 32-bit and 64-bit
- mpv binaries when running on a 64-bit version of Windows, but the x86_64
- version is preferred since the larger address space makes it less prone to
- fork() errors.
-
-2. Start a MinGW-w64 shell (``mingw64.exe``). **Note:** This is different from
- the MSYS2 shell that is started from the final installation dialog. You must
- close that shell and open a new one.
-
- For a 32-bit build, use ``mingw32.exe``.
-
-Updating MSYS2
---------------
-
-To prevent errors during post-install, the MSYS2 core runtime must be updated
-separately.
-
-```bash
-# Check for core updates. If instructed, close the shell window and reopen it
-# before continuing.
-pacman -Syu
-
-# Update everything else
-pacman -Su
-```
-
-Installing mpv dependencies
----------------------------
-
-```bash
# Install MSYS2 build dependencies and a MinGW-w64 compiler
-pacman -S git $MINGW_PACKAGE_PREFIX-{python,pkgconf,gcc,meson}
+pacboy -S git {python,pkgconf,cc,meson}:p
-# Install the most important MinGW-w64 dependencies. libass and lcms2 are also
-# pulled in as dependencies of ffmpeg.
-pacman -S $MINGW_PACKAGE_PREFIX-{ffmpeg,libjpeg-turbo,luajit}
+# Install key dependencies. libass and lcms2 are also included as dependencies
+# of ffmpeg.
+pacboy -S {ffmpeg,libjpeg-turbo,libplacebo,luajit}:p
```
-Building mpv
-------------
-
-Finally, compile and install mpv. Binaries will be installed to
-``/mingw64/bin`` or ``/mingw32/bin``.
-
-```bash
-meson setup build --prefix=$MSYSTEM_PREFIX
-meson compile -C build
-```
+### Building mpv
-Or, compile and install both libmpv and mpv:
+To compile and install mpv, execute the following commands.
+The binaries will be installed in the directory ``/$MSYSTEM_PREFIX/bin``.
```bash
+# Set up the build directory with the desired configuration
meson setup build -Dlibmpv=true --prefix=$MSYSTEM_PREFIX
+
+# Compile
meson compile -C build
+
+# Optionally, install the compiled binaries
meson install -C build
```
-Linking libmpv with MSVC programs
----------------------------------
+## Running mpv
-mpv/libmpv cannot be built with Visual Studio (Microsoft is too incompetent to
-support C99/C11 properly and/or hates open source and Linux too much to
-seriously do it). But you can build C++ programs in Visual Studio and link them
-with a libmpv built with MinGW.
+Depending on your build configuration, ``mpv.exe`` may rely on external
+libraries. To create a portable package, you will need to include these
+dependencies as well. The quickest way to determine which libraries are needed
+is to run ``mpv.exe`` and note any error messages that list the required ``.dll``
+files. You can find these libraries in the sysroot used for compilation, such as
+``/clang64/bin/`` in MSYS2.
-To do this, you need a Visual Studio which supports ``stdint.h`` (recent ones do),
-and you need to create a import library for the mpv DLL:
+## Linking libmpv with MSVC Programs
-```bash
-lib /name:mpv-1.dll /out:mpv.lib /MACHINE:X64
-```
+Building mpv/libmpv directly with the MSVC compiler (cl.exe) is not supported
+due to differences in compiler flags. Our build system is designed specifically
+for GNU-like compiler drivers. However, you can still build programs in
+Visual Studio and link them with libmpv.
-The string in the ``/name:`` parameter must match the filename of the DLL (this
-is simply the filename the MSVC linker will use).
-
-Static linking is not possible.
-
-Running mpv
------------
-
-If you want to run mpv from the MinGW-w64 shell, you will find the experience
-much more pleasant if you use the ``winpty`` utility
+If the toolchain used generates a ``.lib`` file, it will be ready for use.
+Otherwise, you will need to create an import library for the mpv DLL with the
+following command:
```bash
-pacman -S winpty
-winpty mpv.com ToS-4k-1920.mov
+lib /name:mpv-2.dll /out:mpv.lib /MACHINE:X64
```
-If you want to move / copy ``mpv.exe`` and ``mpv.com`` to somewhere other than
-``/mingw64/bin/`` for use outside the MinGW-w64 shell, they will still depend on
-DLLs in that folder. The simplest solution is to add ``C:\msys64\mingw64\bin``
-to the windows system ``%PATH%``. Beware though that this can cause problems or
-confusion in Cygwin if that is also installed on the machine.
-
-Use of the ANGLE OpenGL backend requires a copy of the D3D compiler DLL that
-matches the version of the D3D SDK that ANGLE was built with
-(``d3dcompiler_43.dll`` in case of MinGW-built ANGLE) in the path or in the
-same folder as mpv. It must be of the same architecture (x86_64 / i686) as the
-mpv you compiled.
+Ensure that the string in the ``/name:`` parameter matches the filename of the
+DLL, as this is the filename that the MSVC linker will reference.
+
+**Note:** Static linking is only feasible with matching compilers. For instance,
+if you build with Clang in Visual Studio, static linking is possible.
diff --git a/DOCS/contribute.md b/DOCS/contribute.md
index 4d2af4ea4e..669be3c6cf 100644
--- a/DOCS/contribute.md
+++ b/DOCS/contribute.md
@@ -141,7 +141,10 @@ Interface change policy
must be documented by making a new text file with a txt extension containing a
small note in the DOCS/interface-changes directory.
- The name of the file should be brief and related to the commit that makes the
- change.
+ change. The content of the file should begin with the type of the change
+ (add, remove, deprecate, change, rename, etc.). If the file contains multiple
+ changes, the change which causes the most serious compatibility issues should
+ be placed first.
- Grouping multiple related changes in the same file is also OK. Just be sure to
put each separate change on a different line.
- Documenting additions in DOCS/interface-changes is optional but encouraged.
diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst
index b55ef97739..4166bdf4b0 100644
--- a/DOCS/interface-changes.rst
+++ b/DOCS/interface-changes.rst
@@ -44,7 +44,7 @@ Interface changes
- add `current-gpu-context` property
- add `--secondary-sub-ass-override` option
- add `--input-preprocess-wheel` option
- - remove shared-script-properties (user-data is a replacement)
+ - remove `shared-script-properties` (`user-data` is a replacement)
- add `--secondary-sub-delay`, decouple secondary subtitles from
`--sub-delay`
- add the `--osd-bar-border-size` option
@@ -64,7 +64,11 @@ Interface changes
- change `--hidpi-window-scale` default to `no`
- add `insert-next`, `insert-next-play`, `insert-at`, and `insert-at-play`
actions to `loadfile` and `loadlist` commands
- - add `index` argument to `loadfile` and `loadlist` commands
+ - add `index` argument to `loadlist` command
+ - add `index` argument to `loadfile` command. This breaks all existing
+ uses of this command which make use of the argument to include the list of
+ options to be set while the file is playing. To address this problem, the
+ third argument now needs to be set to -1 if the fourth argument needs to be used.
- move the `options` argument of the `loadfile` command from the third
parameter to the fourth (after `index`)
- add `--drag-and-drop=insert-next` option
diff --git a/DOCS/interface-changes/cmd-nonrepeatable.txt b/DOCS/interface-changes/cmd-nonrepeatable.txt
new file mode 100644
index 0000000000..887b44b982
--- /dev/null
+++ b/DOCS/interface-changes/cmd-nonrepeatable.txt
@@ -0,0 +1 @@
+add `nonrepeatable` input command prefix
diff --git a/DOCS/interface-changes/dolby-vision-configuration.txt b/DOCS/interface-changes/dolby-vision-configuration.txt
new file mode 100644
index 0000000000..9383310fb9
--- /dev/null
+++ b/DOCS/interface-changes/dolby-vision-configuration.txt
@@ -0,0 +1 @@
+add `track-list/N/dolby-vision-profile` and `track-list/N/dolby-vision-level`
diff --git a/DOCS/interface-changes/egl-output-format.txt b/DOCS/interface-changes/egl-output-format.txt
new file mode 100644
index 0000000000..00bb7fd84f
--- /dev/null
+++ b/DOCS/interface-changes/egl-output-format.txt
@@ -0,0 +1,2 @@
+add `--egl-config-id` option
+add `--egl-output-format` option
diff --git a/DOCS/interface-changes/input-builtin-dragging.txt b/DOCS/interface-changes/input-builtin-dragging.txt
new file mode 100644
index 0000000000..5dbce76987
--- /dev/null
+++ b/DOCS/interface-changes/input-builtin-dragging.txt
@@ -0,0 +1 @@
+add `--input-builtin-dragging` option
diff --git a/DOCS/interface-changes/input-dragging-deadzone.txt b/DOCS/interface-changes/input-dragging-deadzone.txt
new file mode 100644
index 0000000000..d2628d4cbd
--- /dev/null
+++ b/DOCS/interface-changes/input-dragging-deadzone.txt
@@ -0,0 +1 @@
+add `--input-dragging-deadzone` option
diff --git a/DOCS/interface-changes/input-select.txt b/DOCS/interface-changes/input-select.txt
index 03e421a6c7..09306c8481 100644
--- a/DOCS/interface-changes/input-select.txt
+++ b/DOCS/interface-changes/input-select.txt
@@ -1 +1 @@
-`add mp.input.select()`
+add `mp.input.select()`
diff --git a/DOCS/interface-changes/input-touch-emulate-mouse.txt b/DOCS/interface-changes/input-touch-emulate-mouse.txt
deleted file mode 100644
index 00b08b7715..0000000000
--- a/DOCS/interface-changes/input-touch-emulate-mouse.txt
+++ /dev/null
@@ -1 +0,0 @@
-add --input-touch-emulate-mouse option
diff --git a/DOCS/interface-changes/keybind-cancel.txt b/DOCS/interface-changes/keybind-cancel.txt
new file mode 100644
index 0000000000..ab137a0cb4
--- /dev/null
+++ b/DOCS/interface-changes/keybind-cancel.txt
@@ -0,0 +1,2 @@
+change `mp.add_key_binding` so that by default, the callback is not invoked if the event is canceled; clients should now use the `complex` option to detect this situation
+add `canceled` entry to `mp.add_key_binding` callback argument
diff --git a/DOCS/interface-changes/native-touch.txt b/DOCS/interface-changes/native-touch.txt
index 91c3a53bad..164f0ce4f5 100644
--- a/DOCS/interface-changes/native-touch.txt
+++ b/DOCS/interface-changes/native-touch.txt
@@ -1 +1,3 @@
-add --native-touch option
+add `--native-touch` option
+add `--input-touch-emulate-mouse` option
+add `touch-pos` property
diff --git a/DOCS/interface-changes/option-info-expects-file.txt b/DOCS/interface-changes/option-info-expects-file.txt
new file mode 100644
index 0000000000..c8a54da0a7
--- /dev/null
+++ b/DOCS/interface-changes/option-info-expects-file.txt
@@ -0,0 +1 @@
+add "option-info/<name>/expects-file" sub-property
diff --git a/DOCS/interface-changes/osdscale.txt b/DOCS/interface-changes/osdscale.txt
new file mode 100644
index 0000000000..38eec1afc8
--- /dev/null
+++ b/DOCS/interface-changes/osdscale.txt
@@ -0,0 +1,3 @@
+change `vidscale` script option type to string for osc.lua
+change `vidscale` script option type to string for stats.lua
+change `vidscale` default from `yes` to `auto` for osc.lua and stats.lua
diff --git a/DOCS/interface-changes/show-playlist-titles.txt b/DOCS/interface-changes/show-playlist-titles.txt
new file mode 100644
index 0000000000..dd9f32e864
--- /dev/null
+++ b/DOCS/interface-changes/show-playlist-titles.txt
@@ -0,0 +1,2 @@
+add `--osd-playlist-entry` option
+remove `osc-playlist_media_title` script-opt
diff --git a/DOCS/interface-changes/sub-ass-override-default.txt b/DOCS/interface-changes/sub-ass-override-default.txt
new file mode 100644
index 0000000000..691579693b
--- /dev/null
+++ b/DOCS/interface-changes/sub-ass-override-default.txt
@@ -0,0 +1,3 @@
+move 'scale' above 'force' for `sub-ass-override` in documentation as well as code. This more accurately reflects destructiveness of these options.
+change `sub-ass-override` default from 'yes' to 'scale'. This should result in no effective changes because 'yes' used to unintentionally do what 'scale' should've done.
+change 'u' binding to cycle between 'force' and 'scale', instead of 'force' and 'yes'
diff --git a/DOCS/interface-changes/touch-pos.txt b/DOCS/interface-changes/touch-pos.txt
deleted file mode 100644
index a390d2369f..0000000000
--- a/DOCS/interface-changes/touch-pos.txt
+++ /dev/null
@@ -1 +0,0 @@
-add `touch-pos` property
diff --git a/DOCS/man/ao.rst b/DOCS/man/ao.rst
index 78dfed3b51..f03f64242e 100644
--- a/DOCS/man/ao.rst
+++ b/DOCS/man/ao.rst
@@ -15,6 +15,10 @@ in the list.
See ``--ao=help`` for a list of compiled-in audio output drivers sorted by
autoprobe order.
+ Note that the default audio output driver is subject to change, and must
+ not be relied upon. If a certain AO needs to be used, it must be
+ explicitly specified.
+
Available audio output drivers are:
``alsa``
diff --git a/DOCS/man/console.rst b/DOCS/man/console.rst
index 69cc103c15..7028e6c76d 100644
--- a/DOCS/man/console.rst
+++ b/DOCS/man/console.rst
@@ -167,7 +167,6 @@ Configurable Options
Default: true
Remove duplicate entries in history as to only keep the latest one.
- multiplied by "scale."
``font_hw_ratio``
Default: auto
diff --git a/DOCS/man/encode.rst b/DOCS/man/encode.rst
index 26f3d6cbc8..c650d0f6c4 100644
--- a/DOCS/man/encode.rst
+++ b/DOCS/man/encode.rst
@@ -8,7 +8,7 @@ You can encode files from one format/codec to another using this facility.
``--of=<format>``
Specifies the output format (overrides autodetection by the file name
- extension of the file specified by ``-o``). See ``--of=help`` for a full
+ extension of the file specified by ``--o``). See ``--of=help`` for a full
list of supported formats.
``--ofopts=<options>``
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst
index df4766b5be..0fc0619a11 100644
--- a/DOCS/man/input.rst
+++ b/DOCS/man/input.rst
@@ -487,7 +487,7 @@ Remember to quote string arguments in input.conf (see `Flat command syntax`_).
``insert-at-play`` actions. When used with those actions, the new item will
be inserted at the index position in the playlist, or appended to the end if
index is less than 0 or greater than the size of the playlist. This argument
- will be ignored for all other actions.
+ will be ignored for all other actions. This argument is added in mpv 0.38.0.
The fourth argument is a list of options and values which should be set
while the file is playing. It is of the form ``opt1=value1,opt2=value2,..``.
@@ -496,6 +496,14 @@ Remember to quote string arguments in input.conf (see `Flat command syntax`_).
options are set during playback, and restored to the previous value at end
of playback (see `Per-File Option