Class: Omnizip::Filters::Bcj2Encoder

Inherits:
Object
  • Object
show all
Includes:
Bcj2Constants
Defined in:
lib/omnizip/filters/bcj2/encoder.rb

Overview

BCJ2 encoder - splits data into 4 streams.

NOTE: BCJ2 encoding is extremely complex and is not yet implemented. This is primarily needed for compression, while decoding (decompression) is the more common use case.

BCJ2 encoding requires:

  • Range encoder implementation
  • Proper probability model management
  • Stream splitting logic
  • Address conversion to absolute

This will be implemented in a future version.

Constant Summary

Constants included from Bcj2Constants

Omnizip::Filters::Bcj2Constants::ADDRESS_SIZE, Omnizip::Filters::Bcj2Constants::BIT_MODEL_TOTAL, Omnizip::Filters::Bcj2Constants::BIT_MODEL_TOTAL_BITS, Omnizip::Filters::Bcj2Constants::INITIAL_PROB, Omnizip::Filters::Bcj2Constants::MOVE_BITS, Omnizip::Filters::Bcj2Constants::NUM_PROBS, Omnizip::Filters::Bcj2Constants::NUM_STREAMS, Omnizip::Filters::Bcj2Constants::OPCODE_CALL, Omnizip::Filters::Bcj2Constants::OPCODE_JUMP, Omnizip::Filters::Bcj2Constants::STREAM_CALL, Omnizip::Filters::Bcj2Constants::STREAM_JUMP, Omnizip::Filters::Bcj2Constants::STREAM_MAIN, Omnizip::Filters::Bcj2Constants::STREAM_RC, Omnizip::Filters::Bcj2Constants::TOP_VALUE

Instance Method Summary collapse

Constructor Details

#initialize(data, position = 0) ⇒ Bcj2Encoder

Initialize encoder.

Parameters:

  • data (String)

    Binary data to encode

  • position (Integer) (defaults to: 0)

    Starting instruction pointer



41
42
43
44
# File 'lib/omnizip/filters/bcj2/encoder.rb', line 41

def initialize(data, position = 0)
  @data = data
  @position = position
end

Instance Method Details

#encodeBcj2StreamData

Encode data into 4 streams.

Returns:

Raises:

  • (NotImplementedError)

    BCJ2 encoding not yet impl



50
51
52
53
54
55
# File 'lib/omnizip/filters/bcj2/encoder.rb', line 50

def encode
  raise NotImplementedError,
        "BCJ2 encoding is not yet implemented. " \
        "BCJ2 is primarily used for decompression. " \
        "For compression, use the simpler BCJ-x86 filter."
end