aboutsummaryrefslogtreecommitdiff
path: root/dhwt-codec
diff options
context:
space:
mode:
Diffstat (limited to 'dhwt-codec')
-rw-r--r--dhwt-codec/.gitignore2
-rw-r--r--dhwt-codec/Cargo.lock356
-rw-r--r--dhwt-codec/Cargo.toml9
-rwxr-xr-xdhwt-codec/run16
-rw-r--r--dhwt-codec/src/bin/decode.rs57
-rw-r--r--dhwt-codec/src/bin/encode.rs57
-rw-r--r--dhwt-codec/src/bin/export.rs42
-rw-r--r--dhwt-codec/src/bin/import.rs51
-rw-r--r--dhwt-codec/src/io.rs71
-rw-r--r--dhwt-codec/src/lib.rs23
-rw-r--r--dhwt-codec/src/transform.rs42
-rw-r--r--dhwt-codec/src/trim.rs36
-rw-r--r--dhwt-codec/src/view.rs42
13 files changed, 0 insertions, 804 deletions
diff --git a/dhwt-codec/.gitignore b/dhwt-codec/.gitignore
deleted file mode 100644
index 495c6ed..0000000
--- a/dhwt-codec/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/target
-/a
diff --git a/dhwt-codec/Cargo.lock b/dhwt-codec/Cargo.lock
deleted file mode 100644
index 7e5de36..0000000
--- a/dhwt-codec/Cargo.lock
+++ /dev/null
@@ -1,356 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "anstream"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44"
-dependencies = [
- "anstyle",
- "anstyle-parse",
- "anstyle-query",
- "anstyle-wincon",
- "colorchoice",
- "utf8parse",
-]
-
-[[package]]
-name = "anstyle"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
-
-[[package]]
-name = "anstyle-parse"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140"
-dependencies = [
- "utf8parse",
-]
-
-[[package]]
-name = "anstyle-query"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
-dependencies = [
- "windows-sys",
-]
-
-[[package]]
-name = "anstyle-wincon"
-version = "3.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628"
-dependencies = [
- "anstyle",
- "windows-sys",
-]
-
-[[package]]
-name = "autocfg"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
-
-[[package]]
-name = "bincode"
-version = "2.0.0-rc.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f11ea1a0346b94ef188834a65c068a03aec181c94896d481d7a0a40d85b0ce95"
-dependencies = [
- "bincode_derive",
- "serde",
-]
-
-[[package]]
-name = "bincode_derive"
-version = "2.0.0-rc.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e30759b3b99a1b802a7a3aa21c85c3ded5c28e1c83170d82d70f08bbf7f3e4c"
-dependencies = [
- "virtue",
-]
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "clap"
-version = "4.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b"
-dependencies = [
- "clap_builder",
- "clap_derive",
-]
-
-[[package]]
-name = "clap_builder"
-version = "4.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663"
-dependencies = [
- "anstream",
- "anstyle",
- "clap_lex",
- "strsim",
-]
-
-[[package]]
-name = "clap_derive"
-version = "4.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"
-dependencies = [
- "heck",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "clap_lex"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
-
-[[package]]
-name = "colorchoice"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
-
-[[package]]
-name = "crossbeam-deque"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
-dependencies = [
- "cfg-if",
- "crossbeam-epoch",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.9.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
-dependencies = [
- "autocfg",
- "cfg-if",
- "crossbeam-utils",
- "memoffset",
- "scopeguard",
-]
-
-[[package]]
-name = "crossbeam-utils"
-version = "0.8.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
-name = "dhwt-codec"
-version = "0.1.0"
-dependencies = [
- "bincode",
- "clap",
- "rayon",
-]
-
-[[package]]
-name = "either"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
-
-[[package]]
-name = "heck"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
-
-[[package]]
-name = "memoffset"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.69"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.33"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "rayon"
-version = "1.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
-dependencies = [
- "either",
- "rayon-core",
-]
-
-[[package]]
-name = "rayon-core"
-version = "1.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
-dependencies = [
- "crossbeam-deque",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "scopeguard"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
-
-[[package]]
-name = "serde"
-version = "1.0.190"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.190"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "strsim"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
-
-[[package]]
-name = "syn"
-version = "2.0.39"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "unicode-ident"
-version = "1.0.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
-
-[[package]]
-name = "utf8parse"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
-
-[[package]]
-name = "virtue"
-version = "0.0.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9dcc60c0624df774c82a0ef104151231d37da4962957d691c011c852b2473314"
-
-[[package]]
-name = "windows-sys"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
-dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
diff --git a/dhwt-codec/Cargo.toml b/dhwt-codec/Cargo.toml
deleted file mode 100644
index 5a3fe24..0000000
--- a/dhwt-codec/Cargo.toml
+++ /dev/null
@@ -1,9 +0,0 @@
-[package]
-name = "dhwt-codec"
-version = "0.1.0"
-edition = "2021"
-
-[dependencies]
-bincode = "2.0.0-rc.3"
-clap = { version = "4.5.4", features = ["derive"] }
-rayon = "1.10.0"
diff --git a/dhwt-codec/run b/dhwt-codec/run
deleted file mode 100755
index 9f7013e..0000000
--- a/dhwt-codec/run
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/fish
-
-set f $argv[1]
-set x $argv[2]
-set y $argv[3]
-set z $argv[4]
-
-# cat /dev/urandom | cargo run --release --bin import -- -x $x -y $y -z $z a/inp
-ffmpeg -i $f -frames:v $z -filter_complex [0]scale={$x}x{$y},format=rgb24 -f rawvideo pipe:1 | cargo run --release --bin import -- -x $x -y $y -z $z a/inp
-
-time cargo run --release --bin encode -- -x $x -y $y -z $z a/inp a/enc
-time cargo run --release --bin decode -- -x $x -y $y -z $z a/enc a/out
-
-cargo run --release --bin export -- -x (math $x / 2) -y (math $y / 2) -z (math $z / 2) a/enc | ffmpeg -y -pixel_format rgb24 -f rawvideo -video_size (math $x / 2)x(math $y / 2) -i pipe:0 a/enc.webm
-cargo run --release --bin export -- -x $x -y $y -z $z a/out | ffmpeg -y -pixel_format rgb24 -f rawvideo -video_size {$x}x{$y} -i pipe:0 a/out.webm
-# cargo run --release --bin export -- -x $x -y $y -z $z a/raw_out | ffplay -pixel_format rgb24 -f rawvideo -video_size {$x}x{$y} pipe:0
diff --git a/dhwt-codec/src/bin/decode.rs b/dhwt-codec/src/bin/decode.rs
deleted file mode 100644
index 1930dfb..0000000
--- a/dhwt-codec/src/bin/decode.rs
+++ /dev/null
@@ -1,57 +0,0 @@
-use clap::Parser;
-use dhwt_codec::{
- io::{empty_videobuf, infile, outfile, read_videobuf_small, write_videobuf, VideoBuf},
- transform, trim,
- view::{BufferView, IndexMode},
- CommonArgs,
-};
-use rayon::prelude::{IntoParallelIterator, ParallelIterator};
-
-fn main() {
- let args = CommonArgs::parse();
-
- let mut inf = infile(&args.infile);
- let mut of = outfile(&args.outfile);
-
- for c in 0..args.channels {
- eprintln!("encoding channel #{c}");
- let a = empty_videobuf(args.x, args.y, args.z);
- let b = read_videobuf_small(&mut inf);
-
- eprintln!("\tdecoding Z");
- (0..args.x).into_par_iter().for_each(|x| {
- for y in 0..args.y {
- run_mode(make_mut(&b), make_mut(&a), IndexMode::XY(x, y), args.z)
- }
- });
- eprintln!("\tdecoding Y");
- (0..args.x).into_par_iter().for_each(|x| {
- for z in 0..args.z {
- run_mode(make_mut(&a), make_mut(&b), IndexMode::XZ(x, z), args.y)
- }
- });
- eprintln!("\tdecoding X");
- (0..args.y).into_par_iter().for_each(|y| {
- for z in 0..args.z {
- run_mode(make_mut(&b), make_mut(&a), IndexMode::YZ(y, z), args.x)
- }
- });
- write_videobuf(&mut of, a);
- }
-}
-
-fn run_mode(a: &mut VideoBuf, b: &mut VideoBuf, mode: IndexMode, size: usize) {
- trim::untrim(size, &mut BufferView::new(b, mode));
- transform::decode(
- size,
- &mut BufferView::new(a, mode),
- &mut BufferView::new(b, mode),
- );
-}
-
-fn make_mut<T>(r: &T) -> &mut T {
- #[allow(mutable_transmutes)]
- unsafe {
- std::mem::transmute::<&T, &mut T>(r)
- }
-}
diff --git a/dhwt-codec/src/bin/encode.rs b/dhwt-codec/src/bin/encode.rs
deleted file mode 100644
index db4c70e..0000000
--- a/dhwt-codec/src/bin/encode.rs
+++ /dev/null
@@ -1,57 +0,0 @@
-use clap::Parser;
-use dhwt_codec::{
- io::{empty_videobuf, infile, outfile, read_videobuf, write_videobuf_small, VideoBuf},
- transform, trim,
- view::{BufferView, IndexMode},
- CommonArgs,
-};
-use rayon::prelude::{IntoParallelIterator, ParallelIterator};
-
-fn main() {
- let args = CommonArgs::parse();
-
- let mut inf = infile(&args.infile);
- let mut of = outfile(&args.outfile);
-
- for c in 0..args.channels {
- eprintln!("encoding channel #{c}");
- let o = empty_videobuf(args.x, args.y, args.z);
- let i = read_videobuf(&mut inf);
-
- eprintln!("\tencoding X");
- (0..args.y).into_par_iter().for_each(|y| {
- for z in 0..args.z {
- run_mode(make_mut(&i), make_mut(&o), IndexMode::YZ(y, z), args.x)
- }
- });
- eprintln!("\tencoding Y");
- (0..args.x).into_par_iter().for_each(|x| {
- for z in 0..args.z {
- run_mode(make_mut(&o), make_mut(&i), IndexMode::XZ(x, z), args.y)
- }
- });
- eprintln!("\tencoding Z");
- (0..args.x).into_par_iter().for_each(|x| {
- for y in 0..args.y {
- run_mode(make_mut(&i), make_mut(&o), IndexMode::XY(x, y), args.z)
- }
- });
- write_videobuf_small(&mut of, o);
- }
-}
-
-fn run_mode(a: &mut VideoBuf, b: &mut VideoBuf, mode: IndexMode, size: usize) {
- transform::encode(
- size,
- &mut BufferView::new(a, mode),
- &mut BufferView::new(b, mode),
- );
- trim::trim(size, &mut BufferView::new(b, mode));
-}
-
-fn make_mut<T>(r: &T) -> &mut T {
- #[allow(mutable_transmutes)]
- unsafe {
- std::mem::transmute::<&T, &mut T>(r)
- }
-}
diff --git a/dhwt-codec/src/bin/export.rs b/dhwt-codec/src/bin/export.rs
deleted file mode 100644
index 73f3067..0000000
--- a/dhwt-codec/src/bin/export.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-use clap::Parser;
-use dhwt_codec::io::{infile, read_videobuf};
-use std::io::{stdout, BufWriter, Write};
-
-#[derive(Parser)]
-#[clap(about)]
-struct ExportArgs {
- #[arg(short)]
- x: usize,
- #[arg(short)]
- y: usize,
- #[arg(short)]
- z: usize,
-
- #[arg(short, long, default_value = "3")]
- channels: usize,
-
- infile: String,
-}
-
-fn main() {
- let args = ExportArgs::parse();
-
- let mut i = infile(&args.infile);
- let mut writer = BufWriter::new(stdout());
-
- let mut channels = vec![];
- for _ in 0..args.channels {
- channels.push(read_videobuf(&mut i))
- }
-
- for z in 0..args.z {
- for y in 0..args.y {
- for x in 0..args.x {
- for c in 0..args.channels {
- writer.write_all(&[channels[c][x][y][z] as u8]).unwrap();
- }
- }
- }
- }
- writer.flush().unwrap();
-}
diff --git a/dhwt-codec/src/bin/import.rs b/dhwt-codec/src/bin/import.rs
deleted file mode 100644
index cd2a35e..0000000
--- a/dhwt-codec/src/bin/import.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-use clap::Parser;
-use dhwt_codec::io::{outfile, write_videobuf, Value};
-use std::io::{stdin, Read};
-
-#[derive(Parser)]
-#[clap(about)]
-struct ImportArgs {
- #[arg(short)]
- x: usize,
- #[arg(short)]
- y: usize,
- #[arg(short)]
- z: usize,
-
- #[arg(short, long, default_value = "3")]
- channels: usize,
-
- outfile: String,
-}
-
-fn main() {
- let args = ImportArgs::parse();
-
- let mut rawbuf = (0..(args.x * args.y * args.z * args.channels))
- .map(|_| 0u8)
- .collect::<Vec<_>>();
- stdin().read_exact(&mut rawbuf).unwrap();
-
- let mut o = outfile(&args.outfile);
-
- for c in 0..args.channels {
- let mut cols = vec![];
- for x in 0..args.x {
- let mut col = vec![];
- for y in 0..args.y {
- let mut span = vec![];
- for z in 0..args.z {
- span.push(
- rawbuf[c
- + (x * args.channels)
- + (y * args.channels * args.x)
- + (z * args.channels * args.x * args.y)] as Value,
- );
- }
- col.push(span);
- }
- cols.push(col)
- }
- write_videobuf(&mut o, cols)
- }
-}
diff --git a/dhwt-codec/src/io.rs b/dhwt-codec/src/io.rs
deleted file mode 100644
index c60bc79..0000000
--- a/dhwt-codec/src/io.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-use bincode::config;
-use std::{
- fs::File,
- io::{BufReader, BufWriter, Read, Write},
-};
-
-pub type Value = f32;
-pub type VideoBuf = Vec<Vec<Vec<Value>>>;
-pub const ZERO: Value = 0 as Value;
-pub const TWO: Value = 2 as Value;
-
-pub fn empty_videobuf(x: usize, y: usize, z: usize) -> VideoBuf {
- (0..x)
- .map(|_| (0..y).map(|_| (0..z).map(|_| ZERO).collect()).collect())
- .collect()
-}
-
-pub fn outfile(p: &str) -> impl Write {
- BufWriter::new(File::create(p).unwrap())
-}
-pub fn infile(p: &str) -> impl Read {
- BufReader::new(File::open(p).unwrap())
-}
-
-pub fn read_videobuf(f: &mut impl Read) -> VideoBuf {
- bincode::decode_from_std_read(f, config::standard()).unwrap()
-}
-pub fn write_videobuf(f: &mut impl Write, i: VideoBuf) {
- bincode::encode_into_std_write(i, f, config::standard()).unwrap();
-}
-
-pub fn write_videobuf_small(f: &mut impl Write, mut i: VideoBuf) {
- for _ in 0..(i.len() / 2) {
- i.pop();
- }
- for i in &mut i {
- for _ in 0..(i.len() / 2) {
- i.pop();
- }
- for i in i {
- for _ in 0..(i.len() / 2) {
- i.pop();
- }
- }
- }
- write_videobuf(f, i);
-}
-pub fn read_videobuf_small(f: &mut impl Read) -> VideoBuf {
- let mut i = read_videobuf(f);
-
- for i in &mut i {
- for i in i {
- for _ in 0..i.len() {
- i.push(ZERO);
- }
- }
- }
- for i in &mut i {
- for _ in 0..i.len() {
- i.push((0..i[0].len()).map(|_| ZERO).collect());
- }
- }
- for _ in 0..i.len() {
- i.push(
- (0..i[0].len())
- .map(|_| ((0..i[0][0].len()).map(|_| ZERO)).collect())
- .collect(),
- );
- }
- i
-}
diff --git a/dhwt-codec/src/lib.rs b/dhwt-codec/src/lib.rs
deleted file mode 100644
index 69d6b4c..0000000
--- a/dhwt-codec/src/lib.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-use clap::Parser;
-
-pub mod io;
-pub mod transform;
-pub mod trim;
-pub mod view;
-
-#[derive(Parser)]
-#[clap(about)]
-pub struct CommonArgs {
- #[arg(short)]
- pub x: usize,
- #[arg(short)]
- pub y: usize,
- #[arg(short)]
- pub z: usize,
-
- #[arg(short, long, default_value = "3")]
- pub channels: usize,
-
- pub infile: String,
- pub outfile: String,
-}
diff --git a/dhwt-codec/src/transform.rs b/dhwt-codec/src/transform.rs
deleted file mode 100644
index 82bccd1..0000000
--- a/dhwt-codec/src/transform.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-use crate::io::{Value, TWO};
-use std::ops::{Index, IndexMut};
-
-pub fn encode<X: Index<usize, Output = Value> + IndexMut<usize, Output = Value>>(
- size: usize,
- a: &mut X,
- b: &mut X,
-) {
- let mut k = size;
- while k != 1 {
- k /= 2;
- for i in 0..k {
- let x = a[i * 2];
- let y = a[i * 2 + 1];
- b[i] = x + y;
- b[k + i] = x - y;
- }
- for i in 0..k {
- a[i] = b[i]
- }
- }
-}
-
-pub fn decode<X: Index<usize, Output = Value> + IndexMut<usize, Output = Value>>(
- size: usize,
- a: &mut X,
- b: &mut X,
-) {
- let mut k = 1;
- while k != size {
- for i in 0..k {
- let avr = a[i] / TWO;
- let spread = a[i + k] / TWO;
- b[i * 2] = avr + spread;
- b[i * 2 + 1] = avr - spread;
- }
- k *= 2;
- for i in 0..k {
- a[i] = b[i]
- }
- }
-}
diff --git a/dhwt-codec/src/trim.rs b/dhwt-codec/src/trim.rs
deleted file mode 100644
index 85a920a..0000000
--- a/dhwt-codec/src/trim.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-use crate::io::{Value, TWO, ZERO};
-use std::ops::{Index, IndexMut};
-
-pub fn trim<X: Index<usize, Output = Value> + IndexMut<usize, Output = Value>>(
- size: usize,
- a: &mut X,
-) {
- let half = size / 2;
- let quarter = size / 4;
- for i in 0..(size / 2 / 4) {
- let hi = half + i * 4;
- let qi = quarter + i * 2;
- a[qi] = (a[qi + 0] + a[qi + 1]) / TWO;
- a[qi + 1] = (a[hi + 0] + a[hi + 1] + a[hi + 2] + a[hi + 3]) / (TWO * TWO);
- }
- for i in half..size {
- a[i] = ZERO;
- }
-}
-
-pub fn untrim<X: Index<usize, Output = Value> + IndexMut<usize, Output = Value>>(
- size: usize,
- a: &mut X,
-) {
- let half = size / 2;
- let quarter = size / 4;
- for i in 0..(size / 2 / 4) {
- let hi = half + i * 4;
- let qi = quarter + i * 2;
- a[hi + 0] = a[qi + 1];
- a[hi + 1] = a[qi + 1];
- a[hi + 2] = a[qi + 1];
- a[hi + 3] = a[qi + 1];
- a[qi + 1] = a[qi];
- }
-}
diff --git a/dhwt-codec/src/view.rs b/dhwt-codec/src/view.rs
deleted file mode 100644
index 0f2ecf7..0000000
--- a/dhwt-codec/src/view.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-use std::ops::{Index, IndexMut};
-
-use crate::io::{VideoBuf, Value};
-
-#[derive(Copy, Clone, Debug)]
-pub enum IndexMode {
- XY(usize, usize),
- XZ(usize, usize),
- YZ(usize, usize),
-}
-
-pub struct BufferView<'a> {
- mode: IndexMode,
- buf: &'a mut VideoBuf,
-}
-
-impl<'a> BufferView<'a> {
- pub fn new(buf: &'a mut VideoBuf, mode: IndexMode) -> Self {
- BufferView { mode, buf }
- }
-}
-
-impl Index<usize> for BufferView<'_> {
- type Output = Value;
-
- fn index(&self, a: usize) -> &Self::Output {
- match self.mode {
- IndexMode::XY(x, y) => &self.buf[x][y][a],
- IndexMode::XZ(x, z) => &self.buf[x][a][z],
- IndexMode::YZ(y, z) => &self.buf[a][y][z],
- }
- }
-}
-impl IndexMut<usize> for BufferView<'_> {
- fn index_mut(&mut self, a: usize) -> &mut Self::Output {
- match self.mode {
- IndexMode::XY(x, y) => &mut self.buf[x][y][a],
- IndexMode::XZ(x, z) => &mut self.buf[x][a][z],
- IndexMode::YZ(y, z) => &mut self.buf[a][y][z],
- }
- }
-}