private protected override IHasher CreateHasher(byte[] bytes, BrotliFileParameters fileParameters) { return(new HashLongestMatchQuickly.Configure { BucketBits = 16, SweepBits = 1 }.Build(bytes)); }
/// <summary> /// Adapted from https://github.com/google/brotli/blob/master/c/enc/quality.h (MaxMetablockSize, ComputeRbBits). /// </summary> private static int MaxMetaBlockSize(BrotliFileParameters fileParameters, int lgBlock) { int rb = 1 + Math.Max(fileParameters.WindowSize.Bits, lgBlock); int bits = Math.Min(rb, WindowSize.MaxBits); return(1 << bits); }
private protected override IHasher CreateHasher(byte[] bytes, BrotliFileParameters fileParameters) { return(new HashLongestMatchQuickly.Configure { BucketBits = 16, // TODO the dictionary lookup is too good and causes a LOT more successful matches than the official compressor // Dictionary = fileParameters.Dictionary }.Build(bytes)); }
// Construction public BrotliGlobalState(BrotliFileParameters parameters, IBrotliOutput outputState) { this.Parameters = parameters; this.outputState = outputState; this.LiteralBuffer = RingBufferFast <byte> .From(0, 0); this.DistanceBuffer = RingBufferFast <int> .From(16, 15, 11, 4); }
public Encoder(byte[] input, IHasher hasher, BrotliFileParameters fileParameters, Features features) { this.input = input; this.hasher = hasher; this.fileParameters = fileParameters; this.features = features; this.lgBlock = ComputeLgBlock(features); }
public BrotliFileWriter(BrotliFileParameters fileParameters, BrotliSerializationParameters serializationParameters) { this.bits = new BitStream(); this.writer = bits.GetWriter(); this.FileParameters = fileParameters; this.SerializationParameters = serializationParameters; this.state = new BrotliGlobalState(FileParameters); WriteHeader(); }
private protected override Copy?FindCopy(BrotliFileParameters parameters, in ArraySegment <byte> bytes, int start, int maxLength)
public BrotliGlobalState(BrotliFileParameters parameters) : this(parameters, new BrotliOutputWindowed(parameters.WindowSize)) { }
private protected abstract IHasher CreateHasher(byte[] bytes, BrotliFileParameters fileParameters);
protected sealed override IBrotliEncoder CreateEncoder(byte[] bytes, BrotliFileParameters fileParameters) { return(new Encoder(bytes, CreateHasher(bytes, fileParameters), fileParameters, SupportedFeatures)); }
protected override IBrotliEncoder CreateEncoder(byte[] bytes, BrotliFileParameters fileParameters) { return(new Encoder(bytes)); }
public CompressedMetaBlockBuilder(BrotliFileParameters parameters) : this(new BrotliGlobalState(parameters)) { }
private void OpenFileWithEncoder(BrotliFileParameters parameters, IBrotliEncoder encoder) { OpenFileWith("Open File to Encode", fileName => fileGenerated.EncodeFile(fileName, parameters, encoder)); }
protected abstract IBrotliEncoder CreateEncoder(byte[] bytes, BrotliFileParameters fileParameters);
private BrotliEncodeInfo(BrotliFileParameters fileParameters, BrotliCompressionParameters compressionParameters, BrotliGlobalState state, in ArraySegment <byte> bytes)
public BrotliFileStreamEncoder(BrotliFileParameters fileParameters, BrotliCompressionParameters compressionParameters, byte[] bytes, IBrotliEncoder encoder) { this.encoder = encoder; this.encodeInfo = new BrotliEncodeInfo(fileParameters, compressionParameters, bytes); }