diff options
author | metamuffin <metamuffin@disroot.org> | 2025-05-05 22:54:55 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-05-05 22:54:55 +0200 |
commit | 2c09942bc1af0a1f41c0e3ee52323deede19e6bd (patch) | |
tree | eead04853ea85c2c157c31c74aa289bdf3cb5cdc /mtree-test/src/lib.rs | |
parent | a34a44ac915dbeb271d3e16b8f7b0a33a743e95c (diff) | |
download | video-codec-experiments-2c09942bc1af0a1f41c0e3ee52323deede19e6bd.tar video-codec-experiments-2c09942bc1af0a1f41c0e3ee52323deede19e6bd.tar.bz2 video-codec-experiments-2c09942bc1af0a1f41c0e3ee52323deede19e6bd.tar.zst |
a
Diffstat (limited to 'mtree-test/src/lib.rs')
-rw-r--r-- | mtree-test/src/lib.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/mtree-test/src/lib.rs b/mtree-test/src/lib.rs index e69de29..1214cbf 100644 --- a/mtree-test/src/lib.rs +++ b/mtree-test/src/lib.rs @@ -0,0 +1,29 @@ +use glam::I16Vec2; + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct AbsRef { + pub off: I16Vec2, + pub frame: u64, +} + +pub struct Frame(pub Vec<u8>); +impl Frame { + pub fn index(&self, res: I16Vec2, p: I16Vec2) -> [usize; 3] { + let res = res.as_usizevec2(); + let p = p.as_usizevec2(); + + let ystride = res.y; + let ysize = res.x * ystride; + let uvstride = res.x / 2; + let usize = uvstride * (res.y / 2); + let puv = p / 2; + [ + p.x + p.y * ystride, + ysize + puv.x + puv.y * uvstride, + ysize + usize + puv.x + puv.y * uvstride, + ] + } + pub fn get(&self, res: I16Vec2, p: I16Vec2) -> [u8; 3] { + self.index(res, p).map(|i| self.0[i]) + } +} |