_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;
}
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";
_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";
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:
enum class ExportFormat
{
+ PRORES_4444,
PRORES_HQ,
H264_AAC,
SUBTITLES_DCP
using boost::bind;
-#define FORMATS 2
+int constexpr FORMATS = 3;
wxString format_names[] = {
- _("MOV / ProRes"),
+ _("MOV / ProRes 4444"),
+ _("MOV / ProRes HQ"),
_("MP4 / H.264"),
};
wxString format_filters[] = {
+ _("MOV files (*.mov)|*.mov"),
_("MOV files (*.mov)|*.mov"),
_("MP4 files (*.mp4)|*.mp4"),
};
wxString format_extensions[] = {
+ "mov",
"mov",
"mp4",
};
ExportFormat formats[] = {
+ ExportFormat::PRORES_4444,
ExportFormat::PRORES_HQ,
ExportFormat::H264_AAC,
};
DCPOMATIC_ASSERT (selection >= 0 && selection < FORMATS);
_file->SetWildcard (format_filters[selection]);
_file->SetPath (_initial_name);
- _x264_crf->Enable (selection == 1);
+ _x264_crf->Enable (formats[selection] == ExportFormat::H264_AAC);
for (int i = 0; i < 2; ++i) {
- _x264_crf_label[i]->Enable (selection == 1);
+ _x264_crf_label[i]->Enable(formats[selection] == ExportFormat::H264_AAC);
}
_mixdown->Enable (selection != 2);
name += "h264";
extension = "mp4";
break;
+ case ExportFormat::PRORES_4444:
+ name += "prores-444";
+ extension = "mov";
+ break;
case ExportFormat::PRORES_HQ:
- name += "prores";
+ name += "prores-hq";
extension = "mov";
break;
case ExportFormat::SUBTITLES_DCP: