aboutsummaryrefslogtreecommitdiff
path: root/c/enc
AgeCommit message (Collapse)AuthorFilesLines
2023-08-28tune memory manager for BROTLI_EXPERIMENTALEvgenii Kliuchnikov2-10/+5
PiperOrigin-RevId: 560703386
2023-08-21more tuning for BROTLI_EXPERIMENTAL + clean-on-oomv1.1.0rcEvgenii Kliuchnikov3-7/+14
PiperOrigin-RevId: 558771745
2023-08-18Move serialized dictionary feature behind the flag.Evgenii Kliuchnikov6-5/+38
BROTLI_SHARED_DICTIONARY_SERIALIZED enum value is a part of API, but it should not be used (will cause failures). Changing how serialized dictionaries work won't be considered as an API change, until this feature is enabled. Enabling this feature in the future will be considered as a "compatible" change. PiperOrigin-RevId: 558091676
2023-08-16Update comment; fixes #1061Evgenii Kliuchnikov1-2/+2
PiperOrigin-RevId: 557501089
2023-08-03speedup q5-9 on large filesEvgenii Kliuchnikov1-16/+17
PiperOrigin-RevId: 553440457
2023-08-02speedup encoder on q5-9 / 1MB+ filesEvgenii Kliuchnikov4-13/+51
PiperOrigin-RevId: 553087469
2023-07-20bake in runtime constantEvgenii Kliuchnikov3-12/+4
PiperOrigin-RevId: 549590409
2023-01-30Fix emitting 1-byte long metadata blockEvgenii Kliuchnikov1-1/+1
PiperOrigin-RevId: 505484299
2023-01-30speed up encoding by ~5 %Brotli1-21/+13
PiperOrigin-RevId: 505061835
2023-01-07Fix BrotliEncoderEstimatePeakMemoryUsage (#1002)Aron Parker1-0/+1
Fixes https://github.com/google/brotli/issues/1001
2023-01-04Fix MSVC warning (#998)Eugene Kliuchnikov1-2/+2
Fix #875
2022-11-17UpdateEvgenii Kliuchnikov41-397/+312
Documentation: - add note that brotli is a "stream" format, not an archive-like - regenerate .1 with Pandoc Build: - drop legacy "BROTLI_BUILD_PORTABLE" option - drop "BROTLI_SANITIZED" definition Code: - c: comb includes - c/enc: extract encoder state into separate header - c/enc: drop designated q10 codepath - c/enc: dealing better with flushing of empty stream - fix MSVC compilation API: - py: use library version instead of one in version.h - c: add plugable API to report consumed input / produced output - c/java: support "lean" prepared dictionaries (without copy of source)
2021-12-07Merge pull request #929 from jbms/fix-vla-parameterJyrki Alakuijala1-2/+2
Fix -Werror=vla-parameter errors with GCC 11.2.0
2021-11-10Prepare for copybara (#939)Eugene Kliuchnikov18-30/+244
Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
2021-09-14Fix -Werror=vla-parameter errors with GCC 11.2.0Jeremy Maitin-Shepard1-2/+2
2021-09-08Strip "./" in includes (#925)Eugene Kliuchnikov41-207/+207
Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
2021-08-18Update (#918)Eugene Kliuchnikov2-2/+2
Prepare to use copybara worklow.
2021-08-04Merge-in SharedDictionary feature (#916)Eugene Kliuchnikov11-22/+1565
Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
2021-07-29Update (#914)Eugene Kliuchnikov19-493/+624
* slimmer stack frames in encoder * fix MSAN problem in hasher_composite (not dangerous, only in large_window mode) * fix JNI decoder wrapper - power-of-two payloads fail to decode sometimes * reformat polyfil.js and decode_test.js
2021-06-23Fix VLA parameter warning (#893)Adrián Herrera Arcila1-2/+3
Make VLA buffer types consistent in declarations and definitions. Resolves build crash when using -Werror due to "vla-parameter" warning. Signed-off-by: Adrian Herrera <adr.her.arc.95@gmail.com>
2021-06-23Fix typo in hash_composite_inc.h (#903)Ikko Ashimine1-1/+1
defered -> deferred
2021-01-18Update (#852)Eugene Kliuchnikov10-97/+179
* Update * comments and clarifications in block_splitter * power-of-2 aligned allocations for Hasher * refresh decode.js from Java sources * disable JS build
2020-09-07Fix clang-10 compilation issue (#839)Dmitry Rozhkov1-1/+1
clang-10 throws the following error: In file included from external/org_brotli/c/enc/bit_cost.c:9: external/org_brotli/c/enc/./bit_cost.h:48:16: error: implicit conversion from 'size_t' (aka 'unsigned long') to 'double' may lose precision [-Werror,-Wimplicit-int-float-conversion] if (retval < sum) { ~ ^~~ 1 error generated. Make the conversion explicit.
2020-08-26Update (#826)Eugene Kliuchnikov7-125/+158
* IMPORTANT: decoder: fix potential overflow when input chunk is >2GiB * simplify max Huffman table size calculation * eliminate symbol duplicates (static arrays in .h files) * minor combing in research/ code
2020-05-15Update (#807)Eugene Kliuchnikov10-9/+12
- fix formatting - fix type conversion - fix no-op arithmetic with null-pointer - improve performance of hash_longest_match64 - go: detect read after close - java decoder: support compound dictionary - remove executable flag on non-scripts
2020-03-19Move TZCNT and BSR intrinsics to platform.h, add MSVC versions (#636)Clinton Ingram2-7/+4
2020-03-19Add HAVE_LOG2 build macro (#783)Cristi Vîjdea1-4/+11
* Add HAVE_LOG2 build macro Fixes #781 * Rename macro to BROTLI_HAVE_LOG2 and move comment for visibility
2019-05-03Update (#753)Eugene Kliuchnikov13-66/+101
* fix executable mode of decode.js * explain clang-analyser about non-nullability * fix "dead assignment" * rename proguard.cfg -> proguard.pgcfg
2019-04-12Update (#749)Eugene Kliuchnikov23-1651/+2514
Update: * Bazel: fix MSVC configuration * C: common: extended documentation and helpers around distance codes * C: common: enable BROTLI_DCHECK in "debug" builds * C: common: fix implicit trailing zero in `kPrefixSuffix` * C: dec: fix possible bit reader discharge for "large-window" mode * C: dec: simplify distance decoding via lookup table * C: dec: reuse decoder state members memory via union with lookup table * C: dec: add decoder state diagram * C: enc: clarify access to static dictionary * C: enc: improve static dictionary hash * C: enc: add "stream offset" parameter for parallel encoding * C: enc: reorganize hasher; now Q2-Q3 require exactly 256KiB to avoid global TCMalloc lock * C: enc: fix rare access to uninitialized data in ring-buffer * C: enc: reorganize logging / checks in `write_bits.h` * Java: dec: add "large-window" support * Java: dec: improve speed * Java: dec: debug and 32-bit mode are now activated via system properties * Java: dec: demystify some state variables (use better names) * Dictionary generator: add single input mode * Java: dec: modernize tests * Bazel: js: pick working commit for closure rules
2018-10-24Verbose CLI + start pulling "Shared-Brotli" (#722)Eugene Kliuchnikov6-17/+19
* Verbose CLI + start pulling "Shared-Brotli" * vesbose CLI output; fix #666 * pull `SHIFT` transforms; currently this is semantically dead code; later it will be used by "Shared-Brotli"
2018-10-16Fix typo / minor formatting (#716)Eugene Kliuchnikov10-105/+105
* Fix typo / minor formatting / pull computable constant to the place of use.
2018-09-13Update (#706)Eugene Kliuchnikov1-1/+2
Update * add ASAN/MSAN unaligned read specializations * add "brotli" prefix to u_uint64 type * increment version to 1.0.06 * fix CoverityScan "unused assignment" warning * fix JDK 8<->9 incompatibility * add encoder optimization for empty input * regenerate JS decoder * unbreak Travis builds
2018-06-20Update (#688)Eugene Kliuchnikov5-5/+432
* add rolling-composite-hasher for large-window mode * make API methods explicitly public
2018-06-09Update (#680)Eugene Kliuchnikov2-9/+4
* fix MSVC warnings * cleanups
2018-05-18Fix #671 (#672)Eugene Kliuchnikov1-6/+6
2018-05-03Update (#664)Eugene Kliuchnikov6-12/+15
* Update * fix ifdef style * get back to fine-compiler-version-based-macros (use Hedley) * fix q=0 histogram collection for very long copy/insert commands
2018-04-20Remove unprefixed macros from public headers (#662)Eugene Kliuchnikov1-1/+2
2018-04-13Update (#660)Eugene Kliuchnikov2-57/+92
* Update * improve q=1 compression on small files * fix "left shift before promotion" * fix osx Travis builds
2018-03-29Fix MSVC compilation (#657)v1.0.4v1.0Eugene Kliuchnikov1-3/+3
* tell bazel not to pass strict options to a fancy compiler * fix signed-unsigned comparison warning found by MSVC
2018-03-27Update (#656)Eugene Kliuchnikov4-46/+177
* proper fix for the "fall through" warning" * automatic NDIRECT/NPOSTFIX tuning (better compression) * fix unaligned access for `aarch64`-cross-`armhf` build * fix `aarch64` detection (10% decoder speedup) * expose `large_window` CLI option * make default window size 16MiB * ramp up version to 1.0.4
2018-03-20Update (#651)Eugene Kliuchnikov6-19/+63
* fix `bazel` build (ignore switch case fall-through) * add `NPOSTFIX` / `NDIRECT` encoder parameters * fix source file lists (add `params.h`) * fix bug in `durchschlag` * print clarifying messages wheb CLI argument parsing fails
2018-03-02Update (#643)v1.0.3Eugene Kliuchnikov4-59/+45
Update * make the zopflification aware of `NDIRECT`, `NPOSTFIX` (better compression in `font` mode) * add small and simple decoder tool * fix typo * Java: wrapper: make decoder channel more async-friendly Ramp up version to 1.0.3 / 1.0.3
2018-02-26New feature: "Large Window Brotli" (#640)Eugene Kliuchnikov44-715/+739
* New feature: "Large Window Brotli" By setting special encoder/decoder flag it is now possible to extend LZ-window up to 30 bits; though produced stream will not be RFC7932 compliant. Added new dictionary generator - "DSH". It combines speed of "Sieve" and quality of "DM". Plus utilities to prepare train corpora (remove unique strings). Improved compression ratio: now two sub-blocks could be stitched: the last copy command could be extended to span the next sub-block. Fixed compression ineffectiveness caused by floating numbers rounding and wrong cost heuristic. Other C changes: - combined / moved `context.h` to `common` - moved transforms to `common` - unified some aspects of code formatting - added an abstraction for encoder (static) dictionary - moved default allocator/deallocator functions to `common` brotli CLI: - window size is auto-adjusted if not specified explicitly Java: - added "eager" decoding both to JNI wrapper and pure decoder - huge speed-up of `DictionaryData` initialization * Add dictionaryless compressed dictionary * Fix `sources.lst` * Fix `sources.lst` and add a note that `libtool` is also required. * Update setup.py * Fix `EagerStreamTest` * Fix BUILD file * Add missing `libdivsufsort` dependency * Fix "unused parameter" warning.
2017-12-12Update (#630)Eugene Kliuchnikov48-418/+256
* merge {dec|enc}/port.h into common/platform.h * fix one-shot q=10 1-byte input compression * fix some unprefixed definitions * make hashers host-endianness-independent * extract enc/params.h from enc/quality.h * fix API documentation / typos * improve `BrotliEncoderMaxCompressedSize`
2017-11-28Update (#620)v1.0.2Eugene Kliuchnikov1-1/+9
* add autotools build * separate semantic and ABI version * extract sources.lst (used by CMake and Automake) * share pkgconfig templates (used by CMake and Automake) * decoder: always set `total_out` * encoder: fix `BROTLI_ENSURE_CAPACITY` macro (no-op after preprocessor) * decoder/encoder: refine `free_func` contract
2017-10-13Update (#617)Eugene Kliuchnikov3-11/+13
* remove `const` on `BrotliDictionary` members * extend `ZofliNode` distance range to 128MiB * add missing `port.h` include to `quality.h` * fix typo in encoder API-doc * regenerate `decode.min.js`
2017-10-10Fix permissions of various files in project (#613)Tomáš Popela7-0/+0
Move from 755 to 644.
2017-09-19Update: (#600)Eugene Kliuchnikov4-19/+10
* encoder: relax backward references candidates asserts * encoder: make RNG more platform-independent * encoder: remove "unused" param (context mode) * CLI: improve first-encounter experience * Java: update SynthTest * Java: refine proguard config * Java/JNI: fix one-shot compression workflow
2017-09-07Update (#593)Eugene Kliuchnikov3-37/+48
* Update: * fix CLI error messages * fix CLI console IO on Windows
2017-08-28Update (#590)Eugene Kliuchnikov1-3/+12
* add transpiled JS decoder * make PY wrapper accept memview * fix dictionary generator * speedup compression of RLEish data