diff options
Diffstat (limited to 'cache.c')
-rw-r--r-- | cache.c | 52 |
1 files changed, 27 insertions, 25 deletions
@@ -23,40 +23,41 @@ Author: jyrki.alakuijala@gmail.com (Jyrki Alakuijala) #include <stdio.h> #include <stdlib.h> -#ifdef USE_LONGEST_MATCH_CACHE +#ifdef ZOPFLI_LONGEST_MATCH_CACHE -void InitLongestMatchCache(size_t blocksize, LongestMatchCache* lmc) { +void ZopfliInitCache(size_t blocksize, ZopfliLongestMatchCache* lmc) { size_t i; lmc->length = (unsigned short*)malloc(sizeof(unsigned short) * blocksize); lmc->dist = (unsigned short*)malloc(sizeof(unsigned short) * blocksize); /* Rather large amount of memory. */ - lmc->sublen = (unsigned char*)malloc(NUM_CACHED_LENGTHS * 3 * blocksize); + lmc->sublen = (unsigned char*)malloc(ZOPFLI_CACHE_LENGTH * 3 * blocksize); /* length > 0 and dist 0 is invalid combination, which indicates on purpose that this cache value is not filled in yet. */ for (i = 0; i < blocksize; i++) lmc->length[i] = 1; for (i = 0; i < blocksize; i++) lmc->dist[i] = 0; - for (i = 0; i < NUM_CACHED_LENGTHS * blocksize * 3; i++) lmc->sublen[i] = 0; + for (i = 0; i < ZOPFLI_CACHE_LENGTH * blocksize * 3; i++) lmc->sublen[i] = 0; } -void CleanLongestMatchCache(LongestMatchCache* lmc) { +void ZopfliCleanCache(ZopfliLongestMatchCache* lmc) { free(lmc->length); free(lmc->dist); free(lmc->sublen); } -void SublenToCache(const unsigned short* sublen, size_t pos, size_t length, - LongestMatchCache* lmc) { +void ZopfliSublenToCache(const unsigned short* sublen, + size_t pos, size_t length, + ZopfliLongestMatchCache* lmc) { size_t i; size_t j = 0; unsigned bestlength = 0; unsigned char* cache; -#if NUM_CACHED_LENGTHS == 0 +#if ZOPFLI_CACHE_LENGTH == 0 return; #endif - cache = &lmc->sublen[NUM_CACHED_LENGTHS * pos * 3]; + cache = &lmc->sublen[ZOPFLI_CACHE_LENGTH * pos * 3]; if (length < 3) return; for (i = 3; i <= length; i++) { if (i == length || sublen[i] != sublen[i + 1]) { @@ -65,30 +66,31 @@ void SublenToCache(const unsigned short* sublen, size_t pos, size_t length, cache[j * 3 + 2] = (sublen[i] >> 8) % 256; bestlength = i; j++; - if (j >= NUM_CACHED_LENGTHS) break; + if (j >= ZOPFLI_CACHE_LENGTH) break; } } - if (j < NUM_CACHED_LENGTHS) { + if (j < ZOPFLI_CACHE_LENGTH) { assert(bestlength == length); - cache[(NUM_CACHED_LENGTHS - 1) * 3] = bestlength - 3; + cache[(ZOPFLI_CACHE_LENGTH - 1) * 3] = bestlength - 3; } else { assert(bestlength <= length); } - assert(bestlength == MaxCachedSublen(lmc, pos, length)); + assert(bestlength == ZopfliMaxCachedSublen(lmc, pos, length)); } -void CacheToSublen(const LongestMatchCache* lmc, size_t pos, size_t length, - unsigned short* sublen) { +void ZopfliCacheToSublen(const ZopfliLongestMatchCache* lmc, + size_t pos, size_t length, + unsigned short* sublen) { size_t i, j; - unsigned maxlength = MaxCachedSublen(lmc, pos, length); + unsigned maxlength = ZopfliMaxCachedSublen(lmc, pos, length); unsigned prevlength = 0; unsigned char* cache; -#if NUM_CACHED_LENGTHS == 0 +#if ZOPFLI_CACHE_LENGTH == 0 return; #endif if (length < 3) return; - cache = &lmc->sublen[NUM_CACHED_LENGTHS * pos * 3]; - for (j = 0; j < NUM_CACHED_LENGTHS; j++) { + cache = &lmc->sublen[ZOPFLI_CACHE_LENGTH * pos * 3]; + for (j = 0; j < ZOPFLI_CACHE_LENGTH; j++) { unsigned length = cache[j * 3] + 3; unsigned dist = cache[j * 3 + 1] + 256 * cache[j * 3 + 2]; for (i = prevlength; i <= length; i++) { @@ -102,16 +104,16 @@ void CacheToSublen(const LongestMatchCache* lmc, size_t pos, size_t length, /* Returns the length up to which could be stored in the cache. */ -unsigned MaxCachedSublen(const LongestMatchCache* lmc, - size_t pos, size_t length) { +unsigned ZopfliMaxCachedSublen(const ZopfliLongestMatchCache* lmc, + size_t pos, size_t length) { unsigned char* cache; -#if NUM_CACHED_LENGTHS == 0 +#if ZOPFLI_CACHE_LENGTH == 0 return 0; #endif - cache = &lmc->sublen[NUM_CACHED_LENGTHS * pos * 3]; + cache = &lmc->sublen[ZOPFLI_CACHE_LENGTH * pos * 3]; (void)length; if (cache[1] == 0 && cache[2] == 0) return 0; /* No sublen cached. */ - return cache[(NUM_CACHED_LENGTHS - 1) * 3] + 3; + return cache[(ZOPFLI_CACHE_LENGTH - 1) * 3] + 3; } -#endif /* USE_LONGEST_MATCH_CACHE */ +#endif /* ZOPFLI_LONGEST_MATCH_CACHE */ |