diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-10-28 01:51:51 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2023-10-28 02:30:08 +0200 |
| commit | 157728fb69167da75aa04f6d78fdb6cc274a7db2 (patch) | |
| tree | 07bcf63f13484e9c5275766060d16e579fa28ea0 /src/lib/image.cc | |
| parent | 6e1c0f245a3940da7da175a978c0561711cfb447 (diff) | |
Use updated libdcp, including an optimisation for rgb-onto-xyz12.
Diffstat (limited to 'src/lib/image.cc')
| -rw-r--r-- | src/lib/image.cc | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/lib/image.cc b/src/lib/image.cc index 578f6ca56..6feea10ca 100644 --- a/src/lib/image.cc +++ b/src/lib/image.cc @@ -756,8 +756,8 @@ alpha_blend_onto_xyz12le(TargetParams const& target, OtherParams const& other, i auto conv = dcp::ColourConversion::srgb_to_xyz(); double fast_matrix[9]; dcp::combined_rgb_to_xyz(conv, fast_matrix); - auto lut_in = conv.in()->lut(0, 1, 8, false); - auto lut_out = conv.out()->lut(0, 1, 16, true); + auto lut_in = conv.in()->double_lut(0, 1, 8, false); + auto lut_out = conv.out()->int_lut(0, 1, 16, true, 65535); for (int ty = target.start_y, oy = other.start_y; ty < target.size.height && oy < other.size.height; ++ty, ++oy) { auto tp = reinterpret_cast<uint16_t*>(target.data[0] + ty * target.stride[0] + target.start_x * target.bpp); auto op = reinterpret_cast<OtherType*>(other.data[0] + oy * other.stride[0]); @@ -775,9 +775,9 @@ alpha_blend_onto_xyz12le(TargetParams const& target, OtherParams const& other, i double const z = max(0.0, min(1.0, r * fast_matrix[6] + g * fast_matrix[7] + b * fast_matrix[8])); /* Out gamma LUT and blend */ - tp[0] = lrint(lut_out[lrint(x * 65535)] * 65535) * alpha + tp[0] * (1 - alpha); - tp[1] = lrint(lut_out[lrint(y * 65535)] * 65535) * alpha + tp[1] * (1 - alpha); - tp[2] = lrint(lut_out[lrint(z * 65535)] * 65535) * alpha + tp[2] * (1 - alpha); + tp[0] = lut_out[lrint(x * 65535)] * alpha + tp[0] * (1 - alpha); + tp[1] = lut_out[lrint(y * 65535)] * alpha + tp[1] * (1 - alpha); + tp[2] = lut_out[lrint(z * 65535)] * alpha + tp[2] * (1 - alpha); tp += target.bpp / 2; op += other.bpp / sizeof(OtherType); |
