- shared_ptr<dcp::GammaLUT> in_lut = dcp::GammaLUT::cache.get (
- 12, _frame->colour_conversion().input_gamma, _frame->colour_conversion().input_gamma_linearised
- );
-
- /* XXX: libdcp should probably use boost */
-
- double matrix[3][3];
- for (int i = 0; i < 3; ++i) {
- for (int j = 0; j < 3; ++j) {
- matrix[i][j] = _frame->colour_conversion().matrix (i, j);
+ shared_ptr<dcp::XYZFrame> xyz;
+
+ if (_frame->colour_conversion()) {
+ ColourConversion conversion = _frame->colour_conversion().get ();
+ shared_ptr<dcp::GammaLUT> in_lut = dcp::GammaLUT::cache.get (
+ 12, conversion.input_gamma, conversion.input_gamma_linearised
+ );
+
+ /* XXX: dcp should probably use boost */
+
+ double matrix[3][3];
+ for (int i = 0; i < 3; ++i) {
+ for (int j = 0; j < 3; ++j) {
+ matrix[i][j] = conversion.matrix (i, j);
+ }