[FFmpeg-cvslog] ffmpeg: ensure that -fix_sub_duration doesnt create subtitles with zero duration
Marton Balint
git at videolan.org
Sat Nov 30 05:14:02 CET 2013
ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Sat Nov 23 17:48:49 2013 +0100| [31bb172be26aa7531a0917994d79ea5dc3709a0b] | committer: Marton Balint
ffmpeg: ensure that -fix_sub_duration doesnt create subtitles with zero duration
When fix_sub_duration is used, and the duration fixing code is generating 0
duration, that is definitely zero, and not undefined or infinite (which may be
the case for decoded AVSubtitles depending on the codec), so it is safe to drop
it.
It fixes teletext subtitle sources, when the subtitles are transmitted twice
after each other for some reason.
Signed-off-by: Marton Balint <cus at passwd.hu>
Reviewed-by: Nicolas George <george at nsup.org>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=31bb172be26aa7531a0917994d79ea5dc3709a0b
---
ffmpeg.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/ffmpeg.c b/ffmpeg.c
index 105efbc..6411ce3 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1807,19 +1807,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)
More information about the ffmpeg-cvslog
mailing list