Implement TODO about gain maps in are_images_equal (#3028)
diff --git a/tests/gtest/are_images_equal.cc b/tests/gtest/are_images_equal.cc index 11231a9..e5d5e9e 100644 --- a/tests/gtest/are_images_equal.cc +++ b/tests/gtest/are_images_equal.cc
@@ -13,11 +13,15 @@ using avif::ImagePtr; int main(int argc, char** argv) { - if (argc != 4 && argc != 5) { + if (argc != 4 && argc != 5 && argc != 6) { std::cerr << "Wrong argument: " << argv[0] - << " file1 file2 ignore_alpha_flag [psnr_threshold]" << std::endl; + << " file1 file2 ignore_alpha_flag [psnr_threshold] " + "[ignore_gain_map_flag]" + << std::endl; return 2; } + const bool ignore_gain_map = argc > 5 && std::stoi(argv[5]) != 0; + ImagePtr decoded[2] = {ImagePtr(avifImageCreateEmpty()), ImagePtr(avifImageCreateEmpty())}; if (!decoded[0] || !decoded[1]) { @@ -31,18 +35,15 @@ for (int i : {0, 1}) { // Make sure no color conversion happens. decoded[i]->matrixCoefficients = AVIF_MATRIX_COEFFICIENTS_IDENTITY; - if (avifReadImage(argv[i + 1], - AVIF_APP_FILE_FORMAT_UNKNOWN /* guess format */, - requestedFormat, kRequestedDepth, - AVIF_CHROMA_DOWNSAMPLING_AUTOMATIC, - /*ignoreColorProfile==*/AVIF_FALSE, - /*ignoreExif=*/AVIF_FALSE, - /*ignoreXMP=*/AVIF_FALSE, - // TODO(maryla): also compare gain maps. - /*ignoreGainMap=*/AVIF_TRUE, - /*imageSizeLimit=*/std::numeric_limits<uint32_t>::max(), - decoded[i].get(), &depth[i], nullptr, - nullptr) == AVIF_APP_FILE_FORMAT_UNKNOWN) { + if (avifReadImage( + argv[i + 1], AVIF_APP_FILE_FORMAT_UNKNOWN /* guess format */, + requestedFormat, kRequestedDepth, + AVIF_CHROMA_DOWNSAMPLING_AUTOMATIC, + /*ignoreColorProfile==*/AVIF_FALSE, /*ignoreExif=*/AVIF_FALSE, + /*ignoreXMP=*/AVIF_FALSE, ignore_gain_map, + /*imageSizeLimit=*/std::numeric_limits<uint32_t>::max(), + decoded[i].get(), &depth[i], nullptr, + nullptr) == AVIF_APP_FILE_FORMAT_UNKNOWN) { std::cerr << "Image " << argv[i + 1] << " cannot be read." << std::endl; return 2; }
diff --git a/tests/test_cmd_avifgainmaputil.sh b/tests/test_cmd_avifgainmaputil.sh index 754bb2c..d339aac 100755 --- a/tests/test_cmd_avifgainmaputil.sh +++ b/tests/test_cmd_avifgainmaputil.sh
@@ -68,6 +68,10 @@ "${AVIFGAINMAPUTIL}" convert "${INPUT_JPEG_AVIF_GAINMAP_SDR}" "${AVIF_OUTPUT}" --swap-base && exit 1 "${AVIFGAINMAPUTIL}" convert "${INPUT_JPEG_AVIF_GAINMAP_SDR}" "${AVIF_OUTPUT}" --swap-base --ignore-profile \ --cicp 2/3/4 + + # also test the are_images_equal binary itself with some gain maps + "${ARE_IMAGES_EQUAL}" "${INPUT_JPEG_AVIF_GAINMAP_SDR}" "${INPUT_JPEG_AVIF_GAINMAP_SDR}" 0 40 0 + "${ARE_IMAGES_EQUAL}" "${INPUT_JPEG_AVIF_GAINMAP_SDR}" "${INPUT_JPEG_AVIF_GAINMAP_SDR}" 0 40 1 popd exit 0