public void ConvertVectorized() { Block8x8F y = default; Block8x8F cb = default; Block8x8F cr = default; if (RgbToYCbCrConverterVectorized.IsSupported) { RgbToYCbCrConverterVectorized.Convert444(this.data.AsSpan(), ref y, ref cb, ref cr); } }
public void Scale16x2_8x1(int seed) { if (!Avx2.IsSupported) { return; } Span <float> data = new Random(seed).GenerateRandomFloatArray(Vector256 <float> .Count * 4, -1000, 1000); // Act: Vector256 <float> resultVector = RgbToYCbCrConverterVectorized.Scale16x2_8x1(MemoryMarshal.Cast <float, Vector256 <float> >(data)); ref float result = ref Unsafe.As <Vector256 <float>, float>(ref resultVector);
public void TestVectorizedConverter() { if (!RgbToYCbCrConverterVectorized.IsSupported) { this.Output.WriteLine("No AVX and/or FMA present, skipping test!"); return; } Rgb24[] data = CreateTestData(); Block8x8F y = default; Block8x8F cb = default; Block8x8F cr = default; RgbToYCbCrConverterVectorized.Convert(data.AsSpan(), ref y, ref cb, ref cr); Verify(data, ref y, ref cb, ref cr, new ApproximateColorSpaceComparer(0.0001F)); }
public void TestConverterVectorized420() { if (!RgbToYCbCrConverterVectorized.IsSupported) { this.Output.WriteLine("No AVX and/or FMA present, skipping test!"); return; } int dataSize = 16 * 16; Span <Rgb24> data = CreateTestData(dataSize).AsSpan(); var yBlocks = new Block8x8F[4]; var cb = default(Block8x8F); var cr = default(Block8x8F); RgbToYCbCrConverterVectorized.Convert420(data, ref yBlocks[0], ref yBlocks[1], ref cb, ref cr, 0); RgbToYCbCrConverterVectorized.Convert420(data.Slice(16 * 8), ref yBlocks[2], ref yBlocks[3], ref cb, ref cr, 1); Verify420(data, yBlocks, ref cb, ref cr, new ApproximateFloatComparer(1F)); }