aboutsummaryrefslogtreecommitdiff
path: root/evc/src/codec/encode/simple.rs
diff options
context:
space:
mode:
Diffstat (limited to 'evc/src/codec/encode/simple.rs')
-rw-r--r--evc/src/codec/encode/simple.rs65
1 files changed, 0 insertions, 65 deletions
diff --git a/evc/src/codec/encode/simple.rs b/evc/src/codec/encode/simple.rs
deleted file mode 100644
index 2a971af..0000000
--- a/evc/src/codec/encode/simple.rs
+++ /dev/null
@@ -1,65 +0,0 @@
-use crate::{block::Block, frame::Frame, helpers::vector::Vec2, view::View};
-
-use super::EncodeConfig;
-
-pub fn exhaustive(
- view: &View<&Frame>,
- prev: &View<&Frame>,
- _config: &EncodeConfig,
- _max_diff: f64,
-) -> (f64, Block) {
- let mut diff = f64::INFINITY;
- let mut translation = Vec2::<isize>::ZERO;
- const OFFSETS: &[isize] = &[-64, -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32, 64];
- for x in OFFSETS {
- for y in OFFSETS {
- let t = Vec2 { x: *x, y: *y };
- let d = View::diff(&view, &prev.offset(t));
- if d < diff {
- translation = t;
- diff = d;
- }
- }
- }
- (diff, Block::Reference { translation })
-}
-
-pub fn fast(
- view: &View<&Frame>,
- prev: &View<&Frame>,
- _config: &EncodeConfig,
- max_diff: f64,
-) -> (f64, Block) {
- let mut offset = Vec2::<isize>::ZERO;
- let mut diff = View::diff(&view, &prev);
- if diff < max_diff {
- (diff, Block::REFZERO)
- } else {
- loop {
- let (mut d, mut o) = (diff, offset);
- let mut probe = |test_o: Vec2<isize>| {
- let test_d = View::diff(&prev.clone().offset(test_o), &view);
- if test_d < d {
- d = test_d;
- o = test_o;
- }
- };
-
- probe(offset + Vec2 { x: 8, y: 0 });
- probe(offset + Vec2 { x: -8, y: 0 });
- probe(offset + Vec2 { x: 0, y: 8 });
- probe(offset + Vec2 { x: 0, y: -8 });
-
- probe(offset + Vec2 { x: 1, y: 0 });
- probe(offset + Vec2 { x: -1, y: 0 });
- probe(offset + Vec2 { x: 0, y: 1 });
- probe(offset + Vec2 { x: 0, y: -1 });
-
- if d >= diff {
- break (diff, Block::Reference { translation: o });
- }
- diff = d;
- offset = o;
- }
- }
-}