]> git.sesse.net Git - movit/blobdiff - colorspace_conversion_effect.cpp
Add partial Rec. 2020 support.
[movit] / colorspace_conversion_effect.cpp
index 0e2425593acfe18da75824b56beb2748672c5c27..bb23afc74da6270aa7d738d9005a2aebcf61e6e4 100644 (file)
@@ -18,6 +18,10 @@ static const double rec601_525_y_R = 0.340, rec601_525_y_G = 0.595, rec601_525_y
 static const double rec601_625_x_R = 0.640, rec601_625_x_G = 0.290, rec601_625_x_B = 0.150;
 static const double rec601_625_y_R = 0.330, rec601_625_y_G = 0.600, rec601_625_y_B = 0.060;
 
+// Color coordinates from Rec. 2020.
+static const double rec2020_x_R = 0.708, rec2020_x_G = 0.170, rec2020_x_B = 0.131;
+static const double rec2020_y_R = 0.292, rec2020_y_G = 0.797, rec2020_y_B = 0.046;
+
 ColorspaceConversionEffect::ColorspaceConversionEffect()
        : source_space(COLORSPACE_sRGB),
          destination_space(COLORSPACE_sRGB)
@@ -48,6 +52,10 @@ Matrix3d get_xyz_matrix(Colorspace space)
                x_R = rec601_625_x_R; x_G = rec601_625_x_G; x_B = rec601_625_x_B;
                y_R = rec601_625_y_R; y_G = rec601_625_y_G; y_B = rec601_625_y_B;
                break;
+       case COLORSPACE_REC_2020:
+               x_R = rec2020_x_R; x_G = rec2020_x_G; x_B = rec2020_x_B;
+               y_R = rec2020_y_R; y_G = rec2020_y_G; y_B = rec2020_y_B;
+               break;
        default:
                assert(false);
        }