]> git.nihav.org Git - nihav.git/blobdiff - src/codecs/indeo/indeo3.rs
Rust2018: use new addressing scheme
[nihav.git] / src / codecs / indeo / indeo3.rs
index 5851b54af20afa986118a9c071a5bd48042cef39..5b4876de33a959184e338dca1be84008ea8f70ed 100644 (file)
@@ -1,6 +1,6 @@
-use formats;
+use crate::formats;
 use super::super::*;
-use io::byteio::*;
+use crate::io::byteio::*;
 use std::io::SeekFrom;
 use std::mem;
 
@@ -122,16 +122,16 @@ impl Buffers {
 #[allow(unused_variables)]
 fn apply_delta4x4(bufs: &mut Buffers, off: usize, stride: usize,
                   deltas: &[u8], topline: bool, first_line: bool) {
-    let mut dst = if bufs.fbuf { &mut bufs.buf1[off..(off + 4)] }
-                          else { &mut bufs.buf2[off..(off + 4)] };
+    let dst = if bufs.fbuf { &mut bufs.buf1[off..(off + 4)] }
+                      else { &mut bufs.buf2[off..(off + 4)] };
     for i in 0..4 { dst[i] = dst[i].wrapping_add(deltas[i]) & 0x7F; }
 }
 
 #[allow(unused_variables)]
 fn apply_delta4x8(bufs: &mut Buffers, off: usize, stride: usize,
                   deltas: &[u8], topline: bool, first_line: bool) {
-    let mut dst = if bufs.fbuf { &mut bufs.buf1[off..(off + 4 + stride)] }
-                          else { &mut bufs.buf2[off..(off + 4 + stride)] };
+    let dst = if bufs.fbuf { &mut bufs.buf1[off..(off + 4 + stride)] }
+                      else { &mut bufs.buf2[off..(off + 4 + stride)] };
     for i in 0..4 { dst[i + stride] = dst[i].wrapping_add(deltas[i]) & 0x7F; }
     if !topline {
         for i in 0..4 { dst[i] = (dst[i + stride] + dst[i]) >> 1; }
@@ -143,8 +143,8 @@ fn apply_delta4x8(bufs: &mut Buffers, off: usize, stride: usize,
 #[allow(unused_variables)]
 fn apply_delta4x8m11(bufs: &mut Buffers, off: usize, stride: usize,
                      deltas: &[u8], topline: bool, first_line: bool) {
-    let mut dst = if bufs.fbuf { &mut bufs.buf1[off..(off + 4 + stride)] }
-                          else { &mut bufs.buf2[off..(off + 4 + stride)] };
+    let dst = if bufs.fbuf { &mut bufs.buf1[off..(off + 4 + stride)] }
+                      else { &mut bufs.buf2[off..(off + 4 + stride)] };
     for i in 0..4 { dst[i]          = dst[i]         .wrapping_add(deltas[i]) & 0x7F; }
     for i in 0..4 { dst[i + stride] = dst[i + stride].wrapping_add(deltas[i]) & 0x7F; }
 }
@@ -152,16 +152,16 @@ fn apply_delta4x8m11(bufs: &mut Buffers, off: usize, stride: usize,
 #[allow(unused_variables)]
 fn apply_delta8x8p(bufs: &mut Buffers, off: usize, stride: usize,
                    deltas: &[u8], topline: bool, first_line: bool) {
-    let mut dst = if bufs.fbuf { &mut bufs.buf1[off..(off + 8 + stride)] }
-                          else { &mut bufs.buf2[off..(off + 8 + stride)] };
+    let dst = if bufs.fbuf { &mut bufs.buf1[off..(off + 8 + stride)] }
+                      else { &mut bufs.buf2[off..(off + 8 + stride)] };
     for i in 0..8 { dst[i]          = dst[i]         .wrapping_add(deltas[i >> 1]) & 0x7F; }
     for i in 0..8 { dst[i + stride] = dst[i + stride].wrapping_add(deltas[i >> 1]) & 0x7F; }
 }
 
 fn apply_delta8x8i(bufs: &mut Buffers, off: usize, stride: usize,
                    deltas: &[u8], topline: bool, firstline: bool) {
-    let mut dst = if bufs.fbuf { &mut bufs.buf1[off..(off + 8 + stride)] }
-                          else { &mut bufs.buf2[off..(off + 8 + stride)] };
+    let dst = if bufs.fbuf { &mut bufs.buf1[off..(off + 8 + stride)] }
+                      else { &mut bufs.buf2[off..(off + 8 + stride)] };
     if !firstline {
         for i in 0..8 { dst[i + stride] = dst[i     ].wrapping_add(deltas[i >> 1]) & 0x7F; }
     } else {
@@ -183,8 +183,8 @@ fn copy_line_top(bufs: &mut Buffers, off: usize, stride: usize, bw: usize, topli
     } else {
         for i in 0..bw { buf[i] = DEFAULT_PIXEL; }
     }
-    let mut dst = if bufs.fbuf { &mut bufs.buf1[off..(off + bw)] }
-                          else { &mut bufs.buf2[off..(off + bw)] };
+    let dst = if bufs.fbuf { &mut bufs.buf1[off..(off + bw)] }
+                      else { &mut bufs.buf2[off..(off + bw)] };
     for i in 0..bw { dst[i] = buf[i]; }
 }
 
@@ -206,8 +206,8 @@ fn copy_line_top8x8(bufs: &mut Buffers, off: usize, stride: usize, topline: bool
     } else {
         for i in 0..8 { buf[i] = DEFAULT_PIXEL; }
     }
-    let mut dst = if bufs.fbuf { &mut bufs.buf1[off..(off + 8)] }
-                          else { &mut bufs.buf2[off..(off + 8)] };
+    let dst = if bufs.fbuf { &mut bufs.buf1[off..(off + 8)] }
+                      else { &mut bufs.buf2[off..(off + 8)] };
     for i in 0..8 {dst[i] = buf[i]; }
 }
 
@@ -387,7 +387,7 @@ impl Indeo3Decoder {
                         } else {
                             fill_block8x8(&mut self.bufs,
                                           didx + xoff, stride, 8,
-                                          (y == 0), (cell.y == 0) && (y == 0));
+                                          y == 0, (cell.y == 0) && (y == 0));
                         }
                     }
                     run_blocks -= 1;
@@ -777,60 +777,18 @@ impl NADecoder for Indeo3Decoder {
     }
 }
 
+pub fn get_decoder() -> Box<NADecoder> {
+    Box::new(Indeo3Decoder::new())
+}
+
 #[cfg(test)]
 mod test {
-    use codecs::*;
-    use demuxers::*;
-    use io::byteio::*;
-    use std::fs::File;
-
+    use crate::test::dec_video::test_file_decoding;
     #[test]
     fn test_indeo3() {
-        let avi_dmx = find_demuxer("avi").unwrap();
-        let mut file = File::open("assets/iv32_example.avi").unwrap();
-        let mut fr = FileReader::new_read(&mut file);
-        let mut br = ByteReader::new(&mut fr);
-        let mut dmx = avi_dmx.new_demuxer(&mut br);
-        dmx.open().unwrap();
-
-        let mut decs: Vec<Option<Box<NADecoder>>> = Vec::new();
-        for i in 0..dmx.get_num_streams() {
-            let s = dmx.get_stream(i).unwrap();
-            let info = s.get_info();
-            let decfunc = find_decoder(info.get_name());
-            if let Some(df) = decfunc {
-                let mut dec = (df)();
-                dec.init(info).unwrap();
-                decs.push(Some(dec));
-            } else {
-                decs.push(None);
-panic!("decoder {} not found", info.get_name());
-            }
-        }
-
-        loop {
-            let pktres = dmx.get_frame();
-            if let Err(e) = pktres {
-                if e == DemuxerError::EOF { break; }
-            }
-            let pkt = pktres.unwrap();
-            let streamno = pkt.get_stream().get_id() as usize;
-            if let Some(ref mut dec) = decs[streamno] {
-//                let frm = 
-dec.decode(&pkt).unwrap();
-//                if pkt.get_stream().get_info().is_video() {
-//                    write_pgmyuv("iv3", streamno, pkt.get_pts().unwrap(), frm);
-//                } else {
-//                    write_sound("iv3", streamno, frm, pkt.get_pts().unwrap() == 0);
-//                }
-            }
-            if pkt.get_pts().unwrap() > 10 { break; }
-        }
+         test_file_decoding("avi", "assets/iv32_example.avi", Some(10), true, false, None);
     }
 }
-pub fn get_decoder() -> Box<NADecoder> {
-    Box::new(Indeo3Decoder::new())
-}
 
 const DT_1_1: IviDeltaCB = IviDeltaCB{ quad_radix: 7, data: &[
        0,    0,    2,    2,   -2,   -2,   -1,    3,