diff --git a/Userland/Libraries/LibCompress/Brotli.cpp b/Userland/Libraries/LibCompress/Brotli.cpp index dea96ba2df..efa2c8b1a6 100644 --- a/Userland/Libraries/LibCompress/Brotli.cpp +++ b/Userland/Libraries/LibCompress/Brotli.cpp @@ -11,7 +11,7 @@ namespace Compress { -ErrorOr BrotliDecompressionStream::CanonicalCode::read_symbol(LittleEndianInputBitStream& input_stream) const +ErrorOr Brotli::CanonicalCode::read_symbol(LittleEndianInputBitStream& input_stream) const { size_t code_bits = 1; @@ -137,7 +137,7 @@ ErrorOr BrotliDecompressionStream::read_variable_length() } } -ErrorOr BrotliDecompressionStream::CanonicalCode::read_complex_prefix_code_length(LittleEndianInputBitStream& stream) +ErrorOr Brotli::CanonicalCode::read_complex_prefix_code_length(LittleEndianInputBitStream& stream) { // Symbol Code // ------ ---- @@ -171,7 +171,7 @@ ErrorOr BrotliDecompressionStream::CanonicalCode::read_complex_prefix_co } } -ErrorOr BrotliDecompressionStream::CanonicalCode::read_prefix_code(LittleEndianInputBitStream& stream, size_t alphabet_size) +ErrorOr Brotli::CanonicalCode::read_prefix_code(LittleEndianInputBitStream& stream, size_t alphabet_size) { size_t hskip = TRY(stream.read_bits(2)); @@ -181,7 +181,7 @@ ErrorOr BrotliDecompressionStream::Can return TRY(read_complex_prefix_code(stream, alphabet_size, hskip)); } -ErrorOr BrotliDecompressionStream::CanonicalCode::read_simple_prefix_code(LittleEndianInputBitStream& stream, size_t alphabet_size) +ErrorOr Brotli::CanonicalCode::read_simple_prefix_code(LittleEndianInputBitStream& stream, size_t alphabet_size) { CanonicalCode code {}; @@ -230,7 +230,7 @@ ErrorOr BrotliDecompressionStream::Can return code; } -ErrorOr BrotliDecompressionStream::CanonicalCode::read_complex_prefix_code(LittleEndianInputBitStream& stream, size_t alphabet_size, size_t hskip) +ErrorOr Brotli::CanonicalCode::read_complex_prefix_code(LittleEndianInputBitStream& stream, size_t alphabet_size, size_t hskip) { // hskip should only be 0, 2 or 3 VERIFY(hskip != 1); @@ -259,7 +259,7 @@ ErrorOr BrotliDecompressionStream::Can return Error::from_string_literal("invalid prefix code"); } - BrotliDecompressionStream::CanonicalCode temp_code; + CanonicalCode temp_code; if (number_of_non_zero_symbols > 1) { size_t code_value = 0; for (size_t bits = 1; bits <= 5; bits++) { diff --git a/Userland/Libraries/LibCompress/Brotli.h b/Userland/Libraries/LibCompress/Brotli.h index fb05a46c23..2d75e7cfac 100644 --- a/Userland/Libraries/LibCompress/Brotli.h +++ b/Userland/Libraries/LibCompress/Brotli.h @@ -13,7 +13,35 @@ namespace Compress { +namespace Brotli { + +class CanonicalCode { +public: + CanonicalCode() = default; + + static ErrorOr read_prefix_code(LittleEndianInputBitStream&, size_t alphabet_size); + static ErrorOr read_simple_prefix_code(LittleEndianInputBitStream&, size_t alphabet_size); + static ErrorOr read_complex_prefix_code(LittleEndianInputBitStream&, size_t alphabet_size, size_t hskip); + + ErrorOr read_symbol(LittleEndianInputBitStream&) const; + void clear() + { + m_symbol_codes.clear(); + m_symbol_values.clear(); + } + +private: + static ErrorOr read_complex_prefix_code_length(LittleEndianInputBitStream&); + + Vector m_symbol_codes; + Vector m_symbol_values; +}; + +} + class BrotliDecompressionStream : public Stream { + using CanonicalCode = Brotli::CanonicalCode; + public: enum class State { WindowSize, @@ -26,28 +54,6 @@ public: CompressedDictionary, }; - class CanonicalCode { - public: - CanonicalCode() = default; - - static ErrorOr read_prefix_code(LittleEndianInputBitStream&, size_t alphabet_size); - static ErrorOr read_simple_prefix_code(LittleEndianInputBitStream&, size_t alphabet_size); - static ErrorOr read_complex_prefix_code(LittleEndianInputBitStream&, size_t alphabet_size, size_t hskip); - - ErrorOr read_symbol(LittleEndianInputBitStream&) const; - void clear() - { - m_symbol_codes.clear(); - m_symbol_values.clear(); - } - - private: - static ErrorOr read_complex_prefix_code_length(LittleEndianInputBitStream&); - - Vector m_symbol_codes; - Vector m_symbol_values; - }; - struct Block { size_t type; size_t type_previous;