}
fn reset(&mut self) {
let size = self.w * self.h;
- self.mv_f.truncate(0);
+ self.mv_f.clear();
self.mv_f.resize(size, ZERO_MV);
- self.mv_b.truncate(0);
+ self.mv_b.clear();
self.mv_b.resize(size, ZERO_MV);
- self.has_f.truncate(0);
+ self.has_f.clear();
self.has_f.resize(size >> 4, false);
- self.has_b.truncate(0);
+ self.has_b.clear();
self.has_b.resize(size >> 4, false);
}
fn fill(&mut self, mb_x: usize, mb_y: usize, fwd: bool, mv: MV) {
copy_block(dframe, src.clone(), ebuf, 0, xoff, yoff, mx, my, bw * 4, bh * 4, 0, post, mode, ifuncs);
copy_block(dframe, src.clone(), ebuf, 1, xoff / 2, yoff / 2, cmx, cmy, bw * 2, bh * 2, 0, post, mode, ifuncs);
- copy_block(dframe, src.clone(), ebuf, 2, xoff / 2, yoff / 2, cmx, cmy, bw * 2, bh * 2, 0, post, mode, ifuncs);
+ copy_block(dframe, src, ebuf, 2, xoff / 2, yoff / 2, cmx, cmy, bw * 2, bh * 2, 0, post, mode, ifuncs);
}
impl SVQ3Decoder {
};
let slice_len = length + llen + 1;
validate!(src.len() >= slice_len);
- self.slice_buf.truncate(0);
+ self.slice_buf.clear();
if llen > 1 {
self.slice_buf.extend_from_slice(&src[slice_len - llen + 1..][..llen - 1]);
}
if let (Some(bwd_ref), true, true) = (self.ipbs.get_b_bwdref(), has_fwd, has_bwd) {
let mut aframe = NASimpleVideoFrame::from_video_buf(&mut self.avg_buf).unwrap();
let amv = MV { x: bmv.x + (self.mb_x as i16) * 16 * 6, y: bmv.y + (self.mb_y as i16) * 16 * 6 };
- mc_part(&mut aframe, bwd_ref.clone(), &mut self.ebuf, 0, 0, 4, 4, amv, bmode, ifuncs);
+ mc_part(&mut aframe, bwd_ref, &mut self.ebuf, 0, 0, 4, 4, amv, bmode, ifuncs);
let dstride = dframe.stride[0];
let dst = &mut dframe.data[dframe.offset[0] + self.mb_x * 16 + self.mb_y * 16 * dstride..];
//let file = "assets/QT/broken_sword_Large.mov";
//test_file_decoding("mov", file, Some(264), true, false, Some("svq3"), &dmx_reg, &dec_reg);
//panic!("end");
+ // sample: https://samples.mplayerhq.hu/V-codecs/SVQ3/broken_sword_Large.mov
test_decoding("mov", "sorenson-video3", "assets/QT/broken_sword_Large.mov", Some(40), &dmx_reg, &dec_reg,
ExpectedTestResult::MD5Frames(vec![
[0x16924d18, 0xccc5a0b4, 0xc2bb9412, 0x93d41f10],