コード例 #1
0
        public unsafe void Init(Stream stream, CompressionMode mode, LZMAOptionLZMA *opts)
        {
            _compressedStream = stream;
            _mode             = mode;

            _isClosed = false;

            _zstreamBuff   = new byte[sizeof(LZMAStreamNative)];
            _zstreamHandle = GCHandle.Alloc(_zstreamBuff, GCHandleType.Pinned);
            _zstream       = (LZMAStreamNative *)_zstreamHandle.AddrOfPinnedObject().ToPointer();

            _tmpBuffer       = new byte[BufferSize];
            _tmpBufferHandle = GCHandle.Alloc(_tmpBuffer, GCHandleType.Pinned);
            _tmpBufferPtr    = _tmpBufferHandle.AddrOfPinnedObject().ToPointer();

            LZMAStatus ret;

            switch (mode)
            {
            case CompressionMode.Compress:
                // We will always use one filter, + 1 to mark the end of the filter array
                var filters = stackalloc LZMAFilter[2];
                filters[0].id      = LZMANative.LZMA_FILTER_LZMA2;
                filters[0].options = opts;
                filters[1].id      = LZMANative.LZMA_VLI_UNKNOWN;

                ret = LZMANative.lzma_stream_encoder(_zstream, filters, LZMACheck.LZMA_CHECK_CRC64);

                if (ret != LZMAStatus.LZMA_OK)
                {
                    throw new ArgumentException(string.Format("Unable to init LZMA decoder. Return code: {0}", ret));
                }

                _zstream->next_out  = _tmpBufferPtr;
                _zstream->avail_out = (IntPtr)_tmpBuffer.Length;

                break;

            case CompressionMode.Decompress:
                ret = LZMANative.lzma_auto_decoder(_zstream, 1024 * 1024 * 1024, 0);

                if (ret != LZMAStatus.LZMA_OK)
                {
                    throw new ArgumentException(string.Format("Unable to init LZMA decoder. Return code: {0}", ret));
                }
                break;
            }
        }
コード例 #2
0
    public unsafe void Init(Stream stream, CompressionMode mode, LZMAOptionLZMA *opts)
    {
      _compressedStream = stream;
      _mode = mode;

      _isClosed = false;

      _zstreamBuff = new byte[sizeof(LZMAStreamNative)];
      _zstreamHandle = GCHandle.Alloc(_zstreamBuff, GCHandleType.Pinned);
      _zstream = (LZMAStreamNative*)_zstreamHandle.AddrOfPinnedObject().ToPointer();

      _tmpBuffer = new byte[BufferSize];
      _tmpBufferHandle = GCHandle.Alloc(_tmpBuffer, GCHandleType.Pinned);
      _tmpBufferPtr = _tmpBufferHandle.AddrOfPinnedObject().ToPointer();

      LZMAStatus ret;
      switch (mode)
      {
        case CompressionMode.Compress:
          // We will always use one filter, + 1 to mark the end of the filter array
          var filters = stackalloc LZMAFilter[2];
          filters[0].id = LZMANative.LZMA_FILTER_LZMA2;
          filters[0].options = opts;
          filters[1].id = LZMANative.LZMA_VLI_UNKNOWN;

          ret = LZMANative.lzma_stream_encoder(_zstream, filters, LZMACheck.LZMA_CHECK_CRC64);

          if (ret != LZMAStatus.LZMA_OK)
            throw new ArgumentException(string.Format("Unable to init LZMA decoder. Return code: {0}", ret));

          _zstream->next_out = _tmpBufferPtr;
          _zstream->avail_out = (IntPtr)_tmpBuffer.Length;

          break;
        case CompressionMode.Decompress:
          ret = LZMANative.lzma_auto_decoder(_zstream, 1024 * 1024 * 1024, 0);

          if (ret != LZMAStatus.LZMA_OK)
            throw new ArgumentException(string.Format("Unable to init LZMA decoder. Return code: {0}", ret));
          break;
      }

    }
コード例 #3
0
        public unsafe void Init(Stream stream, CompressionMode mode, uint preset)
        {
            _compressedStream = stream;
            _mode             = mode;

            _isClosed = false;

            _zstreamBuff   = new byte[sizeof(LZMAStreamNative)];
            _zstreamHandle = GCHandle.Alloc(_zstreamBuff, GCHandleType.Pinned);
            _zstream       = (LZMAStreamNative *)_zstreamHandle.AddrOfPinnedObject().ToPointer();

            _tmpBuffer       = new byte[BufferSize];
            _tmpBufferHandle = GCHandle.Alloc(_tmpBuffer, GCHandleType.Pinned);
            _tmpBufferPtr    = _tmpBufferHandle.AddrOfPinnedObject().ToPointer();

            LZMAStatus ret;

            switch (mode)
            {
            case CompressionMode.Compress:
                ret = LZMANative.lzma_easy_encoder(_zstream, preset, LZMACheck.LZMA_CHECK_CRC64);

                if (ret != LZMAStatus.LZMA_OK)
                {
                    throw new ArgumentException(string.Format("Unable to init LZMA decoder. Return code: {0}", ret));
                }

                _zstream->next_out  = _tmpBufferPtr;
                _zstream->avail_out = (IntPtr)_tmpBuffer.Length;

                break;

            case CompressionMode.Decompress:
                ret = LZMANative.lzma_auto_decoder(_zstream, 1024 * 1024 * 1024, 0);

                if (ret != LZMAStatus.LZMA_OK)
                {
                    throw new ArgumentException(string.Format("Unable to init LZMA decoder. Return code: {0}", ret));
                }
                break;
            }
        }
コード例 #4
0
    public unsafe void Init(Stream stream, CompressionMode mode, uint preset)
    {
      _compressedStream = stream;
      _mode = mode;

      _isClosed = false;

      _zstreamBuff = new byte[sizeof(LZMAStreamNative)];
      _zstreamHandle = GCHandle.Alloc(_zstreamBuff, GCHandleType.Pinned);
      _zstream = (LZMAStreamNative*)_zstreamHandle.AddrOfPinnedObject().ToPointer();

      _tmpBuffer = new byte[BufferSize];
      _tmpBufferHandle = GCHandle.Alloc(_tmpBuffer, GCHandleType.Pinned);
      _tmpBufferPtr = _tmpBufferHandle.AddrOfPinnedObject().ToPointer();

      LZMAStatus ret;
      switch (mode)
      {
        case CompressionMode.Compress:
          ret = LZMANative.lzma_easy_encoder(_zstream, preset, LZMACheck.LZMA_CHECK_CRC64);

          if (ret != LZMAStatus.LZMA_OK)
            throw new ArgumentException(string.Format("Unable to init LZMA decoder. Return code: {0}", ret));

          _zstream->next_out = _tmpBufferPtr;
          _zstream->avail_out = (IntPtr)_tmpBuffer.Length;

          break;
        case CompressionMode.Decompress:
          ret = LZMANative.lzma_auto_decoder(_zstream, 1024 * 1024 * 1024, 0);

          if (ret != LZMAStatus.LZMA_OK)
            throw new ArgumentException(string.Format("Unable to init LZMA decoder. Return code: {0}", ret));
          break;
      }

    }
コード例 #5
0
 public static extern unsafe LZMAStatus lzma_easy_encoder(LZMAStreamNative *strm, uint preset, LZMACheck check);
コード例 #6
0
 public static extern unsafe LZMAStatus lzma_alone_encoder(LZMAStreamNative *strm, ref LZMAOptionLZMA options);
コード例 #7
0
 public static extern unsafe LZMAStatus lzma_code(LZMAStreamNative *strm, LZMAAction action);
コード例 #8
0
 public static extern unsafe LZMAStatus lzma_auto_decoder(LZMAStreamNative *strm, ulong memlimit, uint flags);
コード例 #9
0
 public static extern unsafe LZMAStatus lzma_memlimit_set(LZMAStreamNative *strm, ulong memlimit);
コード例 #10
0
 public static extern unsafe ulong lzma_memlimit_get(LZMAStreamNative *strm);
コード例 #11
0
 public static extern unsafe ulong lzma_memusage(LZMAStreamNative *strm);
コード例 #12
0
 public static extern unsafe LZMAStatus lzma_stream_encoder(LZMAStreamNative *strm, void *filters,
                                                            LZMACheck check);