Commit 46eaaad8 authored by Michael Niedermayer's avatar Michael Niedermayer

Detect NI-avi at playtime like mplayer.

Fixes Ticket333
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 652c7729
......@@ -73,6 +73,7 @@ typedef struct {
int odml_depth;
int use_odml;
#define MAX_ODML_DEPTH 1000
int64_t dts_max;
} AVIContext;
......@@ -1168,6 +1169,16 @@ resync:
}
ast->seek_pos= 0;
if(!avi->non_interleaved && st->nb_index_entries>1){
int64_t dts= av_rescale_q(pkt->dts, st->time_base, AV_TIME_BASE_Q);
if(avi->dts_max - dts > 2*AV_TIME_BASE){
avi->non_interleaved= 1;
av_log(s, AV_LOG_INFO, "Switching to NI mode, due to poor interleaving\n");
}else if(avi->dts_max < dts)
avi->dts_max = dts;
}
return size;
}
......@@ -1407,6 +1418,7 @@ static int avi_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp
/* do the seek */
avio_seek(s->pb, pos_min, SEEK_SET);
avi->stream_index= -1;
avi->dts_max= INT_MIN;
return 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment