aboutsummaryrefslogtreecommitdiff
path: root/evc/src/bin/decode.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-12-06 15:52:08 +0100
committermetamuffin <metamuffin@disroot.org>2022-12-06 15:52:08 +0100
commit6a3aaca8727d3f0292d62dbcd54e3bf87df74c0c (patch)
treed9bc5fe941c49de0885795288e2ef45f88d0a40c /evc/src/bin/decode.rs
parenta5b09a2fc7a2e1ddc5776993373052cd3eda9b51 (diff)
downloadvideo-codec-experiments-6a3aaca8727d3f0292d62dbcd54e3bf87df74c0c.tar
video-codec-experiments-6a3aaca8727d3f0292d62dbcd54e3bf87df74c0c.tar.bz2
video-codec-experiments-6a3aaca8727d3f0292d62dbcd54e3bf87df74c0c.tar.zst
split files
Diffstat (limited to 'evc/src/bin/decode.rs')
-rw-r--r--evc/src/bin/decode.rs22
1 files changed, 3 insertions, 19 deletions
diff --git a/evc/src/bin/decode.rs b/evc/src/bin/decode.rs
index 44fcbe4..1500633 100644
--- a/evc/src/bin/decode.rs
+++ b/evc/src/bin/decode.rs
@@ -3,6 +3,7 @@ use anyhow::Context;
use clap::Parser;
use evc::{
block::{Block, BlockInner},
+ codec::decode::decode_block,
frame::Frame,
header::Header,
pixel::Pixel,
@@ -34,15 +35,11 @@ fn main() -> anyhow::Result<()> {
let block = Block::read(&mut input, size).context("reading encoded frame")?;
let mut frame = Frame::new(size);
- blit_block(
- &block,
- frame.view_mut((0, 0), size),
- prev.view((0, 0), size),
- );
+ decode_block(&block, frame.view_mut(), prev.view());
if args.debug {
let mut f2 = frame.clone();
- draw_debug(&block, f2.view_mut((0, 0), size));
+ draw_debug(&block, f2.view_mut());
f2.write(&mut output).context("writing raw frame")?;
} else {
frame.write(&mut output).context("writing raw frame")?;
@@ -54,19 +51,6 @@ fn main() -> anyhow::Result<()> {
Ok(())
}
-fn blit_block(block: &Block, mut target: View<&mut Frame>, prev: View<&Frame>) {
- match &block.inner {
- BlockInner::Literal(pixels) => target.set_pixels(pixels),
- BlockInner::Split(box [a, b]) => {
- let [at, bt] = target.split_mut_unsafe();
- let [ap, bp] = prev.split();
- blit_block(a, at, ap);
- blit_block(b, bt, bp);
- }
- BlockInner::Reference { translation: _ } => target.copy_from(&prev),
- }
-}
-
fn draw_debug(block: &Block, mut target: View<&mut Frame>) {
match &block.inner {
BlockInner::Literal(_) => {