Browse Source

Update JpegEncoderCore.cs

pull/1734/head
James Jackson-South 5 years ago
parent
commit
f25ce22ed8
  1. 28
      src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs

28
src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs

@ -167,14 +167,10 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
/// <param name="colorType">The color type.</param> /// <param name="colorType">The color type.</param>
/// <returns>true, if color type is supported.</returns> /// <returns>true, if color type is supported.</returns>
private static bool IsSupportedColorType(JpegColorType? colorType) private static bool IsSupportedColorType(JpegColorType? colorType)
{ => colorType == JpegColorType.YCbCrRatio444
if (colorType == JpegColorType.YCbCrRatio444 || colorType == JpegColorType.YCbCrRatio420 || colorType == JpegColorType.Luminance || colorType == JpegColorType.Rgb) || colorType == JpegColorType.YCbCrRatio420
{ || colorType == JpegColorType.Luminance
return true; || colorType == JpegColorType.Rgb;
}
return false;
}
/// <summary> /// <summary>
/// Gets the component ids. /// Gets the component ids.
@ -571,14 +567,14 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
// This uses a C#'s compiler optimization that refers to the static data segment of the assembly, // This uses a C#'s compiler optimization that refers to the static data segment of the assembly,
// and doesn't incur any allocation at all. // and doesn't incur any allocation at all.
// "default" to 4:2:0 // "default" to 4:2:0
ReadOnlySpan<byte> subsamples = new byte[] ReadOnlySpan<byte> subsamples = stackalloc byte[]
{ {
0x22, 0x22,
0x11, 0x11,
0x11 0x11
}; };
ReadOnlySpan<byte> chroma = new byte[] ReadOnlySpan<byte> chroma = stackalloc byte[]
{ {
0x00, 0x00,
0x01, 0x01,
@ -587,7 +583,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
if (this.colorType == JpegColorType.Luminance) if (this.colorType == JpegColorType.Luminance)
{ {
subsamples = new byte[] subsamples = stackalloc byte[]
{ {
0x11, 0x11,
0x00, 0x00,
@ -600,7 +596,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
{ {
case JpegColorType.YCbCrRatio444: case JpegColorType.YCbCrRatio444:
case JpegColorType.Rgb: case JpegColorType.Rgb:
subsamples = new byte[] subsamples = stackalloc byte[]
{ {
0x11, 0x11,
0x11, 0x11,
@ -609,7 +605,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
if (this.colorType == JpegColorType.Rgb) if (this.colorType == JpegColorType.Rgb)
{ {
chroma = new byte[] chroma = stackalloc byte[]
{ {
0x00, 0x00,
0x00, 0x00,
@ -619,7 +615,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
break; break;
case JpegColorType.YCbCrRatio420: case JpegColorType.YCbCrRatio420:
subsamples = new byte[] subsamples = stackalloc byte[]
{ {
0x22, 0x22,
0x11, 0x11,
@ -662,7 +658,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
{ {
// This uses a C#'s compiler optimization that refers to the static data segment of the assembly, // This uses a C#'s compiler optimization that refers to the static data segment of the assembly,
// and doesn't incur any allocation at all. // and doesn't incur any allocation at all.
ReadOnlySpan<byte> huffmanId = new byte[] ReadOnlySpan<byte> huffmanId = stackalloc byte[]
{ {
0x00, 0x00,
0x11, 0x11,
@ -672,7 +668,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
// Use the same DC/AC tables for all channels for RGB. // Use the same DC/AC tables for all channels for RGB.
if (this.colorType == JpegColorType.Rgb) if (this.colorType == JpegColorType.Rgb)
{ {
huffmanId = new byte[] huffmanId = stackalloc byte[]
{ {
0x00, 0x00,
0x00, 0x00,

Loading…
Cancel
Save