diff options
author | metamuffin <metamuffin@disroot.org> | 2022-12-05 22:58:41 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-12-05 22:58:41 +0100 |
commit | 4b4db2adea4afb5d77383007bcdc4536c1fadf43 (patch) | |
tree | 3cb621105c738d95e3d6f9f7fd260b3d22d5bfd4 /evc/src/bin/encode.rs | |
parent | 4b12b320d48abf90a6f524a226604ad738e5684f (diff) | |
download | video-codec-experiments-4b4db2adea4afb5d77383007bcdc4536c1fadf43.tar video-codec-experiments-4b4db2adea4afb5d77383007bcdc4536c1fadf43.tar.bz2 video-codec-experiments-4b4db2adea4afb5d77383007bcdc4536c1fadf43.tar.zst |
splitting
Diffstat (limited to 'evc/src/bin/encode.rs')
-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, + } +} |