buf: [0; MAX_CELL_SIZE + 160],
rbuf: [0; MAX_CELL_SIZE + 160],
deltas: [0; MAX_CELL_SIZE],
- cell: Indeo3Cell::new(0, 0, false),
+ cell: Indeo3Cell::new(0, 0),
out: [0; MAX_CELL_SIZE / 2 + 1],
osize: 0,
}
}
self.out[0] = (mode << 4) | (idx as u8);
-
- if idx >= 8 {
- requant_idx = Some(idx - 8);
- }
} else {
self.out[0] = (mode << 4) | (cb_no1 as u8);
requant_idx = Some(cb_no1 - 8);
}
}
- if self.cell.get_y() == 0 {
+ if self.cell.get_y() == 0 || !matches!(mode, 0 | 3 | 10) {
requant_idx = None;
}
let dst = &mut data[x + y * stride..];
let mut dst_idx = stride;
for line in 0..4 {
- for x in 0..4 {
- let top = dst[dst_idx - stride + x * 2];
- let cur = cell[(line + 1) * 4 + x];
- dst[dst_idx + x * 2] = (top + cur) >> 1;
- dst[dst_idx + x * 2 + 1] = (top + cur) >> 1;
- dst[dst_idx + stride + x * 2] = cur;
- dst[dst_idx + stride + x * 2 + 1] = cur;
+ for x in 0..8 {
+ let top = dst[dst_idx - stride + x];
+ let cur = cell[(line + 1) * 4 + x / 2];
+ dst[dst_idx + x] = (top + cur) >> 1;
+ dst[dst_idx + stride + x] = cur;
}
dst_idx += stride * 2;
}