From 7d0e927a31edb5fb584c2ab17f7fd676838d6639 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 18 Nov 2013 16:38:12 +0100 Subject: [PATCH] avformat/mpegts: fix resync seek The seek ended up seeking before the begin, which caused problems Fixes initial sync issues with libbluray Fixes Ticket3117 Signed-off-by: Michael Niedermayer --- libavformat/mpegts.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index e73209cdb3..59b0058074 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -1993,7 +1993,9 @@ static int read_packet(AVFormatContext *s, uint8_t *buf, int raw_packet_size, co /* check packet sync byte */ if ((*data)[0] != 0x47) { /* find a new packet start */ - avio_seek(pb, -raw_packet_size, SEEK_CUR); + uint64_t pos = avio_tell(pb); + avio_seek(pb, -FFMIN(raw_packet_size, pos), SEEK_CUR); + if (mpegts_resync(s) < 0) return AVERROR(EAGAIN); else