|
|
|
@ -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; |
|
|
|
|