Function
rans_decode_symbol
(
state: u32,
lookup: &[u8; PROB_SCALE as usize],
cum_freqs: &[u32; 257],
sym_freqs: &[u32; 256],
)
Source from the content-addressed store, hash-verified
| 235 | } |
| 236 | |
| 237 | fn rans_decode_symbol( |
| 238 | state: u32, |
| 239 | lookup: &[u8; PROB_SCALE as usize], |
| 240 | cum_freqs: &[u32; 257], |
| 241 | sym_freqs: &[u32; 256], |
| 242 | ) -> (u8, u32) { |
| 243 | let slot = state & (PROB_SCALE - 1); |
| 244 | let sym = lookup[slot as usize]; |
| 245 | let start = cum_freqs[sym as usize]; |
| 246 | let freq = sym_freqs[sym as usize]; |
| 247 | |
| 248 | let new_state = freq * (state >> PROB_BITS) + slot - start; |
| 249 | (sym, new_state) |
| 250 | } |
| 251 | |
| 252 | fn rans_decode_renorm(mut state: u32, stream: &[u8], pos: &mut usize) -> u32 { |
| 253 | while state < RANS_L && *pos > 0 { |
Tested by
no test coverage detected