Browse Source

Restart interval is now handled by scan decoder

pull/1702/head
Dmitry Pentin 5 years ago
parent
commit
d9745e4d3b
  1. 8
      src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanScanDecoder.cs
  2. 10
      src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs

8
src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanScanDecoder.cs

@ -22,7 +22,9 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
private JpegFrame frame;
private JpegComponent[] components;
// The restart interval.
/// <summary>
/// The reset interval determined by RST markers.
/// </summary>
private int restartInterval;
// How many mcu's are left to do.
@ -72,7 +74,9 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
this.acHuffmanTables = new HuffmanTable[maxTables];
}
// Reset interval
/// <summary>
/// Sets reset interval determined by RST markers.
/// </summary>
public int ResetInterval
{
set

10
src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs

@ -42,11 +42,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
/// </summary>
private readonly byte[] markerBuffer = new byte[2];
/// <summary>
/// The reset interval determined by RST markers.
/// </summary>
private ushort resetInterval;
/// <summary>
/// Whether the image has an EXIF marker.
/// </summary>
@ -1001,7 +996,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
JpegThrowHelper.ThrowBadMarker(nameof(JpegConstants.Markers.DRI), remaining);
}
this.resetInterval = this.ReadUint16(stream);
this.scanDecoder.ResetInterval = this.ReadUint16(stream);
}
/// <summary>
@ -1052,9 +1047,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
// All the comments below are for separate refactoring PR
// Main reason it's not fixed here is to make this commit less intrusive
// This can be injectd in DRI marker callback
this.scanDecoder.ResetInterval = this.resetInterval;
// This can be passed as ParseEntropyCodedData() parameter as it is used only there
this.scanDecoder.ComponentsLength = selectorsCount;

Loading…
Cancel
Save