diff options
author | metamuffin <metamuffin@disroot.org> | 2022-12-07 21:23:42 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-12-07 21:23:42 +0100 |
commit | 2ac18802b58d671c10538e78d50a620baad9a188 (patch) | |
tree | 17f924039fd8f3dae2801902d4bdeaac8ea74624 /evc/src/refsampler.rs | |
parent | 9d7986bbfd44b69a623fa29528b5d13000b91c77 (diff) | |
download | video-codec-experiments-2ac18802b58d671c10538e78d50a620baad9a188.tar video-codec-experiments-2ac18802b58d671c10538e78d50a620baad9a188.tar.bz2 video-codec-experiments-2ac18802b58d671c10538e78d50a620baad9a188.tar.zst |
advanced transform
Diffstat (limited to 'evc/src/refsampler.rs')
-rw-r--r-- | evc/src/refsampler.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/evc/src/refsampler.rs b/evc/src/refsampler.rs index ad02332..16a0600 100644 --- a/evc/src/refsampler.rs +++ b/evc/src/refsampler.rs @@ -9,6 +9,7 @@ use crate::{ #[derive(Debug, Clone)] pub struct Sampler<'a> { pub view: View<&'a Frame>, + pub halfsize: Vec2<f32>, pub translation: Vec2<f32>, pub transform: Mat2<f32>, @@ -20,8 +21,8 @@ impl<'a> Sampler<'a> { #[inline] pub fn sample(&self, p: Vec2<f32>) -> Pixel { self.view - .sample(self.translation + p) // self.transform.transform(p)) - // .scale(self.value_scale) + .sample(self.translation + self.transform.transform(p + self.halfsize) - self.halfsize) + // .scale(self.value_scale) } pub fn from_refblock( view: View<&'a Frame>, @@ -38,6 +39,7 @@ impl<'a> Sampler<'a> { c: map_scalar8(transform.c), d: map_scalar8(transform.d), }, + halfsize: Into::<Vec2<f32>>::into(view.size).scale(0.5), translation: Vec2 { x: map_scalar8(translation.x), y: map_scalar8(translation.y), |