[SCM] libav/experimental: skip INDX chunks

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:42:33 UTC 2013


The following commit has been merged in the experimental branch:
commit 119cebf42965bd28c74c2e99ba16c286c55c76df
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Mon Jan 3 02:52:11 2005 +0000

    skip INDX chunks
    
    Originally committed as revision 3796 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/rm.c b/libavformat/rm.c
index f08a658..54ffa02 100644
--- a/libavformat/rm.c
+++ b/libavformat/rm.c
@@ -731,6 +731,7 @@ static int sync(AVFormatContext *s, int64_t *timestamp, int *flags, int *stream_
     ByteIOContext *pb = &s->pb;
     int len, num, res, i;
     AVStream *st;
+    uint32_t state=0xFFFFFFFF;
 
     while(!url_feof(pb)){
         *pos= url_ftell(pb);
@@ -740,13 +741,20 @@ static int sync(AVFormatContext *s, int64_t *timestamp, int *flags, int *stream_
             *timestamp = AV_NOPTS_VALUE;
             *flags= 0;
         }else{
-            if(get_byte(pb))
-                continue;
-            if(get_byte(pb))
-                continue;
-            len = get_be16(pb);
-            if (len < 12)
+            state= (state<<8) + get_byte(pb);
+            
+            if(state == MKBETAG('I', 'N', 'D', 'X')){
+                len = get_be16(pb) - 6;
+                if(len<0)
+                    continue;
+                goto skip;
+            }
+            
+            if(state > (unsigned)0xFFFF || state < 12)
                 continue;
+            len=state;
+            state= 0xFFFFFFFF;
+
             num = get_be16(pb);
             *timestamp = get_be32(pb);
             res= get_byte(pb); /* reserved */
@@ -761,6 +769,7 @@ static int sync(AVFormatContext *s, int64_t *timestamp, int *flags, int *stream_
                 break;
         }
         if (i == s->nb_streams) {
+skip:
             /* skip packet if unknown number */
             url_fskip(pb, len);
             rm->remaining_len -= len;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list