Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
            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();
            }