- if (burn_subtitle && _subtitle.image) {
- out->alpha_blend (_subtitle.image, _subtitle.position);
+ dcp::YUVToRGB yuv_to_rgb = dcp::YUV_TO_RGB_REC601;
+ if (_colour_conversion) {
+ yuv_to_rgb = _colour_conversion.get().yuv_to_rgb();
+ }
+
+ /* If the input is XYZ, keep it otherwise convert to RGB */
+ AVPixelFormat const p = _in->pixel_format() == AV_PIX_FMT_XYZ12LE ? AV_PIX_FMT_XYZ12LE : AV_PIX_FMT_RGB48LE;
+
+ shared_ptr<Image> out = im->crop_scale_window (total_crop, _inter_size, _out_size, yuv_to_rgb, p, true);
+
+ if (_subtitle) {
+ out->alpha_blend (_subtitle->image, _subtitle->position);