Class: Omnizip::Algorithms::PPMd8::Encoder

Inherits:
Object
  • Object
show all
Includes:
Constants, Omnizip::Algorithms::PPMdBase::BaseConstants
Defined in:
lib/omnizip/algorithms/ppmd8/encoder.rb

Overview

PPMd8 Encoder with enhanced features

Encodes using PPMd8 model with restoration methods, run-length encoding, and improved update algorithms.

Constant Summary

Constants included from Constants

Constants::BIN_SCALE, Constants::DEFAULT_RESTORE_METHOD, Constants::GLUE_COUNT_THRESHOLD, Constants::INIT_ESCAPE_FREQ, Constants::INTERVAL, Constants::INT_BITS, Constants::MAX_FREQ, Constants::MAX_STATES, Constants::PERIOD_BITS, Constants::PROB_TOTAL, Constants::RESTORE_METHOD_CUT_OFF, Constants::RESTORE_METHOD_RESTART, Constants::SEE_CONTEXTS, Constants::SUFFIX_CONTEXTS, Constants::UNIT_ALLOC_SIZE, Constants::UNIT_SIZE

Constants included from Omnizip::Algorithms::PPMdBase::BaseConstants

Omnizip::Algorithms::PPMdBase::BaseConstants::ALPHABET_SIZE, Omnizip::Algorithms::PPMdBase::BaseConstants::BOT_VALUE, Omnizip::Algorithms::PPMdBase::BaseConstants::DEFAULT_MEM_SIZE, Omnizip::Algorithms::PPMdBase::BaseConstants::DEFAULT_ORDER, Omnizip::Algorithms::PPMdBase::BaseConstants::MAX_MEM_SIZE, Omnizip::Algorithms::PPMdBase::BaseConstants::MAX_ORDER, Omnizip::Algorithms::PPMdBase::BaseConstants::MIN_MEM_SIZE, Omnizip::Algorithms::PPMdBase::BaseConstants::MIN_ORDER, Omnizip::Algorithms::PPMdBase::BaseConstants::TOP_VALUE

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(output, options = {}) ⇒ Encoder

Initialize the encoder

Parameters:

  • output (IO)

    Output stream for compressed data

  • options (Hash) (defaults to: {})

    Encoding options

Options Hash (options):

  • :model_order (Integer)

    Maximum context order

  • :mem_size (Integer)

    Memory size for model

  • :restore_method (Integer)

    Restoration method



43
44
45
46
47
48
49
50
51
# File 'lib/omnizip/algorithms/ppmd8/encoder.rb', line 43

def initialize(output, options = {})
  @output = output
  @model = Model.new(
    options[:model_order] || DEFAULT_ORDER,
    options[:mem_size] || DEFAULT_MEM_SIZE,
    options[:restore_method] || DEFAULT_RESTORE_METHOD,
  )
  @range_encoder = LZMA::RangeEncoder.new(output)
end

Instance Attribute Details

#modelObject (readonly)

Returns the value of attribute model.



34
35
36
# File 'lib/omnizip/algorithms/ppmd8/encoder.rb', line 34

def model
  @model
end

Instance Method Details

#encode_stream(input) ⇒ void

This method returns an undefined value.

Encode a stream of bytes

Parameters:

  • input (IO)

    Input stream to compress

Raises:

  • (NotImplementedError)

    PPMd8 is not yet fully implemented



58
59
60
61
62
63
# File 'lib/omnizip/algorithms/ppmd8/encoder.rb', line 58

def encode_stream(input)
  raise NotImplementedError,
        "PPMd8 compression is not yet fully implemented. " \
        "The arithmetic coding integration requires completion. " \
        "Please use PPMd7 or other compression algorithms instead."
end