[FFmpeg-devel] [PATCH 13/13] fftools/ffmpeg: move init_output_bsfs() to ffmpeg_mux
Anton Khirnov
anton at khirnov.net
Thu Oct 13 16:49:04 EEST 2022
Bitstream filtering is done as a part of muxing, so this is the more
proper place for this.
---
fftools/ffmpeg.c | 36 ------------------------------------
fftools/ffmpeg_mux.c | 38 ++++++++++++++++++++++++++++++++++++++
2 files changed, 38 insertions(+), 36 deletions(-)
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index 9bb877fb34..46d2912d07 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -2651,35 +2651,6 @@ static int compare_int64(const void *a, const void *b)
return FFDIFFSIGN(*(const int64_t *)a, *(const int64_t *)b);
}
-static int init_output_bsfs(OutputStream *ost)
-{
- AVBSFContext *ctx = ost->bsf_ctx;
- int ret;
-
- if (!ctx)
- return 0;
-
- ret = avcodec_parameters_copy(ctx->par_in, ost->st->codecpar);
- if (ret < 0)
- return ret;
-
- ctx->time_base_in = ost->st->time_base;
-
- ret = av_bsf_init(ctx);
- if (ret < 0) {
- av_log(NULL, AV_LOG_ERROR, "Error initializing bitstream filter: %s\n",
- ctx->filter->name);
- return ret;
- }
-
- ret = avcodec_parameters_copy(ost->st->codecpar, ctx->par_out);
- if (ret < 0)
- return ret;
- ost->st->time_base = ctx->time_base_out;
-
- return 0;
-}
-
static int init_output_stream_streamcopy(OutputStream *ost)
{
OutputFile *of = output_files[ost->file_index];
@@ -3212,13 +3183,6 @@ static int init_output_stream(OutputStream *ost, AVFrame *frame,
return ret;
}
- /* initialize bitstream filters for the output stream
- * needs to be done here, because the codec id for streamcopy is not
- * known until now */
- ret = init_output_bsfs(ost);
- if (ret < 0)
- return ret;
-
ret = of_stream_init(output_files[ost->file_index], ost);
if (ret < 0)
return ret;
diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c
index 652628185e..5418cd3000 100644
--- a/fftools/ffmpeg_mux.c
+++ b/fftools/ffmpeg_mux.c
@@ -536,12 +536,50 @@ int mux_check_init(Muxer *mux)
return 0;
}
+static int bsf_init(OutputStream *ost)
+{
+ AVBSFContext *ctx = ost->bsf_ctx;
+ int ret;
+
+ if (!ctx)
+ return 0;
+
+ ret = avcodec_parameters_copy(ctx->par_in, ost->st->codecpar);
+ if (ret < 0)
+ return ret;
+
+ ctx->time_base_in = ost->st->time_base;
+
+ ret = av_bsf_init(ctx);
+ if (ret < 0) {
+ av_log(NULL, AV_LOG_ERROR, "Error initializing bitstream filter: %s\n",
+ ctx->filter->name);
+ return ret;
+ }
+
+ ret = avcodec_parameters_copy(ost->st->codecpar, ctx->par_out);
+ if (ret < 0)
+ return ret;
+ ost->st->time_base = ctx->time_base_out;
+
+ return 0;
+}
+
int of_stream_init(OutputFile *of, OutputStream *ost)
{
Muxer *mux = mux_from_of(of);
+ int ret;
+
if (ost->sq_idx_mux >= 0)
sq_set_tb(mux->sq_mux, ost->sq_idx_mux, ost->mux_timebase);
+ /* initialize bitstream filters for the output stream
+ * needs to be done here, because the codec id for streamcopy is not
+ * known until now */
+ ret = bsf_init(ost);
+ if (ret < 0)
+ return ret;
+
ost->initialized = 1;
return mux_check_init(mux);
--
2.35.1
More information about the ffmpeg-devel
mailing list