X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-qt%2Fsrc%2Fcodecs%2Fsvq1.rs;h=4b5d8cd9661ff345dbc4b60d71ea24a4c9fe4021;hp=68db3a3b9774c73ab046eb7e3d3cc9dc91218ef7;hb=379524159c95f1c3639976ccf35f9d47cd9732ac;hpb=4c1582cf2e275af7c0f4a2c1a397fed5b68d31d5 diff --git a/nihav-qt/src/codecs/svq1.rs b/nihav-qt/src/codecs/svq1.rs index 68db3a3..4b5d8cd 100644 --- a/nihav-qt/src/codecs/svq1.rs +++ b/nihav-qt/src/codecs/svq1.rs @@ -258,7 +258,7 @@ impl SVQ1Decoder { if fill != 0 { for line in dst[off..].chunks_mut(dstride).take(h) { for el in line.iter_mut().take(w) { - *el = (i16::from(*el) + fill).max(0).min(255) as u8; + *el = el.wrapping_add(fill as u8); } } } @@ -274,7 +274,7 @@ impl SVQ1Decoder { }; for (line, src) in dst[off..].chunks_mut(dstride).zip(src.chunks(w)) { for x in 0..w { - line[x] = (i16::from(line[x]) + i16::from(src[x])).max(0).min(255) as u8; + line[x] = line[x].wrapping_add(src[x] as u8); } } } @@ -288,10 +288,10 @@ impl SVQ1Decoder { let (w, h) = if plane == 0 { ((self.width + 15) & !15, (self.height + 15) & !15) } else { - ((self.width / 4 + 15) & !15, (self.height / 4 + 15) & !15) + ((self.width / 4 + 15) & !15, (self.height / 4 + 15) & !15) }; let mvstride = w / 8; - self.mvs.truncate(0); + self.mvs.clear(); self.mvs.resize(mvstride * (h / 8), ZERO_MV); let mut mv_idx = 0; @@ -495,14 +495,14 @@ mod test { use nihav_core::codecs::RegisteredDecoders; use nihav_core::demuxers::RegisteredDemuxers; use nihav_codec_support::test::dec_video::*; - use crate::qt_register_all_codecs; + use crate::qt_register_all_decoders; use nihav_commonfmt::generic_register_all_demuxers; #[test] fn test_svq1() { let mut dmx_reg = RegisteredDemuxers::new(); generic_register_all_demuxers(&mut dmx_reg); let mut dec_reg = RegisteredDecoders::new(); - qt_register_all_codecs(&mut dec_reg); + qt_register_all_decoders(&mut dec_reg); test_decoding("mov", "sorenson-video", "assets/QT/adpcm-bug.mov", Some(6), &dmx_reg, &dec_reg, ExpectedTestResult::MD5Frames(vec![ @@ -511,8 +511,8 @@ mod test { [0xa04e865b, 0xdbd65920, 0x4703d7dd, 0x962707a1], [0xe89c98bc, 0x356791bb, 0xfb6f7302, 0x2250ef05], [0x282ef2a7, 0x235541b4, 0x55055d99, 0x1a8d0b29], - [0x56328694, 0x27157f78, 0x4bc6ddda, 0x03dcde68], - [0x5a694576, 0xd2434aea, 0x6859d48c, 0x275e02c9]])); + [0x79c60bab, 0xe5a11a50, 0x5f9e800b, 0x12bce70d], + [0xe9a08fb7, 0x3b482a8b, 0x50e1560e, 0xd6d70287]])); } }