[FFmpeg-cvslog] mpegts: cache information to speed up seeking.

Michael Niedermayer git at videolan.org
Fri Oct 21 21:29:20 CEST 2011


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Fri Oct 21 21:11:28 2011 +0200| [db1347f66ed009ec5a80749d853e1a5768225d26] | committer: Michael Niedermayer

mpegts: cache information to speed up seeking.

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

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

diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 36443cb..f014d7c 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -1778,10 +1778,13 @@ static int64_t mpegts_get_dts(AVFormatContext *s, int stream_index,
         if(ret < 0)
             return AV_NOPTS_VALUE;
         av_free_packet(&pkt);
-        if(pkt.stream_index == stream_index && pkt.dts != AV_NOPTS_VALUE){
-            av_assert0(pkt.pos >= 0);
-            *ppos= pkt.pos;
-            return pkt.dts;
+        if(pkt.dts != AV_NOPTS_VALUE && pkt.pos >= 0){
+            ff_reduce_index(s, pkt.stream_index);
+            av_add_index_entry(s->streams[pkt.stream_index], pkt.pos, pkt.dts, 0, 0, AVINDEX_KEYFRAME /* FIXME keyframe? */);
+            if(pkt.stream_index == stream_index){
+                *ppos= pkt.pos;
+                return pkt.dts;
+            }
         }
         pos = pkt.pos;
     }



More information about the ffmpeg-cvslog mailing list