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; }