diff options
Diffstat (limited to 'evc/src/bin')
-rw-r--r-- | evc/src/bin/encode.rs | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/evc/src/bin/encode.rs b/evc/src/bin/encode.rs index 8d37443..0edc3a1 100644 --- a/evc/src/bin/encode.rs +++ b/evc/src/bin/encode.rs @@ -1,7 +1,8 @@ use clap::Parser; use evc::{ block::{Block, BlockInner}, - frame::{Frame, View}, + frame::Frame, + view::View, }; use std::io::{self, BufReader}; @@ -40,12 +41,18 @@ fn main() -> io::Result<()> { 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)])) + let inner = if diff < 10_000.0 { + BlockInner::Reference { + translation: (0, 0), + } } else { - todo!() + if view.size.0 < 32 { + BlockInner::Literal(view.pixels()) + } else { + let [a, b] = view.split(); + let [ap, bp] = prev.split(); + BlockInner::Split(Box::new([encode_block(a, ap), encode_block(b, bp)])) + } }; Block { |