Browse Source

Fix issue in ImportBlock

pull/1552/head
Brian Popow 5 years ago
parent
commit
5ad068833f
  1. 7
      src/ImageSharp/Formats/WebP/Lossy/Vp8EncIterator.cs
  2. 10
      src/ImageSharp/Formats/WebP/Lossy/Vp8Encoder.cs
  3. 5
      src/ImageSharp/Formats/WebP/Lossy/Vp8Matrix.cs

7
src/ImageSharp/Formats/WebP/Lossy/Vp8EncIterator.cs

@ -768,10 +768,12 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy
int srcIdx = 0;
for (int i = 0; i < h; ++i)
{
// memcpy(dst, src, w);
src.Slice(srcIdx, w).CopyTo(dst.Slice(dstIdx));
if (w < size)
{
dst.Slice(dstIdx, size - w).Fill(dst[dstIdx + w - 1]);
// memset(dst + w, dst[w - 1], size - w);
dst.Slice(dstIdx + w, size - w).Fill(dst[dstIdx + w - 1]);
}
dstIdx += WebpConstants.Bps;
@ -780,7 +782,8 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy
for (int i = h; i < size; ++i)
{
dst.Slice(dstIdx - WebpConstants.Bps, size).CopyTo(dst);
// memcpy(dst, dst - BPS, size);
dst.Slice(dstIdx - WebpConstants.Bps, size).CopyTo(dst.Slice(dstIdx));
dstIdx += WebpConstants.Bps;
}
}

10
src/ImageSharp/Formats/WebP/Lossy/Vp8Encoder.cs

@ -609,7 +609,7 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy
Vp8MacroBlockInfo mb = this.MbInfo[n];
int alpha = mb.Alpha;
mb.Segment = map[alpha];
mb.Alpha = centers[map[alpha]]; // for the record.
mb.Alpha = centers[map[alpha]];
}
// TODO: add possibility for SmoothSegmentMap
@ -790,11 +790,11 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy
m.Y2 = new Vp8Matrix();
m.Uv = new Vp8Matrix();
m.Y1.Q[0] = WebpLookupTables.DcTable[Numerics.Clamp(q, 0, 127)];
m.Y1.Q[0] = WebpLookupTables.DcTable[Numerics.Clamp(q + this.DqY1Dc, 0, 127)];
m.Y1.Q[1] = WebpLookupTables.AcTable[Numerics.Clamp(q, 0, 127)];
m.Y2.Q[0] = (ushort)(WebpLookupTables.DcTable[Numerics.Clamp(q, 0, 127)] * 2);
m.Y2.Q[1] = WebpLookupTables.AcTable2[Numerics.Clamp(q, 0, 127)];
m.Y2.Q[0] = (ushort)(WebpLookupTables.DcTable[Numerics.Clamp(q + this.DqY2Dc, 0, 127)] * 2);
m.Y2.Q[1] = WebpLookupTables.AcTable2[Numerics.Clamp(q + this.DqY2Ac, 0, 127)];
m.Uv.Q[0] = WebpLookupTables.DcTable[Numerics.Clamp(q + this.DqUvDc, 0, 117)];
m.Uv.Q[1] = WebpLookupTables.AcTable[Numerics.Clamp(q + this.DqUvAc, 0, 127)];
@ -803,8 +803,6 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy
int qi16 = m.Y2.Expand(1);
int quv = m.Uv.Expand(2);
m.I4Penalty = 1000 * qi4 * qi4;
m.LambdaI16 = 3 * qi16 * qi16;
m.LambdaI4 = (3 * qi4 * qi4) >> 7;
m.LambdaUv = (3 * quv * quv) >> 6;

5
src/ImageSharp/Formats/WebP/Lossy/Vp8Matrix.cs

@ -106,9 +106,6 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy
return (sum + 8) >> 4;
}
private int BIAS(int b)
{
return b << (WebpConstants.QFix - 8);
}
private int BIAS(int b) => b << (WebpConstants.QFix - 8);
}
}

Loading…
Cancel
Save