# HG changeset patch # User michael # Date 1104720731 0 # Node ID 9f8fa2f4edfdab68b1aa67dadae5633f99f7d61a # Parent 07f51a0f6599312f0d33d6110b2b381c073e5776 skip INDX chunks diff -r 07f51a0f6599 -r 9f8fa2f4edfd rm.c --- a/rm.c Sat Jan 01 23:02:09 2005 +0000 +++ b/rm.c Mon Jan 03 02:52:11 2005 +0000 @@ -731,6 +731,7 @@ 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 @@ *timestamp = AV_NOPTS_VALUE; *flags= 0; }else{ - if(get_byte(pb)) - continue; - if(get_byte(pb)) + 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 = get_be16(pb); - if (len < 12) - continue; + len=state; + state= 0xFFFFFFFF; + num = get_be16(pb); *timestamp = get_be32(pb); res= get_byte(pb); /* reserved */ @@ -761,6 +769,7 @@ break; } if (i == s->nb_streams) { +skip: /* skip packet if unknown number */ url_fskip(pb, len); rm->remaining_len -= len;