Browse Source

Simplify progressive decoding switch

pull/525/head
James Jackson-South 8 years ago
parent
commit
3b363d9d0d
  1. 20
      src/ImageSharp/Formats/Jpeg/PdfJsPort/Components/PdfJsScanDecoder.cs

20
src/ImageSharp/Formats/Jpeg/PdfJsPort/Components/PdfJsScanDecoder.cs

@ -843,7 +843,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components
while (k <= e) while (k <= e)
{ {
int offsetZ = offset + PdfJsQuantizationTables.DctZigZag[k]; int offsetZ = offset + PdfJsQuantizationTables.DctZigZag[k];
int sign = Unsafe.Add(ref blockDataRef, offsetZ) < 0 ? -1 : 1; ref short blockOffsetZRef = ref Unsafe.Add(ref blockDataRef, offsetZ);
int sign = blockOffsetZRef < 0 ? -1 : 1;
switch (this.successiveACState) switch (this.successiveACState)
{ {
@ -883,8 +884,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components
continue; continue;
case 1: // Skipping r zero items case 1: // Skipping r zero items
case 2: case 2:
ref short blockRef = ref Unsafe.Add(ref blockDataRef, offsetZ); if (blockOffsetZRef != 0)
if (blockRef != 0)
{ {
int bit = this.ReadBit(stream); int bit = this.ReadBit(stream);
if (this.endOfStreamReached || this.unexpectedMarkerReached) if (this.endOfStreamReached || this.unexpectedMarkerReached)
@ -892,7 +892,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components
return; return;
} }
blockRef += (short)(sign * (bit << this.successiveState)); blockOffsetZRef += (short)(sign * (bit << this.successiveState));
} }
else else
{ {
@ -905,8 +905,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components
break; break;
case 3: // Set value for a zero item case 3: // Set value for a zero item
ref short blockRef2 = ref Unsafe.Add(ref blockDataRef, offsetZ); if (blockOffsetZRef != 0)
if (blockRef2 != 0)
{ {
int bit = this.ReadBit(stream); int bit = this.ReadBit(stream);
if (this.endOfStreamReached || this.unexpectedMarkerReached) if (this.endOfStreamReached || this.unexpectedMarkerReached)
@ -914,18 +913,17 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components
return; return;
} }
blockRef2 += (short)(sign * (bit << this.successiveState)); blockOffsetZRef += (short)(sign * (bit << this.successiveState));
} }
else else
{ {
blockRef2 = (short)(this.successiveACNextValue << this.successiveState); blockOffsetZRef = (short)(this.successiveACNextValue << this.successiveState);
this.successiveACState = 0; this.successiveACState = 0;
} }
break; break;
case 4: // Eob case 4: // Eob
ref short blockRef3 = ref Unsafe.Add(ref blockDataRef, offsetZ); if (blockOffsetZRef != 0)
if (blockRef3 != 0)
{ {
int bit = this.ReadBit(stream); int bit = this.ReadBit(stream);
if (this.endOfStreamReached || this.unexpectedMarkerReached) if (this.endOfStreamReached || this.unexpectedMarkerReached)
@ -933,7 +931,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components
return; return;
} }
blockRef3 += (short)(sign * (bit << this.successiveState)); blockOffsetZRef += (short)(sign * (bit << this.successiveState));
} }
break; break;

Loading…
Cancel
Save