100 Commits
Author SHA1 Message Date
chylex 0b5940d322 Update README (simplified thesis) 2020-06-24 15:24:18 +02:00
chylex 74c78b676a Include a simplified version of the paper 2020-06-24 15:06:41 +02:00
chylex 55345897a1 Fix GUI example image in the paper 2020-06-24 13:07:33 +02:00
chylex 82c8ae8b0e Add thesis 2020-05-14 23:32:45 +02:00
chylexandGitHub 9cfba5216f Create FUNDING.yml 2020-05-13 23:24:00 +02:00
chylex d66824e96b Release 2.0.0 2020-05-11 01:10:27 +02:00
chylex d0bd75cde3 Add mention of streaming APIs & update brotli exe info in README 2020-05-11 01:03:07 +02:00
chylex 0e041a8d3c Add an experimental greedy block splitter to BrotliImpl 2020-05-11 00:31:58 +02:00
chylex 91082bc560 Fix BrotliBuilder menu ampersand 2020-05-11 00:29:59 +02:00
chylex ef1be3fad0 Fix BlockSwitchBuilder initial length reset & leaking command list reference 2020-05-09 17:39:24 +02:00
chylex 62f6970da2 Include literal context modes in extract-header-meta command 2020-05-09 17:38:41 +02:00
chylex 25b546d677 Add BrotliImpl transformer that tries avoiding Last distance codes 2020-05-03 19:41:47 +02:00
chylex 7b536a0cf3 Add test data corpus 2020-04-17 11:04:58 +02:00
chylex f20e0d0f19 Refactor marker building & optimize multi-meta-block marker generation 2020-04-16 19:18:04 +02:00
chylex 4af77b919f Add missing dictionary parameter in BrotliFile 2020-04-16 18:39:07 +02:00
chylex 515ca92fd1 Add BrotliCalc command to extract block types 2020-04-14 07:22:17 +02:00
chylex a7dc957f80 Add official compressor's quality 4 to BrotliImpl 2020-04-14 06:41:50 +02:00
chylex 5594a9589a Implement limited dictionary index that mimics official dictionary lookup (q 2-9) 2020-04-14 06:40:04 +02:00
chylex 5a57d3ebd1 Add BrotliBuilder menu item to compare markers without bit counts 2020-04-14 06:34:00 +02:00
chylex 3e891a9edd Remove TODOs in BrotliCompressionParameters 2020-04-14 06:30:26 +02:00
chylex 20b770f2ef Expose WordTransform prefix/suffix information 2020-04-14 06:30:05 +02:00
chylex 9f246bf833 Add BrotliImpl transformer that reimplements official block splitter (q 4-9) 2020-04-14 05:11:33 +02:00
chylex f6bba3d604 Add BrotliImpl transformers to reset some header parameters 2020-04-14 05:06:06 +02:00
chylex 435b9d8e5b Simplify context map construction 2020-04-12 09:55:37 +02:00
chylex eee5f88be7 Disable F# indentation warnings in some test files 2020-04-09 01:27:24 +02:00
chylex a6f194b4d8 Fix nullability hints in FileWorker 2020-04-08 17:20:58 +02:00
chylex f28bf6b619 Add BrotliBuilder menu option to break debugger 2020-04-08 16:57:56 +02:00
chylex 998e5b2fc0 Add error message when BrotliCalc is given a folder w/o uncompressed files 2020-04-08 16:40:47 +02:00
chylex c229d678d6 Ensure empty command length code lists don't throw an exception 2020-04-07 22:49:23 +02:00
chylex fb70490404 Add simpler ContextMapBuilder constructors 2020-04-07 22:48:22 +02:00
chylex 8b531f2e2b Fix broken final block-switch & improve command building API 2020-04-07 22:36:59 +02:00
chylex 6e4e0509d3 Reduce allocations & unnecessary calls in IC commands and distance codes 2020-04-07 18:01:09 +02:00
chylex 9c57e552a1 Split HuffmanGenerator into 2 files & refactor 2020-04-07 17:51:34 +02:00
chylex f20b41faf8 Optimize BitStream enumeration and cloning & unit test enumeration 2020-04-07 17:43:29 +02:00
chylex 440fa7fd16 Add RingBufferFast & optimize construction 2020-04-07 17:41:24 +02:00
chylex b29c044263 Minor code fixes (in/readonly keywords, exception messages, LINQ tweaks) 2020-04-07 17:41:24 +02:00
chylex 6227914384 Add compressed meta-block panel to BrotliBuilder w/ command filtering 2020-04-07 00:45:42 +02:00
chylex 4cdf3825d2 Rewrite BlockSwitchTracker 2020-04-06 20:58:09 +02:00
chylex 777f6de11f Add more block-switch command and builder validation 2020-04-06 20:57:03 +02:00
chylex 5d9ddf89f0 Allow last block-switch command to exceed total symbol count in builder 2020-04-06 20:52:57 +02:00
chylex 20bb732d30 Add a few BrotliLib API utilities to DistanceInfo, TransformType & more 2020-04-06 01:34:59 +02:00
chylex 0fe554e2b3 Add block-switch builder command merging & additional validation 2020-04-05 19:14:44 +02:00
chylex 11df776279 Ensure FrequencyList does not have negative or leftover frequency counts 2020-04-05 18:11:26 +02:00
chylex 3d43f27bc9 Make CompressedMetaBlockBuilder return concrete MetaBlock.Compressed type 2020-04-05 17:49:32 +02:00
chylex ed931fe700 Update FrequencyList API & update existing uses 2020-04-05 17:34:10 +02:00
chylex 21dc319539 Add anchor (^$) support to Static Dictionary dialog & tweak UI 2020-04-05 17:02:08 +02:00
chylex b4e55f2f54 Update validate-compression cmd to use streaming API & distinguish mismatch and exception 2020-03-31 12:02:46 +02:00
chylex fba5c43d39 Add BrotliFileReader output callbacks & IBrotliFileStream default method as extension 2020-03-30 13:34:44 +02:00
chylex 3dd95dec86 Make BrotliCalc find (other) compressed files when path points to a file 2020-03-30 11:45:26 +02:00
chylex 7afdbe3e10 Fix relative paths in BrotliCalc 2020-03-30 11:15:15 +02:00
chylex 55f3010362 Expand console buffer height in BrotliCalc & fix long error messages 2020-03-30 10:04:16 +02:00
chylex 6db7509b81 Work around Thread.Abort being removed from .NET Core 2020-03-30 08:06:49 +02:00
chylex 6f118ab05c Fix broken menu checkboxes w/ legacy menu 2020-03-26 23:46:16 +01:00
chylex 6fb64d62d2 Avoid calling BrotliCompressionParameters code pickers with only 1 candidate 2020-03-19 23:00:45 +01:00
chylex e8796b7050 Fix BrotliDictionaryIndex.Find length constraints not counting prefix/suffix 2020-03-19 22:58:15 +01:00
chylex 1183f9fdec Split BrotliCalc test-reserialize-rebuild command into test-reserialize & test-rebuild 2020-03-19 16:51:10 +01:00
chylex a9e8ecece6 Add separators to BrotliCalc command list 2020-03-19 16:41:20 +01:00
chylex a3cec2a898 Simplify EncodeUncompressedOnly implementation 2020-03-18 17:22:30 +01:00
chylex aa0cb63f58 Add MetaBlock.Uncompressed constructor that takes ArraySegment 2020-03-18 17:22:11 +01:00
chylex f9a0ec4e7d Add support for merging with last final InsertCopyCommand in CompressedMetaBlockBuilder 2020-03-18 17:02:22 +01:00
chylex 28082860d4 Add compression parameters for generating Huffman trees for block codes 2020-03-18 16:56:45 +01:00
chylex 2938bdff49 Minor builder API additions & fixes 2020-03-18 16:56:40 +01:00
chylex 4b427cb7b4 Add BrotliCalc command for stats about literals and backward/dictionary references 2020-03-17 15:14:53 +01:00
chylex 678d0f1b9d Add BrotliImpl transformer that converts compressed meta-blocks into uncompressed 2020-03-17 14:14:17 +01:00
chylex c3bd51bed5 Add a BrotliGlobalState output callback system & use it for marking copies 2020-03-17 14:10:19 +01:00
chylex 29d57b15b3 Use Literal.ToString to mark raw bytes & add escape codes for tab characters 2020-03-17 13:59:09 +01:00
chylex a002a8454c Rework BrotliCalc progress to show every thread's current workload 2020-03-17 11:16:19 +01:00
chylex 83ea326957 Add BrotliCalc argument for file processing order 2020-03-17 10:38:25 +01:00
chylex b2272ac8ce Turn % operator into bitwise AND where possible 2020-03-17 10:02:53 +01:00
chylex e25839acf3 Make ArraySegments into 'in' parameters 2020-03-17 09:13:56 +01:00
chylex e8ab507ef4 Change dictionary index to find all matches & allow min length of 1 2020-03-16 12:32:12 +01:00
chylex 88bd8d928b Rename interface & classes of the new streaming API 2020-03-15 16:22:22 +01:00
chylex 49dc43e480 Add BrotliCalc commands to rebuild/encode/transform files and save them 2020-03-15 16:17:55 +01:00
chylex 6cffbc91d5 Update BrotliCalc commands to use the new streaming APIs 2020-03-15 13:44:39 +01:00
chylex 3663985832 Get rid of MetaBlock.IsLast property 2020-03-15 12:40:20 +01:00
chylex bd88e17e68 Implement proper streaming API for both reading and writing Brotli files 2020-03-15 10:44:26 +01:00
chylex 5b5a1f1c6e Fix unused using statement & documentation formatting 2020-03-15 10:30:38 +01:00
chylex 9c4515d9e7 Rename DistanceCodeZeroStrategy & repurpose old name for command builder 2020-03-15 08:46:14 +01:00
chylex 661004e67f Stop generating distance code 0 for commands that don't explicitly request it 2020-03-14 17:44:01 +01:00
chylex b919713d7b Fix infinite loop in context map RLE decider 2020-03-12 14:30:13 +01:00
chylex 9f801adcef Properly implement Huffman tree RLE SplitOneAboveBoundary heuristic & document 2020-03-12 07:41:48 +01:00
chylex 06bb3a316d Add serialization parameter to control length code tree generation for Huffman trees 2020-03-11 09:17:36 +01:00
chylex 946d71a561 Add BrotliCalc command to extract context maps 2020-03-11 06:58:52 +01:00
chylex ce248b6356 Fix BrotliCalc file mapping broken when input path = output path 2020-03-11 03:41:48 +01:00
chylex da747b875f Implement Huffman tree RLE decider & add official heuristic as default 2020-03-11 03:38:14 +01:00
chylex 6b75789131 Redesign BrotliBuilder serialization parameters & include context map strategies 2020-03-11 02:55:12 +01:00
chylex bd539907d8 Tweak context map serialization code & markers 2020-03-10 05:40:07 +01:00
chylex 833c6f1359 Implement context map RLE decider, add it & Huffman tree gen to serialization params 2020-03-10 05:39:34 +01:00
chylex 40f1588fc8 Move BrotliCompressionParameters.GenerateHuffmanTree delegate 2020-03-10 05:16:20 +01:00
chylex 06ddc3b7cf Move PickCodeHeuristics to a different namespace & fix type constraint 2020-03-10 05:02:21 +01:00
chylex aa59f81da5 Fix documentation to use <c> instead of <code> 2020-03-10 00:42:02 +01:00
chylex ad97ec4e5f Reimplement final command DCZ strategy in CompressedMetaBlockBuilder 2020-03-08 22:42:52 +01:00
chylex d22403cb71 Fix wrong transformer handling in BrotliEncodePipeline & BrotliFileStructure 2020-03-05 16:01:56 +01:00
chylex 3dbd109c56 Move ContextMap builder into a separate class and reduce dependencies on it 2020-03-04 20:10:53 +01:00
chylex 3f7d4612b9 Update BrotliBuilder to use StatusStrip for when .NET removes StatusBar 2020-02-17 11:29:22 +01:00
chylex e247eda9b8 Update BrotliBuilder to use MenuStrip on .NET 3.1+ 2020-02-17 02:20:49 +01:00
chylex e80fb54eea Fix marker panel updating after changing bit stream panel contents in BrotliBuilder 2020-02-14 14:16:40 +01:00
chylex 0465f26239 Finish refactoring BrotliBuilder menu code & reorganize FormMain 2020-02-14 14:02:09 +01:00
chylex f6b58da41c Update & fix some issues in BrotliImpl 2020-02-12 20:32:21 +01:00
chylex f8f78d082d Work on BrotliLib APIs (block-switch, builder validation, minor code tweaks) 2020-02-12 19:11:59 +01:00