diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykAvx.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykAvx.cs index 158886b054..f65c74d782 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykAvx.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykAvx.cs @@ -19,6 +19,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public override void ConvertToRgbInplace(in ComponentValues values) { ref Vector256 c0Base = @@ -48,10 +49,11 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - public override void ConvertFromRgbInplace(in ComponentValues values, Span rLane, Span gLane, Span bLane) - => ConvertFromRgbInplace(in values, this.MaximumValue, rLane, gLane, bLane); + /// + public override void ConvertFromRgb(in ComponentValues values, Span rLane, Span gLane, Span bLane) + => ConvertFromRgb(in values, this.MaximumValue, rLane, gLane, bLane); - public static void ConvertFromRgbInplace(in ComponentValues values, float maxValue, Span rLane, Span gLane, Span bLane) + public static void ConvertFromRgb(in ComponentValues values, float maxValue, Span rLane, Span gLane, Span bLane) { ref Vector256 destC = ref Unsafe.As>(ref MemoryMarshal.GetReference(values.Component0)); @@ -69,7 +71,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components ref Vector256 srcB = ref Unsafe.As>(ref MemoryMarshal.GetReference(bLane)); - // Used for the color conversion var scale = Vector256.Create(maxValue); nint n = values.Component0.Length / Vector256.Count; diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykScalar.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykScalar.cs index 44ad19687f..2cca688dc4 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykScalar.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykScalar.cs @@ -14,11 +14,13 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public override void ConvertToRgbInplace(in ComponentValues values) => ConvertToRgbInplace(values, this.MaximumValue); - public override void ConvertFromRgbInplace(in ComponentValues values, Span r, Span g, Span b) - => ConvertFromRgbInplace(values, this.MaximumValue, r, g, b); + /// + public override void ConvertFromRgb(in ComponentValues values, Span r, Span g, Span b) + => ConvertFromRgb(values, this.MaximumValue, r, g, b); public static void ConvertToRgbInplace(in ComponentValues values, float maxValue) { @@ -42,7 +44,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - public static void ConvertFromRgbInplace(in ComponentValues values, float maxValue, Span r, Span g, Span b) + public static void ConvertFromRgb(in ComponentValues values, float maxValue, Span r, Span g, Span b) { Span c = values.Component0; Span m = values.Component1; diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykVector.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykVector.cs index e75d61e4c2..1e62484e32 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykVector.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykVector.cs @@ -17,7 +17,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } - protected override void ConvertCoreVectorizedInplaceToRgb(in ComponentValues values) + /// + protected override void ConvertToRgbInplaceVectorized(in ComponentValues values) { ref Vector cBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(values.Component0)); @@ -45,13 +46,16 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - protected override void ConvertCoreInplaceToRgb(in ComponentValues values) + /// + protected override void ConvertToRgbInplaceScalarRemainder(in ComponentValues values) => CmykScalar.ConvertToRgbInplace(values, this.MaximumValue); - protected override void ConvertCoreVectorizedInplaceFromRgb(in ComponentValues values, Span r, Span g, Span b) + /// + protected override void ConvertFromRgbVectorized(in ComponentValues values, Span r, Span g, Span b) => ConvertFromRgbInplaceVectorized(in values, this.MaximumValue, r, g, b); - protected override void ConvertCoreInplaceFromRgb(in ComponentValues values, Span r, Span g, Span b) + /// + protected override void ConvertFromRgbScalarRemainder(in ComponentValues values, Span r, Span g, Span b) => ConvertFromRgbInplaceRemainder(values, this.MaximumValue, r, g, b); public static void ConvertFromRgbInplaceVectorized(in ComponentValues values, float maxValue, Span r, Span g, Span b) @@ -96,7 +100,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } public static void ConvertFromRgbInplaceRemainder(in ComponentValues values, float maxValue, Span r, Span g, Span b) - => CmykScalar.ConvertFromRgbInplace(values, maxValue, r, g, b); + => CmykScalar.ConvertFromRgb(values, maxValue, r, g, b); } } } diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleAvx.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleAvx.cs index 89d51586b8..a3999ffda3 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleAvx.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleAvx.cs @@ -20,6 +20,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public override void ConvertToRgbInplace(in ComponentValues values) { ref Vector256 c0Base = @@ -36,7 +37,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - public override void ConvertFromRgbInplace(in ComponentValues values, Span rLane, Span gLane, Span bLane) + /// + public override void ConvertFromRgb(in ComponentValues values, Span rLane, Span gLane, Span bLane) { ref Vector256 destLuminance = ref Unsafe.As>(ref MemoryMarshal.GetReference(values.Component0)); diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleScalar.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleScalar.cs index 4029830d5e..65a201d946 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleScalar.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleScalar.cs @@ -16,13 +16,15 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public override void ConvertToRgbInplace(in ComponentValues values) - => ConvertCoreInplaceToRgb(values.Component0, this.MaximumValue); + => ConvertToRgbInplace(values.Component0, this.MaximumValue); - public override void ConvertFromRgbInplace(in ComponentValues values, Span r, Span g, Span b) + /// + public override void ConvertFromRgb(in ComponentValues values, Span r, Span g, Span b) => ConvertCoreInplaceFromRgb(values, r, g, b); - internal static void ConvertCoreInplaceToRgb(Span values, float maxValue) + internal static void ConvertToRgbInplace(Span values, float maxValue) { ref float valuesRef = ref MemoryMarshal.GetReference(values); float scale = 1 / maxValue; diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleVector.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleVector.cs index ef51ff2b0f..fa0a9b27a9 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleVector.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleVector.cs @@ -17,7 +17,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } - protected override void ConvertCoreVectorizedInplaceToRgb(in ComponentValues values) + /// + protected override void ConvertToRgbInplaceVectorized(in ComponentValues values) { ref Vector cBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(values.Component0)); @@ -32,10 +33,12 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - protected override void ConvertCoreInplaceToRgb(in ComponentValues values) - => GrayscaleScalar.ConvertCoreInplaceToRgb(values.Component0, this.MaximumValue); + /// + protected override void ConvertToRgbInplaceScalarRemainder(in ComponentValues values) + => GrayscaleScalar.ConvertToRgbInplace(values.Component0, this.MaximumValue); - protected override void ConvertCoreVectorizedInplaceFromRgb(in ComponentValues values, Span rLane, Span gLane, Span bLane) + /// + protected override void ConvertFromRgbVectorized(in ComponentValues values, Span rLane, Span gLane, Span bLane) { ref Vector destLuma = ref Unsafe.As>(ref MemoryMarshal.GetReference(values.Component0)); @@ -63,7 +66,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - protected override void ConvertCoreInplaceFromRgb(in ComponentValues values, Span r, Span g, Span b) + /// + protected override void ConvertFromRgbScalarRemainder(in ComponentValues values, Span r, Span g, Span b) => GrayscaleScalar.ConvertCoreInplaceFromRgb(values, r, g, b); } } diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbAvx.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbAvx.cs index 6731d535ee..aa57162d3c 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbAvx.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbAvx.cs @@ -19,6 +19,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public override void ConvertToRgbInplace(in ComponentValues values) { ref Vector256 rBase = @@ -42,7 +43,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - public override void ConvertFromRgbInplace(in ComponentValues values, Span rLane, Span gLane, Span bLane) + /// + public override void ConvertFromRgb(in ComponentValues values, Span rLane, Span gLane, Span bLane) { rLane.CopyTo(values.Component0); gLane.CopyTo(values.Component1); diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbScalar.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbScalar.cs index 42cd002427..e798196861 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbScalar.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbScalar.cs @@ -14,20 +14,22 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public override void ConvertToRgbInplace(in ComponentValues values) - => ConvertCoreInplaceToRgb(values, this.MaximumValue); + => ConvertToRgbInplace(values, this.MaximumValue); - public override void ConvertFromRgbInplace(in ComponentValues values, Span r, Span g, Span b) - => ConvertCoreInplaceFromRgb(values, r, g, b); + /// + public override void ConvertFromRgb(in ComponentValues values, Span r, Span g, Span b) + => ConvertFromRgb(values, r, g, b); - internal static void ConvertCoreInplaceToRgb(ComponentValues values, float maxValue) + internal static void ConvertToRgbInplace(ComponentValues values, float maxValue) { - GrayscaleScalar.ConvertCoreInplaceToRgb(values.Component0, maxValue); - GrayscaleScalar.ConvertCoreInplaceToRgb(values.Component1, maxValue); - GrayscaleScalar.ConvertCoreInplaceToRgb(values.Component2, maxValue); + GrayscaleScalar.ConvertToRgbInplace(values.Component0, maxValue); + GrayscaleScalar.ConvertToRgbInplace(values.Component1, maxValue); + GrayscaleScalar.ConvertToRgbInplace(values.Component2, maxValue); } - internal static void ConvertCoreInplaceFromRgb(ComponentValues values, Span r, Span g, Span b) + internal static void ConvertFromRgb(ComponentValues values, Span r, Span g, Span b) { r.CopyTo(values.Component0); g.CopyTo(values.Component1); diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbVector.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbVector.cs index f4c4fa379c..251e970154 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbVector.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbVector.cs @@ -17,7 +17,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } - protected override void ConvertCoreVectorizedInplaceToRgb(in ComponentValues values) + /// + protected override void ConvertToRgbInplaceVectorized(in ComponentValues values) { ref Vector rBase = ref Unsafe.As>(ref MemoryMarshal.GetReference(values.Component0)); @@ -40,18 +41,21 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - protected override void ConvertCoreInplaceToRgb(in ComponentValues values) - => RgbScalar.ConvertCoreInplaceToRgb(values, this.MaximumValue); + /// + protected override void ConvertToRgbInplaceScalarRemainder(in ComponentValues values) + => RgbScalar.ConvertToRgbInplace(values, this.MaximumValue); - protected override void ConvertCoreVectorizedInplaceFromRgb(in ComponentValues values, Span r, Span g, Span b) + /// + protected override void ConvertFromRgbVectorized(in ComponentValues values, Span r, Span g, Span b) { r.CopyTo(values.Component0); g.CopyTo(values.Component1); b.CopyTo(values.Component2); } - protected override void ConvertCoreInplaceFromRgb(in ComponentValues values, Span r, Span g, Span b) - => RgbScalar.ConvertCoreInplaceFromRgb(values, r, g, b); + /// + protected override void ConvertFromRgbScalarRemainder(in ComponentValues values, Span r, Span g, Span b) + => RgbScalar.ConvertFromRgb(values, r, g, b); } } } diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrAvx.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrAvx.cs index 46e9fd033e..517fbdbeb9 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrAvx.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrAvx.cs @@ -21,6 +21,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public override void ConvertToRgbInplace(in ComponentValues values) { ref Vector256 c0Base = @@ -70,7 +71,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - public override void ConvertFromRgbInplace(in ComponentValues values, Span rLane, Span gLane, Span bLane) + /// + public override void ConvertFromRgb(in ComponentValues values, Span rLane, Span gLane, Span bLane) { ref Vector256 destY = ref Unsafe.As>(ref MemoryMarshal.GetReference(values.Component0)); diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrScalar.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrScalar.cs index 418fa02073..0286df5813 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrScalar.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrScalar.cs @@ -20,13 +20,15 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public override void ConvertToRgbInplace(in ComponentValues values) - => ConvertCoreInplaceToRgb(values, this.MaximumValue, this.HalfValue); + => ConvertToRgbInplace(values, this.MaximumValue, this.HalfValue); - public override void ConvertFromRgbInplace(in ComponentValues values, Span r, Span g, Span b) - => ConvertCoreInplaceFromRgb(values, this.HalfValue, r, g, b); + /// + public override void ConvertFromRgb(in ComponentValues values, Span r, Span g, Span b) + => ConvertFromRgb(values, this.HalfValue, r, g, b); - public static void ConvertCoreInplaceToRgb(in ComponentValues values, float maxValue, float halfValue) + public static void ConvertToRgbInplace(in ComponentValues values, float maxValue, float halfValue) { Span c0 = values.Component0; Span c1 = values.Component1; @@ -49,7 +51,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - public static void ConvertCoreInplaceFromRgb(in ComponentValues values, float halfValue, Span rLane, Span gLane, Span bLane) + public static void ConvertFromRgb(in ComponentValues values, float halfValue, Span rLane, Span gLane, Span bLane) { Span y = values.Component0; Span cb = values.Component1; diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrVector.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrVector.cs index bf0aa4a341..e0c44a31e3 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrVector.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrVector.cs @@ -18,7 +18,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } - protected override void ConvertCoreVectorizedInplaceToRgb(in ComponentValues values) + /// + protected override void ConvertToRgbInplaceVectorized(in ComponentValues values) { ref Vector c0Base = ref Unsafe.As>(ref MemoryMarshal.GetReference(values.Component0)); @@ -68,10 +69,12 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - protected override void ConvertCoreInplaceToRgb(in ComponentValues values) - => YCbCrScalar.ConvertCoreInplaceToRgb(values, this.MaximumValue, this.HalfValue); + /// + protected override void ConvertToRgbInplaceScalarRemainder(in ComponentValues values) + => YCbCrScalar.ConvertToRgbInplace(values, this.MaximumValue, this.HalfValue); - protected override void ConvertCoreVectorizedInplaceFromRgb(in ComponentValues values, Span rLane, Span gLane, Span bLane) + /// + protected override void ConvertFromRgbVectorized(in ComponentValues values, Span rLane, Span gLane, Span bLane) { ref Vector destY = ref Unsafe.As>(ref MemoryMarshal.GetReference(values.Component0)); @@ -117,8 +120,9 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - protected override void ConvertCoreInplaceFromRgb(in ComponentValues values, Span r, Span g, Span b) - => YCbCrScalar.ConvertCoreInplaceFromRgb(values, this.HalfValue, r, g, b); + /// + protected override void ConvertFromRgbScalarRemainder(in ComponentValues values, Span r, Span g, Span b) + => YCbCrScalar.ConvertFromRgb(values, this.HalfValue, r, g, b); } } } diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKAvx.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKAvx.cs index b558f94cb9..1e641b0671 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKAvx.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKAvx.cs @@ -20,6 +20,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public override void ConvertToRgbInplace(in ComponentValues values) { ref Vector256 c0Base = @@ -78,10 +79,11 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - public override void ConvertFromRgbInplace(in ComponentValues values, Span rLane, Span gLane, Span bLane) + /// + public override void ConvertFromRgb(in ComponentValues values, Span rLane, Span gLane, Span bLane) { // rgb -> cmyk - CmykAvx.ConvertFromRgbInplace(in values, this.MaximumValue, rLane, gLane, bLane); + CmykAvx.ConvertFromRgb(in values, this.MaximumValue, rLane, gLane, bLane); // cmyk -> ycck ref Vector256 destY = diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKScalar.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKScalar.cs index 2868ffc993..3b40dff8af 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKScalar.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKScalar.cs @@ -20,11 +20,13 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public override void ConvertToRgbInplace(in ComponentValues values) => ConvertToRgpInplace(values, this.MaximumValue, this.HalfValue); - public override void ConvertFromRgbInplace(in ComponentValues values, Span r, Span g, Span b) - => ConvertCoreInplaceFromRgb(values, this.HalfValue, this.MaximumValue, r, g, b); + /// + public override void ConvertFromRgb(in ComponentValues values, Span r, Span g, Span b) + => ConvertFromRgb(values, this.HalfValue, this.MaximumValue, r, g, b); public static void ConvertToRgpInplace(in ComponentValues values, float maxValue, float halfValue) { @@ -51,10 +53,10 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - public static void ConvertCoreInplaceFromRgb(in ComponentValues values, float halfValue, float maxValue, Span rLane, Span gLane, Span bLane) + public static void ConvertFromRgb(in ComponentValues values, float halfValue, float maxValue, Span rLane, Span gLane, Span bLane) { // rgb -> cmyk - CmykScalar.ConvertFromRgbInplace(in values, maxValue, rLane, gLane, bLane); + CmykScalar.ConvertFromRgb(in values, maxValue, rLane, gLane, bLane); // cmyk -> ycck Span c = values.Component0; diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKVector.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKVector.cs index 1bae94c71c..1f5944bd8c 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKVector.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKVector.cs @@ -17,7 +17,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } - protected override void ConvertCoreVectorizedInplaceToRgb(in ComponentValues values) + /// + protected override void ConvertToRgbInplaceVectorized(in ComponentValues values) { ref Vector c0Base = ref Unsafe.As>(ref MemoryMarshal.GetReference(values.Component0)); @@ -69,10 +70,12 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - protected override void ConvertCoreInplaceToRgb(in ComponentValues values) => + /// + protected override void ConvertToRgbInplaceScalarRemainder(in ComponentValues values) => YccKScalar.ConvertToRgpInplace(values, this.MaximumValue, this.HalfValue); - protected override void ConvertCoreVectorizedInplaceFromRgb(in ComponentValues values, Span rLane, Span gLane, Span bLane) + /// + protected override void ConvertFromRgbVectorized(in ComponentValues values, Span rLane, Span gLane, Span bLane) { // rgb -> cmyk CmykVector.ConvertFromRgbInplaceVectorized(in values, this.MaximumValue, rLane, gLane, bLane); @@ -121,13 +124,14 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - protected override void ConvertCoreInplaceFromRgb(in ComponentValues values, Span r, Span g, Span b) + /// + protected override void ConvertFromRgbScalarRemainder(in ComponentValues values, Span r, Span g, Span b) { // rgb -> cmyk - CmykScalar.ConvertFromRgbInplace(in values, this.MaximumValue, r, g, b); + CmykScalar.ConvertFromRgb(in values, this.MaximumValue, r, g, b); // cmyk -> ycck - YccKScalar.ConvertCoreInplaceFromRgb(in values, this.HalfValue, this.MaximumValue, r, g, b); + YccKScalar.ConvertFromRgb(in values, this.HalfValue, this.MaximumValue, r, g, b); } } } diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterAvx.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterAvx.cs index 90e5df88f8..d7b619fca9 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterAvx.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterAvx.cs @@ -25,6 +25,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public override bool IsAvailable => Avx.IsSupported; } } diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterBase.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterBase.cs index 744c178e89..34b48c2fe6 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterBase.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterBase.cs @@ -79,7 +79,14 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components /// The input/ouptut as a stack-only struct public abstract void ConvertToRgbInplace(in ComponentValues values); - public abstract void ConvertFromRgbInplace(in ComponentValues values, Span r, Span g, Span b); + /// + /// Converts RGB lanes to jpeg component values. + /// + /// Jpeg component values. + /// Red colors lane. + /// Green colors lane. + /// Blue colors lane. + public abstract void ConvertFromRgb(in ComponentValues values, Span rLane, Span gLane, Span bLane); /// /// Returns the s for all supported colorspaces and precisions. diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterScalar.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterScalar.cs index 44046f8e85..d962f434f0 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterScalar.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterScalar.cs @@ -16,6 +16,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public override bool IsAvailable => true; } } diff --git a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterVector.cs b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterVector.cs index b5460d31aa..3c8b16943b 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterVector.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterVector.cs @@ -26,9 +26,11 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components { } + /// public sealed override bool IsAvailable => Vector.IsHardwareAccelerated && Vector.Count % 4 == 0; - public override void ConvertToRgbInplace(in ComponentValues values) + /// + public sealed override void ConvertToRgbInplace(in ComponentValues values) { DebugGuard.IsTrue(this.IsAvailable, $"{this.GetType().Name} converter is not supported on current hardware."); @@ -38,7 +40,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components int simdCount = length - remainder; if (simdCount > 0) { - this.ConvertCoreVectorizedInplaceToRgb(values.Slice(0, simdCount)); + this.ConvertToRgbInplaceVectorized(values.Slice(0, simdCount)); } // Jpeg images width is always divisible by 8 without a remainder @@ -48,11 +50,12 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components // remainder pixels if (remainder > 0) { - this.ConvertCoreInplaceToRgb(values.Slice(simdCount, remainder)); + this.ConvertToRgbInplaceScalarRemainder(values.Slice(simdCount, remainder)); } } - public override void ConvertFromRgbInplace(in ComponentValues values, Span r, Span g, Span b) + /// + public sealed override void ConvertFromRgb(in ComponentValues values, Span r, Span g, Span b) { DebugGuard.IsTrue(this.IsAvailable, $"{this.GetType().Name} converter is not supported on current hardware."); @@ -62,7 +65,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components int simdCount = length - remainder; if (simdCount > 0) { - this.ConvertCoreVectorizedInplaceFromRgb( + this.ConvertFromRgbVectorized( values.Slice(0, simdCount), r.Slice(0, simdCount), g.Slice(0, simdCount), @@ -76,7 +79,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components // remainder pixels if (remainder > 0) { - this.ConvertCoreInplaceFromRgb( + this.ConvertFromRgbScalarRemainder( values.Slice(simdCount, remainder), r.Slice(simdCount, remainder), g.Slice(simdCount, remainder), @@ -84,13 +87,38 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - protected abstract void ConvertCoreVectorizedInplaceToRgb(in ComponentValues values); + /// + /// Converts planar jpeg component values in + /// to RGB color space inplace using API. + /// + /// The input/ouptut as a stack-only struct + protected abstract void ConvertToRgbInplaceVectorized(in ComponentValues values); - protected abstract void ConvertCoreInplaceToRgb(in ComponentValues values); + /// + /// Converts remainder of the planar jpeg component values after + /// conversion in . + /// + /// The input/ouptut as a stack-only struct + protected abstract void ConvertToRgbInplaceScalarRemainder(in ComponentValues values); - protected abstract void ConvertCoreVectorizedInplaceFromRgb(in ComponentValues values, Span r, Span g, Span b); + /// + /// Converts RGB lanes to jpeg component values using API. + /// + /// Jpeg component values. + /// Red colors lane. + /// Green colors lane. + /// Blue colors lane. + protected abstract void ConvertFromRgbVectorized(in ComponentValues values, Span rLane, Span gLane, Span bLane); - protected abstract void ConvertCoreInplaceFromRgb(in ComponentValues values, Span r, Span g, Span b); + /// + /// Converts remainder of RGB lanes to jpeg component values after + /// conversion in . + /// + /// Jpeg component values. + /// Red colors lane. + /// Green colors lane. + /// Blue colors lane. + protected abstract void ConvertFromRgbScalarRemainder(in ComponentValues values, Span rLane, Span gLane, Span bLane); } } } diff --git a/src/ImageSharp/Formats/Jpeg/Components/Encoder/SpectralConverter{TPixel}.cs b/src/ImageSharp/Formats/Jpeg/Components/Encoder/SpectralConverter{TPixel}.cs index 18c0e63cfc..44271248f5 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Encoder/SpectralConverter{TPixel}.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Encoder/SpectralConverter{TPixel}.cs @@ -112,7 +112,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Encoder // Convert from rgb24 to target pixel type var values = new JpegColorConverterBase.ComponentValues(this.componentProcessors, y); - this.colorConverter.ConvertFromRgbInplace(values, rLane, gLane, bLane); + this.colorConverter.ConvertFromRgb(values, rLane, gLane, bLane); } // Convert pixels to spectral