MCPcopy Create free account
hub / github.com/ValveSoftware/openvr / deflateFixed

Function deflateFixed

samples/shared/lodepng.cpp:1940–1986  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1938}
1939
1940static unsigned deflateFixed(ucvector* out, size_t* bp, Hash* hash,
1941 const unsigned char* data,
1942 size_t datapos, size_t dataend,
1943 const LodePNGCompressSettings* settings, unsigned final)
1944{
1945 HuffmanTree tree_ll; /*tree for literal values and length codes*/
1946 HuffmanTree tree_d; /*tree for distance codes*/
1947
1948 unsigned BFINAL = final;
1949 unsigned error = 0;
1950 size_t i;
1951
1952 HuffmanTree_init(&tree_ll);
1953 HuffmanTree_init(&tree_d);
1954
1955 generateFixedLitLenTree(&tree_ll);
1956 generateFixedDistanceTree(&tree_d);
1957
1958 addBitToStream(bp, out, BFINAL);
1959 addBitToStream(bp, out, 1); /*first bit of BTYPE*/
1960 addBitToStream(bp, out, 0); /*second bit of BTYPE*/
1961
1962 if(settings->use_lz77) /*LZ77 encoded*/
1963 {
1964 uivector lz77_encoded;
1965 uivector_init(&lz77_encoded);
1966 error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize,
1967 settings->minmatch, settings->nicematch, settings->lazymatching);
1968 if(!error) writeLZ77data(bp, out, &lz77_encoded, &tree_ll, &tree_d);
1969 uivector_cleanup(&lz77_encoded);
1970 }
1971 else /*no LZ77, but still will be Huffman compressed*/
1972 {
1973 for(i = datapos; i < dataend; i++)
1974 {
1975 addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, data[i]), HuffmanTree_getLength(&tree_ll, data[i]));
1976 }
1977 }
1978 /*add END code*/
1979 if(!error) addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, 256), HuffmanTree_getLength(&tree_ll, 256));
1980
1981 /*cleanup*/
1982 HuffmanTree_cleanup(&tree_ll);
1983 HuffmanTree_cleanup(&tree_d);
1984
1985 return error;
1986}
1987
1988static unsigned lodepng_deflatev(ucvector* out, const unsigned char* in, size_t insize,
1989 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