1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
/// Copyright (c) 2008 Jeffrey Powers for Fluxcapacity Open Source.
/// Under the MIT License, details: License.txt.
namespace FluxJpeg.Core
{
internal class ZigZag
{
#region Alternate Form
internal static readonly int[] ZigZagMap =
{
0, 1, 8, 16, 9, 2, 3, 10,
17, 24, 32, 25, 18, 11, 4, 5,
12, 19, 26, 33, 40, 48, 41, 34,
27, 20, 13, 6, 7, 14, 21, 28,
35, 42, 49, 56, 57, 50, 43, 36,
29, 22, 15, 23, 30, 37, 44, 51,
58, 59, 52, 45, 38, 31, 39, 46,
53, 60, 61, 54, 47, 55, 62, 63
};
//public static void UnZigZag(float[] input, float[] output)
//{
// for (int i = 0; i < 64; i++)
// output[ZigZagMap[i] / 8, ZigZagMap[i] % 8] = input[i];
//}
#endregion
public static void UnZigZag(float[] input, float[] output)
{
output[0] = input[0]; output[1] = input[1];
output[8] = input[2]; output[16] = input[3];
output[9] = input[4]; output[2] = input[5];
output[3] = input[6]; output[10] = input[7];
output[17] = input[8]; output[24] = input[9];
output[32] = input[10]; output[25] = input[11];
output[18] = input[12]; output[11] = input[13];
output[4] = input[14]; output[5] = input[15];
output[12] = input[16]; output[19] = input[17];
output[26] = input[18]; output[33] = input[19];
output[40] = input[20]; output[48] = input[21];
output[41] = input[22]; output[34] = input[23];
output[27] = input[24]; output[20] = input[25];
output[13] = input[26]; output[6] = input[27];
output[7] = input[28]; output[14] = input[29];
output[21] = input[30]; output[28] = input[31];
output[35] = input[32]; output[42] = input[33];
output[49] = input[34]; output[56] = input[35];
output[57] = input[36]; output[50] = input[37];
output[43] = input[38]; output[36] = input[39];
output[29] = input[40]; output[22] = input[41];
output[15] = input[42]; output[23] = input[43];
output[30] = input[44]; output[37] = input[45];
output[44] = input[46]; output[51] = input[47];
output[58] = input[48]; output[59] = input[49];
output[52] = input[50]; output[45] = input[51];
output[38] = input[52]; output[31] = input[53];
output[39] = input[54]; output[46] = input[55];
output[53] = input[56]; output[60] = input[57];
output[61] = input[58]; output[54] = input[59];
output[47] = input[60]; output[55] = input[61];
output[62] = input[62]; output[63] = input[63];
}
}
}
|