X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-qt%2Fsrc%2Fcodecs%2Fsvq3.rs;h=a455ed572e0b60e86a174669076d345aecec31ac;hb=71d7f39706f0f5004820f8d1d36c87d5f9ec3e97;hp=d2cd385a2b9e899b8330deab4170d66882fe2526;hpb=379524159c95f1c3639976ccf35f9d47cd9732ac;p=nihav.git diff --git a/nihav-qt/src/codecs/svq3.rs b/nihav-qt/src/codecs/svq3.rs index d2cd385..a455ed5 100644 --- a/nihav-qt/src/codecs/svq3.rs +++ b/nihav-qt/src/codecs/svq3.rs @@ -602,7 +602,7 @@ println!("slice offset {}", _offset); 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 { @@ -857,7 +857,7 @@ println!("slice offset {}", _offset); 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 { @@ -1230,6 +1230,7 @@ mod test { //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],