hls: Reset the AVIOContext when seeking
authorMartin Storsjö <martin@martin.st>
Fri, 20 Jan 2012 14:29:09 +0000 (16:29 +0200)
committerMartin Storsjö <martin@martin.st>
Mon, 20 Feb 2012 09:10:02 +0000 (11:10 +0200)
This avoids reading any old data in the AVIOContext buffer after
the seek, and indicates to the mpegts demuxer that we've seeked,
avoiding continuity check errors.

Signed-off-by: Martin Storsjö <martin@martin.st>
libavformat/hls.c

index c4046f2..e876735 100644 (file)
@@ -708,6 +708,10 @@ static int hls_read_seek(AVFormatContext *s, int stream_index,
         av_free_packet(&var->pkt);
         reset_packet(&var->pkt);
         var->pb.eof_reached = 0;
+        /* Clear any buffered data */
+        var->pb.buf_end = var->pb.buf_ptr = var->pb.buffer;
+        /* Reset the pos, to let the mpegts demuxer know we've seeked. */
+        var->pb.pos = 0;
 
         /* Locate the segment that contains the target timestamp */
         for (j = 0; j < var->n_segments; j++) {