[rust png] Remove CICP-related code and delegate to Skia instead.
To support `SkPngRustCodec` http://review.skia.org/919127 has copied/moved some CICP-related code and constants from Chromium into Skia. This follow-up CL removes the original code and delegates to the new Skia APIs. Removed APIs: * `skia/ext/cicp.h`: `CICPGetPrimaries`, `CICPGetTransferFn` functions * `skia/ext/skcolorspace_primaries.h`: CICP-related constants from the `SkNamedPrimariesExt` namespace * `skia/ext/skcolorspace_trfn.h`: CICP-related constants from the `SkNamedTransferFnExt` namespace Additionally `CICPGetSkColorSpace` functions has been refactored to mostly just delegate to its Skia counterpart. Bug: chromium:376758571 Change-Id: I7cf015323dbcaa8d75b0392b42e2deb9d06b548f Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6012927 Commit-Queue: Łukasz Anforowicz <lukasza@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org> Auto-Submit: Łukasz Anforowicz <lukasza@chromium.org> Reviewed-by: Michael Ludwig <michaelludwig@google.com> Reviewed-by: ccameron chromium <ccameron@chromium.org> Cr-Commit-Position: refs/heads/main@{#1386322}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
e8c2441a7b
commit
6aff6cb7a8
components
skia
ext
cicp.cccicp.hskcolorspace_primaries.ccskcolorspace_primaries.hskcolorspace_trfn.hskcolorspace_trfn_unittest.cc
public
mojom
ui
@ -459,7 +459,7 @@ id<MTLRenderPipelineState> CreateRenderPipelineState(id<MTLDevice> device) {
|
||||
skcms_Matrix3x3 src_to_xyz;
|
||||
skcms_Matrix3x3 rec2020_to_xyz;
|
||||
skcms_Matrix3x3 xyz_to_rec2020;
|
||||
SkNamedPrimariesExt::kRec2020.toXYZD50(&rec2020_to_xyz);
|
||||
SkNamedPrimaries::kRec2020.toXYZD50(&rec2020_to_xyz);
|
||||
colorSpace.GetPrimaryMatrix(&src_to_xyz);
|
||||
skcms_Matrix3x3_invert(&rec2020_to_xyz, &xyz_to_rec2020);
|
||||
skcms_Matrix3x3 m = skcms_Matrix3x3_concat(&xyz_to_rec2020, &src_to_xyz);
|
||||
|
@ -335,7 +335,7 @@ TEST_F(DCLayerOverlayProcessorTest, DisableVideoOverlayIfMovingWorkaround) {
|
||||
// Content has valid HDR metadata.
|
||||
hdr_metadata.cta_861_3 = gfx::HdrMetadataCta861_3(1000, 400);
|
||||
hdr_metadata.smpte_st_2086 = gfx::HdrMetadataSmpteSt2086(
|
||||
SkNamedPrimariesExt::kRec2020, 1000, 0.0001);
|
||||
SkNamedPrimaries::kRec2020, 1000, 0.0001);
|
||||
|
||||
// Render Pass has HDR content usage.
|
||||
pass->content_color_usage = gfx::ContentColorUsage::kHDR;
|
||||
@ -1632,7 +1632,7 @@ TEST_F(DCLayerOverlayProcessorTest, HDR10VideoOverlay) {
|
||||
gfx::HDRMetadata valid_hdr_metadata;
|
||||
valid_hdr_metadata.cta_861_3 = gfx::HdrMetadataCta861_3(1000, 400);
|
||||
valid_hdr_metadata.smpte_st_2086 =
|
||||
gfx::HdrMetadataSmpteSt2086(SkNamedPrimariesExt::kRec2020, 1000, 0.0001);
|
||||
gfx::HdrMetadataSmpteSt2086(SkNamedPrimaries::kRec2020, 1000, 0.0001);
|
||||
|
||||
// Device has RGB10A2 overlay support.
|
||||
gl::SetDirectCompositionScaledOverlaysSupportedForTesting(true);
|
||||
@ -1764,8 +1764,8 @@ TEST_F(DCLayerOverlayProcessorTest, HDR10VideoOverlay) {
|
||||
|
||||
// Content has HDR metadata which contains smpte_st_2086.
|
||||
gfx::HDRMetadata smpte_st_2086_hdr_metadata;
|
||||
smpte_st_2086_hdr_metadata.smpte_st_2086 = gfx::HdrMetadataSmpteSt2086(
|
||||
SkNamedPrimariesExt::kRec2020, 1000, 0.0001);
|
||||
smpte_st_2086_hdr_metadata.smpte_st_2086 =
|
||||
gfx::HdrMetadataSmpteSt2086(SkNamedPrimaries::kRec2020, 1000, 0.0001);
|
||||
// Content is 10bit P010 content with HDR10 colorspace.
|
||||
CreateFullscreenCandidateYUVTextureQuad(
|
||||
resource_provider_.get(), child_resource_provider_.get(),
|
||||
|
165
skia/ext/cicp.cc
165
skia/ext/cicp.cc
@ -3,164 +3,39 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "skia/ext/cicp.h"
|
||||
#include "skia/ext/skcolorspace_primaries.h"
|
||||
#include "skia/ext/skcolorspace_trfn.h"
|
||||
|
||||
namespace skia {
|
||||
|
||||
bool CICPGetPrimaries(uint8_t primaries, SkColorSpacePrimaries& sk_primaries) {
|
||||
// Rec. ITU-T H.273, Table 2.
|
||||
switch (primaries) {
|
||||
case 0:
|
||||
// Reserved.
|
||||
break;
|
||||
case 1:
|
||||
sk_primaries = SkNamedPrimariesExt::kRec709;
|
||||
return true;
|
||||
case 2:
|
||||
// Unspecified.
|
||||
break;
|
||||
case 3:
|
||||
// Reserved.
|
||||
break;
|
||||
case 4:
|
||||
sk_primaries = SkNamedPrimariesExt::kRec470SystemM;
|
||||
return true;
|
||||
case 5:
|
||||
sk_primaries = SkNamedPrimariesExt::kRec470SystemBG;
|
||||
return true;
|
||||
case 6:
|
||||
sk_primaries = SkNamedPrimariesExt::kRec601;
|
||||
return true;
|
||||
case 7:
|
||||
sk_primaries = SkNamedPrimariesExt::kSMPTE_ST_240;
|
||||
return true;
|
||||
case 8:
|
||||
sk_primaries = SkNamedPrimariesExt::kGenericFilm;
|
||||
return true;
|
||||
case 9:
|
||||
sk_primaries = SkNamedPrimariesExt::kRec2020;
|
||||
return true;
|
||||
case 10:
|
||||
sk_primaries = SkNamedPrimariesExt::kSMPTE_ST_428_1;
|
||||
return true;
|
||||
case 11:
|
||||
sk_primaries = SkNamedPrimariesExt::kSMPTE_RP_431_2;
|
||||
return true;
|
||||
case 12:
|
||||
sk_primaries = SkNamedPrimariesExt::kSMPTE_EG_432_1;
|
||||
return true;
|
||||
case 22:
|
||||
sk_primaries = SkNamedPrimariesExt::kITU_T_H273_Value22;
|
||||
return true;
|
||||
default:
|
||||
// Reserved.
|
||||
break;
|
||||
}
|
||||
sk_primaries = SkNamedPrimariesExt::kInvalid;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CICPGetTransferFn(uint8_t transfer_characteristics,
|
||||
bool prefer_srgb_trfn,
|
||||
skcms_TransferFunction& trfn) {
|
||||
// Rec. ITU-T H.273, Table 3.
|
||||
switch (transfer_characteristics) {
|
||||
case 0:
|
||||
// Reserved.
|
||||
break;
|
||||
case 1:
|
||||
trfn = prefer_srgb_trfn ? SkNamedTransferFnExt::kSRGB
|
||||
: SkNamedTransferFnExt::kRec709;
|
||||
return true;
|
||||
case 2:
|
||||
// Unspecified.
|
||||
break;
|
||||
case 3:
|
||||
// Reserved.
|
||||
break;
|
||||
case 4:
|
||||
trfn = SkNamedTransferFnExt::kRec470SystemM;
|
||||
return true;
|
||||
case 5:
|
||||
trfn = SkNamedTransferFnExt::kRec470SystemBG;
|
||||
return true;
|
||||
case 6:
|
||||
trfn = prefer_srgb_trfn ? SkNamedTransferFnExt::kSRGB
|
||||
: SkNamedTransferFnExt::kRec601;
|
||||
return true;
|
||||
case 7:
|
||||
trfn = SkNamedTransferFnExt::kSMPTE_ST_240;
|
||||
return true;
|
||||
case 8:
|
||||
trfn = SkNamedTransferFn::kLinear;
|
||||
return true;
|
||||
case 9:
|
||||
// Logarithmic transfer characteristic (100:1 range).
|
||||
break;
|
||||
case 10:
|
||||
// Logarithmic transfer characteristic (100 * Sqrt( 10 ) : 1 range).
|
||||
break;
|
||||
case 11:
|
||||
trfn = prefer_srgb_trfn ? SkNamedTransferFnExt::kSRGB
|
||||
: SkNamedTransferFnExt::kIEC61966_2_4;
|
||||
break;
|
||||
case 12:
|
||||
// Rec. ITU-R BT.1361-0 extended colour gamut system (historical).
|
||||
// Same as kRec709 on positive values, differs on negative values.
|
||||
break;
|
||||
case 13:
|
||||
// IEC 61966-2-1.
|
||||
trfn = SkNamedTransferFnExt::kSRGB;
|
||||
return true;
|
||||
case 14:
|
||||
trfn = SkNamedTransferFnExt::kRec2020_10bit;
|
||||
return true;
|
||||
case 15:
|
||||
trfn = SkNamedTransferFnExt::kRec2020_12bit;
|
||||
return true;
|
||||
case 16:
|
||||
trfn = SkNamedTransferFn::kPQ;
|
||||
return true;
|
||||
case 17:
|
||||
trfn = SkNamedTransferFnExt::kSMPTE_ST_428_1;
|
||||
return true;
|
||||
case 18:
|
||||
trfn = SkNamedTransferFn::kHLG;
|
||||
return true;
|
||||
default:
|
||||
// 19-255 Reserved.
|
||||
break;
|
||||
}
|
||||
|
||||
trfn = SkNamedTransferFnExt::kInvalid;
|
||||
return false;
|
||||
}
|
||||
|
||||
sk_sp<SkColorSpace> CICPGetSkColorSpace(uint8_t color_primaries,
|
||||
uint8_t transfer_characteristics,
|
||||
uint8_t matrix_coefficients,
|
||||
uint8_t full_range_flag,
|
||||
bool prefer_srgb_trfn) {
|
||||
if (matrix_coefficients != 0)
|
||||
if (matrix_coefficients != 0) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (full_range_flag != 1)
|
||||
// TODO(https://crbug.com/40229816): Implement this if needed.
|
||||
if (full_range_flag != 1) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
skcms_TransferFunction trfn;
|
||||
if (!CICPGetTransferFn(transfer_characteristics, prefer_srgb_trfn, trfn))
|
||||
return nullptr;
|
||||
auto transfer_id =
|
||||
static_cast<SkNamedTransferFn::CicpId>(transfer_characteristics);
|
||||
if (prefer_srgb_trfn) {
|
||||
switch (transfer_id) {
|
||||
case SkNamedTransferFn::CicpId::kRec709:
|
||||
case SkNamedTransferFn::CicpId::kRec601:
|
||||
case SkNamedTransferFn::CicpId::kIEC61966_2_4:
|
||||
transfer_id = SkNamedTransferFn::CicpId::kSRGB;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
SkColorSpacePrimaries primaries;
|
||||
if (!CICPGetPrimaries(color_primaries, primaries))
|
||||
return nullptr;
|
||||
|
||||
skcms_Matrix3x3 primaries_matrix;
|
||||
if (!primaries.toXYZD50(&primaries_matrix))
|
||||
return nullptr;
|
||||
|
||||
return SkColorSpace::MakeRGB(trfn, primaries_matrix);
|
||||
auto primaries_id = static_cast<SkNamedPrimaries::CicpId>(color_primaries);
|
||||
return SkColorSpace::MakeCICP(primaries_id, transfer_id);
|
||||
}
|
||||
|
||||
bool CICPGetSkYUVColorSpace(uint8_t matrix_coefficients,
|
||||
|
@ -12,21 +12,6 @@
|
||||
|
||||
namespace skia {
|
||||
|
||||
// Convert from a CICP primary value listed in Rec. ITU-T H.273, Table 2 to an
|
||||
// SkColorSpacePrimaries. Return true if `primaries` is valid. All valid values
|
||||
// are supported.
|
||||
SK_API bool CICPGetPrimaries(uint8_t primaries,
|
||||
SkColorSpacePrimaries& sk_primaries);
|
||||
|
||||
// Convert from a CICP transfer value listed in Rec. ITU-T H.273, Table 3 to an
|
||||
// skcms_TransferFunction. Return true if `transfer_characteristics` is valid
|
||||
// and can be represented using an skcms_TransferFunction (several valid values
|
||||
// cannot). If `prefer_srgb_trfn` is set to true, then use the sRGB transfer
|
||||
// function for all Rec709-like content.
|
||||
SK_API bool CICPGetTransferFn(uint8_t transfer_characteristics,
|
||||
bool prefer_srgb_trfn,
|
||||
skcms_TransferFunction& sk_trfn);
|
||||
|
||||
// Return the SkColorSpace resulting from the CICPGetPrimaries and
|
||||
// CICPGetTransferFn. This function does not populate an SkYUVColorSpace, so
|
||||
// return nullptr if `matrix_coefficients` is not the identity or
|
||||
|
@ -12,6 +12,8 @@
|
||||
#include <iomanip>
|
||||
#include <sstream>
|
||||
|
||||
#include "third_party/skia/include/core/SkColorSpace.h"
|
||||
|
||||
bool operator==(const SkColorSpacePrimaries& a,
|
||||
const SkColorSpacePrimaries& b) {
|
||||
return a.fRX == b.fRX && a.fRY == b.fRY && a.fGX == b.fGX && a.fGY == b.fGY &&
|
||||
@ -27,18 +29,20 @@ namespace skia {
|
||||
|
||||
std::string SkColorSpacePrimariesToString(
|
||||
const SkColorSpacePrimaries& primaries) {
|
||||
if (primaries == SkNamedPrimariesExt::kInvalid)
|
||||
if (primaries == SkNamedPrimariesExt::kInvalid) {
|
||||
return "invalid";
|
||||
}
|
||||
|
||||
std::stringstream ss;
|
||||
ss << std::fixed << std::setprecision(4);
|
||||
ss << "{";
|
||||
if (primaries == SkNamedPrimariesExt::kSRGB)
|
||||
if (primaries == SkNamedPrimariesExt::kSRGB) {
|
||||
ss << "name:'srgb', ";
|
||||
else if (primaries == SkNamedPrimariesExt::kP3)
|
||||
} else if (primaries == SkNamedPrimariesExt::kP3) {
|
||||
ss << "name:'p3', ";
|
||||
else if (primaries == SkNamedPrimariesExt::kRec2020)
|
||||
} else if (primaries == SkNamedPrimaries::kRec2020) {
|
||||
ss << "name:'rec2020', ";
|
||||
}
|
||||
ss << "r:[" << primaries.fRX << ", " << primaries.fRY << "], ";
|
||||
ss << "g:[" << primaries.fGX << ", " << primaries.fGY << "], ";
|
||||
ss << "b:[" << primaries.fBX << ", " << primaries.fBY << "], ";
|
||||
|
@ -31,63 +31,14 @@ GetD65PrimariesFromToXYZD50Matrix(const skcms_Matrix3x3& m);
|
||||
|
||||
namespace SkNamedPrimariesExt {
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Color primaries defined by ITU-T H.273, table 2. Names are given by the first
|
||||
// specification referenced in the value's row.
|
||||
|
||||
// Rec. ITU-R BT.709-6, value 1.
|
||||
static constexpr SkColorSpacePrimaries kRec709 = {
|
||||
0.64f, 0.33f, 0.3f, 0.6f, 0.15f, 0.06f, 0.3127f, 0.329f};
|
||||
|
||||
// Rec. ITU-R BT.470-6 System M (historical), value 4.
|
||||
static constexpr SkColorSpacePrimaries kRec470SystemM = {
|
||||
0.67f, 0.33f, 0.21f, 0.71f, 0.14f, 0.08f, 0.31f, 0.316f};
|
||||
|
||||
// Rec. ITU-R BT.470-6 System B, G (historical), value 5.
|
||||
static constexpr SkColorSpacePrimaries kRec470SystemBG = {
|
||||
0.64f, 0.33f, 0.29f, 0.60f, 0.15f, 0.06f, 0.3127f, 0.3290f};
|
||||
|
||||
// Rec. ITU-R BT.601-7 525, value 6.
|
||||
static constexpr SkColorSpacePrimaries kRec601 = {
|
||||
0.630f, 0.340f, 0.310f, 0.595f, 0.155f, 0.070f, 0.3127f, 0.3290f};
|
||||
|
||||
// SMPTE ST 240, value 7 (functionally the same as value 6).
|
||||
static constexpr SkColorSpacePrimaries kSMPTE_ST_240 = kRec601;
|
||||
|
||||
// Generic film (colour filters using Illuminant C), value 8.
|
||||
static constexpr SkColorSpacePrimaries kGenericFilm = {
|
||||
0.681f, 0.319f, 0.243f, 0.692f, 0.145f, 0.049f, 0.310f, 0.316f};
|
||||
|
||||
// Rec. ITU-R BT.2020-2, value 9.
|
||||
static constexpr SkColorSpacePrimaries kRec2020{
|
||||
0.708f, 0.292f, 0.170f, 0.797f, 0.131f, 0.046f, 0.3127f, 0.3290f};
|
||||
|
||||
// SMPTE ST 428-1, value 10.
|
||||
static constexpr SkColorSpacePrimaries kSMPTE_ST_428_1 = {
|
||||
1.f, 0.f, 0.f, 1.f, 0.f, 0.f, 1.f / 3.f, 1.f / 3.f};
|
||||
|
||||
// SMPTE RP 431-2, value 11.
|
||||
static constexpr SkColorSpacePrimaries kSMPTE_RP_431_2 = {
|
||||
0.680f, 0.320f, 0.265f, 0.690f, 0.150f, 0.060f, 0.314f, 0.351f};
|
||||
|
||||
// SMPTE EG 432-1, value 12.
|
||||
static constexpr SkColorSpacePrimaries kSMPTE_EG_432_1 = {
|
||||
0.680f, 0.320f, 0.265f, 0.690f, 0.150f, 0.060f, 0.3127f, 0.3290f};
|
||||
|
||||
// No corresponding industry specification identified, value 22.
|
||||
// This is sometimes referred to as EBU 3213-E, but that document doesn't
|
||||
// specify these values.
|
||||
static constexpr SkColorSpacePrimaries kITU_T_H273_Value22 = {
|
||||
0.630f, 0.340f, 0.295f, 0.605f, 0.155f, 0.077f, 0.3127f, 0.3290f};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// CSS Color Level 4 predefined and xyz color spaces.
|
||||
|
||||
// 'srgb'
|
||||
static constexpr SkColorSpacePrimaries kSRGB = kRec709;
|
||||
static constexpr SkColorSpacePrimaries kSRGB = SkNamedPrimaries::kRec709;
|
||||
|
||||
// 'display-p3' (and also 'p3' as a color gamut).
|
||||
static constexpr SkColorSpacePrimaries kP3 = kSMPTE_EG_432_1;
|
||||
static constexpr SkColorSpacePrimaries kP3 = SkNamedPrimaries::kSMPTE_EG_432_1;
|
||||
|
||||
// 'a98-rgb'
|
||||
static constexpr SkColorSpacePrimaries kA98RGB = {
|
||||
|
@ -23,60 +23,12 @@ bool SK_API IsScaledTransferFunction(const skcms_TransferFunction& x,
|
||||
|
||||
namespace SkNamedTransferFnExt {
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Color primaries defined by ITU-T H.273, table 3. Names are given by the first
|
||||
// specification referenced in the value's row.
|
||||
|
||||
// Rec. ITU-R BT.709-6, value 1.
|
||||
static constexpr skcms_TransferFunction kRec709 = {2.222222222222f,
|
||||
0.909672415686f,
|
||||
0.090327584314f,
|
||||
0.222222222222f,
|
||||
0.081242858299f,
|
||||
0.f,
|
||||
0.f};
|
||||
|
||||
// Rec. ITU-R BT.470-6 System M (historical) assumed display gamma 2.2, value 4.
|
||||
static constexpr skcms_TransferFunction kRec470SystemM = {2.2f, 1.f};
|
||||
|
||||
// Rec. ITU-R BT.470-6 System B, G (historical) assumed display gamma 2.8,
|
||||
// value 5.
|
||||
static constexpr skcms_TransferFunction kRec470SystemBG = {2.8f, 1.f};
|
||||
|
||||
// Rec. ITU-R BT.601-7, same as kRec709, value 6.
|
||||
static constexpr skcms_TransferFunction kRec601 = kRec709;
|
||||
|
||||
// SMPTE ST 240, value 7.
|
||||
static constexpr skcms_TransferFunction kSMPTE_ST_240 = {2.222222222222f,
|
||||
0.899626676224f,
|
||||
0.100373323776f,
|
||||
0.25f,
|
||||
0.091286342118f,
|
||||
0.f,
|
||||
0.f};
|
||||
|
||||
// IEC 61966-2-4, value 11, same as kRec709 (but is explicitly extended).
|
||||
static constexpr skcms_TransferFunction kIEC61966_2_4 = kRec709;
|
||||
|
||||
// IEC 61966-2-1 sRGB, value 13.
|
||||
static constexpr skcms_TransferFunction kIEC61966_2_1 =
|
||||
SkNamedTransferFn::kSRGB;
|
||||
|
||||
// Rec. ITU-R BT.2020-2 (10-bit system), value 14.
|
||||
static constexpr skcms_TransferFunction kRec2020_10bit = kRec709;
|
||||
|
||||
// Rec. ITU-R BT.2020-2 (12-bit system), value 15.
|
||||
static constexpr skcms_TransferFunction kRec2020_12bit = kRec709;
|
||||
|
||||
// SMPTE ST 428-1, value 17.
|
||||
static constexpr skcms_TransferFunction kSMPTE_ST_428_1 = {2.6f,
|
||||
1.034080527699f};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// CSS Color Level 4 predefined color spaces.
|
||||
|
||||
// 'srgb', 'display-p3'
|
||||
static constexpr skcms_TransferFunction kSRGB = kIEC61966_2_1;
|
||||
static constexpr skcms_TransferFunction kSRGB =
|
||||
SkNamedTransferFn::kIEC61966_2_1;
|
||||
|
||||
// 'a98-rgb'
|
||||
static constexpr skcms_TransferFunction kA98RGB = {2.2f, 1.};
|
||||
@ -85,7 +37,7 @@ static constexpr skcms_TransferFunction kA98RGB = {2.2f, 1.};
|
||||
static constexpr skcms_TransferFunction kProPhotoRGB = {1.8f, 1.};
|
||||
|
||||
// 'rec2020' uses the same transfer function as kRec709.
|
||||
static constexpr skcms_TransferFunction kRec2020 = kRec709;
|
||||
static constexpr skcms_TransferFunction kRec2020 = SkNamedTransferFn::kRec709;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Additional helper transfer functions.
|
||||
|
@ -12,7 +12,7 @@ namespace {
|
||||
constexpr float kEpsilon = 0.001;
|
||||
|
||||
TEST(SkiaUtils, ScaleTrfn) {
|
||||
skcms_TransferFunction x = SkNamedTransferFnExt::kIEC61966_2_1;
|
||||
skcms_TransferFunction x = SkNamedTransferFn::kIEC61966_2_1;
|
||||
float alpha = 3.f;
|
||||
|
||||
// Ensure that we round-trip successfully.
|
||||
|
@ -178,7 +178,7 @@ TEST(StructTraitsTest, SkColorSpace) {
|
||||
in_null_cs, out_null_cs));
|
||||
EXPECT_EQ(out_null_cs.get(), nullptr);
|
||||
|
||||
SkColorSpacePrimaries in_p = SkNamedPrimariesExt::kGenericFilm;
|
||||
SkColorSpacePrimaries in_p = SkNamedPrimaries::kGenericFilm;
|
||||
SkColorSpacePrimaries out_p;
|
||||
ASSERT_TRUE(
|
||||
mojo::test::SerializeAndDeserialize<skia::mojom::SkColorSpacePrimaries>(
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include "ui/android/display_android_manager.h"
|
||||
|
||||
#include <jni.h>
|
||||
|
||||
#include <initializer_list>
|
||||
#include <map>
|
||||
|
||||
@ -13,6 +14,7 @@
|
||||
#include "base/trace_event/trace_event.h"
|
||||
#include "components/viz/common/features.h"
|
||||
#include "components/viz/common/viz_utils.h"
|
||||
#include "skia/ext/skcolorspace_trfn.h"
|
||||
#include "ui/android/screen_android.h"
|
||||
#include "ui/android/ui_android_features.h"
|
||||
#include "ui/android/window_android.h"
|
||||
|
@ -9,6 +9,7 @@
|
||||
|
||||
#include "base/containers/fixed_flat_map.h"
|
||||
#include "skia/ext/skcolorspace_trfn.h"
|
||||
#include "third_party/skia/include/core/SkColorSpace.h"
|
||||
#include "ui/gfx/color_space.h"
|
||||
#include "ui/gfx/display_color_spaces.h"
|
||||
|
||||
@ -179,10 +180,10 @@ constexpr auto kTransferMap =
|
||||
{ZCR_COLOR_MANAGER_V1_EOTF_NAMES_LINEAR,
|
||||
TransferFnVersion(SkNamedTransferFn::kLinear, kDefaultSinceVersion)},
|
||||
{ZCR_COLOR_MANAGER_V1_EOTF_NAMES_SRGB,
|
||||
TransferFnVersion(SkNamedTransferFnExt::kSRGB, kDefaultSinceVersion)},
|
||||
TransferFnVersion(SkNamedTransferFn::kSRGB, kDefaultSinceVersion)},
|
||||
{ZCR_COLOR_MANAGER_V1_EOTF_NAMES_BT709,
|
||||
TransferFnVersion(
|
||||
SkNamedTransferFnExt::kRec709,
|
||||
SkNamedTransferFn::kRec709,
|
||||
ZCR_COLOR_MANAGER_V1_EOTF_NAMES_BT709_SINCE_VERSION)},
|
||||
{ZCR_COLOR_MANAGER_V1_EOTF_NAMES_BT2087,
|
||||
TransferFnVersion(gamma24, kDefaultSinceVersion)},
|
||||
@ -200,7 +201,7 @@ constexpr auto kHDRTransferMap =
|
||||
TransferFnVersion(SkNamedTransferFn::kLinear, kDefaultSinceVersion)},
|
||||
{ZCR_COLOR_MANAGER_V1_EOTF_NAMES_SRGB_HDR,
|
||||
TransferFnVersion(
|
||||
SkNamedTransferFnExt::kSRGB,
|
||||
SkNamedTransferFn::kSRGB,
|
||||
ZCR_COLOR_MANAGER_V1_EOTF_NAMES_SRGB_HDR_SINCE_VERSION)},
|
||||
{ZCR_COLOR_MANAGER_V1_EOTF_NAMES_PQ,
|
||||
TransferFnVersion(SkNamedTransferFn::kPQ, kDefaultSinceVersion)},
|
||||
|
@ -420,7 +420,7 @@ bool SetDataSpaceTransfer(const gfx::ColorSpace& color_space,
|
||||
skcms_TransferFunction trfn;
|
||||
// Detect scaled versions of sRGB and linear for HDR content.
|
||||
if (color_space.GetTransferFunction(&trfn)) {
|
||||
if (skia::IsScaledTransferFunction(SkNamedTransferFnExt::kSRGB, trfn,
|
||||
if (skia::IsScaledTransferFunction(SkNamedTransferFn::kSRGB, trfn,
|
||||
&extended_range_brightness_ratio)) {
|
||||
dataspace |= TRANSFER_SRGB;
|
||||
return true;
|
||||
|
@ -231,7 +231,7 @@ TEST(SurfaceControl, ColorSpaceToADataSpace) {
|
||||
// P3, extended by 2x.
|
||||
{
|
||||
skcms_TransferFunction trfn_srgb_scaled =
|
||||
skia::ScaleTransferFunction(SkNamedTransferFnExt::kSRGB, 2.f);
|
||||
skia::ScaleTransferFunction(SkNamedTransferFn::kSRGB, 2.f);
|
||||
gfx::ColorSpace p3_scaled(
|
||||
gfx::ColorSpace::PrimaryID::P3, gfx::ColorSpace::TransferID::CUSTOM_HDR,
|
||||
gfx::ColorSpace::MatrixID::RGB, gfx::ColorSpace::RangeID::FULL, nullptr,
|
||||
|
@ -823,19 +823,19 @@ SkColorSpacePrimaries ColorSpace::GetColorSpacePrimaries(
|
||||
// in case we somehow get an id which is not listed in the switch.
|
||||
// (We don't want to use "default", because we want the compiler
|
||||
// to tell us if we forgot some enum values.)
|
||||
return SkNamedPrimariesExt::kRec709;
|
||||
return SkNamedPrimaries::kRec709;
|
||||
|
||||
case ColorSpace::PrimaryID::BT470M:
|
||||
return SkNamedPrimariesExt::kRec470SystemM;
|
||||
return SkNamedPrimaries::kRec470SystemM;
|
||||
|
||||
case ColorSpace::PrimaryID::BT470BG:
|
||||
return SkNamedPrimariesExt::kRec470SystemBG;
|
||||
return SkNamedPrimaries::kRec470SystemBG;
|
||||
|
||||
case ColorSpace::PrimaryID::SMPTE170M:
|
||||
return SkNamedPrimariesExt::kRec601;
|
||||
return SkNamedPrimaries::kRec601;
|
||||
|
||||
case ColorSpace::PrimaryID::SMPTE240M:
|
||||
return SkNamedPrimariesExt::kSMPTE_ST_240;
|
||||
return SkNamedPrimaries::kSMPTE_ST_240;
|
||||
|
||||
case ColorSpace::PrimaryID::APPLE_GENERIC_RGB:
|
||||
return SkNamedPrimariesExt::kAppleGenericRGB;
|
||||
@ -844,16 +844,16 @@ SkColorSpacePrimaries ColorSpace::GetColorSpacePrimaries(
|
||||
return SkNamedPrimariesExt::kWideGamutColorSpin;
|
||||
|
||||
case ColorSpace::PrimaryID::FILM:
|
||||
return SkNamedPrimariesExt::kGenericFilm;
|
||||
return SkNamedPrimaries::kGenericFilm;
|
||||
|
||||
case ColorSpace::PrimaryID::BT2020:
|
||||
return SkNamedPrimariesExt::kRec2020;
|
||||
return SkNamedPrimaries::kRec2020;
|
||||
|
||||
case ColorSpace::PrimaryID::SMPTEST428_1:
|
||||
return SkNamedPrimariesExt::kSMPTE_ST_428_1;
|
||||
return SkNamedPrimaries::kSMPTE_ST_428_1;
|
||||
|
||||
case ColorSpace::PrimaryID::SMPTEST431_2:
|
||||
return SkNamedPrimariesExt::kSMPTE_RP_431_2;
|
||||
return SkNamedPrimaries::kSMPTE_RP_431_2;
|
||||
|
||||
case ColorSpace::PrimaryID::P3:
|
||||
return SkNamedPrimariesExt::kP3;
|
||||
@ -865,7 +865,7 @@ SkColorSpacePrimaries ColorSpace::GetColorSpacePrimaries(
|
||||
return SkNamedPrimariesExt::kA98RGB;
|
||||
|
||||
case ColorSpace::PrimaryID::EBU_3213_E:
|
||||
return SkNamedPrimariesExt::kITU_T_H273_Value22;
|
||||
return SkNamedPrimaries::kITU_T_H273_Value22;
|
||||
}
|
||||
return primaries;
|
||||
}
|
||||
@ -923,16 +923,16 @@ bool ColorSpace::GetTransferFunction(TransferID transfer,
|
||||
fn->g = 1.801f;
|
||||
return true;
|
||||
case ColorSpace::TransferID::GAMMA22:
|
||||
*fn = SkNamedTransferFnExt::kRec470SystemM;
|
||||
*fn = SkNamedTransferFn::kRec470SystemM;
|
||||
return true;
|
||||
case ColorSpace::TransferID::GAMMA24:
|
||||
fn->g = 2.4f;
|
||||
return true;
|
||||
case ColorSpace::TransferID::GAMMA28:
|
||||
*fn = SkNamedTransferFnExt::kRec470SystemBG;
|
||||
*fn = SkNamedTransferFn::kRec470SystemBG;
|
||||
return true;
|
||||
case ColorSpace::TransferID::SMPTE240M:
|
||||
*fn = SkNamedTransferFnExt::kSMPTE_ST_240;
|
||||
*fn = SkNamedTransferFn::kSMPTE_ST_240;
|
||||
return true;
|
||||
case ColorSpace::TransferID::BT709:
|
||||
case ColorSpace::TransferID::SMPTE170M:
|
||||
@ -949,13 +949,13 @@ bool ColorSpace::GetTransferFunction(TransferID transfer,
|
||||
// media players.
|
||||
case ColorSpace::TransferID::SRGB:
|
||||
case ColorSpace::TransferID::SRGB_HDR:
|
||||
*fn = SkNamedTransferFnExt::kSRGB;
|
||||
*fn = SkNamedTransferFn::kSRGB;
|
||||
return true;
|
||||
case ColorSpace::TransferID::BT709_APPLE:
|
||||
*fn = SkNamedTransferFnExt::kRec709Apple;
|
||||
return true;
|
||||
case ColorSpace::TransferID::SMPTEST428_1:
|
||||
*fn = SkNamedTransferFnExt::kSMPTE_ST_428_1;
|
||||
*fn = SkNamedTransferFn::kSMPTE_ST_428_1;
|
||||
return true;
|
||||
case ColorSpace::TransferID::IEC61966_2_4:
|
||||
// This could potentially be represented the same as SRGB, but it handles
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "ui/gfx/display_color_spaces.h"
|
||||
|
||||
#include "build/build_config.h"
|
||||
#include "skia/ext/skcolorspace_primaries.h"
|
||||
|
||||
namespace gfx {
|
||||
|
||||
|
@ -4,11 +4,12 @@
|
||||
|
||||
#include "ui/gfx/hdr_metadata.h"
|
||||
|
||||
#include "skia/ext/skcolorspace_primaries.h"
|
||||
|
||||
#include <iomanip>
|
||||
#include <sstream>
|
||||
|
||||
#include "skia/ext/skcolorspace_primaries.h"
|
||||
#include "third_party/skia/include/core/SkColorSpace.h"
|
||||
|
||||
namespace gfx {
|
||||
|
||||
std::string HdrMetadataCta861_3::ToString() const {
|
||||
@ -52,7 +53,7 @@ std::string HdrMetadataExtendedRange::ToString() const {
|
||||
// static
|
||||
HDRMetadata HDRMetadata::PopulateUnspecifiedWithDefaults(
|
||||
const std::optional<gfx::HDRMetadata>& hdr_metadata) {
|
||||
constexpr HdrMetadataSmpteSt2086 kDefaults2086(SkNamedPrimariesExt::kRec2020,
|
||||
constexpr HdrMetadataSmpteSt2086 kDefaults2086(SkNamedPrimaries::kRec2020,
|
||||
1000.f, 0.f);
|
||||
|
||||
if (!hdr_metadata)
|
||||
|
@ -11,8 +11,8 @@
|
||||
#include "mojo/public/cpp/bindings/receiver_set.h"
|
||||
#include "mojo/public/cpp/bindings/remote.h"
|
||||
#include "mojo/public/cpp/test_support/test_utils.h"
|
||||
#include "skia/ext/skcolorspace_primaries.h"
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
#include "third_party/skia/include/core/SkColorSpace.h"
|
||||
#include "ui/gfx/geometry/rrect_f.h"
|
||||
#include "ui/gfx/geometry/transform.h"
|
||||
#include "ui/gfx/hdr_metadata.h"
|
||||
@ -347,7 +347,7 @@ TEST_F(StructTraitsTest, HDRMetadata) {
|
||||
EXPECT_EQ(input, output);
|
||||
|
||||
// Include SMPTE ST 2086.
|
||||
input.smpte_st_2086.emplace(SkNamedPrimariesExt::kRec2020, 789, 123);
|
||||
input.smpte_st_2086.emplace(SkNamedPrimaries::kRec2020, 789, 123);
|
||||
mojo::test::SerializeAndDeserialize<gfx::mojom::HDRMetadata>(input, output);
|
||||
EXPECT_EQ(input, output);
|
||||
|
||||
|
@ -201,7 +201,7 @@ DrmDisplay::DrmDisplay(const scoped_refptr<DrmDevice>& drm,
|
||||
// sync. HDR capability is determined in
|
||||
// gfx::DisplayUtil::GetColorSpaceFromEdid
|
||||
if (display_snapshot.color_space() == gfx::ColorSpace::CreateHDR10()) {
|
||||
output_primaries = SkNamedPrimariesExt::kRec2020;
|
||||
output_primaries = SkNamedPrimaries::kRec2020;
|
||||
SetColorspaceProperty(display_snapshot.color_space());
|
||||
SetHdrOutputMetadata(display_snapshot.color_space());
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user