switch 8x8 cell diff to vertical
This commit is contained in:
parent
b85cb52ce0
commit
242724d7fd
4 changed files with 29 additions and 27 deletions
|
@ -1,6 +1,6 @@
|
|||
use crate::*;
|
||||
|
||||
pub fn cell_diff_8_horizontal(prev_frame: &Frame, frame: &Frame) -> EncodedFrame {
|
||||
pub fn cell_diff_8_vertical(prev_frame: &Frame, frame: &Frame) -> EncodedFrame {
|
||||
let cells_x = WIDTH / 8;
|
||||
let cells_y = HEIGHT / 8;
|
||||
let loss = 0;
|
||||
|
@ -8,17 +8,15 @@ pub fn cell_diff_8_horizontal(prev_frame: &Frame, frame: &Frame) -> EncodedFrame
|
|||
let mut bitmap: u32 = 0;
|
||||
let mut changed_pixels = Vec::new();
|
||||
|
||||
for celly in 0..cells_y {
|
||||
for cellx in 0..cells_x {
|
||||
for cellx in 0..cells_x {
|
||||
for celly in 0..cells_y {
|
||||
let mut changed = 0;
|
||||
let mut cell_contents = Vec::new();
|
||||
// todo try encoding the cells in frame space instead of one cell at a time
|
||||
for dx in 0..8 {
|
||||
for dy in 0..8 {
|
||||
let x = cellx * 8 + dx;
|
||||
let y = celly * 8 + dy;
|
||||
let pixel = frame[x][y];
|
||||
cell_contents.push(pixel);
|
||||
|
||||
if pixel != prev_frame[x][y] {
|
||||
changed += 1;
|
||||
}
|
||||
|
@ -26,14 +24,23 @@ pub fn cell_diff_8_horizontal(prev_frame: &Frame, frame: &Frame) -> EncodedFrame
|
|||
}
|
||||
if changed > loss {
|
||||
bitmap |= 1 << (cellx + cells_x * celly);
|
||||
changed_pixels.extend_from_slice(&cell_contents);
|
||||
}
|
||||
}
|
||||
}
|
||||
for x in 0..WIDTH {
|
||||
for y in 0..HEIGHT {
|
||||
let cellx = x / 8;
|
||||
let celly = y / 8;
|
||||
let bit = 1 << (cellx + cells_x * celly);
|
||||
if (bitmap & bit) != 0 {
|
||||
changed_pixels.push(frame[x][y]);
|
||||
}
|
||||
}
|
||||
}
|
||||
let mut data = vec![(bitmap >> 16) as u8, (bitmap >> 8) as u8, bitmap as u8];
|
||||
data.extend_from_slice(&rle_255_encode(&changed_pixels));
|
||||
EncodedFrame {
|
||||
encoding: Encoding::CellDiff8H,
|
||||
encoding: Encoding::CellDiff8V,
|
||||
data,
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue