From bc6178167f92d8c77df8c70901b3cd5529542944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnther=20Foidl?= Date: Mon, 13 Mar 2023 21:03:24 +0100 Subject: [PATCH] Fixed bugs --- .../Decoder/ArithmeticScanDecoder.cs | 18 +++++++----------- src/ImageSharp/Primitives/Rectangle.cs | 2 +- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/ArithmeticScanDecoder.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/ArithmeticScanDecoder.cs index 423e56378a..73de430730 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/ArithmeticScanDecoder.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/ArithmeticScanDecoder.cs @@ -53,6 +53,8 @@ internal class ArithmeticScanDecoder : IJpegScanDecoder private ArithmeticDecodingTable[] acDecodingTables; + private static readonly byte[] FixedBin = { 113, 0, 0, 0 }; + private readonly CancellationToken cancellationToken; private static readonly int[] ArithmeticTable = @@ -229,13 +231,7 @@ internal class ArithmeticScanDecoder : IJpegScanDecoder } } - private static ref byte GetFixedBinReference() - { - // This uses C#'s optimization to refer to the static data segment of the assembly. - // No allocation occurs. - ReadOnlySpan fixedBin = new byte[] { 113, 0, 0, 0 }; - return ref MemoryMarshal.GetReference(fixedBin); - } + private static ref byte GetFixedBinReference() => ref MemoryMarshal.GetArrayDataReference(FixedBin); /// /// Decodes the entropy coded data. @@ -765,7 +761,7 @@ internal class ArithmeticScanDecoder : IJpegScanDecoder } } - v += 1; + v++; if (sign != 0) { v = -v; @@ -860,7 +856,7 @@ internal class ArithmeticScanDecoder : IJpegScanDecoder } } - v += 1; + v++; if (sign != 0) { v = -v; @@ -1016,7 +1012,7 @@ internal class ArithmeticScanDecoder : IJpegScanDecoder } } - v += 1; + v++; if (sign != 0) { v = -v; @@ -1086,7 +1082,7 @@ internal class ArithmeticScanDecoder : IJpegScanDecoder } } - v += 1; + v++; if (sign != 0) { v = -v; diff --git a/src/ImageSharp/Primitives/Rectangle.cs b/src/ImageSharp/Primitives/Rectangle.cs index 2f0df3574e..e2ae5071ef 100644 --- a/src/ImageSharp/Primitives/Rectangle.cs +++ b/src/ImageSharp/Primitives/Rectangle.cs @@ -195,7 +195,7 @@ public struct Rectangle : IEquatable /// The rectangle. /// The . [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Point Center(Rectangle rectangle) => new(rectangle.Left + (rectangle.Width & 1), rectangle.Top + (rectangle.Height & 1)); // & 1 is bit-hack for / 2 + public static Point Center(Rectangle rectangle) => new(rectangle.Left + (rectangle.Width >> 1), rectangle.Top + (rectangle.Height >> 1)); // >> 1 is bit-hack for / 2 /// /// Creates a rectangle that represents the intersection between and