core: fix or silence clippy warnings
[nihav.git] / nihav-core / src / frame.rs
index badc7f8c0a542a3a64b60e860cd5490b72404344..8944f45bf5de6453c0990aec892f283cfc778b68 100644 (file)
@@ -53,12 +53,15 @@ pub struct NAVideoInfo {
     pub flipped:    bool,
     /// Picture pixel format.
     pub format:     NAPixelFormaton,
+    /// Declared bits per sample.
+    pub bits:       u8,
 }
 
 impl NAVideoInfo {
     /// Constructs a new `NAVideoInfo` instance.
     pub fn new(w: usize, h: usize, flip: bool, fmt: NAPixelFormaton) -> Self {
-        NAVideoInfo { width: w, height: h, flipped: flip, format: fmt }
+        let bits = fmt.get_total_depth();
+        NAVideoInfo { width: w, height: h, flipped: flip, format: fmt, bits }
     }
     /// Returns picture width.
     pub fn get_width(&self)  -> usize { self.width as usize }
@@ -233,6 +236,8 @@ impl<T: Clone> NAAudioBuffer<T> {
     pub fn get_chmap(&self) -> &NAChannelMap { &self.chmap }
     /// Returns an immutable reference to the data.
     pub fn get_data(&self) -> &Vec<T> { self.data.as_ref() }
+    /// Returns reference to the data.
+    pub fn get_data_ref(&self) -> NABufferRef<Vec<T>> { self.data.clone() }
     /// Returns a mutable reference to the data.
     pub fn get_data_mut(&mut self) -> Option<&mut Vec<T>> { self.data.as_mut() }
     /// Clones current `NAAudioBuffer` into a new one.
@@ -857,47 +862,6 @@ pub const DUMMY_CODEC_INFO: NACodecInfo = NACodecInfo {
                                 properties: NACodecTypeInfo::None,
                                 extradata: None };
 
-/// Option definition.
-#[derive(Debug)]
-pub struct NAOptionDefinition {
-    /// Option name.
-    pub name:           &'static str,
-    /// Option meaning.
-    pub description:    &'static str,
-    /// Minimal value for the option (if applicable).
-    pub min_value:      Option<NAValue>,
-    /// Maximum value for the option (if applicable).
-    pub max_value:      Option<NAValue>,
-}
-
-/// Option.
-#[derive(Clone,Debug,PartialEq)]
-pub struct NAOption {
-    /// Option name.
-    pub name:   String,
-    /// Option value.
-    pub value:  NAValue,
-}
-
-/// A list of accepted option values.
-#[derive(Debug,Clone,PartialEq)]
-pub enum NAValue {
-    /// Empty value.
-    None,
-    /// Boolean value.
-    Bool(bool),
-    /// Integer value.
-    Int(i32),
-    /// Long integer value.
-    Long(i64),
-    /// Floating point value.
-    Float(f32),
-    /// String value.
-    String(String),
-    /// Binary data value.
-    Data(Arc<Vec<u8>>),
-}
-
 /// A list of recognized frame types.
 #[derive(Debug,Clone,Copy,PartialEq)]
 #[allow(dead_code)]
@@ -963,8 +927,8 @@ impl NATimeInfo {
 
     /// Converts time in given scale into timestamp in given base.
     pub fn time_to_ts(time: u64, base: u64, tb_num: u32, tb_den: u32) -> u64 {
-        let tb_num = tb_num as u64;
-        let tb_den = tb_den as u64;
+        let tb_num = u64::from(tb_num);
+        let tb_den = u64::from(tb_den);
         let tmp = time.checked_mul(tb_num);
         if let Some(tmp) = tmp {
             tmp / base / tb_den
@@ -985,8 +949,8 @@ impl NATimeInfo {
     }
     /// Converts timestamp in given base into time in given scale.
     pub fn ts_to_time(ts: u64, base: u64, tb_num: u32, tb_den: u32) -> u64 {
-        let tb_num = tb_num as u64;
-        let tb_den = tb_den as u64;
+        let tb_num = u64::from(tb_num);
+        let tb_den = u64::from(tb_den);
         let tmp = ts.checked_mul(base);
         if let Some(tmp) = tmp {
             let tmp2 = tmp.checked_mul(tb_num);
@@ -1226,6 +1190,10 @@ impl NAPacket {
 //        vec.resize(size, 0);
         NAPacket { stream: str, ts, keyframe: kf, buffer: NABufferRef::new(vec), side_data: Vec::new() }
     }
+    /// Constructs a new `NAPacket` instance reusing a buffer reference.
+    pub fn new_from_refbuf(str: NAStreamRef, ts: NATimeInfo, kf: bool, buffer: NABufferRef<Vec<u8>>) -> Self {
+        NAPacket { stream: str, ts, keyframe: kf, buffer, side_data: Vec::new() }
+    }
     /// Returns information about the stream packet belongs to.
     pub fn get_stream(&self) -> NAStreamRef { self.stream.clone() }
     /// Returns packet timestamp.