diff options
Diffstat (limited to 'evc/src/bin')
-rw-r--r-- | evc/src/bin/encode.rs | 27 |
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, + } +} |