Lines Matching +full:brotli +full:- +full:win +full:-
8 history. This function uses one-pass processing: when we find a backward
21 #include <brotli/types.h>
66 Note that the prefix code here is built from the pre-LZ77 input, therefore
69 and thus have to assign a non-zero depth for each literal.
99 histogram_total = (input_size + kSampleRate - 1) / kSampleRate; in BuildAndStoreLiteralPrefixCode()
188 const size_t tail = insertlen - 2; in EmitInsertLen()
189 const uint32_t nbits = Log2FloorNonZero(tail) - 1u; in EmitInsertLen()
193 BrotliWriteBits(nbits, tail - (prefix << nbits), storage_ix, storage); in EmitInsertLen()
196 const size_t tail = insertlen - 66; in EmitInsertLen()
200 BrotliWriteBits(nbits, tail - ((size_t)1 << nbits), storage_ix, storage); in EmitInsertLen()
204 BrotliWriteBits(12, insertlen - 2114, storage_ix, storage); in EmitInsertLen()
217 BrotliWriteBits(14, insertlen - 6210, storage_ix, storage); in EmitLongInsertLen()
221 BrotliWriteBits(24, insertlen - 22594, storage_ix, storage); in EmitLongInsertLen()
237 const size_t tail = copylen - 6; in EmitCopyLen()
238 const uint32_t nbits = Log2FloorNonZero(tail) - 1u; in EmitCopyLen()
242 BrotliWriteBits(nbits, tail - (prefix << nbits), storage_ix, storage); in EmitCopyLen()
245 const size_t tail = copylen - 70; in EmitCopyLen()
249 BrotliWriteBits(nbits, tail - ((size_t)1 << nbits), storage_ix, storage); in EmitCopyLen()
253 BrotliWriteBits(24, copylen - 2118, storage_ix, storage); in EmitCopyLen()
265 BrotliWriteBits(depth[copylen - 4], bits[copylen - 4], storage_ix, storage); in EmitCopyLenLastDistance()
266 ++histo[copylen - 4]; in EmitCopyLenLastDistance()
268 const size_t tail = copylen - 8; in EmitCopyLenLastDistance()
269 const uint32_t nbits = Log2FloorNonZero(tail) - 1; in EmitCopyLenLastDistance()
273 BrotliWriteBits(nbits, tail - (prefix << nbits), storage_ix, storage); in EmitCopyLenLastDistance()
276 const size_t tail = copylen - 8; in EmitCopyLenLastDistance()
284 const size_t tail = copylen - 72; in EmitCopyLenLastDistance()
288 BrotliWriteBits(nbits, tail - ((size_t)1 << nbits), storage_ix, storage); in EmitCopyLenLastDistance()
294 BrotliWriteBits(24, copylen - 2120, storage_ix, storage); in EmitCopyLenLastDistance()
307 const uint32_t nbits = Log2FloorNonZero(d) - 1u; in EmitDistance()
310 const size_t distcode = 2 * (nbits - 1) + prefix + 80; in EmitDistance()
312 BrotliWriteBits(nbits, d - offset, storage_ix, storage); in EmitDistance()
339 BrotliWriteBits(2, nibbles - 4, storage_ix, storage); in BrotliStoreMetaBlockHeader()
340 BrotliWriteBits(nibbles * 4, len - 1, storage_ix, storage); in BrotliStoreMetaBlockHeader()
350 size_t n_changed_bits = BROTLI_MIN(size_t, n_bits, 8 - n_unchanged_bits); in UpdateBits()
353 (~((1u << total_bits) - 1u)) | ((1u << n_unchanged_bits) - 1u); in UpdateBits()
355 uint32_t changed_bits = bits & ((1u << n_changed_bits) - 1u); in UpdateBits()
358 n_bits -= n_changed_bits; in UpdateBits()
367 const size_t mask = (1u << bitpos) - 1; in RewindBitPosition()
381 const size_t total = (len + kSampleRate - 1) / kSampleRate; in ShouldMergeBlock()
384 r -= (double)histo[i] * (depths[i] + FastLog2(histo[i])); in ShouldMergeBlock()
396 const size_t compressed = (size_t)(next_emit - metablock_start); in ShouldUseUncompressedMode()
407 const size_t len = (size_t)(end - begin); in EmitUncompressedMetaBlock()
450 /* Save the bit position of the MLEN field of the meta-block header, so that in BrotliCompressFragmentFastImpl()
451 we can update it later if we decide to extend this meta-block. */ in BrotliCompressFragmentFastImpl()
462 const size_t shift = 64u - table_bits; in BrotliCompressFragmentFastImpl()
473 /* Store the pre-compressed command and distance prefix codes. */ in BrotliCompressFragmentFastImpl()
491 last_distance = -1; in BrotliCompressFragmentFastImpl()
496 sure that all distances are at most window size - 16. in BrotliCompressFragmentFastImpl()
499 const size_t len_limit = BROTLI_MIN(size_t, block_size - kMinMatchLen, in BrotliCompressFragmentFastImpl()
500 input_size - kInputMarginBytes); in BrotliCompressFragmentFastImpl()
505 /* Step 1: Scan forward in the input looking for a 5-byte-long match. in BrotliCompressFragmentFastImpl()
513 bookkeeping, but for non-compressible data (such as JPEG) it's a huge in BrotliCompressFragmentFastImpl()
514 win since the compressor quickly "realizes" the data is incompressible in BrotliCompressFragmentFastImpl()
518 last match; dividing it by 32 (i.e. right-shifting by five) gives the in BrotliCompressFragmentFastImpl()
536 candidate = ip - last_distance; in BrotliCompressFragmentFastImpl()
539 table[hash] = (int)(ip - base_ip); in BrotliCompressFragmentFastImpl()
547 table[hash] = (int)(ip - base_ip); in BrotliCompressFragmentFastImpl()
552 if (ip - candidate > MAX_DISTANCE) goto trawl; in BrotliCompressFragmentFastImpl()
560 /* We have a 5-byte match at ip, and we need to emit bytes in in BrotliCompressFragmentFastImpl()
564 candidate + 5, ip + 5, (size_t)(ip_end - ip) - 5); in BrotliCompressFragmentFastImpl()
565 int distance = (int)(base - candidate); /* > 0 */ in BrotliCompressFragmentFastImpl()
566 size_t insert = (size_t)(base - next_emit); in BrotliCompressFragmentFastImpl()
574 EmitUncompressedMetaBlock(metablock_start, base, mlen_storage_ix - 3, in BrotliCompressFragmentFastImpl()
576 input_size -= (size_t)(base - input); in BrotliCompressFragmentFastImpl()
605 uint64_t input_bytes = BROTLI_UNALIGNED_LOAD64LE(ip - 3); in BrotliCompressFragmentFastImpl()
608 table[prev_hash] = (int)(ip - base_ip - 3); in BrotliCompressFragmentFastImpl()
610 table[prev_hash] = (int)(ip - base_ip - 2); in BrotliCompressFragmentFastImpl()
612 table[prev_hash] = (int)(ip - base_ip - 1); in BrotliCompressFragmentFastImpl()
615 table[cur_hash] = (int)(ip - base_ip); in BrotliCompressFragmentFastImpl()
620 /* We have a 5-byte match at ip, and no need to emit any literal bytes in BrotliCompressFragmentFastImpl()
624 candidate + 5, ip + 5, (size_t)(ip_end - ip) - 5); in BrotliCompressFragmentFastImpl()
625 if (ip - candidate > MAX_DISTANCE) break; in BrotliCompressFragmentFastImpl()
627 last_distance = (int)(base - candidate); /* > 0 */ in BrotliCompressFragmentFastImpl()
642 uint64_t input_bytes = BROTLI_UNALIGNED_LOAD64LE(ip - 3); in BrotliCompressFragmentFastImpl()
645 table[prev_hash] = (int)(ip - base_ip - 3); in BrotliCompressFragmentFastImpl()
647 table[prev_hash] = (int)(ip - base_ip - 2); in BrotliCompressFragmentFastImpl()
649 table[prev_hash] = (int)(ip - base_ip - 1); in BrotliCompressFragmentFastImpl()
652 table[cur_hash] = (int)(ip - base_ip); in BrotliCompressFragmentFastImpl()
663 input_size -= block_size; in BrotliCompressFragmentFastImpl()
666 /* Decide if we want to continue this meta-block instead of emitting the in BrotliCompressFragmentFastImpl()
667 last insert-only command. */ in BrotliCompressFragmentFastImpl()
672 /* Update the size of the current meta-block and continue emitting commands. in BrotliCompressFragmentFastImpl()
676 UpdateBits(20, (uint32_t)(total_block_size - 1), mlen_storage_ix, storage); in BrotliCompressFragmentFastImpl()
682 const size_t insert = (size_t)(ip_end - next_emit); in BrotliCompressFragmentFastImpl()
689 EmitUncompressedMetaBlock(metablock_start, ip_end, mlen_storage_ix - 3, in BrotliCompressFragmentFastImpl()
701 /* If we have more data, write a new meta-block header and prefix codes and in BrotliCompressFragmentFastImpl()
707 /* Save the bit position of the MLEN field of the meta-block header, so that in BrotliCompressFragmentFastImpl()
708 we can update it later if we decide to extend this meta-block. */ in BrotliCompressFragmentFastImpl()
774 if (*storage_ix - initial_storage_ix > 31 + (input_size << 3)) { in FOR_TABLE_BITS_()