public Decoder(int sampleRate) { peakDetector = new PeakDetector(this); bitDecoder = new BitDecoder(this, sampleRate); symbolDecoder = new SymbolDecoder(this); Clear(); }
public byte[] Decompress(byte[] input, int len) { for (int i = 0; i < SymbolProbabilities.Length; i++) { SymbolProbabilities[i].Init(); } for (int i = 0; i < DistanceSizeProbabilities.Length; i++) { DistanceSizeProbabilities[i].Init(); } Decoder = new BitDecoder(input); var output = new byte[len]; output[0] = (byte)DecodeSymbol(0); for (int i = 1; i < len;) { int symbol = DecodeSymbol(output[i - 1]); if (symbol < 256) // Literal { output[i++] = (byte)symbol; } else // Match { int matchLen = symbol - 256; int distance = DecodeDistance(); while (matchLen-- > 0) { byte data = output[i - distance]; output[i++] = data; } } } return(output); }
public LenDecoder() { BitDecoder decoder = new BitDecoder(); this.m_Choice = decoder; BitDecoder decoder2 = new BitDecoder(); this.m_Choice2 = decoder2; this.m_LowCoder = new BitTreeDecoder[0x10]; this.m_MidCoder = new BitTreeDecoder[0x10]; this.m_HighCoder = new BitTreeDecoder(8); }
public static uint ReverseDecode(BitDecoder[] Models, UInt32 startIndex, RangeCoder.Decoder rangeDecoder, int NumBitLevels) { uint m = 1; uint symbol = 0; for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++) { uint bit = Models[startIndex + m].Decode(rangeDecoder); m <<= 1; m += bit; symbol |= (bit << bitIndex); } return symbol; }
public static uint ReverseDecode(BitDecoder[] models, uint startIndex, Decoder rangeDecoder, int numBitLevels) { uint m = 1; uint symbol = 0; for (var bitIndex = 0; bitIndex < numBitLevels; bitIndex++) { var bit = models[startIndex + m].Decode(rangeDecoder); m <<= 1; m += bit; symbol |= (bit << bitIndex); } return symbol; }
private static StringBuilder DoDecompress(string inputStream, DataEncoding encoding) { if ("" == inputStream) { return(null); } else { var result = new StringBuilder(); if (null == inputStream) { return(result); } else { var decompressor = new Decompressor(result); var decoder = new BitDecoder(inputStream, encoding); decompressor.Decompress(decoder); return(result); } } }