summaryrefslogtreecommitdiff
path: root/src/lib/ffmpeg_file_encoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-08-17 16:42:46 +0200
committerCarl Hetherington <cth@carlh.net>2020-08-17 16:42:46 +0200
commit5d3c9573914a61db10b24ce7e0cef00902c2912c (patch)
tree64dc134767f94d4180f798c640f8c63b878f4931 /src/lib/ffmpeg_file_encoder.cc
parent6abf2fdd53b14608561fcc1900507daea5b79fb7 (diff)
Tidy up resource management of FFmpegFileEncoders so that they
are cleaned up correctly when an error occurs. Adapted from dfac61382f1719f0a879747de43cbc5f9115c2d7 in master.
Diffstat (limited to 'src/lib/ffmpeg_file_encoder.cc')
-rw-r--r--src/lib/ffmpeg_file_encoder.cc14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/lib/ffmpeg_file_encoder.cc b/src/lib/ffmpeg_file_encoder.cc
index c11d12a82..d15bdabde 100644
--- a/src/lib/ffmpeg_file_encoder.cc
+++ b/src/lib/ffmpeg_file_encoder.cc
@@ -295,6 +295,15 @@ FFmpegFileEncoder::FFmpegFileEncoder (
_pending_audio.reset (new AudioBuffers(channels, 0));
}
+
+FFmpegFileEncoder::~FFmpegFileEncoder ()
+{
+ _audio_streams.clear ();
+ avcodec_close (_video_codec_context);
+ avformat_free_context (_format_context);
+}
+
+
AVPixelFormat
FFmpegFileEncoder::pixel_format (ExportFormat format)
{
@@ -403,11 +412,6 @@ DCPOMATIC_ENABLE_WARNINGS
}
av_write_trailer (_format_context);
-
- _audio_streams.clear ();
- avcodec_close (_video_codec_context);
- avio_close (_format_context->pb);
- avformat_free_context (_format_context);
}
void