aboutsummaryrefslogtreecommitdiff
path: root/evc/src/bin/encode.rs
diff options
context:
space:
mode:
Diffstat (limited to 'evc/src/bin/encode.rs')
-rw-r--r--evc/src/bin/encode.rs27
1 files changed, 25 insertions, 2 deletions
diff --git a/evc/src/bin/encode.rs b/evc/src/bin/encode.rs
index c932fe9..8d37443 100644
--- a/evc/src/bin/encode.rs
+++ b/evc/src/bin/encode.rs
@@ -1,5 +1,8 @@
use clap::Parser;
-use evc::{frame::Frame};
+use evc::{
+ block::{Block, BlockInner},
+ frame::{Frame, View},
+};
use std::io::{self, BufReader};
#[derive(Parser)]
@@ -23,10 +26,30 @@ fn main() -> io::Result<()> {
println!("frame {i}");
let frame = Frame::read(&mut input, size)?;
-
+ let v1 = frame.view((0, 0), size);
+ let v2 = prev_frame.view((0, 0), size);
+
+ encode_block(v1, v2);
prev_frame = frame;
}
Ok(())
}
+
+fn encode_block(view: View, prev: View) -> Block {
+ let diff = View::diff(&view, &prev);
+
+ let inner = if diff > 100_000.0 {
+ let [a, b] = view.split();
+ let [ap, bp] = prev.split();
+ BlockInner::Split(Box::new([encode_block(a, ap), encode_block(b, bp)]))
+ } else {
+ todo!()
+ };
+
+ Block {
+ size: view.size,
+ inner,
+ }
+}