diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-10-14 21:14:04 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-10-14 21:14:22 +0200 |
| commit | 24ee9f8cf3736c5cd946eb6df8bd3189f8a62ce0 (patch) | |
| tree | d33e33ded5b766cff09d748786a8427949de1f1d /src/lib/colour_conversion.cc | |
| parent | 1f336350e4c6f60c4597b43976d1a9e4e05ea61b (diff) | |
Fix MPEG2 DCP gamma (#3026).3026-mpeg2-colour
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(); } |
