From 2626cc4580bfd560c6983338d77b2c11c16af94f Mon Sep 17 00:00:00 2001 From: Philip Langdale Date: Sat, 11 Aug 2012 20:29:20 -0700 Subject: [PATCH] matroska: Mark S_TEXT/UTF-8 as Subrip encoded subtitles. While not explicitly stated in the specs, the original author has stated that S_TEXT/UTF-8 is expected to be text using Subrip markup, but without Subrip in-band timing. So, now that we have a decoder that conforms to this expectation, let's use it. Note that this change will impact tools that use libavformat. If they expect srt subtitles to have CODEC_ID_TEXT, they must be adjusted to expect CODEC_ID_SUBRIP. The actual content is, obviously, unchanged. Signed-off-by: Philip Langdale --- Changelog | 2 ++ libavformat/matroska.c | 1 + libavformat/matroskadec.c | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Changelog b/Changelog index 801cbff042..e42f7c65fc 100644 --- a/Changelog +++ b/Changelog @@ -52,6 +52,8 @@ version next: - ffmpeg -shortest option is now per-output file - volume measurement filter - Ut Video encoder +- Matroska demuxer now identifies SRT subtitles as AV_CODEC_ID_SUBRIP + instead of AV_CODEC_ID_TEXT version 0.11: diff --git a/libavformat/matroska.c b/libavformat/matroska.c index b386d7421b..b016491018 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -53,6 +53,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_VORBIS" , AV_CODEC_ID_VORBIS}, {"A_WAVPACK4" , AV_CODEC_ID_WAVPACK}, + {"S_TEXT/UTF8" , AV_CODEC_ID_SUBRIP}, {"S_TEXT/UTF8" , AV_CODEC_ID_TEXT}, {"S_TEXT/UTF8" , AV_CODEC_ID_SRT}, {"S_TEXT/ASCII" , AV_CODEC_ID_TEXT}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 41375e3ac3..1d0dbb3296 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2105,7 +2105,7 @@ static int matroska_parse_block(MatroskaDemuxContext *matroska, uint8_t *data, else pkt->pts = timecode; pkt->pos = pos; - if (st->codec->codec_id == AV_CODEC_ID_TEXT) + if (st->codec->codec_id == AV_CODEC_ID_SUBRIP) pkt->convergence_duration = lace_duration; else if (track->type != MATROSKA_TRACK_TYPE_SUBTITLE) pkt->duration = lace_duration;