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