diff --git a/libavformat/subtitles.c b/libavformat/subtitles.c index 192043f917..bb8976682d 100644 --- a/libavformat/subtitles.c +++ b/libavformat/subtitles.c @@ -204,7 +204,8 @@ void ff_subtitles_queue_finalize(void *log_ctx, FFDemuxSubtitlesQueue *q) if (q->subs[i].duration == -1 && i < q->nb_subs - 1) q->subs[i].duration = q->subs[i + 1].pts - q->subs[i].pts; - drop_dups(log_ctx, q); + if (!q->keep_duplicates) + drop_dups(log_ctx, q); } int ff_subtitles_queue_read_packet(FFDemuxSubtitlesQueue *q, AVPacket *pkt) diff --git a/libavformat/subtitles.h b/libavformat/subtitles.h index c70f6fffde..ca78db224d 100644 --- a/libavformat/subtitles.h +++ b/libavformat/subtitles.h @@ -105,6 +105,7 @@ typedef struct { int allocated_size; ///< allocated size for subs int current_sub_idx; ///< current position for the read packet callback enum sub_sort sort; ///< sort method to use when finalizing subtitles + int keep_duplicates; ///< set to 1 to keep duplicated subtitle events } FFDemuxSubtitlesQueue; /**