MCPcopy Create free account
hub / github.com/HiLab-git/SimpleCRF / deflateFixed

Function deflateFixed

dependency/densecrf/examples/lodepng.cpp:1969–2015  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1967}
1968
1969static unsigned deflateFixed(ucvector* out, size_t* bp, Hash* hash,
1970 const unsigned char* data,
1971 size_t datapos, size_t dataend,
1972 const LodePNGCompressSettings* settings, unsigned final)
1973{
1974 HuffmanTree tree_ll; /*tree for literal values and length codes*/
1975 HuffmanTree tree_d; /*tree for distance codes*/
1976
1977 unsigned BFINAL = final;
1978 unsigned error = 0;
1979 size_t i;
1980
1981 HuffmanTree_init(&tree_ll);
1982 HuffmanTree_init(&tree_d);
1983
1984 generateFixedLitLenTree(&tree_ll);
1985 generateFixedDistanceTree(&tree_d);
1986
1987 addBitToStream(bp, out, BFINAL);
1988 addBitToStream(bp, out, 1); /*first bit of BTYPE*/
1989 addBitToStream(bp, out, 0); /*second bit of BTYPE*/
1990
1991 if(settings->use_lz77) /*LZ77 encoded*/
1992 {
1993 uivector lz77_encoded;
1994 uivector_init(&lz77_encoded);
1995 error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize,
1996 settings->minmatch, settings->nicematch, settings->lazymatching);
1997 if(!error) writeLZ77data(bp, out, &lz77_encoded, &tree_ll, &tree_d);
1998 uivector_cleanup(&lz77_encoded);
1999 }
2000 else /*no LZ77, but still will be Huffman compressed*/
2001 {
2002 for(i = datapos; i < dataend; ++i)
2003 {
2004 addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, data[i]), HuffmanTree_getLength(&tree_ll, data[i]));
2005 }
2006 }
2007 /*add END code*/
2008 if(!error) addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, 256), HuffmanTree_getLength(&tree_ll, 256));
2009
2010 /*cleanup*/
2011 HuffmanTree_cleanup(&tree_ll);
2012 HuffmanTree_cleanup(&tree_d);
2013
2014 return error;
2015}
2016
2017static unsigned lodepng_deflatev(ucvector* out, const unsigned char* in, size_t insize,
2018 const LodePNGCompressSettings* settings)

Callers 1

lodepng_deflatevFunction · 0.85

Calls 11

HuffmanTree_initFunction · 0.85
generateFixedLitLenTreeFunction · 0.85
uivector_initFunction · 0.85
encodeLZ77Function · 0.85
writeLZ77dataFunction · 0.85
uivector_cleanupFunction · 0.85
addHuffmanSymbolFunction · 0.85
HuffmanTree_getCodeFunction · 0.85
HuffmanTree_getLengthFunction · 0.85
HuffmanTree_cleanupFunction · 0.85

Tested by

no test coverage detected