mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avformat: Make duration estimation from pts more robust
Ignore durations which differ significantly from the previous Fixes Ticket2018 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
9bb54bb685
commit
faa0068a87
@ -759,6 +759,8 @@ typedef struct AVStream {
|
||||
int64_t codec_info_duration_fields;
|
||||
int found_decoder;
|
||||
|
||||
int64_t last_duration;
|
||||
|
||||
/**
|
||||
* Those are used for average framerate estimation.
|
||||
*/
|
||||
|
@ -2342,8 +2342,10 @@ static void estimate_timings_from_pts(AVFormatContext *ic, int64_t old_offset)
|
||||
else
|
||||
duration -= st->first_dts;
|
||||
if (duration > 0) {
|
||||
if (st->duration == AV_NOPTS_VALUE || st->duration < duration)
|
||||
if (st->duration == AV_NOPTS_VALUE || st->info->last_duration<=0 ||
|
||||
(st->duration < duration && FFABS(duration - st->info->last_duration) < 60LL*st->time_base.den / st->time_base.num))
|
||||
st->duration = duration;
|
||||
st->info->last_duration = duration;
|
||||
}
|
||||
}
|
||||
av_free_packet(pkt);
|
||||
|
Loading…
Reference in New Issue
Block a user