Exemplo n.º 1
0
 /// <summary>Creates new instance of <see cref="LZ4HighChainEncoder"/></summary>
 /// <param name="level">Compression level.</param>
 /// <param name="blockSize">Block size.</param>
 /// <param name="extraBlocks">Number of extra blocks.</param>
 public LZ4HighChainEncoder(LZ4Level level, int blockSize, int extraBlocks = 0) :
     base(true, blockSize, extraBlocks)
 {
     if (level < LZ4Level.L03_HC)
     {
         level = LZ4Level.L03_HC;
     }
     if (level > LZ4Level.L12_MAX)
     {
         level = LZ4Level.L12_MAX;
     }
     _context = (LZ4Context *)Mem.AllocZero(sizeof(LZ4Context));
     LZ4_64_HC.LZ4_resetStreamHC(_context, (int)level);
 }
Exemplo n.º 2
0
        /// <summary>Compresses data from one buffer into another.</summary>
        /// <param name="source">Input buffer.</param>
        /// <param name="sourceLength">Length of input buffer.</param>
        /// <param name="target">Output buffer.</param>
        /// <param name="targetLength">Output buffer length.</param>
        /// <param name="level">Compression level.</param>
        /// <returns>Number of bytes written, or negative value if output buffer is too small.</returns>
        public static unsafe int Encode(
            byte *source, int sourceLength,
            byte *target, int targetLength,
            LZ4Level level = LZ4Level.L00_FAST)
        {
            if (sourceLength <= 0)
            {
                return(0);
            }

            var encoded =
                level == LZ4Level.L00_FAST
                                        ? LZ4_64.LZ4_compress_default(source, target, sourceLength, targetLength)
                                        : LZ4_64_HC.LZ4_compress_HC(
                    source, target, sourceLength, targetLength, (int)level);

            return(encoded <= 0 ? -1 : encoded);
        }
Exemplo n.º 3
0
 /// <inheritdoc />
 protected override int CopyDict(byte *target, int length) =>
 LZ4_64_HC.LZ4_saveDictHC(_context, target, length);
Exemplo n.º 4
0
 /// <inheritdoc />
 protected override int EncodeBlock(
     byte *source, int sourceLength, byte *target, int targetLength) =>
 LZ4_64_HC.LZ4_compress_HC_continue(
     _context, source, target, sourceLength, targetLength);
 protected override int CopyDict(byte *buffer, int length) =>
 LZ4_64_HC.LZ4_saveDictHC(_context, buffer, length);