diff options
Diffstat (limited to 'demux/demux_timeline.c')
-rw-r--r-- | demux/demux_timeline.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/demux/demux_timeline.c b/demux/demux_timeline.c index 3c5304c6dc..7364ce8399 100644 --- a/demux/demux_timeline.c +++ b/demux/demux_timeline.c @@ -89,6 +89,11 @@ struct priv { static void add_tl(struct demuxer *demuxer, struct timeline *tl); +static void update_slave_stats(struct demuxer *demuxer, struct demuxer *slave) +{ + demux_report_unbuffered_read_bytes(demuxer, demux_get_bytes_read_hack(slave)); +} + static bool target_stream_used(struct segment *seg, struct virtual_stream *vs) { for (int n = 0; n < seg->num_stream_map; n++) { @@ -159,6 +164,8 @@ static void reselect_streams(struct demuxer *demuxer) selected = false; struct sh_stream *sh = demux_get_stream(seg->d, i); demuxer_select_track(seg->d, sh, MP_NOPTS_VALUE, selected); + + update_slave_stats(demuxer, seg->d); } } @@ -204,8 +211,10 @@ static void reopen_lazy_segments(struct demuxer *demuxer, demuxer->cancel, demuxer->global); if (!src->current->d && !demux_cancel_test(demuxer)) MP_ERR(demuxer, "failed to load segment\n"); - if (src->current->d) + if (src->current->d) { demux_disable_cache(src->current->d); + update_slave_stats(demuxer, src->current->d); + } associate_streams(demuxer, src, src->current); } @@ -218,6 +227,9 @@ static void switch_segment(struct demuxer *demuxer, struct virtual_source *src, MP_VERBOSE(demuxer, "switch to segment %d\n", new->index); + if (src->current && src->current->d) + update_slave_stats(demuxer, src->current->d); + src->current = new; reopen_lazy_segments(demuxer, src); if (!new->d) @@ -295,6 +307,8 @@ static bool d_read_packet(struct demuxer *demuxer, struct demux_packet **out_pkt if (!pkt || pkt->pts >= seg->end) src->eos_packets += 1; + update_slave_stats(demuxer, seg->d); + // Test for EOF. Do this here to properly run into EOF even if other // streams are disabled etc. If it somehow doesn't manage to reach the end // after demuxing a high (bit arbitrary) number of packets, assume one of |