Esempio n. 1
0
        private static byte[] internalCompress(byte[] data, InfoByte.CompressionType algo = InfoByte.CompressionType.Arithmetic)
        {
            byte[] dataCompr = new byte[0];

            switch (algo)
            {
            case InfoByte.CompressionType.LZMA:
            default:
                dataCompr = SevenZipHelper.Compress(data);
                break;

            case InfoByte.CompressionType.BZIP2:
                using (MemoryStream msOut = new MemoryStream())
                {
                    msOut.Write(BitConverter.GetBytes(data.Length), 0, 4);
                    using (ParallelBZip2OutputStream c = new ParallelBZip2OutputStream(msOut, 9, true))
                    {
                        c.MaxWorkers = 4;
                        c.Write(data, 0, data.Length);
                        c.Flush();
                        c.Close();
                        msOut.Flush();
                        dataCompr = msOut.ToArray();
                    }
                }
                break;

            case InfoByte.CompressionType.Arithmetic:
                AbstractModel ac = new ModelOrder0();
                //data = threeRLEencode(data);
                using (MemoryStream mcCompr = new MemoryStream()) {
                    ac.Process(new MemoryStream(data), mcCompr, ModeE.MODE_ENCODE);
                    mcCompr.Flush();
                    dataCompr = mcCompr.ToArray();
                }
                //dataCompr = threeRLEencode(dataCompr);
                break;
            }

            return(dataCompr);
        }