let mut idx_pos = 0;
let mut idx_size = 0;
let mut v1_only = false;
+ let mut intra_mode = true;
while br.left() > 0 {
let id = br.read_byte()?;
if (id & 0xF0) == 0x20 && is_intra_strip {
0x31 => { // inter indices
validate!(!is_intra);
validate!(idx_pos == 0);
+ intra_mode = false;
idx_pos = br.tell() as usize;
idx_size = size - 4;
br.read_skip(idx_size)?;
let mut flags = if !v1_only { br.read_u32be()? } else { 0x00000000 };
let mut mask = 1 << 31;
while mask > 0 {
- if !is_intra {
+ if !intra_mode {
let skip = (flags & mask) == 0;
mask >>= 1;
if skip {
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/CVID/ot171.avi
test_decoding("avi", "cinepak", "assets/Misc/ot171.avi", Some(10), &dmx_reg,
&dec_reg, ExpectedTestResult::MD5Frames(vec![
[0xd58326b0, 0xdbfc1dcc, 0x6d66a04c, 0x08a21bbb],
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/CVID/grayscale/dday.mov
test_decoding("mov", "cinepak", "assets/Misc/dday.mov", Some(10), &dmx_reg,
&dec_reg, ExpectedTestResult::MD5Frames(vec![
[0x2ab229bc, 0xb71308aa, 0x979511c6, 0xcef3ea92],
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/CVID/palette/catfight%20Tag%20team%20DT.mov
test_decoding("mov", "cinepak", "assets/Misc/catfight Tag team DT.mov", Some(10), &dmx_reg,
&dec_reg, ExpectedTestResult::MD5Frames(vec![
[0x3f7ec8ea, 0x873a2bc6, 0xcc58336e, 0xe88c4ffd],