|
|
@ -955,19 +955,30 @@ static int guess_ni_flag(AVFormatContext *s){ |
|
|
|
int i; |
|
|
|
int i; |
|
|
|
int64_t last_start=0; |
|
|
|
int64_t last_start=0; |
|
|
|
int64_t first_end= INT64_MAX; |
|
|
|
int64_t first_end= INT64_MAX; |
|
|
|
|
|
|
|
int64_t oldpos= url_ftell(s->pb); |
|
|
|
|
|
|
|
|
|
|
|
for(i=0; i<s->nb_streams; i++){ |
|
|
|
for(i=0; i<s->nb_streams; i++){ |
|
|
|
AVStream *st = s->streams[i]; |
|
|
|
AVStream *st = s->streams[i]; |
|
|
|
int n= st->nb_index_entries; |
|
|
|
int n= st->nb_index_entries; |
|
|
|
|
|
|
|
unsigned int size; |
|
|
|
|
|
|
|
|
|
|
|
if(n <= 0) |
|
|
|
if(n <= 0) |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(n >= 2){ |
|
|
|
|
|
|
|
int64_t pos= st->index_entries[0].pos; |
|
|
|
|
|
|
|
url_fseek(s->pb, pos + 4, SEEK_SET); |
|
|
|
|
|
|
|
size= get_le32(s->pb); |
|
|
|
|
|
|
|
if(pos + size > st->index_entries[1].pos) |
|
|
|
|
|
|
|
last_start= INT64_MAX; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(st->index_entries[0].pos > last_start) |
|
|
|
if(st->index_entries[0].pos > last_start) |
|
|
|
last_start= st->index_entries[0].pos; |
|
|
|
last_start= st->index_entries[0].pos; |
|
|
|
if(st->index_entries[n-1].pos < first_end) |
|
|
|
if(st->index_entries[n-1].pos < first_end) |
|
|
|
first_end= st->index_entries[n-1].pos; |
|
|
|
first_end= st->index_entries[n-1].pos; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
url_fseek(s->pb, oldpos, SEEK_SET); |
|
|
|
return last_start > first_end; |
|
|
|
return last_start > first_end; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|