mirror of https://github.com/SixLabors/ImageSharp
2 changed files with 65 additions and 0 deletions
@ -0,0 +1,56 @@ |
|||||
|
// Copyright (c) Six Labors.
|
||||
|
// Licensed under the Apache License, Version 2.0.
|
||||
|
|
||||
|
using System.Linq; |
||||
|
using SixLabors.ImageSharp.Formats.Webp.Lossy; |
||||
|
using SixLabors.ImageSharp.Tests.TestUtilities; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace SixLabors.ImageSharp.Tests.Formats.WebP |
||||
|
{ |
||||
|
[Trait("Format", "Webp")] |
||||
|
public class QuantEncTests |
||||
|
{ |
||||
|
private static void RunQuantizeBlockTest() |
||||
|
{ |
||||
|
// arrange
|
||||
|
short[] input = { 378, 777, -851, 888, 259, 148, 0, -111, -185, -185, -74, -37, 148, 74, 111, 74 }; |
||||
|
short[] output = new short[16]; |
||||
|
ushort[] q = { 42, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; |
||||
|
ushort[] iq = { 3120, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542 }; |
||||
|
uint[] bias = |
||||
|
{ |
||||
|
49152, 55296, 55296, 55296, 55296, 55296, 55296, 55296, 55296, 55296, 55296, 55296, 55296, 55296, |
||||
|
55296, 55296 |
||||
|
}; |
||||
|
uint[] zthresh = { 26, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21 }; |
||||
|
short[] expectedOutput = { 9, 21, 7, -5, 4, -23, 24, 0, -5, 4, 2, -2, -3, -1, 3, 2 }; |
||||
|
int expectedResult = 1; |
||||
|
var vp8Matrix = new Vp8Matrix(q, iq, bias, zthresh, new short[16]); |
||||
|
|
||||
|
// act
|
||||
|
int actualResult = QuantEnc.QuantizeBlock(input, output, vp8Matrix); |
||||
|
|
||||
|
// assert
|
||||
|
Assert.True(output.SequenceEqual(expectedOutput)); |
||||
|
Assert.Equal(expectedResult, actualResult); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void QuantizeBlock_Works() => RunQuantizeBlockTest(); |
||||
|
|
||||
|
#if SUPPORTS_RUNTIME_INTRINSICS
|
||||
|
[Fact] |
||||
|
public void QuantizeBlock_WithHardwareIntrinsics_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunQuantizeBlockTest, HwIntrinsics.AllowAll); |
||||
|
|
||||
|
[Fact] |
||||
|
public void QuantizeBlock_WithoutSSE2_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunQuantizeBlockTest, HwIntrinsics.DisableSSE2); |
||||
|
|
||||
|
[Fact] |
||||
|
public void QuantizeBlock_WithoutSSSE3_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunQuantizeBlockTest, HwIntrinsics.DisableSSSE3); |
||||
|
|
||||
|
[Fact] |
||||
|
public void QuantizeBlock_WithoutSSE2AndSSSE3_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunQuantizeBlockTest, HwIntrinsics.DisableSSE2 | HwIntrinsics.DisableSSSE3); |
||||
|
#endif
|
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue