Browse Source

Injected huffman tables

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

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

@ -16,10 +16,12 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
/// </summary>
internal class HuffmanScanDecoder
{
private readonly HuffmanTable[] dcHuffmanTables;
private readonly HuffmanTable[] acHuffmanTables;
private readonly BufferedReadStream stream;
// huffman tables
public HuffmanTable[] dcHuffmanTables;
public HuffmanTable[] acHuffmanTables;
// Frame related
private JpegFrame frame;
private JpegComponent[] components;
@ -88,15 +90,11 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
/// <param name="cancellationToken">The token to monitor cancellation.</param>
public HuffmanScanDecoder(
BufferedReadStream stream,
HuffmanTable[] dcHuffmanTables,
HuffmanTable[] acHuffmanTables,
CancellationToken cancellationToken)
{
this.dctZigZag = ZigZag.CreateUnzigTable();
this.stream = stream;
this.scanBuffer = new HuffmanScanBuffer(stream);
this.dcHuffmanTables = dcHuffmanTables;
this.acHuffmanTables = acHuffmanTables;
this.cancellationToken = cancellationToken;
}

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

@ -1051,12 +1051,13 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
var sd = new HuffmanScanDecoder(
stream,
this.dcHuffmanTables,
this.acHuffmanTables,
cancellationToken)
{
Frame = this.Frame,
dcHuffmanTables = this.dcHuffmanTables,
acHuffmanTables = this.acHuffmanTables,
ResetInterval = this.resetInterval,
componentsLength = selectorsCount,

Loading…
Cancel
Save