1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-10 06:10:52 +02:00

fftools/ffmpeg_mux_init: return error codes from validate_enc_avopt() instead of aborting

This commit is contained in:
Anton Khirnov
2023-07-12 16:40:19 +02:00
parent 4e3557aadb
commit fd40197170

View File

@@ -2342,7 +2342,7 @@ static int process_forced_keyframes(Muxer *mux, const OptionsContext *o)
return 0; return 0;
} }
static void validate_enc_avopt(Muxer *mux, const AVDictionary *codec_avopt) static int validate_enc_avopt(Muxer *mux, const AVDictionary *codec_avopt)
{ {
const AVClass *class = avcodec_get_class(); const AVClass *class = avcodec_get_class();
const AVClass *fclass = avformat_get_class(); const AVClass *fclass = avformat_get_class();
@@ -2370,7 +2370,7 @@ static void validate_enc_avopt(Muxer *mux, const AVDictionary *codec_avopt)
if (!(option->flags & AV_OPT_FLAG_ENCODING_PARAM)) { if (!(option->flags & AV_OPT_FLAG_ENCODING_PARAM)) {
av_log(mux, AV_LOG_ERROR, "Codec AVOption %s (%s) is not an " av_log(mux, AV_LOG_ERROR, "Codec AVOption %s (%s) is not an "
"encoding option.\n", e->key, option->help ? option->help : ""); "encoding option.\n", e->key, option->help ? option->help : "");
exit_program(1); return AVERROR(EINVAL);
} }
// gop_timecode is injected by generic code but not always used // gop_timecode is injected by generic code but not always used
@@ -2384,6 +2384,8 @@ static void validate_enc_avopt(Muxer *mux, const AVDictionary *codec_avopt)
"any stream.\n", e->key, option->help ? option->help : ""); "any stream.\n", e->key, option->help ? option->help : "");
} }
av_dict_free(&unused_opts); av_dict_free(&unused_opts);
return 0;
} }
static int init_output_stream_nofilter(OutputStream *ost) static int init_output_stream_nofilter(OutputStream *ost)
@@ -2502,7 +2504,9 @@ int of_open(const OptionsContext *o, const char *filename)
return err; return err;
/* check if all codec options have been used */ /* check if all codec options have been used */
validate_enc_avopt(mux, o->g->codec_opts); err = validate_enc_avopt(mux, o->g->codec_opts);
if (err < 0)
return err;
/* check filename in case of an image number is expected */ /* check filename in case of an image number is expected */
if (oc->oformat->flags & AVFMT_NEEDNUMBER && !av_filename_number_test(oc->url)) { if (oc->oformat->flags & AVFMT_NEEDNUMBER && !av_filename_number_test(oc->url)) {