summaryrefslogtreecommitdiff
path: root/src/color.rs
blob: 3b27fa010ead2b79cc919e28f0cb065ad6946b5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
// TODO: avoid using float
pub fn yuv2rgb(y: u8, u: u8, v: u8) -> (u8, u8, u8){
    fn rc(v: f64) -> u8{ v.round().clamp(0., 255.) as u8 }
    let y = y as f64;
    let u = u as f64 - 128.;
    let v = v as f64 - 128.;
    (
        rc(y           + 1.402*v),
        rc(y - 0.344*u - 0.714*v),
        rc(y + 1.772*u          ),
    )
}