summaryrefslogtreecommitdiffstats
path: root/DOCS
Commit message (Collapse)AuthorAgeFilesLines
* demux_playlist: add option to control recursive directory loadingChristoph Heinrich2023-07-062-0/+8
| | | | | | | | | | | Directories were always loaded recursively, which can be slow (e.g. one of the subdirectories is a mounting point to a slow device) and can unexpectedly expand into a massive playlist. Due to the problems described in 503dada42f1ea1007768da0dc6a41b67cdf89400, this defaults to recursive loading. ref. https://github.com/mpv-player/mpv/issues/9652
* various: correctly ignore cache files with --no-configDudemanguy2023-07-061-3/+3
| | | | | | | | | | | | --no-config should prevent loading user files of any type: configs, cache, etc. For cache files, this case wasn't properly handled and it was assumed they would always get something. vo_gpu's shader cache actually already handles this, so it was left untouched. In theory, demuxer cache should never have this issue because saving it to disk is disabled by default (and likely that will never change), but go ahead and change it for consistency's sake. Fixes some segfaults with --no-config and various combinations of settings (particularly --vo=gpu-next).
* vo_gpu/vo_gpu_next: enable gpu shader and icc cache by defaultDudemanguy2023-07-042-9/+11
| | | | | | | | | | | 4502522a7aee093c923e79a65e4684ea2634af30 changed the way mpv handled and saved cached files. In particular, it made a separate boolean option for actually enabling cache and left the *-dir options as purely just a path (i.e. having a dir set didn't mean you save cache). This technically regressed people's configs, so let's just turn the cache on by default. Linux users already expect random stuff in ~/.cache and well everyone else can just live with some files possibly appearing in their config directory.
* player: add --input-cursor-passthrough optionDudemanguy2023-07-042-0/+8
| | | | | | | | | | | | | Add an option for allowing pointer events to pass through the mpv window. This could be useful in cases where a user wants to display transparent images/video with mpv and interact with applications beneath the window. This commit implements this functionality for x11 and wayland. Note that whether or not this actually works likely depends on your window manager and/or compositor. E.g. sway ignores pointer events but the entire window becomes draggable when you float it (nothing under the mpv window receives events). Weston behaves as expected however so that is a compositor bug. Excuse the couple of completely unrelated style fixes (both were originally done by me).
* win32: add support for drag-and-drop optionDudemanguy2023-07-011-1/+1
|
* options: add no to drag-and-dropDudemanguy2023-07-011-2/+3
| | | | | Suggested by @sfan5. Naturally, "no" disables all drag and drop behavior.
* video/image_writer: add avif screenshot supportcloud116652023-07-011-0/+28
| | | | | | | | | | Notes: - converts the (image) write() api to filenames, because using avio with FILE* is a pain. - adds more debug logs for screenshots. build: rename av1 dependency to avif_muxer wscript: unify lavf dependency with meson
* vd_lavc: let the user provide a priority list of hwdecs to considerPhilip Langdale2023-06-291-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | Today, the only way to make mpv consider multiple hwdecs and pick the first one that works is to use one of the `auto` modes. But the list that is considered in those cases is hard-coded. If the user wants to provide their own list, they are out of luck. And I think that there is now a significant reason to support this - the new Vulkan hwdec is definitely not ready to be in the auto list, but if you want to use it by default, it will not work with many codecs that are normally hardware decodable (only h.264, hevc and av1 if you are very lucky). Everything else will fall back to software decoding. Instead, what you really want to say is: use Vulkan for whatever it supports, and fall back to my old hwdec for everything else. One side-effect of this implementation is that you can freely mix hwdec names and special values like `auto` and `no`. The behaviour will be correct, so I didn't try and prohibit any combinations. However, some combinations will be silly - eg: sticking any further values after `no` will result in them being ignored. On the other hand, a combination like `vulkan,auto` could be very useful as that will use Vulkan if possible, and if not, run the normal auto routine. Fixes #11797
* command: add sub-forced-only-cur proprcombs2023-06-251-0/+3
|
* sub: rewrite auto-forced-only supportrcombs2023-06-251-0/+4
| | | | | - No longer has a fake "option" used only internally (which didn't always get propagated properly) - Always overrideable during playback
* player: add more precise sub fallback optionsrcombs2023-06-251-0/+9
|
* options: default slang to autorcombs2023-06-252-1/+2
|
* loadfile: support "auto" as a language optionrcombs2023-06-251-0/+3
| | | | This uses the user's OS-level preferred set of languages
* loadfile: use mp_match_lang_singlercombs2023-06-251-8/+8
| | | | | This adds basic support for IETF language tags, as well as matching 2-letter language codes against 3-letter ones (and vice versa).
* options: set subs-with-matching-audio to off by defaultrcombs2023-06-252-3/+3
| | | | This means that subtitles won't be displayed unless the user asks for them
* vo_gpu_next: add --corner-rounding optionNiklas Haas2023-06-212-0/+7
| | | | For better or worse.
* vo_gpu_next: add missing --gamut-mapping-mode optionsNiklas Haas2023-06-212-7/+28
| | | | | Adds the missing upstream values that were exposed by the new gamut mapping API.
* DOCS: fix admonition typoLeo Izen2023-06-151-1/+1
| | | | Fix missing second : in DOCS/man/options.rst after a .. admonition::
* player: add drag-and-drop optionDudemanguy2023-06-121-0/+8
| | | | | | | | | | | Some platforms (wayland) apparently have a lot of trouble with drag and drop. The default behavior is still the same which is basically obeying what we get from the window manager/compositor, but the --drag-and-drop option allows forcibly overriding the drag and drop behavior. i.e. you can force it to always replace the playlist or append at the end. This only implements this in X11 and Wayland but in theory windows and macos could find this option useful (both hardcode the shift key for appending). Patches welcome.
* DOCS/mpv: add an example for applying profiles to certain pathsGuido Cella2023-06-071-0/+8
| | | | | | | It is worth adding this example because it has been asked multiple times in the issue tracker and the IRC channel. string.find() is used because it's 20 times faster than string.match().
* hwdec_vulkan: add Vulkan HW InteropPhilip Langdale2023-05-282-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Vulkan Video Decoding has finally become a reality, as it's now showing up in shipping drivers, and the ffmpeg support has been merged. With that in mind, this change introduces HW interop support for ffmpeg Vulkan frames. The implementation is functionally complete - it can display frames produced by hardware decoding, and it can work with ffmpeg vulkan filters. There are still various caveats due to gaps and bugs in drivers, so YMMV, as always. Primary testing has been done on Intel, AMD, and nvidia hardware on Linux with basic Windows testing on nvidia. Notable caveats: * Due to driver bugs, video decoding on nvidia does not work right now, unless you use the Vulkan Beta driver. It can be worked around, but requires ffmpeg changes that are not considered acceptable to merge. * Even if those work-arounds are applied, Vulkan filters will not work on video that was decoded by Vulkan, due to additional bugs in the nvidia drivers. The filters do work correctly on content decoded some other way, and then uploaded to Vulkan (eg: Decode with nvdec, upload with --vf=format=vulkan) * Vulkan filters can only be used with drivers that support VK_EXT_descriptor_buffer which doesn't include Intel ANV as yet. There is an MR outstanding for this. * When dealing with 1080p content, there may be some visual distortion in the bottom lines of frames due to chroma scaling incorporating the extra hidden lines at the bottom of the frame (1080p content is actually stored as 1088 lines), depending on the hardware/driver combination and the scaling algorithm. This cannot be easily addressed as the mechanical fix for it violates the Vulkan spec, and probably requires a spec change to resolve properly. All of these caveats will be fixed in either drivers or ffmpeg, and so will not require mpv changes (unless something unexpected happens) If you want to run on nvidia with the non-beta drivers, you can this ffmpeg tree with the work-around patches: * https://github.com/philipl/FFmpeg/tree/vulkan-nvidia-workarounds
* vo_gpu_next: remove --tone-mapping-crosstalkNiklas Haas2023-05-242-5/+1
| | | | Removed upstream, to be replaced by constant 0.04.
* vo_gpu_next: allow to use ICC profile luminance valueKacper Michajłow2023-05-132-0/+7
| | | | | | Also while at it respect target-peak option when ICC profile is used. Fixes #11449
* player: use XDG_CACHE_HOME by defaultDudemanguy2023-05-093-11/+28
| | | | | | | | | | | | This adds cache as a possible path for mpv to internally pick (~/.cache/mpv for non-darwin unix-like systems, the usual config directory for everyone else). For gpu shader cache and icc cache, controlling whether or not to write such files is done with the new --gpu-shader-cache and --icc-cache options respectively. Additionally, --cache-on-disk no longer requires explicitly setting the --cache-dir option. The old options, --cache-dir, --gpu-shader-cache-dir, and --icc-cache-dir simply set an override for the directory to save cache files. If unset, then the cache is saved in XDG_CACHE_HOME.
* player: use XDG_STATE_HOME for watch_laterDudemanguy2023-05-093-3/+9
| | | | | | | | | | | | | | | | | | A pain point for some users is the fact that watch_later is stored in the ~/.config directory when it's really not configuration data. Roughly 2 years ago, XDG_STATE_DIR was added to the XDG Base Directory Specification[0] and its description, user-specific state data, actually perfectly matches what watch_later data is for. Let's go ahead and use this directory as the default for watch_later. This change only affects non-darwin unix-like systems (i.e. Linux, BSDs, etc.). The directory doesn't move for anyone else. Internally, quite a few things change with regards to the path selection. If the platform in question does not have a statedir concept, then the path selection will simply return "home" instead (old behavior). Fixes #9147. [0]: https://gitlab.freedesktop.org/xdg/xdg-specs/-/commit/4f2884e16db35f2962d9b64312917c81be5cb54b
* DOCS/options: document required parameter for --x11-nameNick Hanley2023-05-061-1/+1
|
* console.lua: add a script-opt for the border sizeGuido Cella2023-04-261-0/+5
| | | | Because I find the console log easier to read with a thicker border.
* ao_pipewire: clarify --pipewire-buffer=nativeThomas Weißschuh2023-04-231-1/+1
|
* ao_pulse: clarify --pulse-buffer=nativeThomas Weißschuh2023-04-231-1/+1
|
* meson: use the new build_options methodDudemanguy2023-04-111-2/+3
| | | | | | | | This finally allows us to put any user defined options into the CONFIGURATION variable like what waf does. The arbitrary hardcoded fallback is left in place for old meson versions. Also update the documentation in regards to the mpv-configuration variable to be relevant to meson.
* auto_profiles.lua: apply profiles when conditions are truthyGuido Cella2023-04-051-9/+10
| | | | | | | | | | | | Instead of erroring when values returned by profile-cond expressions aren't booleans, apply the relative profiles as long as the return values are truthy. This allows shortening conditions like profile-cond=path:match('foo') ~= nil to profile-cond=path:match('foo')
* DOCS/input: fix typofeltcat2023-03-301-2/+2
|
* various: fix various typos in the code baseAlexander Seiler2023-03-282-2/+2
| | | | Signed-off-by: Alexander Seiler <seileralex@gmail.com>
* various: fix typosHarri Nieminen2023-03-284-10/+10
| | | | Found by codespell
* player/screenshot: add filename return fieldcloud116652023-03-251-0/+3
| | | | DOCS/input: add screenshot return value description
* player: set playlist title to media title if not set alreadyChristoph Heinrich2023-03-241-0/+2
| | | | | | | The playlist title only got set when it was specified in the playlist file. If there is a title after opening a file, that should also be reflected in the playlist.
* DOCS/lua: fix typoAmeer Taweel2023-03-211-1/+1
|
* wayland: make wayland-edge-pixels-pointer default to 16Dudemanguy2023-03-081-1/+1
| | | | | 10 is ludicrously small. How did no one on an CSD compositor complain about this?
* test: integrate unittests with mesonDudemanguy2023-03-021-0/+1
| | | | | | | | | | | | This reworks all of mpv's unit tests so they are compiled as separate executables (optional) and run via meson test. Because most of the tests are dependant on mpv's internals, existing compiled objects are leveraged to create static libs and used when necessary. As an aside, a function was moved into video/out/gpu/utils for sanity's sake (otherwise most of vo would have been needed). As a plus, meson multithreads running tests automatically and also the output no longer pollutes the source directory. There are tests that can break due to ffmpeg changes, so they require a specific minimum libavutil version to be built.
* player: remove unittest optionDudemanguy2023-03-021-18/+0
| | | | | | | | | Since meson has its own unit testing system, let's rework mpv's tests so they integrate nicely with this. To prepare for this, start off by dropping the unittest option. Of course, this means that tests will no longer be supported in the waf build at all but it will be dropped anyway. Note that the tests option is preserved for the meson build. We will still make use of this in the future commits.
* DOCS/options: mention default value of cursor-autohideDudemanguy2023-03-011-3/+3
| | | | Closes #11358.
* DOCS/options: clarify hidpi-window-scale descriptionDudemanguy2023-03-011-2/+1
| | | | | | It's enabled by default everywhere. The sentences about macOS is misleading and may imply it's disabled by default on the other platforms.
* player: add --auto-window-resize optionDudemanguy2023-03-022-0/+8
| | | | | | | | | | | mpv's window resizing logic always automatically resized the window whenever the video resolution changed (i.e. advancing forward in a playlist). This simply introduces the option to make this behavior configurable. Every windowing backend would need to implement this behavior in their code since a reconfigure event must always be a resize. The params of the frame changed so you either have to resize the window to the new size of the params or make the params the same size as the window. This commit implements it for wayland, win32, and x11.
* sub: add --sub-fonts-dir and --osd-fonts-dir optionsFrédéric Brière2023-03-012-5/+14
| | | | | | | | These options make it possible to specify the directory that will be passed to ass_set_fonts_dir(), akin to VLC's `--ssa-fontsdir` and FFmpeg's `fontsdir`. Fixes #8338
* command: add platform propertyDudemanguy2023-02-272-0/+7
| | | | | | | | | | | | | | | | | | | | | | | This returns the value of the target OS that mpv was built on as reported by the build system. It is quite conceivable that script writers and API users would need to make OS-dependent choices in some cases. Such people end up writing boilerplate/hacks to guess what OS they are on. Assuming you trust the build system (if you don't, we're in really deep trouble), then mpv actually knows exactly what OS it was built on. Simply take this information at configuration time, make it a define, and let mp_property_platform return the value. Note that mpv has two build systems (waf and meson), so the names of the detected OSes may not be exactly the same. Since meson is the newer build system, the value of this property follows meson's naming conventions*. In the waf build, there is a small function to map known naming deviations to match meson (i.e. changing "win32" to "windows"). waf's documentation is a nightmare to follow, but it seems to simply take the output of sys.platform in python and strip away any trailing numbers if they exist (exception being win32 and os2)*. *: https://mesonbuild.com/Reference-tables.html#operating-system-names *: https://waf.io/apidocs/Utils.html#waflib.Utils.unversioned_sys_platform
* player: set playlist title to media title if not set alreadyChristoph Heinrich2023-02-261-3/+4
| | | | | | | | | The playlist title only got set when it was specified in the playlist file. If there is a title after opening a file, that should also be reflected in the playlist. ref. #4780
* video: make csp equalizer params floatThomas Weißschuh2023-02-241-0/+2
| | | | | | This allows more precise adjustments. Fixes #11316
* DOCS: clarify that GLX is deprecatedsfan52023-02-221-1/+1
|
* DOCS/client-api-changes.rst: move mpv_del_property to 0.36.0llyyr2023-02-211-1/+2
| | | | incorrectly placed under 0.35.0 by 2cfaa820e54b12de437bb4da97d894ad610abcdd
* vo_gpu_next: add --tone-mapping-visualizeNiklas Haas2023-02-192-0/+11
|
* DOCS: document JPEG XL default effort changeLeo Izen2023-02-182-1/+2
| | | | Document the change in 7607432127d5aa4e2a6e8cc05ea112c19aa9ff7f.
* vo_gpu_next: expose --tone-mapping=st2094-40 and st2094-10Niklas Haas2023-02-132-0/+12
|
* ao_pipewire: allow usage of global volume controlThomas Weißschuh2023-02-111-0/+5
| | | | | | | | | | | | | PipeWire supports a global volume control for streams that works on top of the per-channel volumes. As mpv only supports a single volume with ao-volume it can make sense to use the single global volume from PipeWire for it. This allows the user to also specify per-channel volumes and not have mpv trample over them. This mode is not the default as pulseaudio does not support this global volume control and all tooling controlling PipeWire via pipewire-pulse (like pavucontrol) will not be able to see this channel.
* DOCS/options: remove testing note in video-sync-max-factorDudemanguy2023-02-111-3/+0
| | | | | | | This option is a bit obscure, but some people do use it and it can be useful. The actual code that implements this is very simple, so there's really no need to have a scary note in the docs about it possibly changing or being removed.
* vf_sub: undeprecateDudemanguy2023-02-111-0/+1
| | | | | | | | | | 3a9e661e929c34d25810fa903abbd9961f73ecef officially made this video filter deprecated roughly 6 years ago. Every other video filter in that commit has actually been removed since then except for vf_sub. ffmpeg does have its own subtitles filter, but it doesn't have the same control over scale like vf_sub does. That's probably why wm4 never actually removed it. Let's stop scaring users with a warning since this filter probably won't ever get removed. Closes #9254.
* video/image_writer: change screenshot-tag-colorspace default to yesLeo Izen2023-02-092-1/+2
| | | | | | With significant improvements to the color tagging support in various screenshot formats, e.g. cICP in FFmpeg, and JPEG XL's generally robust color support, it's safe to default this to yes.
* DOCS/input: remove experimental note from sub-textMax Dunbar2023-02-051-4/+0
|
* ao_pipewire: add support for exclusive modeThomas Weißschuh2023-02-031-4/+4
|
* wayland: add auto choice to wayland-configure-boundsDudemanguy2023-01-301-4/+4
| | | | | | | | | | | Previously, this defaulted to yes and configure-bounds from the compositor would always apply. In the case where the user explicitly set autofit or geometry, this could be confusing because configure-bounds would take precedence over it. Instead, let's add an auto choice and make that the default. If we detect that the option is on auto and that there is autofit/geometry being set, then ignore the event. This should be more intuitive since someone who bothers to explicitly set mpv's geometry would naturally expect that geometry to actually apply.
* lua/js: remove user-data helpersAvi Halachmi (:avih)2023-01-293-38/+0
| | | | | | | | | | | | | | | This reverts: 3fb4140c lua/defaults: add user_data helpers 68a20e7a javascript/defaults: add user_data helpers 00510379 lua/js: fix user_data_del util function As well as the lua/js parts of: 3ec2a098 docs: document new user-data property user-data and its sub-properties can be set/get/observed/deleted via the standard properties interface, so there's no need for additional helpers specific to user-data, which only added maintenance burden.
* doc: correct spelling of user-data/user_data JS/lua helpersrcombs2023-01-282-16/+16
|
* docs: document new user-data propertyrcombs2023-01-283-0/+56
|
* javascript: add mp.del_property()rcombs2023-01-281-0/+2
|
* lua: add mp.del_property()rcombs2023-01-281-0/+6
|