diff options
Diffstat (limited to 'src/lib/colour_conversion.cc')
| -rw-r--r-- | src/lib/colour_conversion.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/lib/colour_conversion.cc b/src/lib/colour_conversion.cc index b5d6cd4c5..5dc633f60 100644 --- a/src/lib/colour_conversion.cc +++ b/src/lib/colour_conversion.cc @@ -138,6 +138,12 @@ ColourConversion::ColourConversion(cxml::NodePtr node, int version) } else { _out_j2k = make_shared<dcp::IdentityTransferFunction>(); } + + if (auto mpeg2_gamma = node->optional_number_child<double>("OutputMPEG2Gamma")) { + _out_mpeg2 = make_shared<dcp::GammaTransferFunction>(*mpeg2_gamma); + } else { + _out_mpeg2 = make_shared<dcp::IdentityTransferFunction>(); + } } boost::optional<ColourConversion> @@ -186,6 +192,10 @@ ColourConversion::as_xml(xmlpp::Element* element) const if (auto gf = dynamic_pointer_cast<const dcp::GammaTransferFunction>(_out_j2k)) { cxml::add_text_child(element, "OutputGamma", fmt::to_string(gf->gamma())); } + + if (auto gf = dynamic_pointer_cast<const dcp::GammaTransferFunction>(_out_mpeg2)) { + cxml::add_text_child(element, "OutputMPEG2Gamma", fmt::to_string(gf->gamma())); + } } optional<size_t> @@ -240,6 +250,10 @@ ColourConversion::identifier() const digester.add(gf->gamma()); } + if (auto gf = dynamic_pointer_cast<const dcp::GammaTransferFunction>(_out_mpeg2)) { + digester.add(gf->gamma()); + } + return digester.get(); } |
