X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-commonfmt%2Fsrc%2Fcodecs%2Fclearvideo.rs;h=50794aba7ab783b4cd2711bd219b0d671e92ec1a;hb=e6aaad5c5273cd814b5748b7faf3751835a37217;hp=80521b8eb53dd80984ccd5daf7dd94eb03993725;hpb=7e52da9e2978c56d38d1bd308372e15324a008e2;p=nihav.git diff --git a/nihav-commonfmt/src/codecs/clearvideo.rs b/nihav-commonfmt/src/codecs/clearvideo.rs index 80521b8..50794ab 100644 --- a/nihav-commonfmt/src/codecs/clearvideo.rs +++ b/nihav-commonfmt/src/codecs/clearvideo.rs @@ -572,7 +572,7 @@ fn decode_dct_block(br: &mut BitReader, blk: &mut [i32; 64], ac_quant: i32, has_ } else { eob = br.read_bool()?; let run = br.read(6)? as usize; - let lev = br.read_s(8)? as i32; + let lev = br.read_s(8)?; (lev, run) }; idx += skip; @@ -881,7 +881,10 @@ impl NADecoder for ClearVideoDecoder { #[allow(clippy::or_fun_call)] fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> { if let NACodecTypeInfo::Video(vinfo) = info.get_properties() { - let w = vinfo.get_width(); + let mut w = vinfo.get_width(); + if self.is_rm { + w = (w + 0x1F) & !0x1F; + } let h = vinfo.get_height(); let f = vinfo.is_flipped(); let fmt = formats::YUV420_FORMAT; @@ -998,6 +1001,7 @@ mod test { generic_register_all_demuxers(&mut dmx_reg); let mut dec_reg = RegisteredDecoders::new(); generic_register_all_decoders(&mut dec_reg); + // sample: https://samples.mplayerhq.hu/V-codecs/UCOD/TalkingHead_352x288.avi test_decoding("avi", "clearvideo", "assets/Misc/TalkingHead_352x288.avi", Some(10), &dmx_reg, &dec_reg, ExpectedTestResult::MD5Frames(vec![ [0xb432376c, 0xf1dce57b, 0x8e79c7ee, 0xdd51850d], @@ -1018,6 +1022,7 @@ mod test { generic_register_all_demuxers(&mut dmx_reg); let mut dec_reg = RegisteredDecoders::new(); generic_register_all_decoders(&mut dec_reg); + // sample: https://samples.mplayerhq.hu/V-codecs/UCOD/Nick%20Pope.avi test_decoding("avi", "clearvideo", "assets/Misc/Nick Pope.avi", Some(20), &dmx_reg, &dec_reg, ExpectedTestResult::MD5Frames(vec![ [0xca265763, 0xd7d40e35, 0x1c27d4fb, 0xbb76b9c6],