blending_test.cc (2020B)
1 // Copyright (c) the JPEG XL Project Authors. All rights reserved. 2 // 3 // Use of this source code is governed by a BSD-style 4 // license that can be found in the LICENSE file. 5 6 #include <jxl/types.h> 7 8 #include <cstdint> 9 #include <sstream> 10 #include <utility> 11 #include <vector> 12 13 #include "lib/extras/dec/decode.h" 14 #include "lib/extras/dec/jxl.h" 15 #include "lib/extras/packed_image.h" 16 #include "lib/jxl/base/span.h" 17 #include "lib/jxl/test_utils.h" 18 #include "lib/jxl/testing.h" 19 20 namespace jxl { 21 namespace { 22 23 TEST(BlendingTest, Crops) { 24 const std::vector<uint8_t> compressed = 25 jxl::test::ReadTestData("jxl/blending/cropped_traffic_light.jxl"); 26 extras::JXLDecompressParams dparams; 27 dparams.accepted_formats = {{3, JXL_TYPE_UINT8, JXL_LITTLE_ENDIAN, 0}}; 28 extras::PackedPixelFile decoded; 29 ASSERT_TRUE(DecodeImageJXL(compressed.data(), compressed.size(), dparams, 30 /*decoded_bytes=*/nullptr, &decoded)); 31 ASSERT_EQ(decoded.frames.size(), 4); 32 33 int i = 0; 34 for (auto&& decoded_frame : decoded.frames) { 35 std::ostringstream filename; 36 filename << "jxl/blending/cropped_traffic_light_frame-" << i << ".png"; 37 const std::vector<uint8_t> compressed_frame = 38 jxl::test::ReadTestData(filename.str()); 39 extras::PackedPixelFile decoded_frame_ppf; 40 decoded_frame_ppf.info = decoded.info; 41 decoded_frame_ppf.primary_color_representation = 42 decoded.primary_color_representation; 43 decoded_frame_ppf.color_encoding = decoded.color_encoding; 44 decoded_frame_ppf.icc = decoded.icc; 45 decoded_frame_ppf.extra_channels_info = decoded.extra_channels_info; 46 decoded_frame_ppf.frames.emplace_back(std::move(decoded_frame)); 47 extras::PackedPixelFile expected_frame_ppf; 48 ASSERT_TRUE(extras::DecodeBytes(Bytes(compressed_frame), 49 extras::ColorHints(), &expected_frame_ppf)); 50 EXPECT_EQ(0.0f, 51 test::ComputeDistance2(decoded_frame_ppf, expected_frame_ppf)); 52 ++i; 53 } 54 } 55 56 } // namespace 57 } // namespace jxl