Speculative fix to ensure correct freeing.
[dcpomatic.git] / src / lib / ffmpeg_file_encoder.cc
index 6799d09b4b6b66a306774a9f511bbe6341726f12..30dcdb94cc299b0031583eee5218a6de9c23a84a 100644 (file)
@@ -229,16 +229,16 @@ FFmpegFileEncoder::FFmpegFileEncoder (
 
        switch (format) {
        case ExportFormat::PRORES_4444:
-               _sample_format = AV_SAMPLE_FMT_S16;
+               _sample_format = AV_SAMPLE_FMT_S32;
                _video_codec_name = "prores_ks";
-               _audio_codec_name = "pcm_s16le";
+               _audio_codec_name = "pcm_s24le";
                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;
+               _sample_format = AV_SAMPLE_FMT_S32;
                _video_codec_name = "prores_ks";
-               _audio_codec_name = "pcm_s16le";
+               _audio_codec_name = "pcm_s24le";
                av_dict_set (&_video_options, "profile", "3", 0);
                av_dict_set (&_video_options, "threads", "auto", 0);
                break;
@@ -281,6 +281,7 @@ FFmpegFileEncoder::~FFmpegFileEncoder ()
        _audio_streams.clear ();
        avcodec_close (_video_codec_context);
        avio_close (_format_context->pb);
+       _format_context->pb = nullptr;
        avformat_free_context (_format_context);
 }