Message ID | 20230713105553.21052-1-anton@khirnov.net |
---|---|
State | Accepted |
Commit | c313cdd70c510d5f2b632fc2c57d6d387c44d6ce |
Headers | show |
Series | [FFmpeg-devel,01/33] fftools/ffmpeg_mux_init: return errors from of_open() instead of aborting | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
> On Jul 13, 2023, at 18:55, Anton Khirnov <anton@khirnov.net> wrote: > > --- > fftools/ffmpeg_mux_init.c | 16 ++++++++-------- > 1 file changed, 8 insertions(+), 8 deletions(-) > > diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c > index 6ab541d7c5..8a3e7b98cf 100644 > --- a/fftools/ffmpeg_mux_init.c > +++ b/fftools/ffmpeg_mux_init.c > @@ -2380,7 +2380,7 @@ int of_open(const OptionsContext *o, const char *filename) > int64_t start_time = o->start_time == AV_NOPTS_VALUE ? 0 : o->start_time; > if (stop_time <= start_time) { > av_log(mux, AV_LOG_ERROR, "-to value smaller than -ss; aborting.\n"); > - exit_program(1); > + return AVERROR(EINVAL); The log message still says ‘aborting’. > } else { > recording_time = stop_time - start_time; > } > @@ -2401,7 +2401,7 @@ int of_open(const OptionsContext *o, const char *filename) > if (!oc) { > av_log(mux, AV_LOG_FATAL, "Error initializing the muxer for %s: %s\n", > filename, av_err2str(err)); > - exit_program(1); > + return err; > } > mux->fc = oc; > > @@ -2437,7 +2437,7 @@ int of_open(const OptionsContext *o, const char *filename) > "Output filename '%s' does not contain a numeric pattern like " > "'%%d', which is required by output format '%s'.\n", > oc->url, oc->oformat->name); > - exit_program(1); > + return AVERROR(EINVAL); > } > > if (!(oc->oformat->flags & AVFMT_NOFILE)) { > @@ -2450,7 +2450,7 @@ int of_open(const OptionsContext *o, const char *filename) > &mux->opts)) < 0) { > av_log(mux, AV_LOG_FATAL, "Error opening output %s: %s\n", > filename, av_err2str(err)); > - exit_program(1); > + return err; > } > } else if (strcmp(oc->oformat->name, "image2")==0 && !av_filename_number_test(filename)) > assert_file_overwrite(filename); > @@ -2469,7 +2469,7 @@ int of_open(const OptionsContext *o, const char *filename) > err = set_dispositions(mux, o); > if (err < 0) { > av_log(mux, AV_LOG_FATAL, "Error setting output stream dispositions\n"); > - exit_program(1); > + return err; > } > > // parse forced keyframe specifications; > @@ -2477,13 +2477,13 @@ int of_open(const OptionsContext *o, const char *filename) > err = process_forced_keyframes(mux, o); > if (err < 0) { > av_log(mux, AV_LOG_FATAL, "Error processing forced keyframes\n"); > - exit_program(1); > + return err; > } > > err = setup_sync_queues(mux, oc, o->shortest_buf_duration * AV_TIME_BASE); > if (err < 0) { > av_log(mux, AV_LOG_FATAL, "Error setting up output sync queues\n"); > - exit_program(1); > + return err; > } > > of->url = filename; > @@ -2500,7 +2500,7 @@ int of_open(const OptionsContext *o, const char *filename) > > err = init_output_stream_nofilter(ost); > if (err < 0) > - report_and_exit(err); > + return err; > } > > /* write the header for files with no streams */ > -- > 2.40.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Quoting zhilizhao(赵志立) (2023-07-13 14:01:48) > > > > On Jul 13, 2023, at 18:55, Anton Khirnov <anton@khirnov.net> wrote: > > > > --- > > fftools/ffmpeg_mux_init.c | 16 ++++++++-------- > > 1 file changed, 8 insertions(+), 8 deletions(-) > > > > diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c > > index 6ab541d7c5..8a3e7b98cf 100644 > > --- a/fftools/ffmpeg_mux_init.c > > +++ b/fftools/ffmpeg_mux_init.c > > @@ -2380,7 +2380,7 @@ int of_open(const OptionsContext *o, const char *filename) > > int64_t start_time = o->start_time == AV_NOPTS_VALUE ? 0 : o->start_time; > > if (stop_time <= start_time) { > > av_log(mux, AV_LOG_ERROR, "-to value smaller than -ss; aborting.\n"); > > - exit_program(1); > > + return AVERROR(EINVAL); > > The log message still says ‘aborting’. From the user's POV it does abort the transcoding, so the message is IMO still accurate. The change is only in how precisely the abort is done.
diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c index 6ab541d7c5..8a3e7b98cf 100644 --- a/fftools/ffmpeg_mux_init.c +++ b/fftools/ffmpeg_mux_init.c @@ -2380,7 +2380,7 @@ int of_open(const OptionsContext *o, const char *filename) int64_t start_time = o->start_time == AV_NOPTS_VALUE ? 0 : o->start_time; if (stop_time <= start_time) { av_log(mux, AV_LOG_ERROR, "-to value smaller than -ss; aborting.\n"); - exit_program(1); + return AVERROR(EINVAL); } else { recording_time = stop_time - start_time; } @@ -2401,7 +2401,7 @@ int of_open(const OptionsContext *o, const char *filename) if (!oc) { av_log(mux, AV_LOG_FATAL, "Error initializing the muxer for %s: %s\n", filename, av_err2str(err)); - exit_program(1); + return err; } mux->fc = oc; @@ -2437,7 +2437,7 @@ int of_open(const OptionsContext *o, const char *filename) "Output filename '%s' does not contain a numeric pattern like " "'%%d', which is required by output format '%s'.\n", oc->url, oc->oformat->name); - exit_program(1); + return AVERROR(EINVAL); } if (!(oc->oformat->flags & AVFMT_NOFILE)) { @@ -2450,7 +2450,7 @@ int of_open(const OptionsContext *o, const char *filename) &mux->opts)) < 0) { av_log(mux, AV_LOG_FATAL, "Error opening output %s: %s\n", filename, av_err2str(err)); - exit_program(1); + return err; } } else if (strcmp(oc->oformat->name, "image2")==0 && !av_filename_number_test(filename)) assert_file_overwrite(filename); @@ -2469,7 +2469,7 @@ int of_open(const OptionsContext *o, const char *filename) err = set_dispositions(mux, o); if (err < 0) { av_log(mux, AV_LOG_FATAL, "Error setting output stream dispositions\n"); - exit_program(1); + return err; } // parse forced keyframe specifications; @@ -2477,13 +2477,13 @@ int of_open(const OptionsContext *o, const char *filename) err = process_forced_keyframes(mux, o); if (err < 0) { av_log(mux, AV_LOG_FATAL, "Error processing forced keyframes\n"); - exit_program(1); + return err; } err = setup_sync_queues(mux, oc, o->shortest_buf_duration * AV_TIME_BASE); if (err < 0) { av_log(mux, AV_LOG_FATAL, "Error setting up output sync queues\n"); - exit_program(1); + return err; } of->url = filename; @@ -2500,7 +2500,7 @@ int of_open(const OptionsContext *o, const char *filename) err = init_output_stream_nofilter(ost); if (err < 0) - report_and_exit(err); + return err; } /* write the header for files with no streams */