Skip to main content

chromaprint/fingerprint/
quantizer.rs

1/// 4-level scalar quantizer with 3 thresholds.
2#[derive(Debug, Clone, Copy)]
3pub struct Quantizer {
4    pub t0: f64,
5    pub t1: f64,
6    pub t2: f64,
7}
8
9impl Quantizer {
10    /// Quantize a value to one of 4 levels (0-3).
11    #[inline(always)]
12    pub fn quantize(&self, value: f64) -> u32 {
13        if value < self.t1 {
14            if value < self.t0 { 0 } else { 1 }
15        } else {
16            if value < self.t2 { 2 } else { 3 }
17        }
18    }
19}