[FFmpeg-devel] [PATCH 3/3] ffmpeg: ensure that -fix_sub_duration doesnt create subtitles with zero duration
Marton Balint
cus at passwd.hu
Sat Nov 23 17:58:15 CET 2013
Signed-off-by: Marton Balint <cus at passwd.hu>
---
ffmpeg.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/ffmpeg.c b/ffmpeg.c
index 5ba9450..4bb88e6 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1801,19 +1801,23 @@ static int transcode_subtitles(InputStream *ist, AVPacket *pkt, int *got_output)
}
if (ist->fix_sub_duration) {
+ int end = 1;
if (ist->prev_sub.got_output) {
- int end = av_rescale(subtitle.pts - ist->prev_sub.subtitle.pts,
- 1000, AV_TIME_BASE);
+ end = av_rescale(subtitle.pts - ist->prev_sub.subtitle.pts,
+ 1000, AV_TIME_BASE);
if (end < ist->prev_sub.subtitle.end_display_time) {
av_log(ist->st->codec, AV_LOG_DEBUG,
- "Subtitle duration reduced from %d to %d\n",
- ist->prev_sub.subtitle.end_display_time, end);
+ "Subtitle duration reduced from %d to %d%s\n",
+ ist->prev_sub.subtitle.end_display_time, end,
+ end <= 0 ? ", dropping it" : "");
ist->prev_sub.subtitle.end_display_time = end;
}
}
FFSWAP(int, *got_output, ist->prev_sub.got_output);
FFSWAP(int, ret, ist->prev_sub.ret);
FFSWAP(AVSubtitle, subtitle, ist->prev_sub.subtitle);
+ if (end <= 0)
+ goto out;
}
if (!*got_output)
--
1.8.4
More information about the ffmpeg-devel
mailing list