diff mbox series

[FFmpeg-devel,05/13] fftools/ffmpeg: move some stream initialization code to ffmpeg_mux

Message ID 20221013134904.10104-5-anton@khirnov.net
State Accepted
Commit 965bff37b6181b9db248a0deef7e2643d0ef9721
Headers show
Series [FFmpeg-devel,01/13] fftools/ffmpeg_mux: do not unref a NULL packet | 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 Oct. 13, 2022, 1:48 p.m. UTC
The code in question is muxing-specific and so belongs there. This will
allow make some objects private to the muxer in future commits.
---
 fftools/ffmpeg.c     |  8 +-------
 fftools/ffmpeg.h     | 10 ++++++++--
 fftools/ffmpeg_mux.c | 15 ++++++++++++---
 3 files changed, 21 insertions(+), 12 deletions(-)
diff mbox series

Patch

diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index 015ff762c9..9bb877fb34 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -3115,7 +3115,6 @@  static int init_output_stream_encode(OutputStream *ost, AVFrame *frame)
 static int init_output_stream(OutputStream *ost, AVFrame *frame,
                               char *error, int error_len)
 {
-    OutputFile *of = output_files[ost->file_index];
     int ret = 0;
 
     if (ost->enc_ctx) {
@@ -3220,12 +3219,7 @@  static int init_output_stream(OutputStream *ost, AVFrame *frame,
     if (ret < 0)
         return ret;
 
-    if (ost->sq_idx_mux >= 0)
-        sq_set_tb(of->sq_mux, ost->sq_idx_mux, ost->mux_timebase);
-
-    ost->initialized = 1;
-
-    ret = of_check_init(output_files[ost->file_index]);
+    ret = of_stream_init(output_files[ost->file_index], ost);
     if (ret < 0)
         return ret;
 
diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
index 632b7c0e86..5030f72fe5 100644
--- a/fftools/ffmpeg.h
+++ b/fftools/ffmpeg.h
@@ -720,8 +720,14 @@  int hwaccel_decode_init(AVCodecContext *avctx);
 int of_muxer_init(OutputFile *of, AVFormatContext *fc,
                   AVDictionary *opts, int64_t limit_filesize,
                   int thread_queue_size);
-/* open the muxer when all the streams are initialized */
-int of_check_init(OutputFile *of);
+
+/*
+ * Initialize muxing state for the given stream, should be called
+ * after the codec/streamcopy setup has been done.
+ *
+ * Open the muxer once all the streams have been initialized.
+ */
+int of_stream_init(OutputFile *of, OutputStream *ost);
 int of_write_trailer(OutputFile *of);
 void of_close(OutputFile **pof);
 
diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c
index 63f63c0852..7bc25c6175 100644
--- a/fftools/ffmpeg_mux.c
+++ b/fftools/ffmpeg_mux.c
@@ -516,8 +516,7 @@  fail:
     return ret;
 }
 
-/* open the muxer when all the streams are initialized */
-int of_check_init(OutputFile *of)
+static int mux_check_init(OutputFile *of)
 {
     AVFormatContext *fc = of->mux->fc;
     int ret, i;
@@ -565,6 +564,16 @@  int of_check_init(OutputFile *of)
     return 0;
 }
 
+int of_stream_init(OutputFile *of, OutputStream *ost)
+{
+    if (ost->sq_idx_mux >= 0)
+        sq_set_tb(of->sq_mux, ost->sq_idx_mux, ost->mux_timebase);
+
+    ost->initialized = 1;
+
+    return mux_check_init(of);
+}
+
 int of_write_trailer(OutputFile *of)
 {
     AVFormatContext *fc = of->mux->fc;
@@ -710,7 +719,7 @@  int of_muxer_init(OutputFile *of, AVFormatContext *fc,
 
     /* write the header for files with no streams */
     if (of->format->flags & AVFMT_NOSTREAMS && fc->nb_streams == 0) {
-        ret = of_check_init(of);
+        ret = mux_check_init(of);
         if (ret < 0)
             goto fail;
     }