Lines Matching refs:hash
1590 static unsigned hash_init(Hash * hash, unsigned windowsize) in hash_init() argument
1593 hash->head = (int *)lodepng_malloc(sizeof(int) * HASH_NUM_VALUES); in hash_init()
1594 hash->val = (int *)lodepng_malloc(sizeof(int) * windowsize); in hash_init()
1595 hash->chain = (unsigned short *)lodepng_malloc(sizeof(unsigned short) * windowsize); in hash_init()
1597 hash->zeros = (unsigned short *)lodepng_malloc(sizeof(unsigned short) * windowsize); in hash_init()
1598 hash->headz = (int *)lodepng_malloc(sizeof(int) * (MAX_SUPPORTED_DEFLATE_LENGTH + 1)); in hash_init()
1599 hash->chainz = (unsigned short *)lodepng_malloc(sizeof(unsigned short) * windowsize); in hash_init()
1601 … if(!hash->head || !hash->chain || !hash->val || !hash->headz || !hash->chainz || !hash->zeros) { in hash_init()
1606 for(i = 0; i != HASH_NUM_VALUES; ++i) hash->head[i] = -1; in hash_init()
1607 for(i = 0; i != windowsize; ++i) hash->val[i] = -1; in hash_init()
1608 …for(i = 0; i != windowsize; ++i) hash->chain[i] = i; /*same value as index indicates uninitialized… in hash_init()
1610 for(i = 0; i <= MAX_SUPPORTED_DEFLATE_LENGTH; ++i) hash->headz[i] = -1; in hash_init()
1611 …for(i = 0; i != windowsize; ++i) hash->chainz[i] = i; /*same value as index indicates uninitialize… in hash_init()
1616 static void hash_cleanup(Hash * hash) in hash_cleanup() argument
1618 lodepng_free(hash->head); in hash_cleanup()
1619 lodepng_free(hash->val); in hash_cleanup()
1620 lodepng_free(hash->chain); in hash_cleanup()
1622 lodepng_free(hash->zeros); in hash_cleanup()
1623 lodepng_free(hash->headz); in hash_cleanup()
1624 lodepng_free(hash->chainz); in hash_cleanup()
1662 static void updateHashChain(Hash * hash, size_t wpos, unsigned hashval, unsigned short numzeros) in updateHashChain() argument
1664 hash->val[wpos] = (int)hashval; in updateHashChain()
1665 if(hash->head[hashval] != -1) hash->chain[wpos] = hash->head[hashval]; in updateHashChain()
1666 hash->head[hashval] = (int)wpos; in updateHashChain()
1668 hash->zeros[wpos] = numzeros; in updateHashChain()
1669 if(hash->headz[numzeros] != -1) hash->chainz[wpos] = hash->headz[numzeros]; in updateHashChain()
1670 hash->headz[numzeros] = (int)wpos; in updateHashChain()
1682 static unsigned encodeLZ77(uivector * out, Hash * hash, in encodeLZ77() argument
1724 updateHashChain(hash, wpos, hashval, numzeros); in encodeLZ77()
1730 hashpos = hash->chain[wpos]; in encodeLZ77()
1749 unsigned skip = hash->zeros[hashpos]; in encodeLZ77()
1770 if(hashpos == hash->chain[hashpos]) break; in encodeLZ77()
1773 hashpos = hash->chainz[hashpos]; in encodeLZ77()
1774 if(hash->zeros[hashpos] != numzeros) break; in encodeLZ77()
1777 hashpos = hash->chain[hashpos]; in encodeLZ77()
1779 if(hash->val[hashpos] != (int)hashval) break; in encodeLZ77()
1800 …hash->head[hashval] = -1; /*the same hashchain update will be done, this ensures no wrong alterati… in encodeLZ77()
1801 hash->headz[numzeros] = -1; /*idem*/ in encodeLZ77()
1830 updateHashChain(hash, wpos, hashval, numzeros); in encodeLZ77()
1905 static unsigned deflateDynamic(LodePNGBitWriter * writer, Hash * hash, in deflateDynamic() argument
1967 error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize, in deflateDynamic()
2133 static unsigned deflateFixed(LodePNGBitWriter * writer, Hash * hash, in deflateFixed() argument
2159 error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize, in deflateFixed()
2185 Hash hash; in lodepng_deflatev() local
2203 error = hash_init(&hash, settings->windowsize); in lodepng_deflatev()
2212 … if(settings->btype == 1) error = deflateFixed(&writer, &hash, in, start, end, settings, final); in lodepng_deflatev()
2213 …else if(settings->btype == 2) error = deflateDynamic(&writer, &hash, in, start, end, settings, fin… in lodepng_deflatev()
2217 hash_cleanup(&hash); in lodepng_deflatev()