Exemplo n.º 1
0
 public static void SetStreamDecode(StreamDecodeT *lz4sd, byte *dictionary, int dictSize)
 {
     lz4sd->PrefixSize   = (uint)dictSize;
     lz4sd->PrefixEnd    = dictionary + dictSize;
     lz4sd->ExternalDict = null;
     lz4sd->ExtDictSize  = 0;
 }
Exemplo n.º 2
0
        public static int DecompressFastContinue(StreamDecodeT *lz4sd, byte *source, byte *dest, int originalSize)
        {
            int result;

            if (lz4sd->PrefixEnd == dest)
            {
                result = DecompressGeneric(
                    source,
                    dest,
                    0,
                    originalSize,
                    EndConditionDirective.EndOnOutputSize,
                    EarlyEndDirective.Full,
                    0,
                    DictDirective.UsingExtDict,
                    lz4sd->PrefixEnd - lz4sd->PrefixSize,
                    lz4sd->ExternalDict,
                    (int)lz4sd->ExtDictSize);

                if (result <= 0)
                {
                    return(result);
                }

                lz4sd->PrefixSize += (uint)originalSize;
                lz4sd->PrefixEnd  += originalSize;
            }
            else
            {
                lz4sd->ExtDictSize  = lz4sd->PrefixSize;
                lz4sd->ExternalDict = lz4sd->PrefixEnd - lz4sd->ExtDictSize;

                result = DecompressGeneric(
                    source,
                    dest,
                    0,
                    originalSize,
                    EndConditionDirective.EndOnOutputSize,
                    EarlyEndDirective.Full,
                    0,
                    DictDirective.UsingExtDict,
                    dest,
                    lz4sd->ExternalDict,
                    (int)lz4sd->ExtDictSize);

                if (result <= 0)
                {
                    return(result);
                }

                lz4sd->PrefixSize = (uint)originalSize;
                lz4sd->PrefixEnd  = dest + originalSize;
            }

            return(result);
        }