X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-duck%2Fsrc%2Fcodecs%2Ftruemotion2x.rs;h=2e3182971a47a3ace4d4e68c260288da9df922fc;hb=HEAD;hp=7f4ac524062903d4129f13ea9405faeaeb66437c;hpb=78fb6560c73965d834b215fb0b49505ae5443288;p=nihav.git diff --git a/nihav-duck/src/codecs/truemotion2x.rs b/nihav-duck/src/codecs/truemotion2x.rs index 7f4ac52..3e57b55 100644 --- a/nihav-duck/src/codecs/truemotion2x.rs +++ b/nihav-duck/src/codecs/truemotion2x.rs @@ -275,9 +275,8 @@ impl TM2XDecoder { Ok(()) } - #[allow(clippy::int_plus_one)] - #[allow(clippy::manual_memcpy)] - #[allow(clippy::cyclomatic_complexity)] + #[allow(clippy::cognitive_complexity)] + #[allow(clippy::identity_op)] fn decode_frame(&mut self, src: &[u8]) -> DecoderResult<()> { let mut mr = MemoryReader::new_read(src); let mut br = ByteReader::new(&mut mr); @@ -531,17 +530,16 @@ impl TM2XDecoder { upred = 0; vpred = 0; }, + #[allow(clippy::int_plus_one)] CPARAM_MV => { let src_x = (bx as i16) * 8 + self.blk_info[x].mv_x; let src_y = ((by * 8 + line) as i16) + self.blk_info[x].mv_y; validate!(src_x >= 0 && (src_x as usize) + 8 <= self.width); validate!(src_y >= 0 && (src_y as usize) + 1 <= self.height); let ref_off = (src_x as usize) + ((src_y + 1) as usize) * stride; - for i in 0..8 { - ydata[cur_off + i] = self.ref_frame.ydata[ref_off + i]; - udata[cur_off + i] = self.ref_frame.udata[ref_off + i]; - vdata[cur_off + i] = self.ref_frame.vdata[ref_off + i]; - } + ydata[cur_off..][..8].copy_from_slice(&self.ref_frame.ydata[ref_off..][..8]); + udata[cur_off..][..8].copy_from_slice(&self.ref_frame.udata[ref_off..][..8]); + vdata[cur_off..][..8].copy_from_slice(&self.ref_frame.vdata[ref_off..][..8]); ypred = ydata[cur_off + 7] - ydata[cur_off + 7 - stride]; upred = udata[cur_off + 7] - udata[cur_off + 7 - stride]; vpred = vdata[cur_off + 7] - vdata[cur_off + 7 - stride]; @@ -719,6 +717,7 @@ mod test { let mut dec_reg = RegisteredDecoders::new(); duck_register_all_decoders(&mut dec_reg); + // sample: https://samples.mplayerhq.hu/V-codecs/TM2x.avi test_decoding("avi", "truemotion2x", "assets/Duck/TM2x.avi", None, &dmx_reg, &dec_reg, ExpectedTestResult::MD5Frames(vec![ [0x2854e7f3, 0x41e54fd3, 0xd9a16302, 0x580321b2],