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.
This commit is contained in:
wm4 2016-03-17 21:32:41 +01:00
parent 0d19316de2
commit fd57503890
1 changed files with 3 additions and 5 deletions

View File

@ -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);
}