1
0
mirror of https://github.com/chylex/Brotli-Builder.git synced 2024-12-22 16:42:46 +01:00
Commit Graph

229 Commits

Author SHA1 Message Date
968c352724 Work on BrotliLib APIs (DCZ, distance code heuristics, command building, utilities) 2020-02-02 14:57:17 +01:00
1bd0822d63 Work on BrotliLib APIs (compression params, encode pipeline, minor tweaks) 2020-01-28 20:00:28 +01:00
1b186f2d50 Make Brotli parameter classes immutable 2020-01-28 13:13:03 +01:00
efa84b795d Move & rename Brotli compressed components and utils 2020-01-23 14:55:31 +01:00
a2baff135a Rework ContextMap.Builder API & move MoveToFront 2020-01-23 11:25:16 +01:00
9ee7376bf2 Reduce code duplication when constructing BrotliGlobalState 2020-01-23 08:25:18 +01:00
5a24351840 Add BrotliFileReader as a streaming alternative to BrotliFileStructure 2020-01-23 08:19:44 +01:00
858c9ddbf3 Ensure BrotliCalc uses correct Brotli parameters & fix BrotliFileStructure 2020-01-23 08:02:16 +01:00
73fef4c8e0 Add Brotli serialization param to determine Huffman tree skip/repeat code usage 2019-12-31 05:59:52 +01:00
cda71bb37b Remove MultiTrie & update dictionary index to use PATRICIA trees instead 2019-12-31 03:53:01 +01:00
a6a1eefcf3 Minor code and API tweaks (collections, literal output, LiteralContextMode) 2019-11-30 03:07:33 +01:00
53f3f2b7d2 Remove HuffmanNode.SymbolCount and use HuffmanTree lookup instead 2019-11-30 01:48:09 +01:00
698bded3fb Optimize code for outputting copies in BrotliGlobalState 2019-11-29 14:47:44 +01:00
08544f7298 Improve performance & memory usage of serialization 2019-11-29 14:47:41 +01:00
63b0cb7a55 Rewrite BrotliFileStructure decompression state handling and API 2019-11-29 14:03:00 +01:00
16736e9560 Optimize memory allocations when serializing and building meta-blocks 2019-11-28 02:36:55 +01:00
ad96d2ea42 Tweak Brotli component APIs & add/update ToString() 2019-11-28 02:36:54 +01:00
be2d367ea7 Stop generating implicit distance code 0 and breaking defined block lengths 2019-11-27 21:17:17 +01:00
6b9172b1fd Fix MarkerLevel.None not disabling generation of markers 2019-11-27 01:14:07 +01:00
31383bb7a7 Make BrotliFileStructure.Fixup remove bad LastEmpty meta-blocks & fix it crashing UI 2019-11-27 01:07:50 +01:00
136632d396 Fix being unable to set PaddedEmpty meta-blocks as last 2019-11-27 01:01:00 +01:00
e8887b012a Work on encoder/transformer API 2019-11-27 00:30:25 +01:00
c9ad856c25 Refactor and enforce use of BrotliFileParameters & BrotliSerializationParameters 2019-11-27 00:05:22 +01:00
e93ffbbc6e Move BrotliFileParameters & BrotliSerializationParameters to a different namespace 2019-11-26 18:25:17 +01:00
c9e1b10dbc Enable C# 8 nullable reference types for all projects & fix warnings 2019-11-26 14:42:10 +01:00
75f02483e7 Move decision-making for ContextMap IMTF/RLE to BrotliSerializationParameters 2019-11-26 12:44:21 +01:00
610cc49e11 Add BrotliSerializationParameters 2019-11-26 12:14:45 +01:00
91f7c849c3 Add multiple marker levels w/ one that skips marking uncompressed data 2019-11-25 18:47:45 +01:00
e136ffb958 Fix edge cases in distance code picking & Huffman tree serialization 2019-11-25 17:01:02 +01:00
ea44d59778 Minor optimizations and code tweaks 2019-11-24 13:48:18 +01:00
12ca8ec5a9 Optimize lambdas in Brotli markers 2019-11-23 18:54:08 +01:00
651a7cfd3c Minor fixes (unit test, documentation, console null check, null assignment operator) 2019-11-23 07:34:23 +01:00
3f493862a4 Refactor & reorganize MetaBlock components 2019-11-23 07:34:23 +01:00
612fb784b5 Refactor & reorganize MetaBlock classes 2019-11-23 07:34:23 +01:00
d578fb4346 Reorganize BrotliLib namespaces 2019-11-22 05:44:02 +01:00
26e8f01155 Avoid creating HuffmanTree lookup structure when only deserializing 2019-11-01 17:47:50 +01:00
4c029e4676 Avoid creating unnecessary marker objects & tweak TitleMarker 2019-11-01 17:46:41 +01:00
4e7c08879c Fix broken multithreading in Brotli deserialization 2019-11-01 10:06:34 +01:00
04a23663b0 Reorganize HuffmanTree & BlockSwitchTracker 2019-10-31 19:13:08 +01:00
974541b937 Minor BrotliLib refactoring (ranges, exceptions, formatting) 2019-10-31 19:13:08 +01:00
2f22139125 Fix window size crash & inefficiency when generating copy markers 2019-10-30 19:42:56 +01:00
f9838bca04 Improve efficiency of encoding Huffman tree repetition codes 2019-10-21 00:16:20 +02:00
4dc334cae9 Add information about bit counts to markers 2019-10-20 23:17:23 +02:00
94f3288bb7 Reimplement complex distance code construction & update documentation 2019-10-20 22:07:23 +02:00
87011bc853 Rewrite AlphabetSize.BitsPerSymbol to use Log2 utility class 2019-10-20 06:40:37 +02:00
79a96735a5 Move various log2(int) implementations into a utility class 2019-10-20 06:29:43 +02:00
cd2c37764e Make MetaBlock classes (mostly) immutable 2019-10-19 15:27:39 +02:00
611fac1525 Properly implement and cleanup GetHashCode & Equals in BrotliLib 2019-10-19 15:27:39 +02:00
e84dcd4ac9 Address IDE suggestions (C# 8.0) & minor refactoring 2019-10-19 01:43:54 +02:00
b07c707759 Upgrade libraries to .NET Standard 2.1 and UI/test projects to .NET Core 3.0 2019-10-18 20:11:44 +02:00
271b43630e Implement MultiTrie.Node caching for Brotli dictionary index 2019-10-05 08:14:47 +02:00
8ecdd90caa Fix recently introduced crash w/ implicit distance code zero
Caused by d8a6713392
2019-10-05 04:19:24 +02:00
3294ac800e Improve how CR/LF characters are displayed in markers 2019-10-04 16:47:55 +02:00
5b44cefe68 Update markers to include backreference & dictionary output 2019-10-04 16:18:05 +02:00
eb3833e4da Fix off-by-x bug when generating dictionary references after hitting window size 2019-10-04 15:30:15 +02:00
d8a6713392 Fix broken generation of explicit distance codes 0 2019-10-04 15:15:27 +02:00
e18cede896 Add new Brotli dictionary index system 2019-10-03 21:56:17 +02:00
9da921fe52 Remove inefficient dictionary index 2019-10-03 17:17:21 +02:00
806c97748a Fix Brotli insert&copy command serialization not picking distance codes efficiently 2019-07-09 15:55:27 +02:00
0b7aaec69d Optimize complex distance codes (with no postfix) w/ unit tests 2019-07-09 15:00:21 +02:00
50035519f8 Make most marker values lazy 2019-07-08 23:46:26 +02:00
c3b66b50e9 Tweaks for minor performance improvements 2019-07-08 23:36:10 +02:00
05690a1bea Improve marker memory usage by interning strings 2019-07-08 18:13:11 +02:00
895609c3f1 Use dummy writer to improve performance in transformations 2019-06-18 15:13:09 +02:00
da910cc147 Refactor BitWriter, BitReader, and MarkedBitReader into interfaces 2019-06-18 15:06:39 +02:00
8c5ae6a960 Separate IBitSerializer into serializer & deserializer delegates 2019-06-18 05:00:33 +02:00
52d435dece Fix invalid complex Huffman tree length codes generated for incomplete trees 2019-05-24 14:11:52 +02:00
6baa782fb9 Make DistanceParameters a readonly struct 2019-05-23 16:24:40 +02:00
82f212a4b8 Add marker for Brotli block-switch type value 2019-05-23 15:30:12 +02:00
1370231216 Add utility Set methods to ContextMap builder 2019-05-23 15:29:43 +02:00
74969f8c92 Implement Brotli block-switch command builder 2019-05-23 15:28:30 +02:00
f289bb2660 Update CompressedMetaBlockBuilder to use FrequencyLists 2019-05-23 14:18:55 +02:00
b90240c180 Update HuffmanTree.FromSymbols to use FrequencyList 2019-05-23 14:15:21 +02:00
62b5236455 Remove category parameter from CategoryMap.Select 2019-05-23 13:11:52 +02:00
9ab0520997 Determine BlockSwitchCommand type codes during serialization instead of storing them 2019-05-23 11:10:59 +02:00
e39ddf5e27 Make ContextMap builder clone the final array 2019-05-20 09:48:05 +02:00
7e7b58e533 Fix broken implicit distance code 0 and dictionary distances in CompressedMetaBlockBuilder 2019-05-19 23:18:04 +02:00
d4fa203f4f Add MetaBlockSizeTracker utility for meta-block size minimization 2019-05-18 02:41:44 +02:00
e349cf112b Move byte array slicing/cloning into a utility CollectionHelper class 2019-05-18 00:38:48 +02:00
35ca0e1fb8 Move existing Brotli encoder & transformer implementations to BrotliImpl 2019-05-17 23:06:41 +02:00
143b79aecf Add convenience method for dictionary references to CompressedMetaBlockBuilder 2019-05-17 18:54:55 +02:00
dee0e6c240 Add DictionaryIndexEntry & refactor index serialization 2019-05-17 18:54:55 +02:00
417b2b0eed Add IMultiTrie, move tries to different namespace, revert trie value sorting 2019-05-17 18:54:55 +02:00
34d801a70b Slightly improve strategy for picking Brotli distance codes 2019-05-17 06:35:26 +02:00
304fa1dd7c Implement Brotli dictionary trie serialization & include word length in index 2019-05-17 03:41:10 +02:00
78052590df Split Brotli distance codes into multiple files 2019-05-16 21:01:18 +02:00
768f2e9ac0 Work on Brotli component validation, constants, and minor refactoring 2019-05-16 19:09:58 +02:00
632f94eef9 Refactor Brotli element construction to guard mutability 2019-05-16 18:25:30 +02:00
d85badda47 Add a few TODOs 2019-04-22 22:59:15 +02:00
6b169a66bd Add a simple transformer to rebuild Brotli files made by official compressor 2019-04-22 17:07:13 +02:00
f736e837e3 Update EncodeLiterals for the updated interfaces 2019-04-22 17:02:19 +02:00
22640d473b Add IBrotliTransformer and utilities for transforming Brotli structures 2019-04-22 16:52:10 +02:00
c6c55fcc97 Automatically fixup structures from IBrotliEncoder so encoders don't have to 2019-04-22 16:47:32 +02:00
b38f6c3485 Implement compressed meta-block reconstruction and chained building 2019-04-22 16:45:30 +02:00
d6c3b5b743 Allow cloning global Brotli state 2019-04-22 16:45:30 +02:00
0d9e7f91f2 Add block-switch command support in CompressedMetaBlockBuilder 2019-04-22 16:45:30 +02:00
d78202b3a5 Fix broken encoding of direct distances 2019-03-28 20:10:59 +01:00
230b4c95b1 Add BrotliFileParameters as a parameter to IBrotliEncoder 2019-03-28 04:26:23 +01:00
18d8f1bff0 Replace references to window size + dictionary w/ BrotliFileParameters 2019-03-28 04:20:08 +01:00
caf2ca9c19 Implement window output strategy for when full output isn't necessary 2019-03-28 04:06:11 +01:00