[FFmpeg-cvslog] respect the maximum position mpegts_get_pcr is allowed to seek to

elupus git at videolan.org
Wed Sep 14 17:19:58 CEST 2011


ffmpeg | branch: master | elupus <elupus at ecce.se> | Wed Aug 27 20:07:11 2008 +0200| [880e83827f47f638596cf60681ee1dfa89535c75] | committer: Michael Niedermayer

respect the maximum position mpegts_get_pcr is allowed to seek to

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

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

diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 4045f10..34f1c96 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -1719,19 +1719,19 @@ static int64_t mpegts_get_pcr(AVFormatContext *s, int stream_index,
     uint8_t buf[TS_PACKET_SIZE];
     int pcr_l, pcr_pid = ((PESContext*)s->streams[stream_index]->priv_data)->pcr_pid;
     pos = ((*ppos  + ts->raw_packet_size - 1 - ts->pos47) / ts->raw_packet_size) * ts->raw_packet_size + ts->pos47;
-        for(;;) {
+        while(pos < pos_limit) {
             avio_seek(s->pb, pos, SEEK_SET);
             if (avio_read(s->pb, buf, TS_PACKET_SIZE) != TS_PACKET_SIZE)
                 return AV_NOPTS_VALUE;
             if ((pcr_pid < 0 || (AV_RB16(buf + 1) & 0x1fff) == pcr_pid) &&
                 parse_pcr(&timestamp, &pcr_l, buf) == 0) {
-                break;
+                *ppos = pos;
+                return timestamp;
             }
             pos += ts->raw_packet_size;
         }
-    *ppos = pos;
 
-    return timestamp;
+    return AV_NOPTS_VALUE;
 }
 
 #ifdef USE_SYNCPOINT_SEARCH



More information about the ffmpeg-cvslog mailing list