diff mbox series

[FFmpeg-devel,06/24] ffmpeg: move writing the trailer to ffmpeg_mux.c

Message ID 20211213152042.5900-6-anton@khirnov.net
State New
Headers show
Series [FFmpeg-devel,01/24] ffmpeg: pass the muxer context explicitly to some functions | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

Anton Khirnov Dec. 13, 2021, 3:20 p.m. UTC
---
 fftools/ffmpeg.c     | 16 +++-------------
 fftools/ffmpeg.h     |  1 +
 fftools/ffmpeg_mux.c | 21 +++++++++++++++++++++
 3 files changed, 25 insertions(+), 13 deletions(-)

Comments

Andreas Rheinhardt Dec. 16, 2021, 9:11 p.m. UTC | #1
Anton Khirnov:
> ---
>  fftools/ffmpeg.c     | 16 +++-------------
>  fftools/ffmpeg.h     |  1 +
>  fftools/ffmpeg_mux.c | 21 +++++++++++++++++++++
>  3 files changed, 25 insertions(+), 13 deletions(-)
> 
> diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
> index a00fe58063..1fb10869b4 100644
> --- a/fftools/ffmpeg.c
> +++ b/fftools/ffmpeg.c
> @@ -4436,19 +4436,9 @@ static int transcode(void)
>  
>      /* write the trailer if needed */
>      for (i = 0; i < nb_output_files; i++) {
> -        os = output_files[i]->ctx;
> -        if (!output_files[i]->header_written) {
> -            av_log(NULL, AV_LOG_ERROR,
> -                   "Nothing was written into output file %d (%s), because "
> -                   "at least one of its streams received no packets.\n",
> -                   i, os->url);
> -            continue;
> -        }
> -        if ((ret = av_write_trailer(os)) < 0) {
> -            av_log(NULL, AV_LOG_ERROR, "Error writing trailer of %s: %s\n", os->url, av_err2str(ret));
> -            if (exit_on_error)
> -                exit_program(1);
> -        }
> +        ret = of_write_trailer(output_files[i]);
> +        if (exit_on_error)

Shouldn't you check for ret and exit_on_error here?

> +            exit_program(1);
>      }
>  
>      /* dump report by using the first video and audio streams */
> diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
> index fed34b06f8..91c313d8ef 100644
> --- a/fftools/ffmpeg.h
> +++ b/fftools/ffmpeg.h
> @@ -686,6 +686,7 @@ int hwaccel_decode_init(AVCodecContext *avctx);
>  
>  /* open the muxer when all the streams are initialized */
>  int of_check_init(OutputFile *of);
> +int of_write_trailer(OutputFile *of);
>  
>  void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
>                       int unqueue);
> diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c
> index e7c6ddd8f8..fec8537506 100644
> --- a/fftools/ffmpeg_mux.c
> +++ b/fftools/ffmpeg_mux.c
> @@ -291,3 +291,24 @@ int of_check_init(OutputFile *of)
>  
>      return 0;
>  }
> +
> +int of_write_trailer(OutputFile *of)
> +{
> +    int ret;
> +
> +    if (!of->header_written) {
> +        av_log(NULL, AV_LOG_ERROR,
> +               "Nothing was written into output file %d (%s), because "
> +               "at least one of its streams received no packets.\n",
> +               of->index, of->ctx->url);
> +        return AVERROR(EINVAL);
> +    }
> +
> +    ret = av_write_trailer(of->ctx);
> +    if (ret < 0) {
> +        av_log(NULL, AV_LOG_ERROR, "Error writing trailer of %s: %s\n", of->ctx->url, av_err2str(ret));
> +        return ret;
> +    }
> +
> +    return 0;
> +}
>
diff mbox series

Patch

diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index a00fe58063..1fb10869b4 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -4436,19 +4436,9 @@  static int transcode(void)
 
     /* write the trailer if needed */
     for (i = 0; i < nb_output_files; i++) {
-        os = output_files[i]->ctx;
-        if (!output_files[i]->header_written) {
-            av_log(NULL, AV_LOG_ERROR,
-                   "Nothing was written into output file %d (%s), because "
-                   "at least one of its streams received no packets.\n",
-                   i, os->url);
-            continue;
-        }
-        if ((ret = av_write_trailer(os)) < 0) {
-            av_log(NULL, AV_LOG_ERROR, "Error writing trailer of %s: %s\n", os->url, av_err2str(ret));
-            if (exit_on_error)
-                exit_program(1);
-        }
+        ret = of_write_trailer(output_files[i]);
+        if (exit_on_error)
+            exit_program(1);
     }
 
     /* dump report by using the first video and audio streams */
diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
index fed34b06f8..91c313d8ef 100644
--- a/fftools/ffmpeg.h
+++ b/fftools/ffmpeg.h
@@ -686,6 +686,7 @@  int hwaccel_decode_init(AVCodecContext *avctx);
 
 /* open the muxer when all the streams are initialized */
 int of_check_init(OutputFile *of);
+int of_write_trailer(OutputFile *of);
 
 void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
                      int unqueue);
diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c
index e7c6ddd8f8..fec8537506 100644
--- a/fftools/ffmpeg_mux.c
+++ b/fftools/ffmpeg_mux.c
@@ -291,3 +291,24 @@  int of_check_init(OutputFile *of)
 
     return 0;
 }
+
+int of_write_trailer(OutputFile *of)
+{
+    int ret;
+
+    if (!of->header_written) {
+        av_log(NULL, AV_LOG_ERROR,
+               "Nothing was written into output file %d (%s), because "
+               "at least one of its streams received no packets.\n",
+               of->index, of->ctx->url);
+        return AVERROR(EINVAL);
+    }
+
+    ret = av_write_trailer(of->ctx);
+    if (ret < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Error writing trailer of %s: %s\n", of->ctx->url, av_err2str(ret));
+        return ret;
+    }
+
+    return 0;
+}