diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-05-04 22:29:50 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-10-14 20:50:53 +0200 |
| commit | 6ee5579ba47f120f731c11f47417d690d6ce1325 (patch) | |
| tree | d57eeaec70a95c8a3287aa32e227c38c38474363 /src | |
| parent | 27fb2ff0c187b3f514c291cb75ea5a193128cf45 (diff) | |
Add output gamma for going to MPEG2 DCP (2.4).
Diffstat (limited to 'src')
| -rw-r--r-- | src/colour_conversion.cc | 30 | ||||
| -rw-r--r-- | src/colour_conversion.h | 14 |
2 files changed, 34 insertions, 10 deletions
diff --git a/src/colour_conversion.cc b/src/colour_conversion.cc index ef2f374a..3b98ccd0 100644 --- a/src/colour_conversion.cc +++ b/src/colour_conversion.cc @@ -65,7 +65,8 @@ ColourConversion::srgb_to_dcp() Chromaticity(0.15, 0.06), Chromaticity::D65(), optional<Chromaticity>(), - make_shared<GammaTransferFunction>(2.6) + make_shared<GammaTransferFunction>(2.6), + make_shared<GammaTransferFunction>(2.4) ); return *c; } @@ -81,7 +82,8 @@ ColourConversion::rec601_to_dcp() Chromaticity(0.15, 0.06), Chromaticity::D65(), optional<Chromaticity>(), - make_shared<GammaTransferFunction>(2.6) + make_shared<GammaTransferFunction>(2.6), + make_shared<GammaTransferFunction>(2.4) ); return *c; } @@ -97,7 +99,8 @@ ColourConversion::rec709_to_dcp() Chromaticity(0.15, 0.06), Chromaticity::D65(), optional<Chromaticity>(), - make_shared<GammaTransferFunction>(2.6) + make_shared<GammaTransferFunction>(2.6), + make_shared<GammaTransferFunction>(2.4) ); return *c; } @@ -113,7 +116,8 @@ ColourConversion::p3_to_dcp() Chromaticity(0.15, 0.06), Chromaticity(0.314, 0.351), optional<Chromaticity>(), - make_shared<GammaTransferFunction>(2.6) + make_shared<GammaTransferFunction>(2.6), + make_shared<GammaTransferFunction>(2.4) ); return *c; } @@ -132,7 +136,8 @@ ColourConversion::rec1886_to_dcp() Chromaticity(0.15, 0.06), Chromaticity::D65(), optional<Chromaticity>(), - make_shared<GammaTransferFunction>(2.6) + make_shared<GammaTransferFunction>(2.6), + make_shared<GammaTransferFunction>(2.4) ); return *c; } @@ -148,7 +153,8 @@ ColourConversion::rec2020_to_dcp() Chromaticity(0.131, 0.046), Chromaticity::D65(), optional<Chromaticity>(), - make_shared<GammaTransferFunction>(2.6) + make_shared<GammaTransferFunction>(2.6), + make_shared<GammaTransferFunction>(2.4) ); return *c; } @@ -165,7 +171,8 @@ ColourConversion::s_gamut3_to_dcp() Chromaticity(0.100, -0.050), Chromaticity::D65(), optional<Chromaticity>(), - make_shared<IdentityTransferFunction>() + make_shared<IdentityTransferFunction>(), + make_shared<GammaTransferFunction>(2.4) ); return *c; } @@ -180,7 +187,8 @@ ColourConversion::ColourConversion( Chromaticity blue, Chromaticity white, optional<Chromaticity> adjusted_white, - shared_ptr<const TransferFunction> out_j2k + shared_ptr<const TransferFunction> out_j2k, + shared_ptr<const TransferFunction> out_mpeg2 ) : _in(in) , _yuv_to_rgb(yuv_to_rgb) @@ -190,6 +198,7 @@ ColourConversion::ColourConversion( , _white(white) , _adjusted_white(adjusted_white) , _out_j2k(out_j2k) + , _out_mpeg2(out_mpeg2) { } @@ -206,7 +215,10 @@ ColourConversion::about_equal(ColourConversion const & other, float epsilon) con !_white.about_equal(other._white, epsilon) || (!_out_j2k && other._out_j2k) || (_out_j2k && !other._out_j2k) || - (_out_j2k && !_out_j2k->about_equal(other._out_j2k, epsilon))) { + (_out_j2k && !_out_j2k->about_equal(other._out_j2k, epsilon)) || + (!_out_mpeg2 && other._out_mpeg2) || + (_out_mpeg2 && !other._out_mpeg2) || + (_out_mpeg2 && !_out_mpeg2->about_equal(other._out_mpeg2, epsilon))) { return false; } diff --git a/src/colour_conversion.h b/src/colour_conversion.h index 77163f8a..d96a66b9 100644 --- a/src/colour_conversion.h +++ b/src/colour_conversion.h @@ -83,7 +83,8 @@ public: Chromaticity blue, Chromaticity white, boost::optional<Chromaticity> adjusted_white, - std::shared_ptr<const TransferFunction> out_j2k + std::shared_ptr<const TransferFunction> out_j2k, + std::shared_ptr<const TransferFunction> out_mpeg2 ); std::shared_ptr<const TransferFunction> in() const { @@ -119,6 +120,11 @@ public: return _out_j2k; } + /** Output transfer function when going to MPEG2 */ + std::shared_ptr<const TransferFunction> out_mpeg2() const { + return _out_mpeg2; + } + void set_in(std::shared_ptr<const TransferFunction> f) { _in = f; } @@ -155,6 +161,10 @@ public: _out_j2k = f; } + void set_out_mpeg2(std::shared_ptr<const TransferFunction> f) { + _out_mpeg2 = f; + } + bool about_equal(ColourConversion const & other, float epsilon) const; boost::numeric::ublas::matrix<double> rgb_to_xyz() const; @@ -184,6 +194,8 @@ protected: * Probably an inverse gamma function, or something similar. */ std::shared_ptr<const TransferFunction> _out_j2k; + /** Output transfer function to be used when going to MPEG2 */ + std::shared_ptr<const TransferFunction> _out_mpeg2; }; |
