From 24f2e1a68991c8c92d4fee987526eb3e21e1defc Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 4 Oct 2018 20:46:08 +0100 Subject: [PATCH 1/5] Decode components in correct order + cleanup + optimizations. --- .../ColorSpaceGenerator.csproj | 1 + .../Jpeg/Components/Decoder/FastACTables.cs | 27 ++++++---------- .../Jpeg/Components/Decoder/HuffmanTable.cs | 3 +- .../Jpeg/Components/Decoder/JpegFrame.cs | 6 ++++ .../Jpeg/Components/Decoder/ScanDecoder.cs | 30 ++++++++---------- .../Formats/Jpeg/JpegDecoderCore.cs | 14 ++++---- .../Formats/Jpg/JpegDecoderTests.Images.cs | 3 ++ tests/ImageSharp.Tests/TestImages.cs | 3 ++ tests/Images/External | 2 +- ...e723-Ordered-Interleaved-Progressive-A.jpg | Bin 0 -> 42798 bytes ...e723-Ordered-Interleaved-Progressive-B.jpg | Bin 0 -> 36937 bytes ...e723-Ordered-Interleaved-Progressive-C.jpg | Bin 0 -> 46799 bytes 12 files changed, 46 insertions(+), 43 deletions(-) create mode 100644 ColorSpaceGenerator/ColorSpaceGenerator.csproj create mode 100644 tests/Images/Input/Jpg/issues/Issue723-Ordered-Interleaved-Progressive-A.jpg create mode 100644 tests/Images/Input/Jpg/issues/Issue723-Ordered-Interleaved-Progressive-B.jpg create mode 100644 tests/Images/Input/Jpg/issues/Issue723-Ordered-Interleaved-Progressive-C.jpg diff --git a/ColorSpaceGenerator/ColorSpaceGenerator.csproj b/ColorSpaceGenerator/ColorSpaceGenerator.csproj new file mode 100644 index 0000000000..7727272f8f --- /dev/null +++ b/ColorSpaceGenerator/ColorSpaceGenerator.csproj @@ -0,0 +1 @@ + diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FastACTables.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/FastACTables.cs index 26bcde8e51..a7ec93eaf7 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FastACTables.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/FastACTables.cs @@ -20,29 +20,22 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder /// Initializes a new instance of the class. /// /// The memory allocator used to allocate memory for image processing operations. - public FastACTables(MemoryAllocator memoryAllocator) - { - this.tables = memoryAllocator.Allocate2D(512, 4, AllocationOptions.Clean); - } + public FastACTables(MemoryAllocator memoryAllocator) => this.tables = memoryAllocator.Allocate2D(512, 4, AllocationOptions.Clean); /// /// Gets the representing the table at the index in the collection. /// /// The table index. /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public ReadOnlySpan GetTableSpan(int index) - { - return this.tables.GetRowSpan(index); - } + [MethodImpl(InliningOptions.ShortMethod)] + public ReadOnlySpan GetTableSpan(int index) => this.tables.GetRowSpan(index); /// - /// Gets a reference to the first element of the AC table indexed by /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public ref short GetAcTableReference(JpegComponent component) - { - return ref this.tables.GetRowSpan(component.ACHuffmanTableId)[0]; - } + /// Gets a reference to the first element of the AC table indexed by + /// + /// The frame component. + [MethodImpl(InliningOptions.ShortMethod)] + public ref short GetAcTableReference(JpegComponent component) => ref this.tables.GetRowSpan(component.ACHuffmanTableId)[0]; /// /// Builds a lookup table for fast AC entropy scan decoding. @@ -67,7 +60,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder int magbits = rs & 15; int len = huffman.Sizes[fast]; - if (magbits > 0 && len + magbits <= FastBits) + if (magbits != 0 && len + magbits <= FastBits) { // Magnitude code followed by receive_extend code int k = ((i << len) & ((1 << FastBits) - 1)) >> (FastBits - magbits); @@ -80,7 +73,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder // if the result is small enough, we can fit it in fastAC table if (k >= -128 && k <= 127) { - fastAC[i] = (short)((k * 256) + (run * 16) + (len + magbits)); + fastAC[i] = (short)((k << 8) + (run << 4) + (len + magbits)); } } } diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs index 0138164ed2..a6bf1bd953 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs @@ -64,8 +64,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder byte l = count[i]; for (short j = 0; j < l; j++) { - sizesRef[x] = i; - x++; + sizesRef[x++] = i; } } diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegFrame.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegFrame.cs index da089fa44a..36a3dc2d26 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegFrame.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegFrame.cs @@ -45,6 +45,12 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder /// public byte[] ComponentIds { get; set; } + /// + /// Gets or sets the order in which to process the components + /// in interleaved mode. + /// + public byte[] ComponentOrder { get; set; } + /// /// Gets or sets the frame component collection /// diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/ScanDecoder.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/ScanDecoder.cs index 8c525335bc..6741ccdac2 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/ScanDecoder.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/ScanDecoder.cs @@ -34,9 +34,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder // The restart interval. private readonly int restartInterval; - // The current component index. - private readonly int componentIndex; - // The number of interleaved components. private readonly int componentsLength; @@ -87,7 +84,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder /// The DC Huffman tables. /// The AC Huffman tables. /// The fast AC decoding tables. - /// The component index within the array. /// The length of the components. Different to the array length. /// The reset interval. /// The spectral selection start. @@ -100,7 +96,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder HuffmanTables dcHuffmanTables, HuffmanTables acHuffmanTables, FastACTables fastACTables, - int componentIndex, int componentsLength, int restartInterval, int spectralStart, @@ -117,7 +112,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder this.components = frame.Components; this.marker = JpegConstants.Markers.XFF; this.markerPosition = 0; - this.componentIndex = componentIndex; this.componentsLength = componentsLength; this.restartInterval = restartInterval; this.spectralStart = spectralStart; @@ -176,7 +170,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder // Scan an interleaved mcu... process components in order for (int k = 0; k < this.componentsLength; k++) { - JpegComponent component = this.components[k]; + int order = this.frame.ComponentOrder[k]; + JpegComponent component = this.components[order]; ref HuffmanTable dcHuffmanTable = ref this.dcHuffmanTables[component.DCHuffmanTableId]; ref HuffmanTable acHuffmanTable = ref this.acHuffmanTables[component.ACHuffmanTableId]; @@ -223,14 +218,13 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder } /// - /// Non-interleaved data, we just need to process one block at a ti - /// in trivial scanline order - /// number of blocks to do just depends on how many actual "pixels" - /// component has, independent of interleaved MCU blocking and such + /// Non-interleaved data, we just need to process one block at a time in trivial scanline order + /// number of blocks to do just depends on how many actual "pixels" each component has, + /// independent of interleaved MCU blocking and such. /// private void ParseBaselineDataNonInterleaved() { - JpegComponent component = this.components[this.componentIndex]; + JpegComponent component = this.components[this.frame.ComponentOrder[0]]; int w = component.WidthInBlocks; int h = component.HeightInBlocks; @@ -295,7 +289,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder // Scan an interleaved mcu... process components in order for (int k = 0; k < this.componentsLength; k++) { - JpegComponent component = this.components[k]; + int order = this.frame.ComponentOrder[k]; + JpegComponent component = this.components[order]; ref HuffmanTable dcHuffmanTable = ref this.dcHuffmanTables[component.DCHuffmanTableId]; int h = component.HorizontalSamplingFactor; int v = component.VerticalSamplingFactor; @@ -344,7 +339,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder /// private void ParseProgressiveDataNonInterleaved() { - JpegComponent component = this.components[this.componentIndex]; + JpegComponent component = this.components[this.frame.ComponentOrder[0]]; int w = component.WidthInBlocks; int h = component.HeightInBlocks; @@ -729,8 +724,9 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder } uint k = LRot(this.codeBuffer, n); - this.codeBuffer = k & ~Bmask[n]; - k &= Bmask[n]; + uint mask = Bmask[n]; + this.codeBuffer = k & ~mask; + k &= mask; this.codeBits -= n; return (int)k; } @@ -839,7 +835,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder // that way we don't need to shift inside the loop. uint temp = this.codeBuffer >> 16; int k; - for (k = FastBits + 1; ; k++) + for (k = FastBits + 1; ; ++k) { if (temp < table.MaxCode[k]) { diff --git a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs index e3b0b4bdc6..22d9cbdee4 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs @@ -747,11 +747,12 @@ namespace SixLabors.ImageSharp.Formats.Jpeg if (!metadataOnly) { // No need to pool this. They max out at 4 - this.Frame.ComponentIds = new byte[this.Frame.ComponentCount]; - this.Frame.Components = new JpegComponent[this.Frame.ComponentCount]; + this.Frame.ComponentIds = new byte[this.ComponentCount]; + this.Frame.ComponentOrder = new byte[this.ComponentCount]; + this.Frame.Components = new JpegComponent[this.ComponentCount]; this.ColorSpace = this.DeduceJpegColorSpace(); - for (int i = 0; i < this.Frame.ComponentCount; i++) + for (int i = 0; i < this.ComponentCount; i++) { byte hv = this.temp[index + 1]; int h = hv >> 4; @@ -823,10 +824,10 @@ namespace SixLabors.ImageSharp.Formats.Jpeg codeLengths.GetSpan(), huffmanValues.GetSpan()); - if (huffmanTableSpec >> 4 != 0) + if (tableType != 0) { // Build a table that decodes both magnitude and value of small ACs in one go. - this.fastACTables.BuildACTableLut(huffmanTableSpec & 15, this.acHuffmanTables); + this.fastACTables.BuildACTableLut(tableIndex, this.acHuffmanTables); } } } @@ -867,6 +868,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg if (selector == id) { componentIndex = j; + break; } } @@ -879,6 +881,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg int tableSpec = this.InputStream.ReadByte(); component.DCHuffmanTableId = tableSpec >> 4; component.ACHuffmanTableId = tableSpec & 15; + this.Frame.ComponentOrder[i] = (byte)componentIndex; } this.InputStream.Read(this.temp, 0, 3); @@ -893,7 +896,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg this.dcHuffmanTables, this.acHuffmanTables, this.fastACTables, - componentIndex, selectorsCount, this.resetInterval, spectralStart, diff --git a/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Images.cs b/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Images.cs index 2f041e3ab4..6bc559978c 100644 --- a/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Images.cs +++ b/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Images.cs @@ -44,6 +44,9 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg TestImages.Jpeg.Issues.BadRstProgressive518, TestImages.Jpeg.Issues.MissingFF00ProgressiveBedroom159, TestImages.Jpeg.Issues.DhtHasWrongLength624, + TestImages.Jpeg.Issues.OrderedInterleavedProgressive723A, + TestImages.Jpeg.Issues.OrderedInterleavedProgressive723B, + TestImages.Jpeg.Issues.OrderedInterleavedProgressive723C }; /// diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index 309fb1d4ab..fdf586c430 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -156,6 +156,9 @@ namespace SixLabors.ImageSharp.Tests public const string InvalidEOI695 = "Jpg/issues/Issue695-Invalid-EOI.jpg"; public const string ExifResizeOutOfRange696 = "Jpg/issues/Issue696-Resize-Exif-OutOfRange.jpg"; public const string InvalidAPP0721 = "Jpg/issues/Issue721-InvalidAPP0.jpg"; + public const string OrderedInterleavedProgressive723A = "Jpg/issues/Issue723-Ordered-Interleaved-Progressive-A.jpg"; + public const string OrderedInterleavedProgressive723B = "Jpg/issues/Issue723-Ordered-Interleaved-Progressive-B.jpg"; + public const string OrderedInterleavedProgressive723C = "Jpg/issues/Issue723-Ordered-Interleaved-Progressive-C.jpg"; } public static readonly string[] All = Baseline.All.Concat(Progressive.All).ToArray(); diff --git a/tests/Images/External b/tests/Images/External index 5f3cbd839f..c0627f384c 160000 --- a/tests/Images/External +++ b/tests/Images/External @@ -1 +1 @@ -Subproject commit 5f3cbd839fbbffae615d294d1dabafdcabc64cf9 +Subproject commit c0627f384c1d3d2f8d914c9578ae31354c35fd2c diff --git a/tests/Images/Input/Jpg/issues/Issue723-Ordered-Interleaved-Progressive-A.jpg b/tests/Images/Input/Jpg/issues/Issue723-Ordered-Interleaved-Progressive-A.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a11065ce9518e64ba026484e37db6ed8fbdc2a9 GIT binary patch literal 42798 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�ZR-qL|*^ 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 literal 0 HcmV?d00001 diff --git a/tests/Images/Input/Jpg/issues/Issue723-Ordered-Interleaved-Progressive-B.jpg b/tests/Images/Input/Jpg/issues/Issue723-Ordered-Interleaved-Progressive-B.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb52570e1c02a6519c7240efa30bdb55eab1c32e GIT binary patch literal 36937 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 &CAy9^I=!+U4%+B5%Cz92ls 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 m_Y7NT;k^)>6=fz?;%urin!cPO@SY)$% Date: Fri, 5 Oct 2018 10:11:05 +0100 Subject: [PATCH 2/5] Clean up Huffman table code. --- .../Jpeg/Components/Decoder/FastACTables.cs | 8 +- .../Jpeg/Components/Decoder/HuffmanTable.cs | 104 ++++++++---------- 2 files changed, 52 insertions(+), 60 deletions(-) diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FastACTables.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/FastACTables.cs index a7ec93eaf7..bfae7fd756 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FastACTables.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/FastACTables.cs @@ -46,19 +46,19 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder { const int FastBits = ScanDecoder.FastBits; Span fastAC = this.tables.GetRowSpan(index); - ref HuffmanTable huffman = ref acHuffmanTables[index]; + ref HuffmanTable huffmanTable = ref acHuffmanTables[index]; int i; for (i = 0; i < (1 << FastBits); i++) { - byte fast = huffman.Lookahead[i]; + byte fast = huffmanTable.Lookahead[i]; fastAC[i] = 0; if (fast < byte.MaxValue) { - int rs = huffman.Values[fast]; + int rs = huffmanTable.Values[fast]; int run = (rs >> 4) & 15; int magbits = rs & 15; - int len = huffman.Sizes[fast]; + int len = huffmanTable.Sizes[fast]; if (magbits != 0 && len + magbits <= FastBits) { diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs index a6bf1bd953..ffc4ce9829 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs @@ -46,87 +46,79 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder /// Initializes a new instance of the struct. /// /// The to use for buffer allocations. - /// The code lengths + /// The code lengths /// The huffman values - public HuffmanTable(MemoryAllocator memoryAllocator, ReadOnlySpan count, ReadOnlySpan values) + public HuffmanTable(MemoryAllocator memoryAllocator, ReadOnlySpan codeLengths, ReadOnlySpan values) { const int Length = 257; using (IMemoryOwner huffcode = memoryAllocator.Allocate(Length)) { ref short huffcodeRef = ref MemoryMarshal.GetReference(huffcode.GetSpan()); + ref byte codeLengthsRef = ref MemoryMarshal.GetReference(codeLengths); // Figure C.1: make table of Huffman code length for each symbol - fixed (short* sizesRef = this.Sizes.Data) + ref short sizesRef = ref this.Sizes.Data[0]; + short x = 0; + + for (short i = 1; i < 17; i++) { - short x = 0; - for (short i = 1; i < 17; i++) + byte length = Unsafe.Add(ref codeLengthsRef, i); + for (short j = 0; j < length; j++) { - byte l = count[i]; - for (short j = 0; j < l; j++) - { - sizesRef[x++] = i; - } + Unsafe.Add(ref sizesRef, x++) = i; } + } - sizesRef[x] = 0; + Unsafe.Add(ref sizesRef, x) = 0; - // Figure C.2: generate the codes themselves - int k = 0; - fixed (int* valOffsetRef = this.ValOffset.Data) - fixed (uint* maxcodeRef = this.MaxCode.Data) + // Figure C.2: generate the codes themselves + int si = 0; + ref int valOffsetRef = ref this.ValOffset.Data[0]; + ref uint maxcodeRef = ref this.MaxCode.Data[0]; + + uint code = 0; + int k; + for (k = 1; k < 17; k++) + { + // Compute delta to add to code to compute symbol id. + Unsafe.Add(ref valOffsetRef, k) = (int)(si - code); + if (Unsafe.Add(ref sizesRef, si) == k) { - uint code = 0; - int j; - for (j = 1; j < 17; j++) + while (Unsafe.Add(ref sizesRef, si) == k) { - // Compute delta to add to code to compute symbol id. - valOffsetRef[j] = (int)(k - code); - if (sizesRef[k] == j) - { - while (sizesRef[k] == j) - { - Unsafe.Add(ref huffcodeRef, k++) = (short)code++; - } - } - - // Figure F.15: generate decoding tables for bit-sequential decoding. - // Compute largest code + 1 for this size. preshifted as need later. - maxcodeRef[j] = code << (16 - j); - code <<= 1; + Unsafe.Add(ref huffcodeRef, si++) = (short)code++; } - - maxcodeRef[j] = 0xFFFFFFFF; } - // Generate non-spec lookup tables to speed up decoding. - fixed (byte* lookaheadRef = this.Lookahead.Data) - { - const int FastBits = ScanDecoder.FastBits; - var fast = new Span(lookaheadRef, 1 << FastBits); - fast.Fill(0xFF); // Flag for non-accelerated + // Figure F.15: generate decoding tables for bit-sequential decoding. + // Compute largest code + 1 for this size. preshifted as we need later. + Unsafe.Add(ref maxcodeRef, k) = code << (16 - k); + code <<= 1; + } + + Unsafe.Add(ref maxcodeRef, k) = 0xFFFFFFFF; - for (int i = 0; i < k; i++) + // Generate non-spec lookup tables to speed up decoding. + const int FastBits = ScanDecoder.FastBits; + ref byte fastRef = ref this.Lookahead.Data[0]; + new Span(Unsafe.AsPointer(ref fastRef), 1 << FastBits).Fill(0xFF); // Flag for non-accelerated + + for (int i = 0; i < si; i++) + { + int size = Unsafe.Add(ref sizesRef, i); + if (size <= FastBits) + { + int c = Unsafe.Add(ref huffcodeRef, i) << (FastBits - size); + int m = 1 << (FastBits - size); + for (int l = 0; l < m; l++) { - int s = sizesRef[i]; - if (s <= ScanDecoder.FastBits) - { - int c = Unsafe.Add(ref huffcodeRef, i) << (FastBits - s); - int m = 1 << (FastBits - s); - for (int j = 0; j < m; j++) - { - fast[c + j] = (byte)i; - } - } + Unsafe.Add(ref fastRef, c + l) = (byte)i; } } } } - fixed (byte* huffValRef = this.Values.Data) - { - var huffValSpan = new Span(huffValRef, 256); - values.CopyTo(huffValSpan); - } + values.CopyTo(new Span(Unsafe.AsPointer(ref this.Values.Data[0]), 256)); } } } \ No newline at end of file From 99e773c13e86a812b9ed9f3a598476553cddbcd0 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 5 Oct 2018 21:42:42 +0100 Subject: [PATCH 3/5] Remove fixed structs. 7.3 can index fixed arrays! --- .../Jpeg/Components/Decoder/FastACTables.cs | 2 +- .../Components/Decoder/FixedByteBuffer256.cs | 24 ------------------- .../Components/Decoder/FixedByteBuffer512.cs | 24 ------------------- .../Components/Decoder/FixedInt16Buffer257.cs | 24 ------------------- .../Components/Decoder/FixedInt32Buffer18.cs | 24 ------------------- .../Components/Decoder/FixedUInt32Buffer18.cs | 24 ------------------- .../Jpeg/Components/Decoder/HuffmanTable.cs | 24 +++++++++---------- .../Jpeg/Components/Decoder/ScanDecoder.cs | 4 ++-- 8 files changed, 15 insertions(+), 135 deletions(-) delete mode 100644 src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedByteBuffer256.cs delete mode 100644 src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedByteBuffer512.cs delete mode 100644 src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedInt16Buffer257.cs delete mode 100644 src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedInt32Buffer18.cs delete mode 100644 src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedUInt32Buffer18.cs diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FastACTables.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/FastACTables.cs index bfae7fd756..06b46746a6 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FastACTables.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/FastACTables.cs @@ -42,7 +42,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder /// /// The table index. /// The collection of AC Huffman tables. - public void BuildACTableLut(int index, HuffmanTables acHuffmanTables) + public unsafe void BuildACTableLut(int index, HuffmanTables acHuffmanTables) { const int FastBits = ScanDecoder.FastBits; Span fastAC = this.tables.GetRowSpan(index); diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedByteBuffer256.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedByteBuffer256.cs deleted file mode 100644 index 1d26178e0c..0000000000 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedByteBuffer256.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Six Labors and contributors. -// Licensed under the Apache License, Version 2.0. - -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder -{ - [StructLayout(LayoutKind.Sequential)] - internal unsafe struct FixedByteBuffer256 - { - public fixed byte Data[256]; - - public byte this[int idx] - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get - { - ref byte self = ref Unsafe.As(ref this); - return Unsafe.Add(ref self, idx); - } - } - } -} \ No newline at end of file diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedByteBuffer512.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedByteBuffer512.cs deleted file mode 100644 index 556e74fd58..0000000000 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedByteBuffer512.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Six Labors and contributors. -// Licensed under the Apache License, Version 2.0. - -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder -{ - [StructLayout(LayoutKind.Sequential)] - internal unsafe struct FixedByteBuffer512 - { - public fixed byte Data[1 << ScanDecoder.FastBits]; - - public byte this[int idx] - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get - { - ref byte self = ref Unsafe.As(ref this); - return Unsafe.Add(ref self, idx); - } - } - } -} \ No newline at end of file diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedInt16Buffer257.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedInt16Buffer257.cs deleted file mode 100644 index a3b67a700b..0000000000 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedInt16Buffer257.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Six Labors and contributors. -// Licensed under the Apache License, Version 2.0. - -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder -{ - [StructLayout(LayoutKind.Sequential)] - internal unsafe struct FixedInt16Buffer257 - { - public fixed short Data[257]; - - public short this[int idx] - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get - { - ref short self = ref Unsafe.As(ref this); - return Unsafe.Add(ref self, idx); - } - } - } -} \ No newline at end of file diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedInt32Buffer18.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedInt32Buffer18.cs deleted file mode 100644 index bba89f072f..0000000000 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedInt32Buffer18.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Six Labors and contributors. -// Licensed under the Apache License, Version 2.0. - -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder -{ - [StructLayout(LayoutKind.Sequential)] - internal unsafe struct FixedInt32Buffer18 - { - public fixed int Data[18]; - - public int this[int idx] - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get - { - ref int self = ref Unsafe.As(ref this); - return Unsafe.Add(ref self, idx); - } - } - } -} \ No newline at end of file diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedUInt32Buffer18.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedUInt32Buffer18.cs deleted file mode 100644 index 1d3ca99338..0000000000 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/FixedUInt32Buffer18.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Six Labors and contributors. -// Licensed under the Apache License, Version 2.0. - -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder -{ - [StructLayout(LayoutKind.Sequential)] - internal unsafe struct FixedUInt32Buffer18 - { - public fixed uint Data[18]; - - public uint this[int idx] - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get - { - ref uint self = ref Unsafe.As(ref this); - return Unsafe.Add(ref self, idx); - } - } - } -} \ No newline at end of file diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs index ffc4ce9829..08e8604f17 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs @@ -20,27 +20,27 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder /// /// Gets the max code array /// - public FixedUInt32Buffer18 MaxCode; + public fixed uint MaxCode[18]; /// /// Gets the value offset array /// - public FixedInt32Buffer18 ValOffset; + public fixed int ValOffset[18]; /// /// Gets the huffman value array /// - public FixedByteBuffer256 Values; + public fixed byte Values[256]; /// /// Gets the lookahead array /// - public FixedByteBuffer512 Lookahead; + public fixed byte Lookahead[512]; /// /// Gets the sizes array /// - public FixedInt16Buffer257 Sizes; + public fixed short Sizes[257]; /// /// Initializes a new instance of the struct. @@ -57,7 +57,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder ref byte codeLengthsRef = ref MemoryMarshal.GetReference(codeLengths); // Figure C.1: make table of Huffman code length for each symbol - ref short sizesRef = ref this.Sizes.Data[0]; + ref short sizesRef = ref this.Sizes[0]; short x = 0; for (short i = 1; i < 17; i++) @@ -73,8 +73,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder // Figure C.2: generate the codes themselves int si = 0; - ref int valOffsetRef = ref this.ValOffset.Data[0]; - ref uint maxcodeRef = ref this.MaxCode.Data[0]; + ref int valOffsetRef = ref this.ValOffset[0]; + ref uint maxcodeRef = ref this.MaxCode[0]; uint code = 0; int k; @@ -91,7 +91,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder } // Figure F.15: generate decoding tables for bit-sequential decoding. - // Compute largest code + 1 for this size. preshifted as we need later. + // Compute largest code + 1 for this size. preshifted as we needit later. Unsafe.Add(ref maxcodeRef, k) = code << (16 - k); code <<= 1; } @@ -100,8 +100,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder // Generate non-spec lookup tables to speed up decoding. const int FastBits = ScanDecoder.FastBits; - ref byte fastRef = ref this.Lookahead.Data[0]; - new Span(Unsafe.AsPointer(ref fastRef), 1 << FastBits).Fill(0xFF); // Flag for non-accelerated + ref byte fastRef = ref this.Lookahead[0]; + Unsafe.InitBlockUnaligned(ref fastRef, 0xFF, 1 << FastBits); // Flag for non-accelerated for (int i = 0; i < si; i++) { @@ -118,7 +118,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder } } - values.CopyTo(new Span(Unsafe.AsPointer(ref this.Values.Data[0]), 256)); + values.CopyTo(new Span(Unsafe.AsPointer(ref this.Values[0]), 256)); } } } \ No newline at end of file diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/ScanDecoder.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/ScanDecoder.cs index 6741ccdac2..351e453484 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/ScanDecoder.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/ScanDecoder.cs @@ -800,7 +800,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder } [MethodImpl(InliningOptions.ShortMethod)] - private int DecodeHuffman(ref HuffmanTable table) + private unsafe int DecodeHuffman(ref HuffmanTable table) { this.CheckBits(); @@ -825,7 +825,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder } [MethodImpl(InliningOptions.ColdPath)] - private int DecodeHuffmanSlow(ref HuffmanTable table) + private unsafe int DecodeHuffmanSlow(ref HuffmanTable table) { // Naive test is to shift the code_buffer down so k bits are // valid, then test against MaxCode. To speed this up, we've From 63e3c4411ae8802a5d465ddf86d07571b6b72e04 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 5 Oct 2018 22:01:56 +0100 Subject: [PATCH 4/5] Add comment --- src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs index 08e8604f17..3f40068f0f 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs @@ -118,6 +118,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder } } + // Ok to use pointer here as struct is declared in method stack space so are essentially pinned. values.CopyTo(new Span(Unsafe.AsPointer(ref this.Values[0]), 256)); } } From 63ee5970220c6889177749dc14228cac035fcee9 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 5 Oct 2018 22:28:48 +0100 Subject: [PATCH 5/5] No pointers! --- src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs index 3f40068f0f..24d570bf1c 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanTable.cs @@ -118,8 +118,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder } } - // Ok to use pointer here as struct is declared in method stack space so are essentially pinned. - values.CopyTo(new Span(Unsafe.AsPointer(ref this.Values[0]), 256)); + Unsafe.CopyBlockUnaligned(ref this.Values[0], ref MemoryMarshal.GetReference(values), 256); } } } \ No newline at end of file