From 306f96164784a8cbf405e72fa4364d6523366e95 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 5 May 2025 15:09:54 +0200 Subject: old dir --- old/evc/src/refsampler.rs | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 old/evc/src/refsampler.rs (limited to 'old/evc/src/refsampler.rs') diff --git a/old/evc/src/refsampler.rs b/old/evc/src/refsampler.rs new file mode 100644 index 0000000..8a8f44f --- /dev/null +++ b/old/evc/src/refsampler.rs @@ -0,0 +1,51 @@ +use crate::{ + block::AdvancedReference, + format::ser::map_scalar8, + frame::Frame, + helpers::{matrix::Mat2, pixel::Pixel, vector::Vec2}, + view::View, +}; + +#[derive(Debug, Clone)] +pub struct Sampler<'a> { + pub view: View<&'a Frame>, + pub halfsize: Vec2, + + pub translation: Vec2, + pub transform: Mat2, + + pub value_scale: f32, +} + +impl<'a> Sampler<'a> { + #[inline] + pub fn sample(&self, p: Vec2) -> Pixel { + self.view + .sample(self.translation + self.transform.transform(p - self.halfsize) + self.halfsize) + .scale(self.value_scale) + } + pub fn from_refblock( + view: View<&'a Frame>, + AdvancedReference { + translation, + transform, + value_scale, + }: &AdvancedReference, + ) -> Self { + Self { + transform: Mat2 { + a: map_scalar8(transform.a), + b: map_scalar8(transform.b), + c: map_scalar8(transform.c), + d: map_scalar8(transform.d), + }, + halfsize: Into::>::into(view.size).scale(0.5), + translation: Vec2 { + x: map_scalar8(translation.x), + y: map_scalar8(translation.y), + }, + value_scale: 1.05f32.powf(*value_scale as f32), + view, + } + } +} -- cgit v1.2.3-70-g09d2