diff options
author | metamuffin <metamuffin@disroot.org> | 2022-11-21 16:59:50 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-11-21 16:59:50 +0100 |
commit | 5248831232fa22a1f3d6515f7f6c7bee8994faf2 (patch) | |
tree | fdbff884248948d124ab864e21d65fe49c6ca0e2 /dhwt-codec/src/io.rs | |
download | video-codec-experiments-5248831232fa22a1f3d6515f7f6c7bee8994faf2.tar video-codec-experiments-5248831232fa22a1f3d6515f7f6c7bee8994faf2.tar.bz2 video-codec-experiments-5248831232fa22a1f3d6515f7f6c7bee8994faf2.tar.zst |
unify repos
Diffstat (limited to 'dhwt-codec/src/io.rs')
-rw-r--r-- | dhwt-codec/src/io.rs | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/dhwt-codec/src/io.rs b/dhwt-codec/src/io.rs new file mode 100644 index 0000000..c60bc79 --- /dev/null +++ b/dhwt-codec/src/io.rs @@ -0,0 +1,71 @@ +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 +} |