コード例 #1
0
ファイル: LzmaEnc.cs プロジェクト: modulexcite/managed-lzma
            internal SRes LzmaEnc_CodeOneMemBlock(bool reInit, P<byte> dest, ref long destLen, uint desiredPackSize, ref uint unpackSize)
            {
                CSeqOutStreamBuf outStream = new CSeqOutStreamBuf();

                outStream.mData = dest;
                outStream.mRem = destLen;
                outStream.mOverflow = false;

                mWriteEndMark = false;
                mFinished = false;
                mResult = SZ_OK;

                if (reInit)
                    LzmaEnc_Init();

                LzmaEnc_InitPrices();
                ulong nowPos64 = mNowPos64;
                mRC.RangeEnc_Init();
                mRC.mOutStream = outStream;

                SRes res = LzmaEnc_CodeOneBlock(true, desiredPackSize, unpackSize);

                unpackSize = (uint)(mNowPos64 - nowPos64);
                destLen -= outStream.mRem;
                if (outStream.mOverflow)
                    return SZ_ERROR_OUTPUT_EOF;

                return res;
            }
コード例 #2
0
ファイル: LzmaEnc.cs プロジェクト: modulexcite/managed-lzma
            public SRes LzmaEnc_MemEncode(P<byte> dest, ref long destLen, P<byte> src, long srcLen, bool writeEndMark, ICompressProgress progress, ISzAlloc alloc, ISzAlloc allocBig)
            {
                CSeqOutStreamBuf outStream = new CSeqOutStreamBuf();

                LzmaEnc_SetInputBuf(src, srcLen);

                outStream.mData = dest;
                outStream.mRem = destLen;
                outStream.mOverflow = false;

                mWriteEndMark = writeEndMark;

                mRC.mOutStream = outStream;

                SRes res = LzmaEnc_MemPrepare(src, srcLen, 0, alloc, allocBig);
                if (res == SZ_OK)
                    res = LzmaEnc_Encode2(progress);

                destLen -= outStream.mRem;
                if (outStream.mOverflow)
                    return SZ_ERROR_OUTPUT_EOF;

                return res;
            }