|
|
|
@ -11,6 +11,57 @@ namespace SixLabors.ImageSharp.Tests.Formats.Webp |
|
|
|
[Trait("Format", "Webp")] |
|
|
|
public class Vp8EncodingTests |
|
|
|
{ |
|
|
|
private static void RunFTransform2Test() |
|
|
|
{ |
|
|
|
// arrange
|
|
|
|
byte[] src = { 154, 154, 151, 151, 149, 148, 151, 157, 163, 163, 154, 132, 102, 98, 104, 108, 107, 104, 104, 103, 101, 106, 123, 119, 170, 171, 172, 171, 168, 175, 171, 173, 151, 151, 149, 150, 147, 147, 146, 159, 164, 165, 154, 129, 92, 90, 101, 105, 104, 103, 104, 101, 100, 105, 123, 117, 172, 172, 172, 168, 170, 177, 170, 175, 151, 149, 150, 150, 147, 147, 156, 161, 161, 161, 151, 126, 93, 90, 102, 107, 104, 103, 104, 101, 104, 104, 122, 117, 172, 172, 170, 168, 170, 177, 172, 175, 150, 149, 152, 151, 148, 151, 160, 159, 157, 157, 148, 133, 96, 90, 103, 107, 104, 104, 101, 100, 102, 102, 121, 117, 170, 170, 169, 171, 171, 179, 173, 175 }; |
|
|
|
byte[] reference = { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129 }; |
|
|
|
short[] actualOutput1 = new short[16]; |
|
|
|
short[] actualOutput2 = new short[16]; |
|
|
|
short[] expectedOutput1 = { 182, 4, 1, 1, 6, 7, -1, -4, 5, 0, -2, 1, 2, 1, 1, 1 }; |
|
|
|
short[] expectedOutput2 = { 192, -34, 10, 1, -11, 8, 10, -7, 6, 3, -8, 4, 5, -3, -2, 6 }; |
|
|
|
|
|
|
|
// act
|
|
|
|
Vp8Encoding.FTransform2(src, reference, actualOutput1, actualOutput2, new int[16]); |
|
|
|
|
|
|
|
// assert
|
|
|
|
Assert.True(expectedOutput1.SequenceEqual(actualOutput1)); |
|
|
|
Assert.True(expectedOutput2.SequenceEqual(actualOutput2)); |
|
|
|
} |
|
|
|
|
|
|
|
private static void RunFTransformTest() |
|
|
|
{ |
|
|
|
// arrange
|
|
|
|
byte[] src = |
|
|
|
{ |
|
|
|
154, 154, 151, 151, 149, 148, 151, 157, 163, 163, 154, 132, 102, 98, 104, 108, 107, 104, 104, 103, |
|
|
|
101, 106, 123, 119, 170, 171, 172, 171, 168, 175, 171, 173, 151, 151, 149, 150, 147, 147, 146, 159, |
|
|
|
164, 165, 154, 129, 92, 90, 101, 105, 104, 103, 104, 101, 100, 105, 123, 117, 172, 172, 172, 168, |
|
|
|
170, 177, 170, 175, 151, 149, 150, 150, 147, 147, 156, 161, 161, 161, 151, 126, 93, 90, 102, 107, |
|
|
|
104, 103, 104, 101, 104, 104, 122, 117, 172, 172, 170, 168, 170, 177, 172, 175, 150, 149, 152, 151, |
|
|
|
148, 151, 160, 159, 157, 157, 148, 133, 96, 90, 103, 107, 104, 104, 101, 100, 102, 102, 121, 117, |
|
|
|
170, 170, 169, 171, 171, 179, 173, 175 |
|
|
|
}; |
|
|
|
byte[] reference = |
|
|
|
{ |
|
|
|
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, |
|
|
|
129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 128, 128, 128, 128, 128, 128, 128, 128, |
|
|
|
128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, |
|
|
|
129, 129, 129, 129, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, |
|
|
|
129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 128, 128, 128, 128, |
|
|
|
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, |
|
|
|
129, 129, 129, 129, 129, 129, 129, 129 |
|
|
|
}; |
|
|
|
short[] actualOutput = new short[16]; |
|
|
|
short[] expectedOutput = { 182, 4, 1, 1, 6, 7, -1, -4, 5, 0, -2, 1, 2, 1, 1, 1 }; |
|
|
|
|
|
|
|
// act
|
|
|
|
Vp8Encoding.FTransform(src, reference, actualOutput, new int[16]); |
|
|
|
|
|
|
|
// assert
|
|
|
|
Assert.True(expectedOutput.SequenceEqual(actualOutput)); |
|
|
|
} |
|
|
|
|
|
|
|
private static void RunOneInverseTransformTest() |
|
|
|
{ |
|
|
|
// arrange
|
|
|
|
@ -75,6 +126,12 @@ namespace SixLabors.ImageSharp.Tests.Formats.Webp |
|
|
|
Assert.True(dst.SequenceEqual(expected)); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void FTransform2_Works() => RunFTransform2Test(); |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void FTransform_Works() => RunFTransformTest(); |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void OneInverseTransform_Works() => RunOneInverseTransformTest(); |
|
|
|
|
|
|
|
@ -82,6 +139,18 @@ namespace SixLabors.ImageSharp.Tests.Formats.Webp |
|
|
|
public void TwoInverseTransform_Works() => RunTwoInverseTransformTest(); |
|
|
|
|
|
|
|
#if SUPPORTS_RUNTIME_INTRINSICS
|
|
|
|
[Fact] |
|
|
|
public void FTransform2_WithHardwareIntrinsics_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunFTransform2Test, HwIntrinsics.AllowAll); |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void FTransform2_WithoutHardwareIntrinsics_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunFTransform2Test, HwIntrinsics.DisableHWIntrinsic); |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void FTransform_WithHardwareIntrinsics_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunFTransformTest, HwIntrinsics.AllowAll); |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void FTransform_WithoutHardwareIntrinsics_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunFTransformTest, HwIntrinsics.DisableHWIntrinsic); |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void OneInverseTransform_WithHardwareIntrinsics_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunOneInverseTransformTest, HwIntrinsics.AllowAll); |
|
|
|
|
|
|
|
|