infrared 0.14.2

Infrared remote control library
Documentation
pub(crate) const fn scale_with_samplerate(len: u32, mut samplerate: u32) -> u32 {
    let mut div = 1_000_000;

    while len.checked_mul(samplerate).is_none() {
        div /= 1000;
        samplerate /= 1000;
    }

    (len * samplerate) / div
}

#[cfg(test)]
mod test {
    use super::scale_with_samplerate;

    #[test]
    fn test_scale_with_samplerate() {
        let r = scale_with_samplerate(560, 20_000);
        assert_eq!(r, 11);

        let r = scale_with_samplerate(560, 100_000);
        assert_eq!(r, 56);

        let r = scale_with_samplerate(560, 1_000_000);
        assert_eq!(r, 560);
    }
}