public void TestManagedIncludeDllCompression(string testDataFile, SerializiableTestClass testClass) { try { using (FileStream fs = File.Create(testDataFile)) { var encoder = new LZMA.CLzma2Enc(LZMA.ISzAlloc.SmallAlloc, LZMA.ISzAlloc.BigAlloc); ObjectSerializer <SerializiableTestClass> testClassObjectSerializer = new ObjectSerializer <SerializiableTestClass>(); MemoryStream ms = new MemoryStream(testClassObjectSerializer.SerializeToByteArray(testClass)); byte[] byteArrayToEncode = ms.ToArray(); ms = null; GC.Collect(); SharedSettings settings = new SharedSettings { Algo = 2, UseV2 = true, DictSize = 0x2000000, Level = 5, BTMode = 1, NumHashBytes = 4, WriteEndMark = 1, NumThreads = 8, NumTotalThreads = 8, LC = 3, LP = 0, MC = 32, FB = 32, PB = 4, NumBlockThreads = 8, Variant = 1, }; settings.Src = new PZ(byteArrayToEncode); settings.Dst = new PZ(new byte[byteArrayToEncode.Length]); LZMA_Compress(settings); fs.Write(settings.Dst.Buffer, 0, settings.WrittenSize); fs.Flush(); fs.Close(); //LZMA.ISeqOutStream encoderOutputStream= new LZMA.CSeqOutStream(); //encoder.Lzma2Enc_Encode(fs, ms, null); } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public void LzmaCompress(SharedSettings s) { int srcBase = s.Src.Offset; int dstBase = s.Dst.Offset; LZMA.CLzma2EncProps props = new LZMA.CLzma2EncProps(); props.Lzma2EncProps_Init(); props.mLzmaProps.mLevel = s.ActualLevel; props.mLzmaProps.mDictSize = (uint)s.ActualDictSize; props.mLzmaProps.mLC = s.ActualLC; props.mLzmaProps.mLP = s.ActualLP; props.mLzmaProps.mPB = s.ActualPB; props.mLzmaProps.mAlgo = s.ActualAlgo; props.mLzmaProps.mFB = s.ActualFB; props.mLzmaProps.mBtMode = s.ActualBTMode; props.mLzmaProps.mNumHashBytes = s.ActualNumHashBytes; props.mLzmaProps.mMC = s.ActualMC; props.mLzmaProps.mWriteEndMark = s.ActualWriteEndMark; props.mLzmaProps.mNumThreads = s.ActualNumThreads; props.mBlockSize = s.ActualBlockSize; props.mNumBlockThreads = s.ActualNumBlockThreads; props.mNumTotalThreads = s.ActualNumTotalThreads; LZMA.ISeqInStream input = new CSeqInStream(s); LZMA.ISeqOutStream output = new CSeqOutStream(s); var encoder = new LZMA.CLzma2Enc(LZMA.ISzAlloc.SmallAlloc, LZMA.ISzAlloc.BigAlloc); var res = encoder.Lzma2Enc_SetProps(props); if (res != LZMA.SZ_OK) { throw new Exception("Lzma2Compress/SetProps failed: " + res); } res = encoder.Lzma2Enc_Encode(output, input, null); if (res != LZMA.SZ_OK) { throw new Exception("Lzma2Compress/Encode failed: " + res); } s.WrittenSize = s.Dst.Offset - dstBase; s.Enc = new PZ(new[] { encoder.Lzma2Enc_WriteProperties() }); encoder.Lzma2Enc_Destroy(); s.Src.Length += s.Src.Offset - srcBase; s.Src.Offset = srcBase; s.Dst.Length += s.Dst.Offset - dstBase; s.Dst.Offset = dstBase; }
public void LzmaCompress(SharedSettings s) { int srcBase = s.Src.Offset; int dstBase = s.Dst.Offset; LZMA.CLzma2EncProps props = new LZMA.CLzma2EncProps(); props.Lzma2EncProps_Init(); props.mLzmaProps.mLevel = s.ActualLevel; props.mLzmaProps.mDictSize = (uint)s.ActualDictSize; props.mLzmaProps.mLC = s.ActualLC; props.mLzmaProps.mLP = s.ActualLP; props.mLzmaProps.mPB = s.ActualPB; props.mLzmaProps.mAlgo = s.ActualAlgo; props.mLzmaProps.mFB = s.ActualFB; props.mLzmaProps.mBtMode = s.ActualBTMode; props.mLzmaProps.mNumHashBytes = s.ActualNumHashBytes; props.mLzmaProps.mMC = s.ActualMC; props.mLzmaProps.mWriteEndMark = s.ActualWriteEndMark; props.mLzmaProps.mNumThreads = s.ActualNumThreads; props.mBlockSize = s.ActualBlockSize; props.mNumBlockThreads = s.ActualNumBlockThreads; props.mNumTotalThreads = s.ActualNumTotalThreads; LZMA.ISeqInStream input = new CSeqInStream(s); LZMA.ISeqOutStream output = new CSeqOutStream(s); var encoder = new LZMA.CLzma2Enc(LZMA.ISzAlloc.SmallAlloc, LZMA.ISzAlloc.BigAlloc); var res = encoder.Lzma2Enc_SetProps(props); if(res != LZMA.SZ_OK) throw new Exception("Lzma2Compress/SetProps failed: " + res); res = encoder.Lzma2Enc_Encode(output, input, null); if(res != LZMA.SZ_OK) throw new Exception("Lzma2Compress/Encode failed: " + res); s.WrittenSize = s.Dst.Offset - dstBase; s.Enc = new PZ(new[] { encoder.Lzma2Enc_WriteProperties() }); encoder.Lzma2Enc_Destroy(); s.Src.Length += s.Src.Offset - srcBase; s.Src.Offset = srcBase; s.Dst.Length += s.Dst.Offset - dstBase; s.Dst.Offset = dstBase; }
protected override void EncoderThreadLoop() { var settings = new LZMA.CLzma2EncProps(mEncoderProps); if (mThreadCount.HasValue) settings.mNumBlockThreads = mThreadCount.Value; var encoder = new LZMA.CLzma2Enc(LZMA.ISzAlloc.SmallAlloc, LZMA.ISzAlloc.BigAlloc); var res = encoder.Lzma2Enc_SetProps(settings); if (res != LZMA.SZ_OK) throw new InvalidOperationException(); mSettings = encoder.Lzma2Enc_WriteProperties(); res = encoder.Lzma2Enc_Encode(mOutputHelper, mInputHelper, null); if (res != LZMA.SZ_OK) throw new InvalidOperationException(); encoder.Lzma2Enc_Destroy(); }