}
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) {
};
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 !is_4x4 || (hdr.dquant && hdr.ftype != FrameType::I && cbp != 0) {
let dq = br.read_code_signed(IntCodeType::Gamma)?;
let new_q = i32::from(sstate.q) + dq;
- validate!(new_q >= 0 && new_q < 32);
+ validate!((0..32).contains(&new_q));
sstate.q = new_q as u8;
}
if !is_4x4 {
if hdr.dquant && cbp != 0 {
let dq = br.read_code_signed(IntCodeType::Gamma)?;
let new_q = i32::from(sstate.q) + dq;
- validate!(new_q >= 0 && new_q < 32);
+ validate!((0..32).contains(&new_q));
sstate.q = new_q as u8;
}
for sb in 0..4 {
//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],