aboutsummaryrefslogtreecommitdiff
path: root/test2/src/encode.rs
diff options
context:
space:
mode:
Diffstat (limited to 'test2/src/encode.rs')
-rw-r--r--test2/src/encode.rs22
1 files changed, 15 insertions, 7 deletions
diff --git a/test2/src/encode.rs b/test2/src/encode.rs
index b024c17..8db88b0 100644
--- a/test2/src/encode.rs
+++ b/test2/src/encode.rs
@@ -25,8 +25,8 @@ impl BitstreamFilter for Enc {
};
let mut out = Vec::new();
- let mut savblock = Vec::new();
- let mut refblock = Vec::new();
+ let mut oldblock = Vec::new();
+ let mut newblock = Vec::new();
for by in 0..frame.res.y / BLOCK_SIZE {
for bx in 0..frame.res.x / BLOCK_SIZE {
@@ -61,19 +61,27 @@ impl BitstreamFilter for Enc {
}
}
- savblock.clear();
- frame.export_block(boff, &mut savblock);
+ oldblock.clear();
+ frame.export_block(boff, &mut oldblock);
- refblock.clear();
- self.last.export_block(best_off, &mut refblock);
+ Frame::copy_block(&self.last, &mut frame, best_off, boff);
+
+ newblock.clear();
+ frame.export_block(boff, &mut newblock);
let reloff = best_off - boff;
out.push((reloff.x + 127) as u8);
out.push((reloff.y + 127) as u8);
for i in 0..(BLOCK_SIZE * BLOCK_SIZE + BLOCK_SIZE * BLOCK_SIZE / 2) {
- out.push(savblock[i as usize] - refblock[i as usize])
+ out.push(oldblock[i as usize] - newblock[i as usize])
}
+
+ frame.import_block_diff(
+ boff,
+ &out[out.len()
+ - (BLOCK_SIZE * BLOCK_SIZE + BLOCK_SIZE * BLOCK_SIZE / 2) as usize..],
+ );
}
}