1
0
mirror of https://github.com/chylex/Brotli-Builder.git synced 2025-08-14 16:17:03 +02:00
Files
BrotliBuilder
BrotliCalc
BrotliImpl
BrotliLib
Brotli
Components
Dictionary
Encode
Output
Parameters
Heuristics
ContextMapHeuristics.cs
HuffmanTreeHeuristics.cs
PickCodeHeuristics.cs
BrotliCompressionParameters.cs
BrotliFileParameters.cs
BrotliSerializationParameters.cs
Streaming
Utils
BrotliFileStructure.cs
BrotliGlobalState.cs
Collections
Markers
Numbers
Serialization
BrotliLib.csproj
LICENSE-BROTLI.txt
Paper
UnitTests
.gitignore
BrotliBuilder.sln
LICENSE
README.md

24 lines
1.0 KiB
C#

using BrotliLib.Brotli.Components.Header;
namespace BrotliLib.Brotli.Parameters.Heuristics{
public static class ContextMapHeuristics{
public delegate bool DecideFeature(ContextMap contextMap);
public delegate ContextMap.RunResolution DecideRuns(ContextMap.RunDecider decider);
public static class MTF{
public static DecideFeature Disable { get; } = _ => false;
public static DecideFeature Enable { get; } = _ => true;
}
public static class RLE{
public static DecideRuns Disable { get; } = decider => decider.Resolve(run => run.Reject());
public static DecideRuns KeepAll { get; } = decider => decider.Resolve(run => run.Accept());
public static DecideRuns SplitOneAboveBoundary { get; } = decider => decider.Resolve(original => {
var nextDown = new ContextMap.Run(original.Length - 1);
return original.Code == nextDown.Code ? original.Accept() : nextDown.Accept();
});
}
}
}