You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
fftools/ffmpeg_mux_init: drop useless new_stream_{data,unknown}
Their only function is checking that encoding was not specified for data/unknown-type streams, but the check is broken because enc_ctx will not be created in ost_add() unless a valid encoder can be found. Add an actually working check for all types for which encoding is not supported in choose_encoder().
This commit is contained in:
@@ -113,8 +113,21 @@ static int choose_encoder(const OptionsContext *o, AVFormatContext *s,
|
|||||||
|
|
||||||
*enc = NULL;
|
*enc = NULL;
|
||||||
|
|
||||||
if (type == AVMEDIA_TYPE_VIDEO || type == AVMEDIA_TYPE_AUDIO || type == AVMEDIA_TYPE_SUBTITLE) {
|
MATCH_PER_STREAM_OPT(codec_names, str, codec_name, s, ost->st);
|
||||||
MATCH_PER_STREAM_OPT(codec_names, str, codec_name, s, ost->st);
|
|
||||||
|
if (type != AVMEDIA_TYPE_VIDEO &&
|
||||||
|
type != AVMEDIA_TYPE_AUDIO &&
|
||||||
|
type != AVMEDIA_TYPE_SUBTITLE) {
|
||||||
|
if (codec_name && strcmp(codec_name, "copy")) {
|
||||||
|
const char *type_str = av_get_media_type_string(type);
|
||||||
|
av_log(ost, AV_LOG_FATAL,
|
||||||
|
"Encoder '%s' specified, but only '-codec copy' supported "
|
||||||
|
"for %s streams\n", codec_name, type_str);
|
||||||
|
return AVERROR(ENOSYS);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (!codec_name) {
|
if (!codec_name) {
|
||||||
ost->par_in->codec_id = av_guess_codec(s->oformat, NULL, s->url,
|
ost->par_in->codec_id = av_guess_codec(s->oformat, NULL, s->url,
|
||||||
NULL, ost->type);
|
NULL, ost->type);
|
||||||
@@ -130,7 +143,6 @@ static int choose_encoder(const OptionsContext *o, AVFormatContext *s,
|
|||||||
*enc = find_codec_or_die(ost, codec_name, ost->type, 1);
|
*enc = find_codec_or_die(ost, codec_name, ost->type, 1);
|
||||||
ost->par_in->codec_id = (*enc)->id;
|
ost->par_in->codec_id = (*enc)->id;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -796,24 +808,6 @@ static void new_stream_audio(Muxer *mux, const OptionsContext *o,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void new_stream_data(Muxer *mux, const OptionsContext *o,
|
|
||||||
OutputStream *ost)
|
|
||||||
{
|
|
||||||
if (ost->enc_ctx) {
|
|
||||||
av_log(ost, AV_LOG_FATAL, "Data stream encoding not supported yet (only streamcopy)\n");
|
|
||||||
exit_program(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void new_stream_unknown(Muxer *mux, const OptionsContext *o,
|
|
||||||
OutputStream *ost)
|
|
||||||
{
|
|
||||||
if (ost->enc_ctx) {
|
|
||||||
av_log(ost, AV_LOG_FATAL, "Unknown stream encoding not supported yet (only streamcopy)\n");
|
|
||||||
exit_program(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void new_stream_attachment(Muxer *mux, const OptionsContext *o,
|
static void new_stream_attachment(Muxer *mux, const OptionsContext *o,
|
||||||
OutputStream *ost)
|
OutputStream *ost)
|
||||||
{
|
{
|
||||||
@@ -1218,9 +1212,7 @@ static OutputStream *ost_add(Muxer *mux, const OptionsContext *o,
|
|||||||
case AVMEDIA_TYPE_VIDEO: new_stream_video (mux, o, ost); break;
|
case AVMEDIA_TYPE_VIDEO: new_stream_video (mux, o, ost); break;
|
||||||
case AVMEDIA_TYPE_AUDIO: new_stream_audio (mux, o, ost); break;
|
case AVMEDIA_TYPE_AUDIO: new_stream_audio (mux, o, ost); break;
|
||||||
case AVMEDIA_TYPE_SUBTITLE: new_stream_subtitle (mux, o, ost); break;
|
case AVMEDIA_TYPE_SUBTITLE: new_stream_subtitle (mux, o, ost); break;
|
||||||
case AVMEDIA_TYPE_DATA: new_stream_data (mux, o, ost); break;
|
|
||||||
case AVMEDIA_TYPE_ATTACHMENT: new_stream_attachment(mux, o, ost); break;
|
case AVMEDIA_TYPE_ATTACHMENT: new_stream_attachment(mux, o, ost); break;
|
||||||
default: new_stream_unknown (mux, o, ost); break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == AVMEDIA_TYPE_VIDEO || type == AVMEDIA_TYPE_AUDIO) {
|
if (type == AVMEDIA_TYPE_VIDEO || type == AVMEDIA_TYPE_AUDIO) {
|
||||||
|
Reference in New Issue
Block a user