self.frame_refs.select_refs(sps, &slice_hdr, full_id);
if slice_hdr.adaptive_ref_pic_marking_mode {
- self.frame_refs.apply_adaptive_marking(&slice_hdr.adaptive_ref_pic_marking, slice_hdr.frame_num, 1 << self.sps[self.cur_sps].log2_max_frame_num)?;
+ self.frame_refs.apply_adaptive_marking(&slice_hdr.adaptive_ref_pic_marking, slice_hdr.frame_num, ((1u32 << self.sps[self.cur_sps].log2_max_frame_num) - 1) as u16)?;
}
if let Some(ref mut fdec) = self.cur_fdec {
fdec.slices.push((slice_hdr, hdr_size, self.frame_refs.cur_refs.clone(), src));
self.frame_refs.select_refs(sps, &slice_hdr, full_id);
if slice_hdr.adaptive_ref_pic_marking_mode {
- self.frame_refs.apply_adaptive_marking(&slice_hdr.adaptive_ref_pic_marking, slice_hdr.frame_num, 1 << self.sps[self.cur_sps].log2_max_frame_num)?;
+ self.frame_refs.apply_adaptive_marking(&slice_hdr.adaptive_ref_pic_marking, slice_hdr.frame_num, ((1u32 << self.sps[self.cur_sps].log2_max_frame_num) - 1) as u16)?;
}
if slice_hdr.first_mb_in_slice == 0 {
let ret = supp.pool_u8.get_free();
},
}
}
- pub fn apply_adaptive_marking(&mut self, marking: &AdaptiveMarking, cur_id: u16, max_id: u16) -> DecoderResult<()> {
+ pub fn apply_adaptive_marking(&mut self, marking: &AdaptiveMarking, cur_id: u16, max_id_mask: u16) -> DecoderResult<()> {
let all_ref_pics = self.ref_pics.clone();
for (&op, (&arg1, &arg2)) in marking.memory_management_control_op.iter().zip(marking.operation_arg.iter().zip(marking.operation_arg2.iter())).take(marking.num_ops) {
match op {
1 => {
- let src_id = cur_id.wrapping_sub(arg1) & (max_id - 1);
+ let src_id = cur_id.wrapping_sub(arg1) & max_id_mask;
let mut found = false;
let mut idx = 0;
for (i, pic) in self.ref_pics.iter().enumerate() {
}
},
3 => {
- let src_id = cur_id.wrapping_sub(arg1) & (max_id - 1);
+ let src_id = cur_id.wrapping_sub(arg1) & max_id_mask;
let didx = arg2 as usize;
for pic in all_ref_pics.iter() {
("FRext/Freh12_B.264", [0x73DEE4EE, 0x216B40CB, 0xF7647E2B, 0xCD2BBBD3]),
/*("FRext/FREXT01_JVC_D.264", [0;4]), //MBAFF
("FRext/FREXT02_JVC_C.264", [0;4]),*/
- ("FRext/FRExt_MMCO4_Sony_B.264", [0xD4048185, 0xA358D7E7, 0x95EA950D, 0x27C66788]),
+ ("FRext/FRExt_MMCO4_Sony_B.264", [0x3AE5AF4C, 0x2F7AB756, 0x6DD311C3, 0x0E963B2D]),
("FRext/test8b43.264", [0x921C816C, 0x14170EAD, 0x03C19C5C, 0x9ED3C0A4]),
];
("FRext/Freh12_B.264", [0x73DEE4EE, 0x216B40CB, 0xF7647E2B, 0xCD2BBBD3]),
/*("FRext/FREXT01_JVC_D.264", [0;4]), //MBAFF
("FRext/FREXT02_JVC_C.264", [0;4]),*/
- ("FRext/FRExt_MMCO4_Sony_B.264", [0xD4048185, 0xA358D7E7, 0x95EA950D, 0x27C66788]),
+ ("FRext/FRExt_MMCO4_Sony_B.264", [0x3AE5AF4C, 0x2F7AB756, 0x6DD311C3, 0x0E963B2D]),
("FRext/test8b43.264", [0x921C816C, 0x14170EAD, 0x03C19C5C, 0x9ED3C0A4]),
];