diff options
-rw-r--r-- | DOCS/man/input.rst | 4 | ||||
-rw-r--r-- | player/command.c | 13 |
2 files changed, 11 insertions, 6 deletions
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst index 63506e7a4e..4244997111 100644 --- a/DOCS/man/input.rst +++ b/DOCS/man/input.rst @@ -1197,8 +1197,8 @@ Property list ``cache-speed`` (R) Current I/O read speed between the cache and the lower layer (like network). - This is a float (using ``MPV_FORMAT_DOUBLE`` in the client API) and gives - the value bytes per seconds over a 1 second window. + This gives the number bytes per seconds over a 1 second window (using + the type ``MPV_FORMAT_INT64`` for the client API). ``cache-idle`` (R) Returns ``yes`` if the cache is idle, which means the cache is filled as diff --git a/player/command.c b/player/command.c index 9d8528571a..07b9128cc8 100644 --- a/player/command.c +++ b/player/command.c @@ -1437,12 +1437,17 @@ static int mp_property_cache_speed(void *ctx, struct m_property *prop, if (!mpctx->demuxer) return M_PROPERTY_UNAVAILABLE; - double speed = -1; - demux_stream_control(mpctx->demuxer, STREAM_CTRL_GET_CACHE_SPEED, &speed); - if (speed < 0) + double f_speed = -1; + demux_stream_control(mpctx->demuxer, STREAM_CTRL_GET_CACHE_SPEED, &f_speed); + if (f_speed < 0) return M_PROPERTY_UNAVAILABLE; + int64_t speed = llrint(f_speed); - return m_property_double_ro(action, arg, speed); + if (action == M_PROPERTY_PRINT) { + *(char **)arg = talloc_strdup_append(format_file_size(speed), "/s"); + return M_PROPERTY_OK; + } + return m_property_int64_ro(action, arg, speed); } static int mp_property_cache_idle(void *ctx, struct m_property *prop, |