X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fcodecs%2Fclearvideo.rs;h=8a27006d0378fbd4402d50147ac9fa78e55f4167;hb=b74ff9fac35d41737d71d97227fad233aa4a4b49;hp=6b880e1cb67651e99ddf75664029f88665dfbdf6;hpb=e12e2ad3f0756e3ab0c9a35f07b22997db773caf;p=nihav.git diff --git a/src/codecs/clearvideo.rs b/src/codecs/clearvideo.rs index 6b880e1..8a27006 100644 --- a/src/codecs/clearvideo.rs +++ b/src/codecs/clearvideo.rs @@ -1,7 +1,7 @@ -use io::byteio::{ByteReader,MemoryReader}; -use io::bitreader::*; -use io::codebook::*; -use formats; +use crate::io::byteio::{ByteReader,MemoryReader}; +use crate::io::bitreader::*; +use crate::io::codebook::*; +use crate::formats; use super::*; use std::fmt; use std::ops::{Add, Sub}; @@ -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); @@ -763,10 +771,10 @@ pub fn get_decoder_rm() -> Box { #[cfg(test)] mod test { - use test::dec_video::test_file_decoding; + use crate::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"); }