1
0
mirror of https://github.com/chylex/Brotli-Builder.git synced 2025-04-07 00:15:50 +02:00

Add BrotliImpl transformers to reset some header parameters

This commit is contained in:
chylex 2020-04-14 05:06:06 +02:00
parent 435b9d8e5b
commit f6bba3d604
3 changed files with 50 additions and 2 deletions

View File

@ -32,8 +32,16 @@ namespace BrotliBuilder{
}
private void InitializeMenuTransformers(MainMenuBase.Item menu){
menu.Add("Rebuild", () => TransformCurrentFile(new TransformRebuild()));
menu.Add("Convert to Uncompressed", () => TransformCurrentFile(new TransformCompressedIntoUncompressed()));
menu.Add("Rebuild", () => TransformCurrentFile(new TransformRebuild()));
menu.AddSeparator();
menu.Add("Convert to Uncompressed", () => TransformCurrentFile(new TransformCompressedIntoUncompressed()));
menu.Add("Reset Distance Parameters", () => TransformCurrentFile(new TransformResetDistanceParameters()));
menu.Add("Reset Block Splits & Context Models", () => TransformCurrentFile(new TransformResetBlockSplitsContextModels()));
menu.AddSeparator();
menu.Add("Test Distance Parameters", () => TransformCurrentFile(new TransformTestDistanceParameters()));
menu.Add("Split Insert Copy Lengths", () => TransformCurrentFile(new TransformSplitInsertCopyLengths()));
}

View File

@ -0,0 +1,24 @@
using BrotliLib.Brotli;
using BrotliLib.Brotli.Components;
using BrotliLib.Brotli.Components.Header;
using BrotliLib.Brotli.Encode;
using BrotliLib.Brotli.Encode.Build;
using BrotliLib.Brotli.Parameters;
using BrotliLib.Brotli.Utils;
namespace BrotliImpl.Transformers{
public class TransformResetBlockSplitsContextModels : BrotliTransformerCompressed{
protected override (MetaBlock, BrotliGlobalState) Transform(MetaBlock.Compressed original, BrotliGlobalState state, BrotliCompressionParameters parameters){
var builder = new CompressedMetaBlockBuilder(original, state){
LiteralCtxMap = ContextMapBuilder.Literals.Simple,
DistanceCtxMap = ContextMapBuilder.Distances.Simple
};
foreach(var category in Categories.LID){
builder.BlockTypes[category].Reset();
}
return builder.UseSameLiteralContextMode(LiteralContextMode.LSB6).Build(parameters);
}
}
}

View File

@ -0,0 +1,16 @@
using BrotliLib.Brotli;
using BrotliLib.Brotli.Components;
using BrotliLib.Brotli.Components.Header;
using BrotliLib.Brotli.Encode;
using BrotliLib.Brotli.Encode.Build;
using BrotliLib.Brotli.Parameters;
namespace BrotliImpl.Transformers{
public class TransformResetDistanceParameters : BrotliTransformerCompressed{
protected override (MetaBlock, BrotliGlobalState) Transform(MetaBlock.Compressed original, BrotliGlobalState state, BrotliCompressionParameters parameters){
return new CompressedMetaBlockBuilder(original, state){
DistanceParameters = DistanceParameters.Zero
}.Build(parameters);
}
}
}