Exemple #1
0
        public static byte[] Decompress(Stream stream)
        {
            using (var reader = new ImprovedBinaryReader(stream, true))
            {
                var header = reader.ReadInt32();

                var method = (Method)(header & 0x07);
                var size   = header >> 3;

                switch (method)
                {
                case Method.NoCompression:
                    return(reader.ReadBytes(size));

                case Method.LZ10:
                    return(LZ10.Decompress(reader.BaseStream, size));

                case Method.RLE:
                    return(RLE.Decompress(reader.BaseStream, size));

                case Method.Huffman4Bit:
                    return(Huffman.Decompress(reader.BaseStream, 4, size));

                case Method.Huffman8Bit:
                    return(Huffman.Decompress(reader.BaseStream, 8, size));

                default:
                    throw new NotImplementedException($"Unsupported compression method: {method}");
                }
            }
        }