[FFmpeg-cvslog] mpegts: Try seeking back even for nonseekable protocols

Martin Storsjö git at videolan.org
Tue Apr 24 02:43:16 CEST 2012


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Sat Apr 21 22:48:34 2012 +0300| [269cb6751b3fd2163253f9a8ea0d193121858677] | committer: Martin Storsjö

mpegts: Try seeking back even for nonseekable protocols

The mpegts demuxer reads 5 KB at startup just for discovering
the packet size. Since the default avio buffer size is 32 KB,
the seek back to the start will in most cases be within the
avio buffer, and will in most cases succeed even if the actual
protocol isn't seekable.

This makes the demuxer startup faster/with less data when
reading data from a non-seekable input, by not skipping
the first few KB.

If it fails, don't warn if the protocol isn't seekable, making
it behave as before in the failure case.

Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=269cb6751b3fd2163253f9a8ea0d193121858677
---

 libavformat/mpegts.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index e067927..c853e72 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -1899,7 +1899,7 @@ static int mpegts_read_header(AVFormatContext *s)
         /* normal demux */
 
         /* first do a scan to get all the services */
-        if (pb->seekable && avio_seek(pb, pos, SEEK_SET) < 0)
+        if (avio_seek(pb, pos, SEEK_SET) < 0 && pb->seekable)
             av_log(s, AV_LOG_ERROR, "Unable to seek back to the start\n");
 
         mpegts_open_section_filter(ts, SDT_PID, sdt_cb, ts, 1);



More information about the ffmpeg-cvslog mailing list