From a628909b8da58e9dbd10bfa3b70e9c8ce66ddc1d Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 7 Nov 2021 15:02:08 +0100 Subject: [PATCH] Add coeff = abs(in) + sharpen --- src/ImageSharp/Formats/Webp/Lossy/QuantEnc.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/ImageSharp/Formats/Webp/Lossy/QuantEnc.cs b/src/ImageSharp/Formats/Webp/Lossy/QuantEnc.cs index 02087ceda..b812909b2 100644 --- a/src/ImageSharp/Formats/Webp/Lossy/QuantEnc.cs +++ b/src/ImageSharp/Formats/Webp/Lossy/QuantEnc.cs @@ -516,6 +516,7 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy fixed (ushort* mtxIqPtr = mtx.IQ) fixed (ushort* mtxQPtr = mtx.Q) fixed (uint* biasQPtr = mtx.Bias) + fixed (short* sharpenPtr = mtx.Sharpen) fixed (short* inputPtr = input) fixed (short* outputPtr = output) { @@ -531,6 +532,12 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy Vector128 coeff0 = Ssse3.Abs(input0); Vector128 coeff8 = Ssse3.Abs(input8); + // coeff = abs(in) + sharpen + Vector128 sharpen0 = Sse2.LoadVector128(sharpenPtr); + Vector128 sharpen8 = Sse2.LoadVector128(sharpenPtr + 8); + Sse2.Add(coeff0.AsInt16(), sharpen0); + Sse2.Add(coeff8.AsInt16(), sharpen8); + // out = (coeff * iQ + B) >> QFIX // doing calculations with 32b precision (QFIX=17) // out = (coeff * iQ)