X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=gamma_compression_effect_test.cpp;h=e65acee34e4974b6c8a2a500a15556b5255c982e;hp=6211acc0089afab3d0f21a97dcff0bf77daf0a23;hb=3bb4d84f2c3914ac815b1c3fbcdea0439aa30d74;hpb=2fdbe6e32ef5de09db9c890b6cd4355bf65dd1e5 diff --git a/gamma_compression_effect_test.cpp b/gamma_compression_effect_test.cpp index 6211acc..e65acee 100644 --- a/gamma_compression_effect_test.cpp +++ b/gamma_compression_effect_test.cpp @@ -3,9 +3,10 @@ // Pretty much the inverse of the GammaExpansionEffect tests; // EffectChainTest tests that they are actually inverses. -#include "test_util.h" +#include #include "gtest/gtest.h" -#include "gamma_expansion_effect.h" +#include "image_format.h" +#include "test_util.h" TEST(GammaCompressionEffectTest, sRGB_KeyValues) { float data[] = { @@ -66,3 +67,24 @@ TEST(GammaCompressionEffectTest, Rec709_RampAlwaysIncreases) { << "No increase between " << i-1 << " and " << i; } } + +TEST(GammaCompressionEffectTest, 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_LINEAR); + tester.run(out_data_709, GL_RED, COLORSPACE_sRGB, GAMMA_REC_709); + EffectChainTester tester2(data, 256, 1, FORMAT_GRAYSCALE, COLORSPACE_sRGB, GAMMA_LINEAR); + tester2.run(out_data_2020, GL_RED, COLORSPACE_sRGB, GAMMA_REC_2020_12_BIT); + + 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); +}