1
0
mirror of https://github.com/mpv-player/mpv synced 2025-02-16 20:27:23 +00:00

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 buffering amount, while the seek ranges represent the buffered data that
can actually be used for cached seeking. 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 ``fw-bytes`` is the number of bytes of packets buffered in the range
starting from the current decoding position. starting from the current decoding position.
@ -1464,6 +1471,8 @@ Property list
MPV_FORMAT_NODE_MAP MPV_FORMAT_NODE_MAP
"start" MPV_FORMAT_DOUBLE "start" MPV_FORMAT_DOUBLE
"end" MPV_FORMAT_DOUBLE "end" MPV_FORMAT_DOUBLE
"bof-cached" MPV_FORMAT_FLAG
"eof-cached" MPV_FORMAT_FLAG
"fw-bytes" MPV_FORMAT_INT64 "fw-bytes" MPV_FORMAT_INT64
Other fields (might be changed or removed in the future): 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), .start = MP_ADD_PTS(range->seek_start, in->ts_offset),
.end = MP_ADD_PTS(range->seek_end, 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 { struct demux_reader_state {
bool eof, underrun, idle; bool eof, underrun, idle;
bool bof_cached, eof_cached;
double ts_duration; double ts_duration;
double ts_reader; // approx. timerstamp of decoder position double ts_reader; // approx. timerstamp of decoder position
double ts_end; // approx. timestamp of end of buffered range 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; struct mpv_node *r = (struct mpv_node *)arg;
node_init(r, MPV_FORMAT_NODE_MAP, NULL); 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 = struct mpv_node *ranges =
node_map_add(r, "seekable-ranges", MPV_FORMAT_NODE_ARRAY); node_map_add(r, "seekable-ranges", MPV_FORMAT_NODE_ARRAY);
for (int n = 0; n < s.num_seek_ranges; n++) { for (int n = 0; n < s.num_seek_ranges; n++) {