| ... | ... | @@ -491,9 +491,21 @@ fn tossBits(d: *Decompress, n: u6) !void { |
| 491 | 491 | } |
| 492 | 492 | |
| 493 | 493 | fn tossBitsEnding(d: *Decompress, n: u6) !void { |
| 494 | | _ = d; |
| 495 | | _ = n; |
| 496 | | @panic("TODO"); |
| 494 | const remaining_bits = d.remaining_bits; |
| 495 | const in = d.input; |
| 496 | var remaining_needed_bits = n - remaining_bits; |
| 497 | while (remaining_needed_bits >= 8) { |
| 498 | try in.discardAll(1); |
| 499 | remaining_needed_bits -= 8; |
| 500 | } |
| 501 | if (remaining_needed_bits == 0) { |
| 502 | d.next_bits = 0; |
| 503 | d.remaining_bits = 0; |
| 504 | } else { |
| 505 | const byte = try in.takeByte(); |
| 506 | d.next_bits = @as(usize, byte) >> remaining_needed_bits; |
| 507 | d.remaining_bits = @intCast(8 - remaining_needed_bits); |
| 508 | } |
| 497 | 509 | } |
| 498 | 510 | |
| 499 | 511 | fn takeBitsRuntime(d: *Decompress, n: u4) !u16 { |