From fd57503890703b705fcd82f2ba09d2d0977eb1ad Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 17 Mar 2016 21:32:41 +0100 Subject: demux_timeline: skip decoder reinit when seeking to same segment "Normal" seeks, which don't actually switch the segment, do not need to reinit the decoders. --- demux/demux_timeline.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/demux/demux_timeline.c b/demux/demux_timeline.c index 92cf1e6fcf..3c9748036d 100644 --- a/demux/demux_timeline.c +++ b/demux/demux_timeline.c @@ -93,9 +93,7 @@ static void switch_segment(struct demuxer *demuxer, struct segment *new, double start_pts, int flags) { struct priv *p = demuxer->priv; - - if (p->current == new) - return; + bool new_segment = p->current != new; if (!(flags & (SEEK_FORWARD | SEEK_BACKWARD))) flags |= SEEK_BACKWARD; @@ -109,7 +107,8 @@ static void switch_segment(struct demuxer *demuxer, struct segment *new, for (int n = 0; n < p->num_streams; n++) { struct virtual_stream *vs = &p->streams[n]; - vs->new_segment = true; + if (new_segment) + vs->new_segment = true; vs->eos_packets = 0; } @@ -132,7 +131,6 @@ static void d_seek(struct demuxer *demuxer, double seek_pts, int flags) } } - p->current = NULL; // force seek switch_segment(demuxer, new, pts, flags); } -- cgit v1.2.3