diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-06-12 22:32:30 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-06-12 22:32:34 +0200 |
| commit | 1c57df596882f15403ee97d01862f8b76cfb797b (patch) | |
| tree | 2ba7bf92d0de90cd4469e4b16802fd7394994f33 /src/lib | |
| parent | 59209af1e2d73334ff7dfe6c7da465293dc24c0b (diff) | |
Add Prores 4444 support (#2263).
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/export_config.cc | 8 | ||||
| -rw-r--r-- | src/lib/ffmpeg_file_encoder.cc | 9 | ||||
| -rw-r--r-- | src/lib/ffmpeg_file_encoder.h | 1 |
3 files changed, 17 insertions, 1 deletions
diff --git a/src/lib/export_config.cc b/src/lib/export_config.cc index 66c5e3d66..e030b98e2 100644 --- a/src/lib/export_config.cc +++ b/src/lib/export_config.cc @@ -63,6 +63,8 @@ ExportConfig::read(cxml::ConstNodePtr node) _format = ExportFormat::SUBTITLES_DCP; } else if (format == "h264-aac") { _format = ExportFormat::H264_AAC; + } else if (format == "prores-4444") { + _format = ExportFormat::PRORES_4444; } else { _format = ExportFormat::PRORES_HQ; } @@ -80,8 +82,12 @@ ExportConfig::write(xmlpp::Element* node) const string name; switch (_format) { + case ExportFormat::PRORES_4444: + name = "prores-4444"; + break; case ExportFormat::PRORES_HQ: - name = "prores"; + /* Write this but we also accept 'prores' for backwards compatibility */ + name = "prores-hq"; break; case ExportFormat::H264_AAC: name = "h264-aac"; diff --git a/src/lib/ffmpeg_file_encoder.cc b/src/lib/ffmpeg_file_encoder.cc index 17f6f55cb..307a30aca 100644 --- a/src/lib/ffmpeg_file_encoder.cc +++ b/src/lib/ffmpeg_file_encoder.cc @@ -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"; @@ -281,6 +288,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: diff --git a/src/lib/ffmpeg_file_encoder.h b/src/lib/ffmpeg_file_encoder.h index fd716d47c..5bf501370 100644 --- a/src/lib/ffmpeg_file_encoder.h +++ b/src/lib/ffmpeg_file_encoder.h @@ -43,6 +43,7 @@ class ExportAudioStream; enum class ExportFormat { + PRORES_4444, PRORES_HQ, H264_AAC, SUBTITLES_DCP |
