X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-game%2Fsrc%2Fcodecs%2Fmidivid3.rs;h=aebd11814ecfa364a4bd5d98614f890179f3c47e;hp=3c06e965243dda6a59862e8d7afaa3f0a56af91b;hb=HEAD;hpb=78fb6560c73965d834b215fb0b49505ae5443288 diff --git a/nihav-game/src/codecs/midivid3.rs b/nihav-game/src/codecs/midivid3.rs index 3c06e96..aebd118 100644 --- a/nihav-game/src/codecs/midivid3.rs +++ b/nihav-game/src/codecs/midivid3.rs @@ -211,7 +211,7 @@ impl Midivid3Decoder { let src = &ref_frm.get_data()[ref_frm.get_offset(0) + (src_x as usize) + (src_y as usize) * sstride..]; let dst = &mut frm.data[ydst + x..]; for (dst, src) in dst.chunks_mut(frm.stride[0]).zip(src.chunks(sstride)).take(16) { - (&mut dst[..16]).copy_from_slice(&src[..16]); + dst[..16].copy_from_slice(&src[..16]); } let xoff = (src_x as usize) >> 1; let yoff = (src_y as usize) >> 1; @@ -220,7 +220,7 @@ impl Midivid3Decoder { let src = &ref_frm.get_data()[ref_frm.get_offset(plane) + xoff + yoff * sstride..]; let dst = &mut frm.data[if plane == 1 { udst } else { vdst } + x / 2..]; for (dst, src) in dst.chunks_mut(frm.stride[plane]).zip(src.chunks(sstride)).take(8) { - (&mut dst[..8]).copy_from_slice(&src[..8]); + dst[..8].copy_from_slice(&src[..8]); } } if has_residue { @@ -275,7 +275,7 @@ fn decode_values(br: &mut BitReader, dst: &mut [i16], cb: &Codebook) -> Dec *el = 0; zero_run -= 1; } else { - let val = br.read_cb(&cb)? as u8; + let val = br.read_cb(cb)? as u8; if val == 0 { zero_run = if br.read_bool()? { br.read(6)? as usize + 8 @@ -536,6 +536,7 @@ mod test { let mut dec_reg = RegisteredDecoders::new(); game_register_all_decoders(&mut dec_reg); + // sample: https://samples.mplayerhq.hu/V-codecs/mv30.avi test_decoding("avi", "midivid3", "assets/Game/mv30.avi", Some(16), &dmx_reg, &dec_reg, ExpectedTestResult::MD5Frames(vec![ [0x0f4f2377, 0xe017458f, 0xebf6d59d, 0x238a3e64],