fftools/ffmpeg: move freeing the output file to ffmpeg_mux.c

This commit is contained in:
Anton Khirnov 2021-11-10 17:33:48 +01:00
parent 5bc644ea8a
commit 5c66ee6351
3 changed files with 20 additions and 12 deletions

View File

@ -565,19 +565,9 @@ static void ffmpeg_cleanup(int ret)
av_freep(&subtitle_out);
/* close files */
for (i = 0; i < nb_output_files; i++) {
OutputFile *of = output_files[i];
AVFormatContext *s;
if (!of)
continue;
s = of->ctx;
if (s && s->oformat && !(s->oformat->flags & AVFMT_NOFILE))
avio_closep(&s->pb);
avformat_free_context(s);
av_dict_free(&of->opts);
for (i = 0; i < nb_output_files; i++)
of_close(&output_files[i]);
av_freep(&output_files[i]);
}
for (i = 0; i < nb_output_streams; i++) {
OutputStream *ost = output_streams[i];

View File

@ -690,6 +690,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_close(OutputFile **pof);
void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
int unqueue);

View File

@ -311,3 +311,20 @@ int of_write_trailer(OutputFile *of)
return 0;
}
void of_close(OutputFile **pof)
{
OutputFile *of = *pof;
AVFormatContext *s;
if (!of)
return;
s = of->ctx;
if (s && s->oformat && !(s->oformat->flags & AVFMT_NOFILE))
avio_closep(&s->pb);
avformat_free_context(s);
av_dict_free(&of->opts);
av_freep(pof);
}