summaryrefslogtreecommitdiffstats
path: root/player
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-10-21 21:13:53 +0200
committerwm4 <wm4@nowhere>2017-10-21 21:13:53 +0200
commit60df01512cf88d51b6334c95dab72de734f136fd (patch)
treeb3fffa31fad74494d49d2fd33284e9ae3af75fd1 /player
parent633077814ed32a6dd5d09be79688df0e1062b91b (diff)
downloadmpv-60df01512cf88d51b6334c95dab72de734f136fd.tar.bz2
mpv-60df01512cf88d51b6334c95dab72de734f136fd.tar.xz
command: read the diff if you want to know
Diffstat (limited to 'player')
-rw-r--r--player/command.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/player/command.c b/player/command.c
index 3b20ec8f3d..a6ffe3256e 100644
--- a/player/command.c
+++ b/player/command.c
@@ -1716,6 +1716,41 @@ static int mp_property_demuxer_cache_idle(void *ctx, struct m_property *prop,
return m_property_flag_ro(action, arg, s.idle);
}
+static int mp_property_demuxer_cache_state(void *ctx, struct m_property *prop,
+ int action, void *arg)
+{
+ MPContext *mpctx = ctx;
+ if (!mpctx->demuxer)
+ return M_PROPERTY_UNAVAILABLE;
+
+ struct demux_ctrl_reader_state s;
+ if (demux_control(mpctx->demuxer, DEMUXER_CTRL_GET_READER_STATE, &s) < 1)
+ return M_PROPERTY_UNAVAILABLE;
+
+ bool seek_ok = s.ts_min != MP_NOPTS_VALUE &&
+ s.ts_max != MP_NOPTS_VALUE &&
+ s.seekable;
+
+ struct m_sub_property props[] = {
+ {"seekable-start", SUB_PROP_PTS(s.ts_min),
+ .unavailable = !seek_ok},
+ {"seekable-end", SUB_PROP_PTS(s.ts_max),
+ .unavailable = !seek_ok},
+ {"cache-start", SUB_PROP_PTS(s.ts_start),
+ .unavailable = s.ts_start == MP_NOPTS_VALUE},
+ {"cache-end", SUB_PROP_PTS(s.ts_max),
+ .unavailable = s.ts_max == MP_NOPTS_VALUE},
+ {"reader-pts", SUB_PROP_PTS(s.ts_reader),
+ .unavailable = s.ts_reader == MP_NOPTS_VALUE},
+ {"eof", SUB_PROP_FLAG(s.eof)},
+ {"underrun", SUB_PROP_FLAG(s.underrun)},
+ {"idle", SUB_PROP_FLAG(s.idle)},
+ {0}
+ };
+
+ return m_property_read_sub(props, action, arg);
+}
+
static int mp_property_demuxer_start_time(void *ctx, struct m_property *prop,
int action, void *arg)
{
@@ -3937,6 +3972,7 @@ static const struct m_property mp_properties_base[] = {
{"demuxer-cache-time", mp_property_demuxer_cache_time},
{"demuxer-cache-idle", mp_property_demuxer_cache_idle},
{"demuxer-start-time", mp_property_demuxer_start_time},
+ {"demuxer-cache-state", mp_property_demuxer_cache_state},
{"cache-buffering-state", mp_property_cache_buffering},
{"paused-for-cache", mp_property_paused_for_cache},
{"demuxer-via-network", mp_property_demuxer_is_network},