#include "colour_conversion.h"
#include "gamma_transfer_function.h"
#include "modified_gamma_transfer_function.h"
-#include "colour_matrix.h"
+#include "s_gamut3_transfer_function.h"
+#include "identity_transfer_function.h"
#include "dcp_assert.h"
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/lu.hpp>
#include <boost/numeric/ublas/io.hpp>
-using boost::shared_ptr;
+using std::shared_ptr;
using boost::optional;
using namespace dcp;
Chromaticity (0.64, 0.33),
Chromaticity (0.3, 0.6),
Chromaticity (0.15, 0.06),
- /* D65 */
- Chromaticity (0.3127, 0.329),
+ Chromaticity::D65 (),
optional<Chromaticity> (),
shared_ptr<const TransferFunction> (new GammaTransferFunction (2.6))
);
Chromaticity (0.64, 0.33),
Chromaticity (0.3, 0.6),
Chromaticity (0.15, 0.06),
- /* D65 */
- Chromaticity (0.3127, 0.329),
+ Chromaticity::D65 (),
optional<Chromaticity> (),
shared_ptr<const TransferFunction> (new GammaTransferFunction (2.6))
);
Chromaticity (0.64, 0.33),
Chromaticity (0.3, 0.6),
Chromaticity (0.15, 0.06),
- /* D65 */
- Chromaticity (0.3127, 0.329),
+ Chromaticity::D65 (),
optional<Chromaticity> (),
shared_ptr<const TransferFunction> (new GammaTransferFunction (2.6))
);
Chromaticity (0.64, 0.33),
Chromaticity (0.3, 0.6),
Chromaticity (0.15, 0.06),
- /* D65 */
- Chromaticity (0.3127, 0.329),
+ Chromaticity::D65 (),
optional<Chromaticity> (),
shared_ptr<const TransferFunction> (new GammaTransferFunction (2.6))
);
ColourConversion const &
ColourConversion::rec2020_to_xyz ()
{
- /* From Wikipedia */
static ColourConversion* c = new ColourConversion (
- shared_ptr<const TransferFunction> (new ModifiedGammaTransferFunction (1 / 0.45, 0.08145, 0.0993, 4.5)),
+ shared_ptr<const TransferFunction> (new GammaTransferFunction (2.4)),
YUV_TO_RGB_REC709,
Chromaticity (0.708, 0.292),
Chromaticity (0.170, 0.797),
Chromaticity (0.131, 0.046),
- /* D65 */
- Chromaticity (0.3127, 0.329),
+ Chromaticity::D65 (),
optional<Chromaticity> (),
shared_ptr<const TransferFunction> (new GammaTransferFunction (2.6))
);
return *c;
}
+/** Sony S-Gamut3/S-Log3 */
+ColourConversion const &
+ColourConversion::s_gamut3_to_xyz ()
+{
+ static ColourConversion* c = new ColourConversion (
+ shared_ptr<const TransferFunction> (new SGamut3TransferFunction ()),
+ YUV_TO_RGB_REC709,
+ Chromaticity (0.73, 0.280),
+ Chromaticity (0.140, 0.855),
+ Chromaticity (0.100, -0.050),
+ Chromaticity::D65 (),
+ optional<Chromaticity> (),
+ shared_ptr<const TransferFunction> (new IdentityTransferFunction ())
+ );
+ return *c;
+}
+
+
+
ColourConversion::ColourConversion (
shared_ptr<const TransferFunction> in,
YUVToRGB yuv_to_rgb,
!_green.about_equal (other._green, epsilon) ||
!_blue.about_equal (other._blue, epsilon) ||
!_white.about_equal (other._white, epsilon) ||
- !_out->about_equal (other._out, epsilon)) {
+ (!_out && other._out) ||
+ (_out && !other._out) ||
+ (_out && !_out->about_equal (other._out, epsilon))) {
return false;
}