diff options
author | metamuffin <metamuffin@disroot.org> | 2022-12-06 15:52:08 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-12-06 15:52:08 +0100 |
commit | 6a3aaca8727d3f0292d62dbcd54e3bf87df74c0c (patch) | |
tree | d9bc5fe941c49de0885795288e2ef45f88d0a40c /evc/src/bin/decode.rs | |
parent | a5b09a2fc7a2e1ddc5776993373052cd3eda9b51 (diff) | |
download | video-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.rs | 22 |
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(_) => { |