mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
add subtitle codec autodetection
Originally committed as revision 25884 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
1c3b408f88
commit
118ccae030
9
ffmpeg.c
9
ffmpeg.c
@ -3569,6 +3569,7 @@ static void new_subtitle_stream(AVFormatContext *oc, int file_idx)
|
||||
AVOutputStream *ost;
|
||||
AVCodec *codec=NULL;
|
||||
AVCodecContext *subtitle_enc;
|
||||
enum CodecID codec_id;
|
||||
|
||||
st = av_new_stream(oc, oc->nb_streams < nb_streamid_map ? streamid_map[oc->nb_streams] : 0);
|
||||
if (!st) {
|
||||
@ -3579,9 +3580,14 @@ static void new_subtitle_stream(AVFormatContext *oc, int file_idx)
|
||||
subtitle_enc = st->codec;
|
||||
output_codecs = grow_array(output_codecs, sizeof(*output_codecs), &nb_output_codecs, nb_output_codecs + 1);
|
||||
if(!subtitle_stream_copy){
|
||||
subtitle_enc->codec_id = find_codec_or_die(subtitle_codec_name, AVMEDIA_TYPE_SUBTITLE, 1,
|
||||
if (subtitle_codec_name) {
|
||||
codec_id = find_codec_or_die(subtitle_codec_name, AVMEDIA_TYPE_SUBTITLE, 1,
|
||||
avcodec_opts[AVMEDIA_TYPE_SUBTITLE]->strict_std_compliance);
|
||||
codec= output_codecs[nb_output_codecs-1] = avcodec_find_encoder_by_name(subtitle_codec_name);
|
||||
} else {
|
||||
codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVMEDIA_TYPE_SUBTITLE);
|
||||
codec = avcodec_find_encoder(codec_id);
|
||||
}
|
||||
}
|
||||
avcodec_get_context_defaults3(st->codec, codec);
|
||||
|
||||
@ -3600,6 +3606,7 @@ static void new_subtitle_stream(AVFormatContext *oc, int file_idx)
|
||||
if (subtitle_stream_copy) {
|
||||
st->stream_copy = 1;
|
||||
} else {
|
||||
subtitle_enc->codec_id = codec_id;
|
||||
set_context_opts(avcodec_opts[AVMEDIA_TYPE_SUBTITLE], subtitle_enc, AV_OPT_FLAG_SUBTITLE_PARAM | AV_OPT_FLAG_ENCODING_PARAM, codec);
|
||||
}
|
||||
|
||||
|
@ -274,6 +274,8 @@ enum CodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name,
|
||||
return codec_id;
|
||||
}else if(type == AVMEDIA_TYPE_AUDIO)
|
||||
return fmt->audio_codec;
|
||||
else if (type == AVMEDIA_TYPE_SUBTITLE)
|
||||
return fmt->subtitle_codec;
|
||||
else
|
||||
return CODEC_ID_NONE;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user