Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2022-10-11 14:38:17 +0300
committerAnton Khirnov <anton@khirnov.net>2022-10-18 14:57:42 +0300
commit965bff37b6181b9db248a0deef7e2643d0ef9721 (patch)
tree2b9910ec2c87293f1cffcfa1535ff59317baca1c /fftools
parent731246ae8fbe14beed6c1a361bfb6963c9f59c51 (diff)
fftools/ffmpeg: move some stream initialization code to ffmpeg_mux
The code in question is muxing-specific and so belongs there. This will allow make some objects private to the muxer in future commits.
Diffstat (limited to 'fftools')
-rw-r--r--fftools/ffmpeg.c8
-rw-r--r--fftools/ffmpeg.h10
-rw-r--r--fftools/ffmpeg_mux.c15
3 files changed, 21 insertions, 12 deletions
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;
}