diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanScanBuffer.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanScanBuffer.cs
index cabd26dc64..a2b784c479 100644
--- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanScanBuffer.cs
+++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanScanBuffer.cs
@@ -51,7 +51,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
[MethodImpl(InliningOptions.ShortMethod)]
public void CheckBits()
{
- if (this.remainingBits < 16)
+ if (this.remainingBits < JpegConstants.Huffman.MinBits)
{
this.FillBuffer();
}
@@ -85,8 +85,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
{
// Attempt to load at least the minimum number of required bits into the buffer.
// We fail to do so only if we hit a marker or reach the end of the input stream.
- this.remainingBits += JpegConstants.Huffman.MinBits;
- this.data = (this.data << JpegConstants.Huffman.MinBits) | this.GetBytes();
+ this.remainingBits += JpegConstants.Huffman.FetchBits;
+ this.data = (this.data << JpegConstants.Huffman.FetchBits) | this.GetBytes();
}
[MethodImpl(InliningOptions.ShortMethod)]
diff --git a/src/ImageSharp/Formats/Jpeg/JpegConstants.cs b/src/ImageSharp/Formats/Jpeg/JpegConstants.cs
index 53f185f01e..6268f00db4 100644
--- a/src/ImageSharp/Formats/Jpeg/JpegConstants.cs
+++ b/src/ImageSharp/Formats/Jpeg/JpegConstants.cs
@@ -251,9 +251,14 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
public const int RegisterSize = 64;
///
- /// The minimum number of bits required by the .
+ /// The number of bits to fetch when filling the buffer.
///
- public const int MinBits = 48;
+ public const int FetchBits = 48;
+
+ ///
+ /// The minimum number of bits allowed before by the before fetching.
+ ///
+ public const int MinBits = RegisterSize - FetchBits;
///
/// If the next Huffman code is no more than this number of bits, we can obtain its length