Class: Omnizip::Formats::Rar::Compression::PPMd::Context
- Inherits:
-
Algorithms::PPMd7::Context
- Object
- Algorithms::PPMd7::Context
- Omnizip::Formats::Rar::Compression::PPMd::Context
- Defined in:
- lib/omnizip/formats/rar/compression/ppmd/context.rb
Overview
RAR variant H context node in PPMd model
Adapts PPMd7 Context for RAR-specific requirements:
- Different memory allocation strategy
- RAR-specific escape frequency initialization
- Modified probability update rules
Responsibilities:
- ONE responsibility: Manage RAR PPMd variant H context
- Track symbol statistics for RAR compression
- Maintain context tree structure
- Handle RAR-specific probability updates
Constant Summary collapse
- RAR_INIT_ESCAPE_FREQ =
RAR variant H escape frequency constant RAR uses different initial escape frequency than PPMd7
1
Constants included from Algorithms::PPMd7::Constants
Algorithms::PPMd7::Constants::ALPHABET_SIZE, Algorithms::PPMd7::Constants::BIN_SCALE, Algorithms::PPMd7::Constants::BOT_VALUE, Algorithms::PPMd7::Constants::DEFAULT_MEM_SIZE, Algorithms::PPMd7::Constants::DEFAULT_ORDER, Algorithms::PPMd7::Constants::INIT_ESCAPE_FREQ, Algorithms::PPMd7::Constants::INTERVAL, Algorithms::PPMd7::Constants::INT_BITS, Algorithms::PPMd7::Constants::MAX_FREQ, Algorithms::PPMd7::Constants::MAX_MEM_SIZE, Algorithms::PPMd7::Constants::MAX_ORDER, Algorithms::PPMd7::Constants::MAX_STATES, Algorithms::PPMd7::Constants::MIN_MEM_SIZE, Algorithms::PPMd7::Constants::MIN_ORDER, Algorithms::PPMd7::Constants::PERIOD_BITS, Algorithms::PPMd7::Constants::PROB_TOTAL, Algorithms::PPMd7::Constants::SEE_CONTEXTS, Algorithms::PPMd7::Constants::SUFFIX_CONTEXTS, Algorithms::PPMd7::Constants::TOP_VALUE, Algorithms::PPMd7::Constants::UNIT_ALLOC_SIZE, Algorithms::PPMd7::Constants::UNIT_SIZE
Instance Attribute Summary
Attributes inherited from Algorithms::PPMd7::Context
#escape_freq, #order, #states, #suffix, #sum_freq
Instance Method Summary collapse
-
#initialize(order, suffix = nil) ⇒ Context
constructor
Initialize a new RAR variant H context.
-
#update_symbol(symbol, increment = 1) ⇒ void
Update symbol frequency after encoding/decoding (RAR variant).
Methods inherited from Algorithms::PPMd7::Context
#add_symbol, #find_symbol, #needs_escape?, #num_symbols, #root?, #symbols_by_frequency, #total_freq
Constructor Details
#initialize(order, suffix = nil) ⇒ Context
Initialize a new RAR variant H context
49 50 51 52 53 |
# File 'lib/omnizip/formats/rar/compression/ppmd/context.rb', line 49 def initialize(order, suffix = nil) super # RAR variant H uses different escape frequency initialization @escape_freq = RAR_INIT_ESCAPE_FREQ end |
Instance Method Details
#update_symbol(symbol, increment = 1) ⇒ void
This method returns an undefined value.
Update symbol frequency after encoding/decoding (RAR variant)
RAR variant H uses a slightly different update strategy compared to standard PPMd7.
63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/omnizip/formats/rar/compression/ppmd/context.rb', line 63 def update_symbol(symbol, increment = 1) state = @states[symbol] return unless state # RAR variant H frequency update state.freq += increment @sum_freq += increment # RAR uses different rescaling threshold rescale_frequencies if @sum_freq > rar_max_freq end |