demux, command: export bof/eof flags

Export these flags with demuxer-cache-state. Useful for debugging, but
any client API users could also make use of it.
This commit is contained in:
wm4 2019-05-17 22:28:12 +02:00
parent f57fad4a4d
commit a3991078bd
4 changed files with 15 additions and 0 deletions

View File

@ -1450,6 +1450,13 @@ Property list
buffering amount, while the seek ranges represent the buffered data that
can actually be used for cached seeking.
``bof-cached`` indicates whether the seek range with the lowest timestamp
points to the beginning of the stream (BOF). This implies you cannot seek
before this position at all. ``eof-cached`` indicates whether the seek range
with the highest timestamp points to the end of the stream (EOF). If both
``bof-cached`` and ``eof-cached`` are set to ``yes``, the entire stream is
cached.
``fw-bytes`` is the number of bytes of packets buffered in the range
starting from the current decoding position.
@ -1464,6 +1471,8 @@ Property list
MPV_FORMAT_NODE_MAP
"start" MPV_FORMAT_DOUBLE
"end" MPV_FORMAT_DOUBLE
"bof-cached" MPV_FORMAT_FLAG
"eof-cached" MPV_FORMAT_FLAG
"fw-bytes" MPV_FORMAT_INT64
Other fields (might be changed or removed in the future):

View File

@ -3227,6 +3227,8 @@ void demux_get_reader_state(struct demuxer *demuxer, struct demux_reader_state *
.start = MP_ADD_PTS(range->seek_start, in->ts_offset),
.end = MP_ADD_PTS(range->seek_end, in->ts_offset),
};
r->bof_cached |= range->is_bof;
r->eof_cached |= range->is_eof;
}
}

View File

@ -38,6 +38,7 @@ struct demux_seek_range {
struct demux_reader_state {
bool eof, underrun, idle;
bool bof_cached, eof_cached;
double ts_duration;
double ts_reader; // approx. timerstamp of decoder position
double ts_end; // approx. timestamp of end of buffered range

View File

@ -1502,6 +1502,9 @@ static int mp_property_demuxer_cache_state(void *ctx, struct m_property *prop,
struct mpv_node *r = (struct mpv_node *)arg;
node_init(r, MPV_FORMAT_NODE_MAP, NULL);
node_map_add_flag(r, "bof-cached", s.bof_cached);
node_map_add_flag(r, "eof-cached", s.eof_cached);
struct mpv_node *ranges =
node_map_add(r, "seekable-ranges", MPV_FORMAT_NODE_ARRAY);
for (int n = 0; n < s.num_seek_ranges; n++) {