diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/CcittReferenceScanline.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/CcittReferenceScanline.cs
index 0aec2361c..5b0c64cf1 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/CcittReferenceScanline.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/CcittReferenceScanline.cs
@@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0.
using System;
+using System.Runtime.CompilerServices;
namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
{
@@ -130,6 +131,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
return index + offset;
}
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
private int FindB2ForImaginaryWhiteLine() => this.width;
private int FindB2ForNormalLine(int b1)
diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs
index f8333cf33..e9921418d 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs
@@ -19,6 +19,8 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
private readonly int width;
+ private readonly byte white;
+
///
/// Initializes a new instance of the class.
///
@@ -38,6 +40,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
this.FillOrder = fillOrder;
this.width = width;
this.isWhiteZero = photometricInterpretation == TiffPhotometricInterpretation.WhiteIsZero;
+ this.white = (byte)(this.isWhiteZero ? 0 : 255);
}
///
@@ -72,12 +75,11 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors
private uint WriteScanLine(Span buffer, Span scanLine, uint bitsWritten)
{
- byte white = (byte)(this.isWhiteZero ? 0 : 255);
int bitPos = (int)(bitsWritten % 8);
int bufferPos = (int)(bitsWritten / 8);
- for (int i = 0; i < scanLine.Length; i++)
+ for (nint i = 0; i < scanLine.Length; i++)
{
- if (Unsafe.Add(ref MemoryMarshal.GetReference(scanLine), i) != white)
+ if (Unsafe.Add(ref MemoryMarshal.GetReference(scanLine), i) != this.white)
{
BitWriterUtils.WriteBit(buffer, bufferPos, bitPos);
}