static void reselect_streams(demuxer_t *demuxer) { struct priv *p = demuxer->priv; for (int n = 0; n < MPMIN(p->slave->num_streams, p->num_streams); n++) { if (p->streams[n]) { demuxer_select_track(p->slave, p->slave->streams[n], demux_stream_is_selected(p->streams[n])); } } }
static void reselect_streams(struct demuxer *demuxer) { struct priv *p = demuxer->priv; for (int n = 0; n < p->num_streams; n++) { struct virtual_stream *vs = &p->streams[n]; vs->selected = demux_stream_is_selected(vs->sh); } for (int n = 0; n < p->num_segments; n++) { struct segment *seg = p->segments[n]; for (int i = 0; i < seg->num_stream_map; i++) { struct sh_stream *sh = demux_get_stream(seg->d, i); bool selected = false; if (seg->stream_map[i] >= 0) selected = p->streams[seg->stream_map[i]].selected; // This stops demuxer readahead for inactive segments. if (!p->current || seg->d != p->current->d) selected = false; demuxer_select_track(seg->d, sh, MP_NOPTS_VALUE, selected); } } }