Fix crashes when the find-missing code finds an inacessible directory (#2291).
[dcpomatic.git] / src / lib / ffmpeg_file_encoder.cc
index 17f6f55cb01413ddebdda3b52df944ce95f8c092..0d5167c496c109ae0b7f4db56d28ee350d4134e8 100644 (file)
@@ -228,6 +228,13 @@ FFmpegFileEncoder::FFmpegFileEncoder (
        _pixel_format = pixel_format (format);
 
        switch (format) {
+       case ExportFormat::PRORES_4444:
+               _sample_format = AV_SAMPLE_FMT_S16;
+               _video_codec_name = "prores_ks";
+               _audio_codec_name = "pcm_s16le";
+               av_dict_set(&_video_options, "profile", "4", 0);
+               av_dict_set(&_video_options, "threads", "auto", 0);
+               break;
        case ExportFormat::PRORES_HQ:
                _sample_format = AV_SAMPLE_FMT_S16;
                _video_codec_name = "prores_ks";
@@ -273,6 +280,7 @@ FFmpegFileEncoder::~FFmpegFileEncoder ()
 {
        _audio_streams.clear ();
        avcodec_close (_video_codec_context);
+       avio_close (_format_context->pb);
        avformat_free_context (_format_context);
 }
 
@@ -281,6 +289,8 @@ AVPixelFormat
 FFmpegFileEncoder::pixel_format (ExportFormat format)
 {
        switch (format) {
+       case ExportFormat::PRORES_4444:
+               return AV_PIX_FMT_YUV444P10;
        case ExportFormat::PRORES_HQ:
                return AV_PIX_FMT_YUV422P10;
        case ExportFormat::H264_AAC: