public static void SetStreamDecode(StreamDecodeT *lz4sd, byte *dictionary, int dictSize) { lz4sd->PrefixSize = (uint)dictSize; lz4sd->PrefixEnd = dictionary + dictSize; lz4sd->ExternalDict = null; lz4sd->ExtDictSize = 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); }