diff mbox series

[FFmpeg-devel,01/33] fftools/ffmpeg_mux_init: return errors from of_open() instead of aborting

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

Checks

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

Commit Message

Anton Khirnov July 13, 2023, 10:55 a.m. UTC
---
 fftools/ffmpeg_mux_init.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

Comments

Zhao Zhili July 13, 2023, 12:01 p.m. UTC | #1
> 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".
Anton Khirnov July 13, 2023, 1:01 p.m. UTC | #2
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 mbox series

Patch

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 */