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); }