]> git.nihav.org Git - nihav.git/blobdiff - nihav-core/src/formats.rs
Duck TrueMotion2 decoder
[nihav.git] / nihav-core / src / formats.rs
index 53b28dcfcdb9ede589ad8c3ee2b3d0d6e0aeb8e8..0cc24a1033933203c7cdb3446ef4d2ee75e5de73 100644 (file)
@@ -297,6 +297,18 @@ impl ColorModel {
             _                => 3,
         }
     }
+    pub fn is_rgb(&self) -> bool {
+        match *self {
+            ColorModel::RGB(_) => true,
+            _ => false,
+        }
+    }
+    pub fn is_yuv(&self) -> bool {
+        match *self {
+            ColorModel::YUV(_) => true,
+            _ => false,
+        }
+    }
 }
 
 impl fmt::Display for ColorModel {
@@ -315,13 +327,13 @@ impl fmt::Display for ColorModel {
 
 #[derive(Clone,Copy,PartialEq)]
 pub struct NAPixelChromaton {
-    h_ss:           u8,
-    v_ss:           u8,
-    packed:         bool,
-    depth:          u8,
-    shift:          u8,
-    comp_offs:      u8,
-    next_elem:      u8,
+    pub h_ss:           u8,
+    pub v_ss:           u8,
+    pub packed:         bool,
+    pub depth:          u8,
+    pub shift:          u8,
+    pub comp_offs:      u8,
+    pub next_elem:      u8,
 }
 
 pub const FORMATON_FLAG_BE      :u32 = 0x01;
@@ -331,13 +343,13 @@ pub const FORMATON_FLAG_PALETTE :u32 = 0x04;
 
 #[derive(Clone,Copy,PartialEq)]
 pub struct NAPixelFormaton {
-    model:      ColorModel,
-    components: u8,
-    comp_info:  [Option<NAPixelChromaton>; 5],
-    elem_size:  u8,
-    be:         bool,
-    alpha:      bool,
-    palette:    bool,
+    pub model:      ColorModel,
+    pub components: u8,
+    pub comp_info:  [Option<NAPixelChromaton>; 5],
+    pub elem_size:  u8,
+    pub be:         bool,
+    pub alpha:      bool,
+    pub palette:    bool,
 }
 
 macro_rules! chromaton {
@@ -404,6 +416,9 @@ pub const RGB24_FORMAT: NAPixelFormaton = NAPixelFormaton { model: ColorModel::R
                                         elem_size: 3, be: false, alpha: false, palette: false };
 
 impl NAPixelChromaton {
+    pub fn new(h_ss: u8, v_ss: u8, packed: bool, depth: u8, shift: u8, comp_offs: u8, next_elem: u8) -> Self {
+        Self { h_ss, v_ss, packed, depth, shift, comp_offs, next_elem }
+    }
     pub fn get_subsampling(&self) -> (u8, u8) { (self.h_ss, self.v_ss) }
     pub fn is_packed(&self) -> bool { self.packed }
     pub fn get_depth(&self) -> u8   { self.depth }