[FFmpeg-cvslog] mpegts: only calculate stat index when its needed during probe

Michael Niedermayer git at videolan.org
Sat Nov 9 16:22:07 CET 2013


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sat Nov  9 16:09:26 2013 +0100| [e624df5dc33fb1ded7b8b23a72565f882dbb0387] | committer: Michael Niedermayer

mpegts: only calculate stat index when its needed during probe

40% faster probe

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

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

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

diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index bded171..e73209c 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -452,22 +452,19 @@ static void mpegts_close_filter(MpegTSContext *ts, MpegTSFilter *filter)
 static int analyze(const uint8_t *buf, int size, int packet_size, int *index){
     int stat[TS_MAX_PACKET_SIZE];
     int i;
-    int x=0;
     int best_score=0;
 
     memset(stat, 0, packet_size*sizeof(*stat));
 
-    for(x=i=0; i<size-3; i++){
+    for(i=0; i<size-3; i++){
         if(buf[i] == 0x47 && !(buf[i+1] & 0x80) && buf[i+3] != 0x47){
+            int x = i % packet_size;
             stat[x]++;
             if(stat[x] > best_score){
                 best_score= stat[x];
                 if(index) *index= x;
             }
         }
-
-        x++;
-        if(x == packet_size) x= 0;
     }
 
     return best_score;



More information about the ffmpeg-cvslog mailing list