ff_gen_search: fix limit
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 18 Jun 2013 18:48:53 +0000 (20:48 +0200)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Tue, 18 Jun 2013 21:46:05 +0000 (23:46 +0200)
The limit value could become slightly wrong in the last iteration

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b3dd50cd0dbbda08610b75384128f5f47f5199d9)

libavformat/utils.c

index 1ba9258..d9c95cf 100644 (file)
@@ -1860,11 +1860,13 @@ int64_t ff_gen_search(AVFormatContext *s, int stream_index, int64_t target_ts,
 
     if(ts_max == AV_NOPTS_VALUE){
         int64_t step= 1024;
+        int64_t limit;
         filesize = avio_size(s->pb);
         pos_max = filesize - 1;
         do{
+            limit = pos_max;
             pos_max = FFMAX(0, pos_max - step);
-            ts_max = ff_read_timestamp(s, stream_index, &pos_max, pos_max + step, read_timestamp);
+            ts_max = ff_read_timestamp(s, stream_index, &pos_max, limit, read_timestamp);
             step += step;
         }while(ts_max == AV_NOPTS_VALUE && pos_max > 0);
         if (ts_max == AV_NOPTS_VALUE)