X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=gamma_expansion_effect_test.cpp;h=dc50f911f9dca122e1e6e67a1eee6131b1305dbd;hb=9a00101dbb6f98d21c6b8ce4d33200af840ea908;hp=71544b4738c1a92caa827d1d5c7e90d3a7941ca3;hpb=36ae69017f10987948009bf6f602da5f94e4f780;p=movit diff --git a/gamma_expansion_effect_test.cpp b/gamma_expansion_effect_test.cpp index 71544b4..dc50f91 100644 --- a/gamma_expansion_effect_test.cpp +++ b/gamma_expansion_effect_test.cpp @@ -1,8 +1,10 @@ // Unit tests for GammaExpansionEffect. -#include "test_util.h" -#include "gtest/gtest.h" +#include + #include "gamma_expansion_effect.h" +#include "gtest/gtest.h" +#include "test_util.h" TEST(GammaExpansionEffectTest, sRGB_KeyValues) { float data[] = { @@ -43,7 +45,7 @@ TEST(GammaExpansionEffectTest, sRGB_AlphaIsUnchanged) { 0.0f, 0.0f, 0.0f, 1.0f, }; float out_data[5 * 4]; - EffectChainTester tester(data, 5, 1, FORMAT_RGBA, COLORSPACE_sRGB, GAMMA_sRGB); + EffectChainTester tester(data, 5, 1, FORMAT_RGBA_POSTMULTIPLIED_ALPHA, COLORSPACE_sRGB, GAMMA_sRGB); tester.run(out_data, GL_RGBA, COLORSPACE_sRGB, GAMMA_LINEAR); expect_equal(data, out_data, 5, 1); @@ -88,8 +90,29 @@ TEST(GammaExpansionEffectTest, Rec709_AlphaIsUnchanged) { 0.0f, 0.0f, 0.0f, 1.0f, }; float out_data[5 * 4]; - EffectChainTester tester(data, 5, 1, FORMAT_RGBA, COLORSPACE_sRGB, GAMMA_REC_709); + EffectChainTester tester(data, 5, 1, FORMAT_RGBA_POSTMULTIPLIED_ALPHA, COLORSPACE_sRGB, GAMMA_REC_709); tester.run(out_data, GL_RGBA, COLORSPACE_sRGB, GAMMA_LINEAR); expect_equal(data, out_data, 5, 1); } + +TEST(GammaExpansionEffectTest, Rec2020_12BitIsVeryCloseToRec709) { + float data[256]; + for (unsigned i = 0; i < 256; ++i) { + data[i] = i / 255.0f; + } + float out_data_709[256]; + float out_data_2020[256]; + + EffectChainTester tester(data, 256, 1, FORMAT_GRAYSCALE, COLORSPACE_sRGB, GAMMA_REC_709); + tester.run(out_data_709, GL_RED, COLORSPACE_sRGB, GAMMA_LINEAR); + EffectChainTester tester2(data, 256, 1, FORMAT_GRAYSCALE, COLORSPACE_sRGB, GAMMA_REC_2020_12_BIT); + tester2.run(out_data_2020, GL_RED, COLORSPACE_sRGB, GAMMA_LINEAR); + + double sqdiff = 0.0; + for (unsigned i = 0; i < 256; ++i) { + EXPECT_NEAR(out_data_709[i], out_data_2020[i], 1e-3); + sqdiff += (out_data_709[i] - out_data_2020[i]) * (out_data_709[i] - out_data_2020[i]); + } + EXPECT_GT(sqdiff, 1e-6); +}