[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(×tamp, &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