[FFmpeg-devel] [PATCH]Do not select a default subtitle output stream with incorrect subtitle type

Carl Eugen Hoyos cehoyos at ag.or.at
Fri Aug 1 01:54:57 CEST 2014


Hi!

When transcoding an input file with subtitles to mkv, ffmpeg by default tries 
to encode the subtitles even if the input contains bitmap subtitles.
Attached patch should fix this issue reported in ticket #3819 (and before 
iirc).

This patch currently does not work correctly for teletext input streams 
because no properties are defined for teletext, I suspect it should be 
(AV_CODEC_PROP_TEXT_SUB | AV_CODEC_PROP_BITMAP_SUB). In any case, this 
corner-case should not affect this patch imo.

Please review, Carl Eugen
-------------- next part --------------
diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c
index 2adefc5..6e12ab2 100644
--- a/ffmpeg_opt.c
+++ b/ffmpeg_opt.c
@@ -1869,8 +1869,16 @@ static int open_output_file(OptionsContext *o, const char *filename)
         if (!o->subtitle_disable && (avcodec_find_encoder(oc->oformat->subtitle_codec) || subtitle_codec_name)) {
             for (i = 0; i < nb_input_streams; i++)
                 if (input_streams[i]->st->codec->codec_type == AVMEDIA_TYPE_SUBTITLE) {
-                    new_subtitle_stream(o, oc, i);
-                    break;
+                    if (subtitle_codec_name ||
+                        avcodec_find_encoder(oc->oformat->subtitle_codec) &&
+                        avcodec_descriptor_get(avcodec_find_encoder(oc->oformat->subtitle_codec)->id) &&
+                        avcodec_descriptor_get(input_streams[i]->st->codec->codec_id) &&
+                        avcodec_descriptor_get(avcodec_find_encoder(oc->oformat->subtitle_codec)->id)->props &
+                        avcodec_descriptor_get(input_streams[i]->st->codec->codec_id)->props &
+                        (AV_CODEC_PROP_TEXT_SUB | AV_CODEC_PROP_BITMAP_SUB)) {
+                        new_subtitle_stream(o, oc, i);
+                        break;
+                    }
                 }
         }
         /* do something with data? */


More information about the ffmpeg-devel mailing list