Commit Graph
100 Commits
Author SHA1 Message Date
chylex ae65c89970 wip 2020-04-08 18:12:12 +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
chylex bab1ddf207 Add marker panel options (tab size, orientation) & improve window resizing in BrotliBuilder 2020-02-10 12:45:48 +01:00
chylex bc4026a021 Refactor BrotliBuilder View menu items out of designer file 2020-02-10 08:57:07 +01:00
chylex 6ddacf5898 Add option for streaming marker generation & use it in BrotliCalc 2020-02-06 02:10:39 +01:00
chylex 9178285694 Change BrotliCalc CmdAbstractFileMapper into a streaming API 2020-02-06 02:09:07 +01:00
chylex 7e065e39f0 Fix console progress bug with cursor jumping up a line 2020-02-05 20:04:03 +01:00
chylex b6ef8b6157 Reduce clutter in markers 2020-02-05 20:02:21 +01:00
chylex 6ebe69c1f5 Adapt hash_longest_match_quickly (WIP dictionary), add official qualities 2 & 3 2020-02-04 03:29:43 +01:00
chylex 03bcfd5e18 Add a WIP adaptation of official compressor's medium qualities & hasher interface 2020-02-04 03:27:11 +01:00
chylex a4874da709 Minor BrotliBuilder & BrotliCalc code fixes 2020-02-02 15:00:08 +01:00
chylex 968c352724 Work on BrotliLib APIs (DCZ, distance code heuristics, command building, utilities) 2020-02-02 14:57:17 +01:00
chylex 70cf0d6b14 Tweak BrotliCalc CSV generation to omit quotes for numeric values 2020-01-29 23:12:36 +01:00
chylex 3aaee9d327 Add BrotliCalc command to validate compressed files 2020-01-29 23:04:52 +01:00
chylex 7439daf9f8 Add BrotliEncodePipeline support & improve Original panel controls in BrotliBuilder 2020-01-29 16:01:51 +01:00
chylex ef0063c991 Add an adaptation of official compressor's quality 0 to BrotliImpl 2020-01-28 20:02:03 +01:00
chylex 1bd0822d63 Work on BrotliLib APIs (compression params, encode pipeline, minor tweaks) 2020-01-28 20:00:28 +01:00
chylex 4283ee4370 Refactor Copy & add Match utilities in BrotliImpl 2020-01-28 20:00:28 +01:00
chylex 360e562832 Minor refactoring and fixes in BrotliBuilder & BrotliCalc 2020-01-28 20:00:24 +01:00
chylex 1b186f2d50 Make Brotli parameter classes immutable 2020-01-28 13:13:03 +01:00
chylex d48b291db9 Clarify which file is used in Brotli structure & marker panels in BrotliBuilder 2020-01-27 18:25:00 +01:00
chylex 9c97eb6cc5 Include a custom build of brotli.exe (c435f06) in BrotliCalc 2020-01-27 15:18:51 +01:00
chylex efa84b795d Move & rename Brotli compressed components and utils 2020-01-23 14:55:31 +01:00
chylex a2baff135a Rework ContextMap.Builder API & move MoveToFront 2020-01-23 11:25:16 +01:00
chylex 8ad489139e Format bit counts in BrotliBuilder & add serialized byte count 2020-01-23 09:02:19 +01:00
chylex 9ee7376bf2 Reduce code duplication when constructing BrotliGlobalState 2020-01-23 08:25:18 +01:00