diff options
Diffstat (limited to 'player')
-rw-r--r-- | player/command.c | 134 | ||||
-rw-r--r-- | player/core.h | 2 | ||||
-rw-r--r-- | player/loadfile.c | 1 | ||||
-rw-r--r-- | player/misc.c | 18 | ||||
-rw-r--r-- | player/osd.c | 32 | ||||
-rw-r--r-- | player/playloop.c | 7 |
6 files changed, 16 insertions, 178 deletions
diff --git a/player/command.c b/player/command.c index f556e7211d..ab9a09fcac 100644 --- a/player/command.c +++ b/player/command.c @@ -1559,134 +1559,6 @@ static int mp_property_playback_abort(void *ctx, struct m_property *prop, return m_property_flag_ro(action, arg, !mpctx->playing || mpctx->stop_play); } -static int mp_property_cache(void *ctx, struct m_property *prop, - int action, void *arg) -{ - MPContext *mpctx = ctx; - float cache = mp_get_cache_percent(mpctx); - if (cache < 0) - return M_PROPERTY_UNAVAILABLE; - - if (action == M_PROPERTY_PRINT) { - *(char **)arg = talloc_asprintf(NULL, "%d", (int)cache); - return M_PROPERTY_OK; - } - - return m_property_float_ro(action, arg, cache); -} - -static int property_int_kb_size(int kb_size, int action, void *arg) -{ - switch (action) { - case M_PROPERTY_GET: - *(int *)arg = kb_size; - return M_PROPERTY_OK; - case M_PROPERTY_PRINT: - *(char **)arg = format_file_size(kb_size * 1024LL); - return M_PROPERTY_OK; - case M_PROPERTY_GET_TYPE: - *(struct m_option *)arg = (struct m_option){.type = CONF_TYPE_INT}; - return M_PROPERTY_OK; - } - return M_PROPERTY_NOT_IMPLEMENTED; -} - -static int mp_property_cache_size(void *ctx, struct m_property *prop, - int action, void *arg) -{ - MPContext *mpctx = ctx; - struct demuxer *demuxer = mpctx->demuxer; - if (!demuxer) - return M_PROPERTY_UNAVAILABLE; - switch (action) { - case M_PROPERTY_GET: - case M_PROPERTY_PRINT: { - struct stream_cache_info info = {0}; - demux_stream_control(demuxer, STREAM_CTRL_GET_CACHE_INFO, &info); - if (info.size <= 0) - break; - return property_int_kb_size(info.size / 1024, action, arg); - } - case M_PROPERTY_GET_TYPE: - *(struct m_option *)arg = (struct m_option){ - .type = CONF_TYPE_INT, - .flags = M_OPT_MIN, - .min = 0, - }; - return M_PROPERTY_OK; - case M_PROPERTY_SET: { - int64_t size = *(int *)arg * 1024LL; - int r = demux_stream_control(demuxer, STREAM_CTRL_SET_CACHE_SIZE, &size); - if (r == STREAM_UNSUPPORTED) - break; - if (r == STREAM_OK) - return M_PROPERTY_OK; - return M_PROPERTY_ERROR; - } - } - return M_PROPERTY_NOT_IMPLEMENTED; -} - -static int mp_property_cache_used(void *ctx, struct m_property *prop, - int action, void *arg) -{ - MPContext *mpctx = ctx; - if (!mpctx->demuxer) - return M_PROPERTY_UNAVAILABLE; - - struct stream_cache_info info = {0}; - demux_stream_control(mpctx->demuxer, STREAM_CTRL_GET_CACHE_INFO, &info); - if (info.size <= 0) - return M_PROPERTY_UNAVAILABLE; - return property_int_kb_size(info.fill / 1024, action, arg); -} - -static int mp_property_cache_free(void *ctx, struct m_property *prop, - int action, void *arg) -{ - MPContext *mpctx = ctx; - if (!mpctx->demuxer) - return M_PROPERTY_UNAVAILABLE; - - struct stream_cache_info info = {0}; - demux_stream_control(mpctx->demuxer, STREAM_CTRL_GET_CACHE_INFO, &info); - if (info.size <= 0) - return M_PROPERTY_UNAVAILABLE; - - return property_int_kb_size((info.size - info.fill) / 1024, action, arg); -} - -static int mp_property_cache_speed(void *ctx, struct m_property *prop, - int action, void *arg) -{ - MPContext *mpctx = ctx; - if (!mpctx->demuxer) - return M_PROPERTY_UNAVAILABLE; - - struct stream_cache_info info = {0}; - demux_stream_control(mpctx->demuxer, STREAM_CTRL_GET_CACHE_INFO, &info); - if (info.size <= 0) - return M_PROPERTY_UNAVAILABLE; - - if (action == M_PROPERTY_PRINT) { - *(char **)arg = talloc_strdup_append(format_file_size(info.speed), "/s"); - return M_PROPERTY_OK; - } - return m_property_int64_ro(action, arg, info.speed); -} - -static int mp_property_cache_idle(void *ctx, struct m_property *prop, - int action, void *arg) -{ - MPContext *mpctx = ctx; - struct stream_cache_info info = {0}; - if (mpctx->demuxer) - demux_stream_control(mpctx->demuxer, STREAM_CTRL_GET_CACHE_INFO, &info); - if (info.size <= 0) - return M_PROPERTY_UNAVAILABLE; - return m_property_flag_ro(action, arg, info.idle); -} - static int mp_property_demuxer_cache_duration(void *ctx, struct m_property *prop, int action, void *arg) { @@ -3897,12 +3769,6 @@ static const struct m_property mp_properties_base[] = { {"eof-reached", mp_property_eof_reached}, {"seeking", mp_property_seeking}, {"playback-abort", mp_property_playback_abort}, - {"cache-percent", mp_property_cache}, - {"cache-free", mp_property_cache_free}, - {"cache-used", mp_property_cache_used}, - {"cache-size", mp_property_cache_size}, - {"cache-idle", mp_property_cache_idle}, - {"cache-speed", mp_property_cache_speed}, {"demuxer-cache-duration", mp_property_demuxer_cache_duration}, {"demuxer-cache-time", mp_property_demuxer_cache_time}, {"demuxer-cache-idle", mp_property_demuxer_cache_idle}, diff --git a/player/core.h b/player/core.h index 193537652b..7fab8776d7 100644 --- a/player/core.h +++ b/player/core.h @@ -554,8 +554,6 @@ double get_play_end_pts(struct MPContext *mpctx); double get_play_start_pts(struct MPContext *mpctx); double get_ab_loop_start_time(struct MPContext *mpctx); void merge_playlist_files(struct playlist *pl); -float mp_get_cache_percent(struct MPContext *mpctx); -bool mp_get_cache_idle(struct MPContext *mpctx); void update_vo_playback_state(struct MPContext *mpctx); void update_window_title(struct MPContext *mpctx, bool force); void error_on_track(struct MPContext *mpctx, struct track *track); diff --git a/player/loadfile.c b/player/loadfile.c index d854ab04a9..2fb69eb635 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -971,7 +971,6 @@ static void *open_demux_thread(void *ctx) struct demuxer_params p = { .force_format = mpctx->open_format, .stream_flags = mpctx->open_url_flags, - .initial_readahead = true, }; mpctx->open_res_demuxer = demux_open_url(mpctx->open_url, &p, mpctx->open_cancel, mpctx->global); diff --git a/player/misc.c b/player/misc.c index f2e6f05173..ce353b9590 100644 --- a/player/misc.c +++ b/player/misc.c @@ -203,24 +203,6 @@ void issue_refresh_seek(struct MPContext *mpctx, enum seek_precision min_prec) queue_seek(mpctx, MPSEEK_ABSOLUTE, get_current_time(mpctx), min_prec, 0); } -float mp_get_cache_percent(struct MPContext *mpctx) -{ - struct stream_cache_info info = {0}; - if (mpctx->demuxer) - demux_stream_control(mpctx->demuxer, STREAM_CTRL_GET_CACHE_INFO, &info); - if (info.size > 0 && info.fill >= 0) - return info.fill / (info.size / 100.0); - return -1; -} - -bool mp_get_cache_idle(struct MPContext *mpctx) -{ - struct stream_cache_info info = {0}; - if (mpctx->demuxer) - demux_stream_control(mpctx->demuxer, STREAM_CTRL_GET_CACHE_INFO, &info); - return info.idle; -} - void update_vo_playback_state(struct MPContext *mpctx) { if (mpctx->video_out && mpctx->video_out->config_ok) { diff --git a/player/osd.c b/player/osd.c index 9faf6eb6a5..7d24c01619 100644 --- a/player/osd.c +++ b/player/osd.c @@ -229,27 +229,23 @@ static char *get_term_status_msg(struct MPContext *mpctx) } } - if (mpctx->demuxer) { - struct stream_cache_info info = {0}; - demux_stream_control(mpctx->demuxer, STREAM_CTRL_GET_CACHE_INFO, &info); - if (info.size > 0 || mpctx->demuxer->is_network) { - saddf(&line, " Cache: "); + if (mpctx->demuxer && demux_is_network_cached(mpctx->demuxer)) { + saddf(&line, " Cache: "); - struct demux_ctrl_reader_state s = {.ts_duration = -1}; - demux_control(mpctx->demuxer, DEMUXER_CTRL_GET_READER_STATE, &s); + struct demux_ctrl_reader_state s = {.ts_duration = -1}; + demux_control(mpctx->demuxer, DEMUXER_CTRL_GET_READER_STATE, &s); - if (s.ts_duration < 0) { - saddf(&line, "???"); + if (s.ts_duration < 0) { + saddf(&line, "???"); + } else { + saddf(&line, "%2ds", (int)s.ts_duration); + } + int64_t cache_size = s.fw_bytes; + if (cache_size > 0) { + if (cache_size >= 1024 * 1024) { + saddf(&line, "+%lldMB", (long long)(cache_size / 1024 / 1024)); } else { - saddf(&line, "%2ds", (int)s.ts_duration); - } - int64_t cache_size = s.fw_bytes + info.fill; - if (cache_size > 0) { - if (cache_size >= 1024 * 1024) { - saddf(&line, "+%lldMB", (long long)(cache_size / 1024 / 1024)); - } else { - saddf(&line, "+%lldKB", (long long)(cache_size / 1024)); - } + saddf(&line, "+%lldKB", (long long)(cache_size / 1024)); } } } diff --git a/player/playloop.c b/player/playloop.c index fa1cc544cb..59e3211df9 100644 --- a/player/playloop.c +++ b/player/playloop.c @@ -627,14 +627,11 @@ static void handle_pause_on_low_cache(struct MPContext *mpctx) double now = mp_time_sec(); - struct stream_cache_info c = {.idle = true}; - demux_stream_control(mpctx->demuxer, STREAM_CTRL_GET_CACHE_INFO, &c); - struct demux_ctrl_reader_state s = {.idle = true, .ts_duration = -1}; demux_control(mpctx->demuxer, DEMUXER_CTRL_GET_READER_STATE, &s); int cache_buffer = 100; - bool use_pause_on_low_cache = (c.size > 0 || mpctx->demuxer->is_network) && + bool use_pause_on_low_cache = demux_is_network_cached(mpctx->demuxer) && opts->cache_pause; if (!mpctx->restart_complete) { @@ -669,7 +666,7 @@ static void handle_pause_on_low_cache(struct MPContext *mpctx) } // Also update cache properties. - bool busy = !s.idle || !c.idle; + bool busy = !s.idle; if (busy || mpctx->next_cache_update > 0) { if (mpctx->next_cache_update <= now) { mpctx->next_cache_update = busy ? now + 0.25 : 0; |