X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fcodecs%2Fclearvideo.rs;h=0c2de9b0ca24c62f0cc08e11a897141c030f5ad3;hb=1f7e9371e2ec548b6821bb01ce7ba82c4cd8068d;hp=6b880e1cb67651e99ddf75664029f88665dfbdf6;hpb=e12e2ad3f0756e3ab0c9a35f07b22997db773caf;p=nihav.git diff --git a/src/codecs/clearvideo.rs b/src/codecs/clearvideo.rs index 6b880e1..0c2de9b 100644 --- a/src/codecs/clearvideo.rs +++ b/src/codecs/clearvideo.rs @@ -721,6 +721,14 @@ impl NADecoder for ClearVideoDecoder { 0 }; if src.len() <= off + 1 { return Err(DecoderError::ShortData); } + + if (src[off] & 0x7F) == 0x30 { + let mut frm = NAFrame::new_from_pkt(pkt, self.info.clone(), NABufferType::None); + frm.set_keyframe(false); + frm.set_frame_type(FrameType::Skip); + return Ok(Rc::new(RefCell::new(frm))); + } + let is_intra = (src[off] & 2) == 2; let mut br = BitReader::new(&src[(off + 1)..], src.len() - (off + 1), BitReaderMode::BE); @@ -766,7 +774,7 @@ mod test { use test::dec_video::test_file_decoding; #[test] fn test_clv() { - test_file_decoding("avi", "assets/TalkingHead_352x288.avi", Some(10), true, false, Some("clv")); + test_file_decoding("avi", "assets/TalkingHead_352x288.avi", Some(10), true, false, None/*Some("clv")*/); // test_file_decoding("avi", "assets/basketball.avi", None/*Some(10)*/, true, false, Some("clv1")); //panic!("debug"); }