public LzmaStream(LzmaEncoderProperties properties, bool isLZMA2, Stream presetDictionary, Stream outputStream) { this.outWindow = new OutWindow(); this.rangeDecoder = new SharpCompress.Compressor.LZMA.RangeCoder.Decoder(); this.position = 0L; this.endReached = false; this.inputPosition = 0L; this.uncompressedChunk = false; this.needDictReset = true; this.needProps = true; this.props = new byte[5]; this.isLZMA2 = isLZMA2; this.availableBytes = 0L; this.endReached = true; if (isLZMA2) { throw new NotImplementedException(); } this.encoder = new SharpCompress.Compressor.LZMA.Encoder(); this.encoder.SetCoderProperties(properties.propIDs, properties.properties); MemoryStream outStream = new MemoryStream(5); this.encoder.WriteCoderProperties(outStream); this.props = outStream.ToArray(); this.encoder.SetStreams(null, outputStream, -1L, -1L); if (presetDictionary != null) { this.encoder.Train(presetDictionary); } }