(&mut self)
| 265 | } |
| 266 | |
| 267 | fn decode_value(&mut self) -> Result<u64, CodecError> { |
| 268 | let bit = self.reader.read_bit()?; |
| 269 | if !bit { |
| 270 | return Ok(self.prev_value); |
| 271 | } |
| 272 | |
| 273 | let bit2 = self.reader.read_bit()?; |
| 274 | let xor = if !bit2 { |
| 275 | let meaningful_bits = 64 - self.prev_leading - self.prev_trailing; |
| 276 | let bits = self.reader.read_bits(meaningful_bits as usize)?; |
| 277 | bits << self.prev_trailing |
| 278 | } else { |
| 279 | let leading = self.reader.read_bits(6)? as u8; |
| 280 | let meaningful_bits = self.reader.read_bits(6)? as u8 + 1; |
| 281 | let trailing = 64 - leading - meaningful_bits; |
| 282 | let bits = self.reader.read_bits(meaningful_bits as usize)?; |
| 283 | self.prev_leading = leading; |
| 284 | self.prev_trailing = trailing; |
| 285 | bits << trailing |
| 286 | }; |
| 287 | |
| 288 | let val = self.prev_value ^ xor; |
| 289 | self.prev_value = val; |
| 290 | Ok(val) |
| 291 | } |
| 292 | |
| 293 | /// Decode all remaining samples. |
| 294 | pub fn decode_all(&mut self) -> Vec<(i64, f64)> { |
no test coverage detected