コード例 #1
0
ファイル: ArithCoder.cs プロジェクト: OKaas/cluster-analyzer
        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);
        }
コード例 #2
0
ファイル: ArithCoder.cs プロジェクト: OKaas/cluster-analyzer
        public static void encode(int[] values, Stream target)
        {
            ArithCoder coder = new ArithCoder(target);

            coder.Encode(values);
        }