diff --git a/libavformat/mov.c b/libavformat/mov.c index bbd588c705..a7d444b0ee 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -3446,6 +3446,7 @@ static void mov_fix_index(MOVContext *mov, AVStream *st) MOVIndexRange *current_index_range; int i; int found_keyframe_after_edit = 0; + int found_non_empty_edit = 0; if (!msc->elst_data || msc->elst_count <= 0 || nb_old <= 0) { return; @@ -3492,10 +3493,11 @@ static void mov_fix_index(MOVContext *mov, AVStream *st) edit_list_dts_counter = edit_list_dts_entry_end; edit_list_dts_entry_end += edit_list_duration; num_discarded_begin = 0; - if (edit_list_media_time == -1) { + if (!found_non_empty_edit && edit_list_media_time == -1) { empty_edits_sum_duration += edit_list_duration; continue; } + found_non_empty_edit = 1; // If we encounter a non-negative edit list reset the skip_samples/start_pad fields and set them // according to the edit list below.