cm: fix primaries to proto scale (#11914)
This commit is contained in:
parent
3bcfa94ee4
commit
f0b4164e2e
1 changed files with 11 additions and 9 deletions
|
|
@ -8,6 +8,8 @@
|
|||
|
||||
using namespace NColorManagement;
|
||||
|
||||
const auto PRIMARIES_SCALE = 1000000.0f;
|
||||
|
||||
CColorManager::CColorManager(SP<CWpColorManagerV1> resource) : m_resource(resource) {
|
||||
if UNLIKELY (!good())
|
||||
return;
|
||||
|
|
@ -610,10 +612,10 @@ CColorManagementParametricCreator::CColorManagementParametricCreator(SP<CWpImage
|
|||
return;
|
||||
}
|
||||
m_settings.primariesNameSet = false;
|
||||
m_settings.primaries = SPCPRimaries{.red = {.x = r_x / 1000000.0f, .y = r_y / 1000000.0f},
|
||||
.green = {.x = g_x / 1000000.0f, .y = g_y / 1000000.0f},
|
||||
.blue = {.x = b_x / 1000000.0f, .y = b_y / 1000000.0f},
|
||||
.white = {.x = w_x / 1000000.0f, .y = w_y / 1000000.0f}};
|
||||
m_settings.primaries = SPCPRimaries{.red = {.x = r_x / PRIMARIES_SCALE, .y = r_y / PRIMARIES_SCALE},
|
||||
.green = {.x = g_x / PRIMARIES_SCALE, .y = g_y / PRIMARIES_SCALE},
|
||||
.blue = {.x = b_x / PRIMARIES_SCALE, .y = b_y / PRIMARIES_SCALE},
|
||||
.white = {.x = w_x / PRIMARIES_SCALE, .y = w_y / PRIMARIES_SCALE}};
|
||||
m_valuesSet |= PC_PRIMARIES;
|
||||
});
|
||||
m_resource->setSetLuminances([this](CWpImageDescriptionCreatorParamsV1* r, uint32_t min_lum, uint32_t max_lum, uint32_t reference_lum) {
|
||||
|
|
@ -641,10 +643,10 @@ CColorManagementParametricCreator::CColorManagementParametricCreator(SP<CWpImage
|
|||
r->error(WP_COLOR_MANAGER_V1_ERROR_UNSUPPORTED_FEATURE, "Mastering primaries are not supported");
|
||||
return;
|
||||
}
|
||||
m_settings.masteringPrimaries = SPCPRimaries{.red = {.x = r_x / 1000000.0f, .y = r_y / 1000000.0f},
|
||||
.green = {.x = g_x / 1000000.0f, .y = g_y / 1000000.0f},
|
||||
.blue = {.x = b_x / 1000000.0f, .y = b_y / 1000000.0f},
|
||||
.white = {.x = w_x / 1000000.0f, .y = w_y / 1000000.0f}};
|
||||
m_settings.masteringPrimaries = SPCPRimaries{.red = {.x = r_x / PRIMARIES_SCALE, .y = r_y / PRIMARIES_SCALE},
|
||||
.green = {.x = g_x / PRIMARIES_SCALE, .y = g_y / PRIMARIES_SCALE},
|
||||
.blue = {.x = b_x / PRIMARIES_SCALE, .y = b_y / PRIMARIES_SCALE},
|
||||
.white = {.x = w_x / PRIMARIES_SCALE, .y = w_y / PRIMARIES_SCALE}};
|
||||
m_valuesSet |= PC_MASTERING_PRIMARIES;
|
||||
|
||||
// FIXME:
|
||||
|
|
@ -744,7 +746,7 @@ CColorManagementImageDescriptionInfo::CColorManagementImageDescriptionInfo(SP<CW
|
|||
|
||||
m_client = m_resource->client();
|
||||
|
||||
const auto toProto = [](float value) { return sc<int32_t>(std::round(value * 10000)); };
|
||||
const auto toProto = [](float value) { return sc<int32_t>(std::round(value * PRIMARIES_SCALE)); };
|
||||
|
||||
if (m_settings.icc.fd >= 0)
|
||||
m_resource->sendIccFile(m_settings.icc.fd, m_settings.icc.length);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue