#[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; }
#[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; }
}
#[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 {
} 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]; }
}
} 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]; }
}
}
}
+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 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,