mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Workaround broken AVI files from DC-XZ6.
Fixes issue897. Originally committed as revision 18942 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
80704c47c4
commit
8c68f25b20
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user