public static void Encode(int[] data, Stream target) { int[] best = new int[4]; int lowest = int.MaxValue; for (int cutoff = 1; cutoff < 20; cutoff++) { for (int order = 1; order < 10; order++) { for (int count = 1; count < 20; count++) { for (int depth = 0; depth < 4; depth++) { MemoryStream ms = new MemoryStream(); ArithCoder coder = new ArithCoder(ms, cutoff, order, count, depth); coder.Encode(data); if (ms.Position < lowest) { lowest = (int)ms.Position; best[0] = cutoff; best[1] = order; best[2] = count; best[3] = depth; } } } } } ArithCoder c = new ArithCoder(target, best[0], best[1], best[2], best[3]); c.Encode(data); }
public static void encode(int[] values, Stream target) { ArithCoder coder = new ArithCoder(target); coder.Encode(values); }