clearvideo: align dimensions to 32 for RealVideo variant
[nihav.git] / nihav-commonfmt / src / codecs / clearvideo.rs
index 80521b8eb53dd80984ccd5daf7dd94eb03993725..52bfe2bab7efc4cb0ca652616765a3cae13b43c4 100644 (file)
@@ -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],