aboutsummaryrefslogtreecommitdiff
path: root/evc/src/codec/encode.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-12-06 16:45:30 +0100
committermetamuffin <metamuffin@disroot.org>2022-12-06 16:45:30 +0100
commit849c3769fbd38940c9bfa73bcea160848a38d9b6 (patch)
treead7cfc70b4c121e94a46e89e7c95f260abbcd791 /evc/src/codec/encode.rs
parent624471a4b1f2e1656a2ba46070d8f127dcd0e364 (diff)
downloadvideo-codec-experiments-849c3769fbd38940c9bfa73bcea160848a38d9b6.tar
video-codec-experiments-849c3769fbd38940c9bfa73bcea160848a38d9b6.tar.bz2
video-codec-experiments-849c3769fbd38940c9bfa73bcea160848a38d9b6.tar.zst
simplify block type
Diffstat (limited to 'evc/src/codec/encode.rs')
-rw-r--r--evc/src/codec/encode.rs21
1 files changed, 6 insertions, 15 deletions
diff --git a/evc/src/codec/encode.rs b/evc/src/codec/encode.rs
index 1729e94..43a2783 100644
--- a/evc/src/codec/encode.rs
+++ b/evc/src/codec/encode.rs
@@ -1,34 +1,25 @@
-use crate::{
- block::{Block, BlockInner},
- frame::Frame,
- view::View,
-};
+use crate::{block::Block, frame::Frame, view::View};
pub fn encode_block(view: View<&Frame>, prev: View<&Frame>) -> Block {
let diff = View::diff(&view, &prev) / view.area() as f64;
// eprintln!("{:?} {diff}", view.size);
- let inner = if diff < 0.9 {
- BlockInner::Reference {
+ if diff < 0.9 {
+ Block::Reference {
translation: (0, 0),
}
} else {
if view.size.0 < 16 {
- BlockInner::Literal(view.pixels())
+ Block::Literal(view.pixels())
} else {
let [av, bv] = view.split();
let [ap, bp] = prev.split();
let a = encode_block(av, ap);
let b = encode_block(bv, bp);
if a.is_literal() && b.is_literal() {
- BlockInner::Literal(view.pixels())
+ Block::Literal(view.pixels())
} else {
- BlockInner::Split(Box::new([a, b]))
+ Block::Split(Box::new([a, b]))
}
}
- };
-
- Block {
- size: view.size,
- inner,
}
}