| Index: ui/gfx/color_space_win.cc
|
| diff --git a/ui/gfx/color_space_win.cc b/ui/gfx/color_space_win.cc
|
| index d3ab700939a53301a461f7a1d54a891b20fab156..9d2fafa1d92ea9aa1ef182f8c018fbc87af47ff5 100644
|
| --- a/ui/gfx/color_space_win.cc
|
| +++ b/ui/gfx/color_space_win.cc
|
| @@ -134,4 +134,75 @@ DXVA2_ExtendedFormat ColorSpaceWin::GetExtendedFormat(
|
| return format;
|
| }
|
|
|
| +DXGI_COLOR_SPACE_TYPE ColorSpaceWin::GetDXGIColorSpace(
|
| + const ColorSpace& color_space) {
|
| + if (color_space.matrix_ == gfx::ColorSpace::MatrixID::RGB) {
|
| + // For RGB, we default to FULL
|
| + if (color_space.range_ == gfx::ColorSpace::RangeID::LIMITED) {
|
| + if (color_space.primaries_ == gfx::ColorSpace::PrimaryID::BT2020) {
|
| + if (color_space.transfer_ == gfx::ColorSpace::TransferID::SMPTEST2084) {
|
| + return DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020;
|
| + } else {
|
| + return DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020;
|
| + }
|
| + } else {
|
| + return DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709;
|
| + }
|
| + } else {
|
| + if (color_space.primaries_ == gfx::ColorSpace::PrimaryID::BT2020) {
|
| + if (color_space.transfer_ == gfx::ColorSpace::TransferID::SMPTEST2084) {
|
| + return DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020;
|
| + } else {
|
| + return DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020;
|
| + }
|
| + } else {
|
| + if (color_space.transfer_ == gfx::ColorSpace::TransferID::LINEAR) {
|
| + return DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709;
|
| + } else {
|
| + return DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709;
|
| + }
|
| + }
|
| + }
|
| + } else {
|
| + if (color_space.primaries_ == gfx::ColorSpace::PrimaryID::BT2020) {
|
| + if (color_space.transfer_ == gfx::ColorSpace::TransferID::SMPTEST2084) {
|
| + return DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020;
|
| + // Could also be:
|
| + // DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020
|
| + } else {
|
| + // For YUV, we default to LIMITED
|
| + if (color_space.range_ == gfx::ColorSpace::RangeID::FULL) {
|
| + return DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020;
|
| +
|
| + } else {
|
| + return DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020;
|
| + // Could also be:
|
| + // DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020
|
| + }
|
| + }
|
| + } else if (color_space.primaries_ == gfx::ColorSpace::PrimaryID::BT470BG ||
|
| + color_space.primaries_ ==
|
| + gfx::ColorSpace::PrimaryID::SMPTE170M) {
|
| + // For YUV, we default to LIMITED
|
| + if (color_space.range_ == gfx::ColorSpace::RangeID::FULL) {
|
| + return DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601;
|
| + } else {
|
| + return DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601;
|
| + }
|
| + } else {
|
| + // For YUV, we default to LIMITED
|
| + if (color_space.range_ == gfx::ColorSpace::RangeID::FULL) {
|
| + // TODO(hubbe): Check if this is correct.
|
| + if (color_space.transfer_ == gfx::ColorSpace::TransferID::SMPTE170M) {
|
| + return DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601;
|
| + } else {
|
| + return DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709;
|
| + }
|
| + } else {
|
| + return DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709;
|
| + }
|
| + }
|
| + }
|
| +}
|
| +
|
| } // namespace gfx
|
|
|