move GenericCache to common place
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 6 Oct 2019 13:10:38 +0000 (15:10 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 6 Oct 2019 13:10:38 +0000 (15:10 +0200)
nihav-core/src/data/mod.rs [new file with mode: 0644]
nihav-core/src/lib.rs
nihav-duck/src/codecs/vp56.rs
nihav-realmedia/src/codecs/rv3040.rs

diff --git a/nihav-core/src/data/mod.rs b/nihav-core/src/data/mod.rs
new file mode 100644 (file)
index 0000000..ff5f190
--- /dev/null
@@ -0,0 +1,38 @@
+pub struct GenericCache<T: Copy> {
+    pub height: usize,
+    pub stride: usize,
+    pub xpos:   usize,
+    pub data:   Vec<T>,
+    pub default: T,
+}
+
+impl<T:Copy> GenericCache<T> {
+    pub fn new(height: usize, stride: usize, default: T) -> Self {
+        let mut ret = Self {
+                stride,
+                height,
+                xpos:   0,
+                data:   Vec::with_capacity((height + 1) * stride),
+                default,
+            };
+        ret.reset();
+        ret
+    }
+    pub fn full_size(&self) -> usize { self.stride * (self.height + 1) }
+    pub fn reset(&mut self) {
+        self.data.truncate(0);
+        let size = self.full_size();
+        self.data.resize(size, self.default);
+        self.xpos = self.stride + 1;
+    }
+    pub fn update_row(&mut self) {
+        for i in 0..self.stride {
+            self.data[i] = self.data[self.height * self.stride + i];
+        }
+        self.data.truncate(self.stride);
+        let size = self.full_size();
+        self.data.resize(size, self.default);
+        self.xpos = self.stride + 1;
+    }
+}
+
index a3e2df12925794f2ebc2c023c1fab8d760b60335..4b6729c861c74c98b43c01e2f928f0e40cefebe3 100644 (file)
@@ -26,4 +26,6 @@ pub mod scale;
 #[allow(clippy::unreadable_literal)]
 pub mod dsp;
 
+pub mod data;
+
 pub mod test;
index c626be82ac7d9e08c986a25442b1f70076ae2de6..d0a991f32869c6d0175c6966dc0316bace200a58 100644 (file)
@@ -1,4 +1,5 @@
 use nihav_core::codecs::*;
+use nihav_core::data::GenericCache;
 use nihav_core::io::bitreader::*;
 use super::vpcommon::*;
 
@@ -295,44 +296,6 @@ impl FrameState {
     }
 }
 
-pub struct GenericCache<T: Copy> {
-    pub height: usize,
-    pub stride: usize,
-    pub xpos:   usize,
-    pub data:   Vec<T>,
-    pub default: T,
-}
-
-impl<T:Copy> GenericCache<T> {
-    fn new(height: usize, stride: usize, default: T) -> Self {
-        let mut ret = Self {
-                stride,
-                height,
-                xpos:   0,
-                data:   Vec::with_capacity((height + 1) * stride),
-                default,
-            };
-        ret.reset();
-        ret
-    }
-    fn full_size(&self) -> usize { self.stride * (self.height + 1) }
-    fn reset(&mut self) {
-        self.data.truncate(0);
-        let size = self.full_size();
-        self.data.resize(size, self.default);
-        self.xpos = self.stride + 1;
-    }
-    fn update_row(&mut self) {
-        for i in 0..self.stride {
-            self.data[i] = self.data[self.height * self.stride + i];
-        }
-        self.data.truncate(self.stride);
-        let size = self.full_size();
-        self.data.resize(size, self.default);
-        self.xpos = self.stride + 1;
-    }
-}
-
 pub struct VP56Decoder {
     version:    u8,
     has_alpha:  bool,
index f7f5334aa2dfe48c99e00ba08c2fe30a26e7c783..dde0b04774ae413c54ae6b0949228e2b5a60e405 100644 (file)
@@ -3,49 +3,12 @@ use nihav_core::frame::{NABufferType, NAVideoInfo, NAVideoBuffer, NAVideoBufferR
 use nihav_core::codecs::{NADecoderSupport, MV, ZERO_MV, DecoderError, DecoderResult, IPBShuffler};
 use nihav_core::io::bitreader::{BitReader,BitReaderMode};
 use nihav_core::io::intcode::*;
+use nihav_core::data::GenericCache;
 use std::mem;
 
 use super::rv34codes::*;
 use super::rv34dsp::*;
 
-pub struct GenericCache<T: Copy> {
-    pub height: usize,
-    pub stride: usize,
-    pub xpos:   usize,
-    pub data:   Vec<T>,
-    pub default: T,
-}
-
-impl<T:Copy> GenericCache<T> {
-    pub fn new(height: usize, stride: usize, default: T) -> Self {
-        let mut ret = Self {
-                stride,
-                height,
-                xpos:   0,
-                data:   Vec::with_capacity((height + 1) * stride),
-                default,
-            };
-        ret.reset();
-        ret
-    }
-    fn full_size(&self) -> usize { self.stride * (self.height + 1) }
-    pub fn reset(&mut self) {
-        self.data.truncate(0);
-        let size = self.full_size();
-        self.data.resize(size, self.default);
-        self.xpos = self.stride + 1;
-    }
-    pub fn update_row(&mut self) {
-        for i in 0..self.stride {
-            self.data[i] = self.data[self.height * self.stride + i];
-        }
-        self.data.truncate(self.stride);
-        let size = self.full_size();
-        self.data.resize(size, self.default);
-        self.xpos = self.stride + 1;
-    }
-}
-
 trait RV34MVScale {
     fn scale(&self, trd: u16, trb: u16) -> (MV, MV);
 }