Browse Source

Use buffer

pull/298/head
James Jackson-South 9 years ago
parent
commit
f63f85aaef
  1. 15
      src/ImageSharp/Formats/Jpeg/Port/JpegDecoderCore.cs

15
src/ImageSharp/Formats/Jpeg/Port/JpegDecoderCore.cs

@ -362,26 +362,17 @@ namespace ImageSharp.Formats.Jpeg.Port
codeLengthSum += codeLengths[j] = huffmanData[o++];
}
// TODO: Pooling?
short[] huffmanValues = new short[codeLengthSum];
byte[] values = null;
try
using (var values = new Buffer<byte>(256))
{
values = ArrayPool<byte>.Shared.Rent(256);
this.InputStream.Read(values, 0, codeLengthSum);
this.InputStream.Read(values.Array, 0, codeLengthSum);
for (int j = 0; j < codeLengthSum; j++)
{
huffmanValues[j] = values[o++];
}
}
finally
{
if (values != null)
{
ArrayPool<byte>.Shared.Return(values);
}
}
i += 17 + codeLengthSum;

Loading…
Cancel
Save