summaryrefslogtreecommitdiffstats
path: root/lz4.c
diff options
context:
space:
mode:
authorYann Collet <yann.collet.73@gmail.com>2014-09-13 18:49:01 (GMT)
committerYann Collet <yann.collet.73@gmail.com>2014-09-13 18:49:01 (GMT)
commit56c2b79ed015d4b154d4bd3a9cab27e7c613ba51 (patch)
treec2bf30ba320863f53e583ce4326b231dc331ecf7 /lz4.c
parent38912f55e3c3b782529c2dd1e682d6af7c8bd052 (diff)
downloadlz4-56c2b79ed015d4b154d4bd3a9cab27e7c613ba51.zip
lz4-56c2b79ed015d4b154d4bd3a9cab27e7c613ba51.tar.gz
lz4-56c2b79ed015d4b154d4bd3a9cab27e7c613ba51.tar.bz2
Frame decompression speed optimization
Diffstat (limited to 'lz4.c')
-rw-r--r--lz4.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/lz4.c b/lz4.c
index 4e2026e..b39a91d 100644
--- a/lz4.c
+++ b/lz4.c
@@ -1153,14 +1153,29 @@ Advanced decoding functions :
the dictionary must be explicitly provided within parameters
*/
+FORCE_INLINE int LZ4_decompress_usingDict_generic(const char* source, char* dest, int compressedSize, int maxOutputSize, int safe, const char* dictStart, int dictSize)
+{
+ if ((dictStart+dictSize == source) && (dictSize >= (int)(64 KB - 1)))
+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, withPrefix64k, NULL, 64 KB);
+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, usingExtDict, dictStart, dictSize);
+}
+
int LZ4_decompress_safe_usingDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize)
{
- return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, usingExtDict, dictStart, dictSize);
+ //return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, usingExtDict, dictStart, dictSize);
+ return LZ4_decompress_usingDict_generic(source, dest, compressedSize, maxOutputSize, 1, dictStart, dictSize);
}
int LZ4_decompress_fast_usingDict(const char* source, char* dest, int originalSize, const char* dictStart, int dictSize)
{
- return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, full, 0, usingExtDict, dictStart, dictSize);
+ //return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, full, 0, usingExtDict, dictStart, dictSize);
+ return LZ4_decompress_usingDict_generic(source, dest, 0, originalSize, 0, dictStart, dictSize);
+}
+
+/* debug function */
+int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize)
+{
+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, usingExtDict, dictStart, dictSize);
}