diff --git a/HEIF_IMPLEMENTATION_PLAN.md b/HEIF_IMPLEMENTATION_PLAN.md
index e18b03c21d..a70f11f04d 100644
--- a/HEIF_IMPLEMENTATION_PLAN.md
+++ b/HEIF_IMPLEMENTATION_PLAN.md
@@ -1,5 +1,31 @@
# AVIF and AV1 implementation plan
+## ICC codec regression correction: 2026-09-09
+
+The previous 10,487-case selection omitted JPEG, PNG, TIFF, and WebP ICC decoder tests. It was not
+adequate verification of the shared ICC interpolation change. Ubuntu ARM64/net10 CI run 34293831444,
+job 102286178786, exposed ten failures. The same ten failures reproduce on Windows/net11:
+`icc-ci-local-baseline-r1` passed 15 of 25 selected cases and failed ten.
+
+With explicit user authorization, ten stale PNG references were replaced with fresh DebugSave outputs
+from the current interpolation implementation. No comparer tolerance or production arithmetic was changed.
+The PNG/WebP perceptual outputs had 2,342 RGB components differing by one from each old reference.
+The old JPEG references differed by up to 29 and TIFF by up to seven. These are not Ubuntu-only differences.
+Comparing the downloaded CI output with the fresh Windows output instead gives exact RGB for PNG/WebP;
+JPEG has 4, 4, 6, and 6 one-unit component differences, and TIFF has 72 and 66. No component exceeds one.
+Those small platform differences fit the existing comparer tolerances. The updated images are managed
+regression baselines for the selected interpolation behavior, not independent native-decoder evidence.
+
+AVIF ICC inputs now have dedicated Decode_WhenColorProfileHandling methods instead of being included
+in the general Decode corpus method. Existing profile, pixel, alpha, and sequence assertions are retained.
+The corresponding 23 reference PNG paths were renamed without changing their pixel content.
+
+Roslynk reported zero errors. Both test projects built in Release/net11. After restoring 59 accidentally
+overwritten references and removing 205 unintended reference copies, full-suite VSTest execution of
+ImageSharp.Tests and ImageSharp.PublicApi.Tests with no filter passed 58,053 tests, skipped 11, and failed
+zero (58,064 total; 3.1977 minutes). Only the ten authorized ICC reference updates and 23 HEIF reference
+renames remain in the reference-folder diff. This result verifies the regression suite, not complete AV1 parity.
+
## Managed checkpoint verification: 2026-09-09
ICC interpolation selection is committed as `9aeed10da`. The region conversion, container metadata,
diff --git a/tests/ImageSharp.Tests/Formats/Heif/HeifDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Heif/HeifDecoderTests.cs
index da0f255696..8206e23fd6 100644
--- a/tests/ImageSharp.Tests/Formats/Heif/HeifDecoderTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Heif/HeifDecoderTests.cs
@@ -27,11 +27,6 @@ public class HeifDecoderTests
[WithFile(TestImages.Heif.IrvineAvif, PixelTypes.Rgba32)]
[WithFile(TestImages.Heif.XnConvert, PixelTypes.Rgba32)]
[WithFile(TestImages.Heif.Orange4x4, PixelTypes.Rgba32)]
- [WithFile(TestImages.Heif.ParisIccExifXmpAvif, PixelTypes.Rgba32)]
- [WithFile(TestImages.Heif.PerceptualIccAvif, PixelTypes.Rgba32)]
- [WithFile(TestImages.Heif.PerceptualIccGridAvif, PixelTypes.Rgba32)]
- [WithFile(TestImages.Heif.PerceptualIccSequenceAvif, PixelTypes.Rgba32)]
- [WithFile(TestImages.Heif.DuckyRommIccAlphaAvif, PixelTypes.Rgba32)]
[WithFile(TestImages.Heif.Animated8Bit, PixelTypes.Rgba32)]
[WithFile(TestImages.Heif.Animated8BitWithAudio, PixelTypes.Rgba32)]
[WithFile(TestImages.Heif.Animated8BitWithAlphaExifXmp, PixelTypes.Rgba32)]
@@ -179,12 +174,40 @@ public class HeifDecoderTests
Assert.Equal(expectedFrameCount, image.Frames.Count);
}
+ ///
+ /// Verifies that preserving an embedded ICC profile leaves every decoded frame unconverted.
+ ///
+ [Theory]
+ [WithFile(TestImages.Heif.ParisIccExifXmpAvif, PixelTypes.Rgba32)]
+ [WithFile(TestImages.Heif.PerceptualIccAvif, PixelTypes.Rgba32)]
+ [WithFile(TestImages.Heif.PerceptualIccGridAvif, PixelTypes.Rgba32)]
+ [WithFile(TestImages.Heif.PerceptualIccSequenceAvif, PixelTypes.Rgba32)]
+ [WithFile(TestImages.Heif.DuckyRommIccAlphaAvif, PixelTypes.Rgba32)]
+ public void Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile(TestImageProvider provider)
+ where TPixel : unmanaged, IPixel
+ {
+ DecoderOptions options = new() { ColorProfileHandling = ColorProfileHandling.Preserve };
+ using Image image = provider.GetImage(HeifDecoder.Instance, options);
+
+ Assert.NotNull(image.Metadata.IccProfile);
+ if (image.Frames.Count == 1)
+ {
+ image.DebugSave(provider, extension: "png", encoder: new PngEncoder());
+ image.CompareToReferenceOutput(ImageComparer.Exact, provider);
+ }
+ else
+ {
+ image.DebugSaveMultiFrame(provider, encoder: new PngEncoder());
+ image.CompareToReferenceOutputMultiFrame(provider, ImageComparer.Exact);
+ }
+ }
+
///
/// Verifies that AVIF decoding preserves the exact embedded ICC profile bytes.
///
[Theory]
[WithFile(TestImages.Heif.ParisIccExifXmpAvif, PixelTypes.Rgba32)]
- public void IccPreserve(TestImageProvider provider)
+ public void Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfileBytes(TestImageProvider provider)
where TPixel : unmanaged, IPixel
{
DecoderOptions preserveOptions = new() { ColorProfileHandling = ColorProfileHandling.Preserve };
@@ -204,7 +227,7 @@ public class HeifDecoderTests
///
[Theory]
[WithFile(TestImages.Heif.PerceptualIccAvif, PixelTypes.Rgba32)]
- public void IccConvert(TestImageProvider provider)
+ public void Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile(TestImageProvider provider)
where TPixel : unmanaged, IPixel
{
DecoderOptions preserveOptions = new() { ColorProfileHandling = ColorProfileHandling.Preserve };
@@ -226,7 +249,7 @@ public class HeifDecoderTests
///
[Theory]
[WithFile(TestImages.Heif.PerceptualIccGridAvif, PixelTypes.Rgba32)]
- public void IccConvertGrid(TestImageProvider provider)
+ public void Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Grid(TestImageProvider provider)
where TPixel : unmanaged, IPixel
{
DecoderOptions preserveOptions = new() { ColorProfileHandling = ColorProfileHandling.Preserve };
@@ -250,7 +273,7 @@ public class HeifDecoderTests
///
[Theory]
[WithFile(TestImages.Heif.PerceptualIccSequenceAvif, PixelTypes.Rgba32)]
- public void IccConvertSequence(TestImageProvider provider)
+ public void Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Sequence(TestImageProvider provider)
where TPixel : unmanaged, IPixel
{
DecoderOptions preserveOptions = new() { ColorProfileHandling = ColorProfileHandling.Preserve };
@@ -276,7 +299,7 @@ public class HeifDecoderTests
///
[Theory]
[WithFile(TestImages.Heif.DuckyRommIccAlphaAvif, PixelTypes.Rgba32)]
- public void IccConvertAlpha(TestImageProvider provider)
+ public void Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Alpha(TestImageProvider provider)
{
DecoderOptions convertOptions = new() { ColorProfileHandling = ColorProfileHandling.Convert };
using Image decoded = provider.GetImage(HeifDecoder.Instance, convertOptions);
@@ -294,7 +317,7 @@ public class HeifDecoderTests
[WithFile(TestImages.Heif.PerceptualIccGridAvif, PixelTypes.Rgba32)]
[WithFile(TestImages.Heif.PerceptualIccSequenceAvif, PixelTypes.Rgba32)]
[WithFile(TestImages.Heif.DuckyRommIccAlphaAvif, PixelTypes.Rgba32)]
- public void IccCompactNonSrgb(TestImageProvider provider)
+ public void Decode_WhenColorProfileHandlingIsCompact_PreservesNonSrgbIccProfile(TestImageProvider provider)
where TPixel : unmanaged, IPixel
{
DecoderOptions preserveOptions = new() { ColorProfileHandling = ColorProfileHandling.Preserve };
@@ -324,7 +347,7 @@ public class HeifDecoderTests
///
[Theory]
[WithFile(TestImages.Heif.ParisIccExifXmpAvif, PixelTypes.Rgba32)]
- public void IccCompactSrgb(TestImageProvider provider)
+ public void Decode_WhenColorProfileHandlingIsCompact_RemovesSrgbIccProfile(TestImageProvider provider)
where TPixel : unmanaged, IPixel
{
DecoderOptions preserveOptions = new() { ColorProfileHandling = ColorProfileHandling.Preserve };
@@ -348,7 +371,7 @@ public class HeifDecoderTests
[WithFile(TestImages.Heif.PerceptualIccGridAvif, PixelTypes.Rgba32)]
[WithFile(TestImages.Heif.PerceptualIccSequenceAvif, PixelTypes.Rgba32)]
[WithFile(TestImages.Heif.DuckyRommIccAlphaAvif, PixelTypes.Rgba32)]
- public void IccSkipMetadata(TestImageProvider provider)
+ public void Decode_WhenSkipMetadataIsTrue_OmitsIccProfile(TestImageProvider provider)
where TPixel : unmanaged, IPixel
{
DecoderOptions options = new()
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_Rgba32_ducky_romm_icc_alpha.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsCompact_PreservesNonSrgbIccProfile_Rgba32_ducky_romm_icc_alpha.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_Rgba32_ducky_romm_icc_alpha.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsCompact_PreservesNonSrgbIccProfile_Rgba32_ducky_romm_icc_alpha.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_Rgba32_perceptual_icc.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsCompact_PreservesNonSrgbIccProfile_Rgba32_perceptual_icc.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_Rgba32_perceptual_icc.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsCompact_PreservesNonSrgbIccProfile_Rgba32_perceptual_icc.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_Rgba32_perceptual_icc_grid.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsCompact_PreservesNonSrgbIccProfile_Rgba32_perceptual_icc_grid.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_Rgba32_perceptual_icc_grid.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsCompact_PreservesNonSrgbIccProfile_Rgba32_perceptual_icc_grid.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_Rgba32_perceptual_icc_sequence.avif/00.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsCompact_PreservesNonSrgbIccProfile_Rgba32_perceptual_icc_sequence.avif/00.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_Rgba32_perceptual_icc_sequence.avif/00.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsCompact_PreservesNonSrgbIccProfile_Rgba32_perceptual_icc_sequence.avif/00.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_Rgba32_perceptual_icc_sequence.avif/01.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsCompact_PreservesNonSrgbIccProfile_Rgba32_perceptual_icc_sequence.avif/01.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_Rgba32_perceptual_icc_sequence.avif/01.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsCompact_PreservesNonSrgbIccProfile_Rgba32_perceptual_icc_sequence.avif/01.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_Rgba32_paris_icc_exif_xmp.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsCompact_RemovesSrgbIccProfile_Rgba32_paris_icc_exif_xmp.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_Rgba32_paris_icc_exif_xmp.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsCompact_RemovesSrgbIccProfile_Rgba32_paris_icc_exif_xmp.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccConvertAlpha_Rgba32_ducky_romm_icc_alpha.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Alpha_Rgba32_ducky_romm_icc_alpha.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccConvertAlpha_Rgba32_ducky_romm_icc_alpha.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Alpha_Rgba32_ducky_romm_icc_alpha.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccConvertGrid_Rgba32_perceptual_icc_grid.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Grid_Rgba32_perceptual_icc_grid.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccConvertGrid_Rgba32_perceptual_icc_grid.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Grid_Rgba32_perceptual_icc_grid.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccConvert_Rgba32_perceptual_icc.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_perceptual_icc.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccConvert_Rgba32_perceptual_icc.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_perceptual_icc.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccConvertSequence_Rgba32_perceptual_icc_sequence.avif/00.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Sequence_Rgba32_perceptual_icc_sequence.avif/00.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccConvertSequence_Rgba32_perceptual_icc_sequence.avif/00.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Sequence_Rgba32_perceptual_icc_sequence.avif/00.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccConvertSequence_Rgba32_perceptual_icc_sequence.avif/01.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Sequence_Rgba32_perceptual_icc_sequence.avif/01.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccConvertSequence_Rgba32_perceptual_icc_sequence.avif/01.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Sequence_Rgba32_perceptual_icc_sequence.avif/01.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccCompactSrgb_Rgba32_paris_icc_exif_xmp.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfileBytes_Rgba32_paris_icc_exif_xmp.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccCompactSrgb_Rgba32_paris_icc_exif_xmp.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfileBytes_Rgba32_paris_icc_exif_xmp.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccCompactNonSrgb_Rgba32_ducky_romm_icc_alpha.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile_Rgba32_ducky_romm_icc_alpha.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccCompactNonSrgb_Rgba32_ducky_romm_icc_alpha.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile_Rgba32_ducky_romm_icc_alpha.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccPreserve_Rgba32_paris_icc_exif_xmp.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile_Rgba32_paris_icc_exif_xmp.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccPreserve_Rgba32_paris_icc_exif_xmp.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile_Rgba32_paris_icc_exif_xmp.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccCompactNonSrgb_Rgba32_perceptual_icc.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile_Rgba32_perceptual_icc.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccCompactNonSrgb_Rgba32_perceptual_icc.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile_Rgba32_perceptual_icc.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccCompactNonSrgb_Rgba32_perceptual_icc_grid.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile_Rgba32_perceptual_icc_grid.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccCompactNonSrgb_Rgba32_perceptual_icc_grid.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile_Rgba32_perceptual_icc_grid.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccCompactNonSrgb_Rgba32_perceptual_icc_sequence.avif/00.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile_Rgba32_perceptual_icc_sequence.avif/00.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccCompactNonSrgb_Rgba32_perceptual_icc_sequence.avif/00.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile_Rgba32_perceptual_icc_sequence.avif/00.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccCompactNonSrgb_Rgba32_perceptual_icc_sequence.avif/01.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile_Rgba32_perceptual_icc_sequence.avif/01.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccCompactNonSrgb_Rgba32_perceptual_icc_sequence.avif/01.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenColorProfileHandlingIsPreserve_PreservesIccProfile_Rgba32_perceptual_icc_sequence.avif/01.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccSkipMetadata_Rgba32_ducky_romm_icc_alpha.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenSkipMetadataIsTrue_OmitsIccProfile_Rgba32_ducky_romm_icc_alpha.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccSkipMetadata_Rgba32_ducky_romm_icc_alpha.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenSkipMetadataIsTrue_OmitsIccProfile_Rgba32_ducky_romm_icc_alpha.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccSkipMetadata_Rgba32_paris_icc_exif_xmp.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenSkipMetadataIsTrue_OmitsIccProfile_Rgba32_paris_icc_exif_xmp.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccSkipMetadata_Rgba32_paris_icc_exif_xmp.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenSkipMetadataIsTrue_OmitsIccProfile_Rgba32_paris_icc_exif_xmp.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccSkipMetadata_Rgba32_perceptual_icc_grid.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenSkipMetadataIsTrue_OmitsIccProfile_Rgba32_perceptual_icc_grid.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccSkipMetadata_Rgba32_perceptual_icc_grid.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenSkipMetadataIsTrue_OmitsIccProfile_Rgba32_perceptual_icc_grid.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccSkipMetadata_Rgba32_perceptual_icc_sequence.avif/00.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenSkipMetadataIsTrue_OmitsIccProfile_Rgba32_perceptual_icc_sequence.avif/00.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccSkipMetadata_Rgba32_perceptual_icc_sequence.avif/00.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenSkipMetadataIsTrue_OmitsIccProfile_Rgba32_perceptual_icc_sequence.avif/00.png
diff --git a/tests/Images/External/ReferenceOutput/HeifDecoderTests/IccSkipMetadata_Rgba32_perceptual_icc_sequence.avif/01.png b/tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenSkipMetadataIsTrue_OmitsIccProfile_Rgba32_perceptual_icc_sequence.avif/01.png
similarity index 100%
rename from tests/Images/External/ReferenceOutput/HeifDecoderTests/IccSkipMetadata_Rgba32_perceptual_icc_sequence.avif/01.png
rename to tests/Images/External/ReferenceOutput/HeifDecoderTests/Decode_WhenSkipMetadataIsTrue_OmitsIccProfile_Rgba32_perceptual_icc_sequence.avif/01.png
diff --git a/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_CMYK_ICC_Jpeg_Rgba32_issue-129.png b/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_CMYK_ICC_Jpeg_Rgba32_issue-129.png
index 4e554a34d3..aac260b64a 100644
--- a/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_CMYK_ICC_Jpeg_Rgba32_issue-129.png
+++ b/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_CMYK_ICC_Jpeg_Rgba32_issue-129.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9750b54f5220020e0c3f5ce22e4f108cb70290750c613c29beeb49473d5c80a6
-size 1349665
+oid sha256:3dc5fb0dd26274e5a7c7bbaba7a7b941c7073787ff4918ac20fa09299d214797
+size 2087077
diff --git a/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_RGB_ICC_Jpeg_Rgba32_Perceptual-cLUT-only.png b/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_RGB_ICC_Jpeg_Rgba32_Perceptual-cLUT-only.png
index 8a27087f51..905a8ab52a 100644
--- a/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_RGB_ICC_Jpeg_Rgba32_Perceptual-cLUT-only.png
+++ b/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_RGB_ICC_Jpeg_Rgba32_Perceptual-cLUT-only.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:dbe96e449dfeadc71bbfb0b48d2f56e6357d5b64a225153eed60263ea3356e71
-size 119987
+oid sha256:1ffc1ab4fbd9f8e1be4651d7667730453f44bbc2545c640802184efc156b8482
+size 154199
diff --git a/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_RGB_ICC_Jpeg_Rgba32_Perceptual.png b/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_RGB_ICC_Jpeg_Rgba32_Perceptual.png
index 586bc96479..80fe27d2f4 100644
--- a/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_RGB_ICC_Jpeg_Rgba32_Perceptual.png
+++ b/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_RGB_ICC_Jpeg_Rgba32_Perceptual.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6e9e4da17b7270565fd592f4ff710ff317e1054794d966d33f11748defc7c35b
-size 124944
+oid sha256:ca494862073d4b6f14e2b03207919c2d81959eb7aeef733b131406e9757449a8
+size 160707
diff --git a/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_YCCK_ICC_Jpeg_Rgba32_issue_2723.png b/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_YCCK_ICC_Jpeg_Rgba32_issue_2723.png
index a73e5f31ef..0d084d892f 100644
--- a/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_YCCK_ICC_Jpeg_Rgba32_issue_2723.png
+++ b/tests/Images/External/ReferenceOutput/JpegDecoderTests/Decode_YCCK_ICC_Jpeg_Rgba32_issue_2723.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:de73fa7a2cdd79763e40c51381f9a0cf5c7d43db2dcd7a86dad0a5b68377665f
-size 421249
+oid sha256:500dcfabe3a8dc8b33434b4a662296f8df91b5172819010534c2c08f359a0e85
+size 738586
diff --git a/tests/Images/External/ReferenceOutput/PngDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual-cLUT-only.png b/tests/Images/External/ReferenceOutput/PngDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual-cLUT-only.png
index ffc9839019..d42f580e59 100644
--- a/tests/Images/External/ReferenceOutput/PngDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual-cLUT-only.png
+++ b/tests/Images/External/ReferenceOutput/PngDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual-cLUT-only.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b72c885278a066e63c013885c42b772275f25a5f0b2290aa38c87f3dbeac984b
-size 81432
+oid sha256:29f01bc5a45d2a21acfcc47a3a899d6dcc8d5c0cbde8d4610db92a6ec5bb1158
+size 79768
diff --git a/tests/Images/External/ReferenceOutput/PngDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual.png b/tests/Images/External/ReferenceOutput/PngDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual.png
index 25a97ca48d..0ec50615a6 100644
--- a/tests/Images/External/ReferenceOutput/PngDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual.png
+++ b/tests/Images/External/ReferenceOutput/PngDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:936261278b1a9f5bf9a2bb4f8da09f2a82e1b5c693790e137c5f98fa4d885735
-size 81785
+oid sha256:819d6ef6ea44ab0ecbc6f9537add6c9f2431c83062143e2c698cab5de44d67ae
+size 79651
diff --git a/tests/Images/External/ReferenceOutput/TiffDecoderTests/TiffDecoder_CanDecode_YccK_ICC_Rgba32_Issue2454_A.png b/tests/Images/External/ReferenceOutput/TiffDecoderTests/TiffDecoder_CanDecode_YccK_ICC_Rgba32_Issue2454_A.png
index addaa27bfe..dc71fc1ca3 100644
--- a/tests/Images/External/ReferenceOutput/TiffDecoderTests/TiffDecoder_CanDecode_YccK_ICC_Rgba32_Issue2454_A.png
+++ b/tests/Images/External/ReferenceOutput/TiffDecoderTests/TiffDecoder_CanDecode_YccK_ICC_Rgba32_Issue2454_A.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:13f51f69b061303d06b73fa7e626d7252a9fd14aa84c961ea894f6e7cd7218cc
-size 7603818
+oid sha256:5c5f09e2f7837f46664c637a1da3514c4b816661dc4303803f9f90e80953f5d3
+size 12236433
diff --git a/tests/Images/External/ReferenceOutput/TiffDecoderTests/TiffDecoder_CanDecode_YccK_ICC_Rgba32_Issue2454_B.png b/tests/Images/External/ReferenceOutput/TiffDecoderTests/TiffDecoder_CanDecode_YccK_ICC_Rgba32_Issue2454_B.png
index 445cad99c8..861fe85b8e 100644
--- a/tests/Images/External/ReferenceOutput/TiffDecoderTests/TiffDecoder_CanDecode_YccK_ICC_Rgba32_Issue2454_B.png
+++ b/tests/Images/External/ReferenceOutput/TiffDecoderTests/TiffDecoder_CanDecode_YccK_ICC_Rgba32_Issue2454_B.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b6a35853e44d06a6f74e3aaf558e6a4b9c3209c6c3fa2c8f3ee650bf049ac0d3
-size 7624359
+oid sha256:e0a9e7f7a13f0581c2a0283682aab17d123ca9ca156777173801f197fa95cc26
+size 12859523
diff --git a/tests/Images/External/ReferenceOutput/WebpDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual-cLUT-only.png b/tests/Images/External/ReferenceOutput/WebpDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual-cLUT-only.png
index 4a01423ee7..d42f580e59 100644
--- a/tests/Images/External/ReferenceOutput/WebpDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual-cLUT-only.png
+++ b/tests/Images/External/ReferenceOutput/WebpDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual-cLUT-only.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9a2cbd483eed31cf7b410ef1ee45ae78e77b36e5b9c31f87764a1dfdb9c4e5c8
+oid sha256:29f01bc5a45d2a21acfcc47a3a899d6dcc8d5c0cbde8d4610db92a6ec5bb1158
size 79768
diff --git a/tests/Images/External/ReferenceOutput/WebpDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual.png b/tests/Images/External/ReferenceOutput/WebpDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual.png
index c46b369eff..0ec50615a6 100644
--- a/tests/Images/External/ReferenceOutput/WebpDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual.png
+++ b/tests/Images/External/ReferenceOutput/WebpDecoderTests/Decode_WhenColorProfileHandlingIsConvert_ApplyIccProfile_Rgba32_Perceptual.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:547f3ddb5bdb3a3cb5c87440b65728be295c2b5f3c10a1b0b44299bb3d80e8d7
+oid sha256:819d6ef6ea44ab0ecbc6f9537add6c9f2431c83062143e2c698cab5de44d67ae
size 79651