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.rs19
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 {