From 306f96164784a8cbf405e72fa4364d6523366e95 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 5 May 2025 15:09:54 +0200 Subject: old dir --- old/dhwt-codec/src/transform.rs | 42 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 old/dhwt-codec/src/transform.rs (limited to 'old/dhwt-codec/src/transform.rs') diff --git a/old/dhwt-codec/src/transform.rs b/old/dhwt-codec/src/transform.rs new file mode 100644 index 0000000..82bccd1 --- /dev/null +++ b/old/dhwt-codec/src/transform.rs @@ -0,0 +1,42 @@ +use crate::io::{Value, TWO}; +use std::ops::{Index, IndexMut}; + +pub fn encode + IndexMut>( + 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 + IndexMut>( + 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] + } + } +} -- cgit v1.2.3-70-g09d2