core/scale: use BT.601 YUV by default in conversion
[nihav.git] / nihav-core / src / scale / colorcvt.rs
index 056c0504dc5f8db4e50772f3f47ebc68b996fb5b..bc6c4b6586551fc1ff33e80c3b79cea15ee26bea 100644 (file)
@@ -1,6 +1,8 @@
 use super::*;
 use super::kernel::Kernel;
 
+const DEFAULT_YUV: usize = 4;
+
 const YUV_PARAMS: &[[f32; 2]] = &[
     [ 0.333,    0.333   ], // RGB
     [ 0.2126,   0.0722  ], // ITU-R BT709
@@ -172,7 +174,7 @@ impl Kernel for RgbToYuv {
     fn init(&mut self, in_fmt: &ScaleInfo, dest_fmt: &ScaleInfo) -> ScaleResult<NABufferType> {
         let mut df = dest_fmt.fmt;
 //todo coeff selection
-        make_rgb2yuv(YUV_PARAMS[2][0], YUV_PARAMS[2][1], &mut self.matrix);
+        make_rgb2yuv(YUV_PARAMS[DEFAULT_YUV][0], YUV_PARAMS[DEFAULT_YUV][1], &mut self.matrix);
         if let ColorModel::YUV(yuvsm) = df.get_model() {
             match yuvsm {
             YUVSubmodel::YCbCr  => {},
@@ -302,12 +304,12 @@ impl Kernel for YuvToRgb {
             }
         }
 //todo coeff selection
-        make_yuv2rgb(YUV_PARAMS[2][0], YUV_PARAMS[2][1], &mut self.matrix);
+        make_yuv2rgb(YUV_PARAMS[DEFAULT_YUV][0], YUV_PARAMS[DEFAULT_YUV][1], &mut self.matrix);
         if let ColorModel::YUV(yuvsm) = in_fmt.fmt.get_model() {
             match yuvsm {
                 YUVSubmodel::YCbCr  => {},
                 YUVSubmodel::YIQ    => {
-                    make_rgb2yuv(YUV_PARAMS[2][0], YUV_PARAMS[2][1], &mut self.matrix);
+                    make_rgb2yuv(YUV_PARAMS[DEFAULT_YUV][0], YUV_PARAMS[DEFAULT_YUV][1], &mut self.matrix);
                     apply_ntsc_rgb2yiq(SMPTE_NTSC_COEFFS, &mut self.matrix);
                     invert_matrix(&mut self.matrix);
                 },
@@ -369,7 +371,7 @@ println!(" [intermediate format {}]", df);
             let mut voff = sbuf.get_offset(2);
             let src = sbuf.get_data();
             let dst = dbuf.get_data_mut().unwrap();
-            if self.yscale.len() > 0 {
+            if !self.yscale.is_empty() {
                 for y in 0..h {
                     for x in 0..w {
                         let y = self.yscale[src[yoff + x] as usize];
@@ -432,7 +434,7 @@ impl YuvToRgb {
         let mut yoff = sbuf.get_offset(0);
         let src = sbuf.get_data();
         let dst = dbuf.get_data_mut().unwrap();
-        if self.yscale.len() > 0 {
+        if !self.yscale.is_empty() {
             for _y in 0..h {
                 for x in 0..w {
                     let y = self.yscale[src[yoff + x] as usize];