| // Copyright 2017 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef _BSDIFF_BROTLI_COMPRESSOR_H_ |
| #define _BSDIFF_BROTLI_COMPRESSOR_H_ |
| |
| #include <stdint.h> |
| |
| #include <vector> |
| |
| #include <brotli/encode.h> |
| |
| #include "bsdiff/compressor_buffer.h" |
| #include "bsdiff/compressor_interface.h" |
| #include "bsdiff/constants.h" |
| |
| namespace bsdiff { |
| |
| class BrotliCompressor : public CompressorInterface { |
| public: |
| // Create a brotli compressor with the compression quality |quality|. As the |
| // value of quality increases, the compression becomes better but slower. |
| // The valid range of quality is between BROTLI_MIN_QUALITY and |
| // BROTLI_MAX_QUALITY; and the caller is responsible for the validity check. |
| explicit BrotliCompressor(int quality); |
| ~BrotliCompressor() override; |
| |
| // CompressorInterface overrides. |
| bool Write(const uint8_t* buf, size_t size) override; |
| bool Finish() override; |
| const std::vector<uint8_t>& GetCompressedData() override; |
| CompressorType Type() const override { return CompressorType::kBrotli; } |
| |
| private: |
| BrotliEncoderState* brotli_encoder_state_; |
| |
| CompressorBuffer comp_buffer_; |
| }; |
| |
| } // namespace bsdiff |
| |
| #endif // _BSDIFF_BROTLI_COMPRESSOR_H_ |