ptwm_core
ptwm_core::range_coder
Minimal, correct 32-bit range coder for PerGroupCodebook / Order1ScaleAC.
ptwm_core::range_coder
Minimal, correct 32-bit range coder for PerGroupCodebook / Order1ScaleAC.
ptwm_core::range_coder
crates/ptwm-core/src/range_coder.rs:1mod range_coderMinimal, correct 32-bit range coder for PerGroupCodebook / Order1ScaleAC.
Encodes/decodes symbol streams under PMFs represented as quantized counts
out of a caller-supplied total. Correctness over speed.
## Design
Uses the LZMA-style carry-propagation range coder:
- `range` starts at `0xFFFF_FFFF` (`2^32 - 1`).
- `low` is tracked as a 64-bit integer; bit 32 signals a carry.
- The encoder emits a leading alignment byte (`0x00`) followed by data bytes.
- The decoder preloads 5 bytes at init (one is the alignment byte).
- Carry propagation is handled via a single-byte cache plus a pending-`0xFF` count.
ptwm_core::range_coder::RangeDecoder
crates/ptwm-core/src/range_coder.rs:120pub struct RangeDecoderRange decoder.
ptwm_core::range_coder::RangeEncoder
crates/ptwm-core/src/range_coder.rs:16pub struct RangeEncoderRange encoder. Call [`Self::encode_symbol`] for each symbol, then [`Self::finish`].