JPEG/R: Add display_boost parameter to decode API
Bug: 264715926
Test: jpegr_test
Change-Id: Ifef71a8aee532d603fd20417e32314243c8b4673
diff --git a/libs/jpegrecoverymap/tests/recoverymapmath_test.cpp b/libs/jpegrecoverymap/tests/recoverymapmath_test.cpp
index cf6a034..5ef79e9 100644
--- a/libs/jpegrecoverymap/tests/recoverymapmath_test.cpp
+++ b/libs/jpegrecoverymap/tests/recoverymapmath_test.cpp
@@ -557,6 +557,7 @@
jpegr_metadata_struct metadata = { .maxContentBoost = static_cast<float>(boost),
.minContentBoost = 1.0f / static_cast<float>(boost) };
RecoveryLUT recoveryLUT(&metadata);
+ RecoveryLUT recoveryLUTWithBoost(&metadata, metadata.maxContentBoost);
for (int idx = 0; idx < kRecoveryFactorNumEntries; idx++) {
float value = static_cast<float>(idx) / static_cast<float>(kRecoveryFactorNumEntries - 1);
EXPECT_RGB_NEAR(applyRecovery(RgbBlack(), value, &metadata),
@@ -569,6 +570,16 @@
applyRecoveryLUT(RgbGreen(), value, recoveryLUT));
EXPECT_RGB_NEAR(applyRecovery(RgbBlue(), value, &metadata),
applyRecoveryLUT(RgbBlue(), value, recoveryLUT));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbBlack(), value, recoveryLUT),
+ applyRecoveryLUT(RgbBlack(), value, recoveryLUTWithBoost));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbWhite(), value, recoveryLUT),
+ applyRecoveryLUT(RgbWhite(), value, recoveryLUTWithBoost));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbRed(), value, recoveryLUT),
+ applyRecoveryLUT(RgbRed(), value, recoveryLUTWithBoost));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbGreen(), value, recoveryLUT),
+ applyRecoveryLUT(RgbGreen(), value, recoveryLUTWithBoost));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbBlue(), value, recoveryLUT),
+ applyRecoveryLUT(RgbBlue(), value, recoveryLUTWithBoost));
}
}
@@ -576,6 +587,7 @@
jpegr_metadata_struct metadata = { .maxContentBoost = static_cast<float>(boost),
.minContentBoost = 1.0f };
RecoveryLUT recoveryLUT(&metadata);
+ RecoveryLUT recoveryLUTWithBoost(&metadata, metadata.maxContentBoost);
for (int idx = 0; idx < kRecoveryFactorNumEntries; idx++) {
float value = static_cast<float>(idx) / static_cast<float>(kRecoveryFactorNumEntries - 1);
EXPECT_RGB_NEAR(applyRecovery(RgbBlack(), value, &metadata),
@@ -588,6 +600,16 @@
applyRecoveryLUT(RgbGreen(), value, recoveryLUT));
EXPECT_RGB_NEAR(applyRecovery(RgbBlue(), value, &metadata),
applyRecoveryLUT(RgbBlue(), value, recoveryLUT));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbBlack(), value, recoveryLUT),
+ applyRecoveryLUT(RgbBlack(), value, recoveryLUTWithBoost));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbWhite(), value, recoveryLUT),
+ applyRecoveryLUT(RgbWhite(), value, recoveryLUTWithBoost));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbRed(), value, recoveryLUT),
+ applyRecoveryLUT(RgbRed(), value, recoveryLUTWithBoost));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbGreen(), value, recoveryLUT),
+ applyRecoveryLUT(RgbGreen(), value, recoveryLUTWithBoost));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbBlue(), value, recoveryLUT),
+ applyRecoveryLUT(RgbBlue(), value, recoveryLUTWithBoost));
}
}
@@ -596,6 +618,7 @@
.minContentBoost = 1.0f / pow(static_cast<float>(boost),
1.0f / 3.0f) };
RecoveryLUT recoveryLUT(&metadata);
+ RecoveryLUT recoveryLUTWithBoost(&metadata, metadata.maxContentBoost);
for (int idx = 0; idx < kRecoveryFactorNumEntries; idx++) {
float value = static_cast<float>(idx) / static_cast<float>(kRecoveryFactorNumEntries - 1);
EXPECT_RGB_NEAR(applyRecovery(RgbBlack(), value, &metadata),
@@ -608,6 +631,16 @@
applyRecoveryLUT(RgbGreen(), value, recoveryLUT));
EXPECT_RGB_NEAR(applyRecovery(RgbBlue(), value, &metadata),
applyRecoveryLUT(RgbBlue(), value, recoveryLUT));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbBlack(), value, recoveryLUT),
+ applyRecoveryLUT(RgbBlack(), value, recoveryLUTWithBoost));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbWhite(), value, recoveryLUT),
+ applyRecoveryLUT(RgbWhite(), value, recoveryLUTWithBoost));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbRed(), value, recoveryLUT),
+ applyRecoveryLUT(RgbRed(), value, recoveryLUTWithBoost));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbGreen(), value, recoveryLUT),
+ applyRecoveryLUT(RgbGreen(), value, recoveryLUTWithBoost));
+ EXPECT_RGB_EQ(applyRecoveryLUT(RgbBlue(), value, recoveryLUT),
+ applyRecoveryLUT(RgbBlue(), value, recoveryLUTWithBoost));
}
}
}
@@ -719,6 +752,7 @@
TEST_F(RecoveryMapMathTest, ApplyRecovery) {
jpegr_metadata_struct metadata = { .maxContentBoost = 4.0f,
.minContentBoost = 1.0f / 4.0f };
+ float displayBoost = metadata.maxContentBoost;
EXPECT_RGB_NEAR(applyRecovery(RgbBlack(), 0.0f, &metadata), RgbBlack());
EXPECT_RGB_NEAR(applyRecovery(RgbBlack(), 0.5f, &metadata), RgbBlack());
@@ -774,6 +808,19 @@
EXPECT_RGB_NEAR(applyRecovery(e, 0.5f, &metadata), e);
EXPECT_RGB_NEAR(applyRecovery(e, 0.75f, &metadata), e * 2.0f);
EXPECT_RGB_NEAR(applyRecovery(e, 1.0f, &metadata), e * 4.0f);
+
+ EXPECT_RGB_EQ(applyRecovery(RgbBlack(), 1.0f, &metadata),
+ applyRecovery(RgbBlack(), 1.0f, &metadata, displayBoost));
+ EXPECT_RGB_EQ(applyRecovery(RgbWhite(), 1.0f, &metadata),
+ applyRecovery(RgbWhite(), 1.0f, &metadata, displayBoost));
+ EXPECT_RGB_EQ(applyRecovery(RgbRed(), 1.0f, &metadata),
+ applyRecovery(RgbRed(), 1.0f, &metadata, displayBoost));
+ EXPECT_RGB_EQ(applyRecovery(RgbGreen(), 1.0f, &metadata),
+ applyRecovery(RgbGreen(), 1.0f, &metadata, displayBoost));
+ EXPECT_RGB_EQ(applyRecovery(RgbBlue(), 1.0f, &metadata),
+ applyRecovery(RgbBlue(), 1.0f, &metadata, displayBoost));
+ EXPECT_RGB_EQ(applyRecovery(e, 1.0f, &metadata),
+ applyRecovery(e, 1.0f, &metadata, displayBoost));
}
TEST_F(RecoveryMapMathTest, GetYuv420Pixel) {