mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 22:37:35 +00:00
LibGfx+Tests: Support grayscale jpegs with 2x2 sampling and MCU reset
Non-interleaved files always have an MCU of one data unit. (A "data unit" is an 8x8 tile of pixels, and an "MCU" is a "minium coded unit", e.g. 2x2 data units for luminance and 1 data unit each for Cr and Cb for a YCrCb image with 4:2:0 subsampling.) For the test case, I converted an existing image to a ppm: Build/lagom/bin/image -o out.ppm \ Tests/LibGfx/test-inputs/jpg/12-bit.jpg Then I converted it to grayscale and saved it as a pgm in Photoshop. Then I turned it into a weird jpeg like so: path/to/cjpeg \ -outfile Tests/LibGfx/test-inputs/jpg/grayscale_mcu.jpg \ -sample 2x2 -restart 3 out.pgm Makes 3 of the 5 jpegs failing to decode at #22780 go.
This commit is contained in:
parent
90490d9fb8
commit
6971ba35d5
3 changed files with 14 additions and 0 deletions
|
@ -417,6 +417,15 @@ TEST_CASE(test_jpeg_grayscale_with_app14)
|
|||
TRY_OR_FAIL(expect_single_frame_of_size(*plugin_decoder, { 80, 80 }));
|
||||
}
|
||||
|
||||
TEST_CASE(test_jpeg_grayscale_with_weird_mcu_and_reset_marker)
|
||||
{
|
||||
auto file = TRY_OR_FAIL(Core::MappedFile::map(TEST_INPUT("jpg/grayscale_mcu.jpg"sv)));
|
||||
EXPECT(Gfx::JPEGImageDecoderPlugin::sniff(file->bytes()));
|
||||
auto plugin_decoder = TRY_OR_FAIL(Gfx::JPEGImageDecoderPlugin::create(file->bytes()));
|
||||
|
||||
TRY_OR_FAIL(expect_single_frame_of_size(*plugin_decoder, { 320, 240 }));
|
||||
}
|
||||
|
||||
TEST_CASE(test_jpeg_malformed_header)
|
||||
{
|
||||
Array test_inputs = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue