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++]; codeLengthSum += codeLengths[j] = huffmanData[o++];
} }
// TODO: Pooling?
short[] huffmanValues = new short[codeLengthSum]; short[] huffmanValues = new short[codeLengthSum];
using (var values = new Buffer<byte>(256))
byte[] values = null;
try
{ {
values = ArrayPool<byte>.Shared.Rent(256); this.InputStream.Read(values.Array, 0, codeLengthSum);
this.InputStream.Read(values, 0, codeLengthSum);
for (int j = 0; j < codeLengthSum; j++) for (int j = 0; j < codeLengthSum; j++)
{ {
huffmanValues[j] = values[o++]; huffmanValues[j] = values[o++];
} }
} }
finally
{
if (values != null)
{
ArrayPool<byte>.Shared.Return(values);
}
}
i += 17 + codeLengthSum; i += 17 + codeLengthSum;

Loading…
Cancel
Save