diff options
author | metamuffin <metamuffin@disroot.org> | 2022-12-06 09:06:30 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-12-06 09:06:30 +0100 |
commit | 86eda32f9d8fed77136ffd3495e93c4c37e7671b (patch) | |
tree | 8ce0b9eb22336ae19e5fae85c45ef376bd546ce9 /evc/src/bin/encode.rs | |
parent | d5179b3cc79bda5aa346f111be493f3f9b223d30 (diff) | |
download | video-codec-experiments-86eda32f9d8fed77136ffd3495e93c4c37e7671b.tar video-codec-experiments-86eda32f9d8fed77136ffd3495e93c4c37e7671b.tar.bz2 video-codec-experiments-86eda32f9d8fed77136ffd3495e93c4c37e7671b.tar.zst |
debug draw
Diffstat (limited to 'evc/src/bin/encode.rs')
-rw-r--r-- | evc/src/bin/encode.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/evc/src/bin/encode.rs b/evc/src/bin/encode.rs index 1934e26..3e34a3c 100644 --- a/evc/src/bin/encode.rs +++ b/evc/src/bin/encode.rs @@ -54,7 +54,7 @@ fn main() -> anyhow::Result<()> { 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.5 { + let inner = if diff < 0.9 { BlockInner::Reference { translation: (0, 0), } @@ -62,9 +62,15 @@ fn encode_block(view: View<&Frame>, prev: View<&Frame>) -> Block { if view.size.0 < 32 { BlockInner::Literal(view.pixels()) } else { - let [a, b] = view.split(); + let [av, bv] = view.split(); let [ap, bp] = prev.split(); - BlockInner::Split(Box::new([encode_block(a, ap), encode_block(b, bp)])) + let a = encode_block(av, ap); + let b = encode_block(bv, bp); + if a.is_literal() && b.is_literal() { + BlockInner::Literal(view.pixels()) + } else { + BlockInner::Split(Box::new([a, b])) + } } }; |