示例#1
0
 private protected override IHasher CreateHasher(byte[] bytes, BrotliFileParameters fileParameters)
 {
     return(new HashLongestMatchQuickly.Configure {
         BucketBits = 16,
         SweepBits = 1
     }.Build(bytes));
 }
示例#2
0
            /// <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);
            }
示例#3
0
 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);
        }
示例#5
0
            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);
            }
示例#6
0
        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();
        }
示例#7
0
 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))
 {
 }
示例#9
0
 private protected abstract IHasher CreateHasher(byte[] bytes, BrotliFileParameters fileParameters);
示例#10
0
 protected sealed override IBrotliEncoder CreateEncoder(byte[] bytes, BrotliFileParameters fileParameters)
 {
     return(new Encoder(bytes, CreateHasher(bytes, fileParameters), fileParameters, SupportedFeatures));
 }
示例#11
0
 protected override IBrotliEncoder CreateEncoder(byte[] bytes, BrotliFileParameters fileParameters)
 {
     return(new Encoder(bytes));
 }
 public CompressedMetaBlockBuilder(BrotliFileParameters parameters) : this(new BrotliGlobalState(parameters))
 {
 }
示例#13
0
 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);
示例#15
0
 private BrotliEncodeInfo(BrotliFileParameters fileParameters, BrotliCompressionParameters compressionParameters, BrotliGlobalState state, in ArraySegment <byte> bytes)
示例#16
0
 public BrotliFileStreamEncoder(BrotliFileParameters fileParameters, BrotliCompressionParameters compressionParameters, byte[] bytes, IBrotliEncoder encoder)
 {
     this.encoder    = encoder;
     this.encodeInfo = new BrotliEncodeInfo(fileParameters, compressionParameters, bytes);
 }