T*& xyz_z,
dcp::Size size,
int stride,
- ColourConversion const& conversion,
- optional<NoteHandler> note
+ ColourConversion const& conversion
)
{
struct {
double fast_matrix[9];
combined_rgb_to_xyz (conversion, fast_matrix);
- int clamped = 0;
for (int y = 0; y < size.height; ++y) {
auto p = reinterpret_cast<uint16_t const *> (rgb + y * stride);
for (int x = 0; x < size.width; ++x) {
d.z = s.r * fast_matrix[6] + s.g * fast_matrix[7] + s.b * fast_matrix[8];
/* Clamp */
-
- if (d.x < 0 || d.y < 0 || d.z < 0 || d.x > 1 || d.y > 1 || d.z > 1) {
- ++clamped;
- }
-
d.x = max (0.0, d.x);
d.y = max (0.0, d.y);
d.z = max (0.0, d.z);
*xyz_z++ = lut_out.lookup(d.z);
}
}
-
- if (clamped && note) {
- note.get()(NoteType::NOTE, String::compose("%1 XYZ value(s) clamped", clamped));
- }
}
uint8_t const * rgb,
dcp::Size size,
int stride,
- ColourConversion const & conversion,
- optional<NoteHandler> note
+ ColourConversion const & conversion
)
{
auto xyz = make_shared<OpenJPEGImage>(size);
int* xyz_y = xyz->data (1);
int* xyz_z = xyz->data (2);
- rgb_to_xyz_internal(rgb, xyz_x, xyz_y, xyz_z, size, stride, conversion, note);
+ rgb_to_xyz_internal(rgb, xyz_x, xyz_y, xyz_z, size, stride, conversion);
return xyz;
}
uint16_t* dst,
dcp::Size size,
int stride,
- ColourConversion const & conversion,
- optional<NoteHandler> note
+ ColourConversion const & conversion
)
{
- rgb_to_xyz_internal(rgb, dst, dst, dst, size, stride, conversion, note);
+ rgb_to_xyz_internal(rgb, dst, dst, dst, size, stride, conversion);
}
uint16_t* dst,
dcp::Size size,
int stride,
- ColourConversion const & conversion,
- boost::optional<NoteHandler> note = boost::optional<NoteHandler>()
+ ColourConversion const& conversion
);
/** @param rgb RGB data; packed RGB 16:16:16, 48bpp, 16R, 16G, 16B,
uint8_t const * rgb,
dcp::Size size,
int stride,
- ColourConversion const & conversion,
- boost::optional<NoteHandler> note = boost::optional<NoteHandler> ()
+ ColourConversion const& conversion
);