summaryrefslogtreecommitdiff
path: root/src/color.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/color.rs')
-rw-r--r--src/color.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/color.rs b/src/color.rs
new file mode 100644
index 0000000..3b27fa0
--- /dev/null
+++ b/src/color.rs
@@ -0,0 +1,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 ),
+ )
+}