aboutsummaryrefslogtreecommitdiff
path: root/evc/src/bin
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-12-05 23:11:56 +0100
committermetamuffin <metamuffin@disroot.org>2022-12-05 23:11:56 +0100
commit7282efd3720e992735840f9495cbb12ba6d880c3 (patch)
treebfe21187e147b108ab53b89161ce0c7927d23ef2 /evc/src/bin
parent4b4db2adea4afb5d77383007bcdc4536c1fadf43 (diff)
downloadvideo-codec-experiments-7282efd3720e992735840f9495cbb12ba6d880c3.tar
video-codec-experiments-7282efd3720e992735840f9495cbb12ba6d880c3.tar.bz2
video-codec-experiments-7282efd3720e992735840f9495cbb12ba6d880c3.tar.zst
encoding
Diffstat (limited to 'evc/src/bin')
-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 {