diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index 534a2b47c4..c1c85ffe75 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -3060,11 +3060,13 @@ TV Cache ----- -``--cache=`` +``--cache=`` Set the size of the cache in kilobytes, disable it with ``no``, or automatically enable it if needed with ``auto`` (default: ``auto``). With ``auto``, the cache will usually be enabled for network streams, - using the size set by ``--cache-default``. + using the size set by ``--cache-default``. With ``yes``, the cache will + always be enabled with the size set by ``--cache-default`` (unless the + stream can not be cached, or ``--cache-default`` disables caching). May be useful when playing files from slow media, but can also have negative effects, especially with file formats that require a lot of diff --git a/options/options.c b/options/options.c index 737d2e5814..cc3a211923 100644 --- a/options/options.c +++ b/options/options.c @@ -141,7 +141,8 @@ const m_option_t mp_opts[] = { OPT_CHOICE_OR_INT("cache", stream_cache.size, 0, 32, 0x7fffffff, ({"no", 0}, - {"auto", -1})), + {"auto", -1}, + {"yes", -2})), OPT_CHOICE_OR_INT("cache-default", stream_cache.def_size, 0, 32, 0x7fffffff, ({"no", 0})), OPT_INTRANGE("cache-initial", stream_cache.initial, 0, 0, 0x7fffffff), diff --git a/stream/stream.c b/stream/stream.c index 825d7a1292..105d56e439 100644 --- a/stream/stream.c +++ b/stream/stream.c @@ -752,6 +752,8 @@ static struct mp_cache_opts check_cache_opts(stream_t *stream, struct mp_cache_opts use_opts = *opts; if (use_opts.size == -1) use_opts.size = stream->streaming ? use_opts.def_size : 0; + if (use_opts.size == -2) + use_opts.size = use_opts.def_size; if (stream->mode != STREAM_READ || !stream->allow_caching || use_opts.size < 1) use_opts.size = 0;