diff --git a/src/refmvs.rs b/src/refmvs.rs index 7f07a26b6..7d9b82d06 100644 --- a/src/refmvs.rs +++ b/src/refmvs.rs @@ -1423,57 +1423,55 @@ unsafe extern "C" fn load_tmvs_c( while x < col_end8i { let mut rb = r.offset(x as isize); let b_ref = (*rb).r#ref; - if !(b_ref == 0) { - let ref2ref = rf.mfmv_ref2ref[n as usize][(b_ref - 1) as usize]; - if !(ref2ref == 0) { - let b_mv = (*rb).mv; - let offset = mv_projection(b_mv, ref2cur, ref2ref); - let mut pos_x = x + apply_sign( - (offset.x as c_int).abs() >> 6, - offset.x as c_int ^ ref_sign, - ); - let pos_y = y + apply_sign( - (offset.y as c_int).abs() >> 6, - offset.y as c_int ^ ref_sign, - ); - if pos_y >= y_proj_start && pos_y < y_proj_end { - let pos = (pos_y & 15) as isize * stride; - loop { - let x_sb_align = x & !(7 as c_int); - if pos_x >= cmp::max(x_sb_align - 8, col_start8) - && pos_x < cmp::min(x_sb_align + 16, col_end8) - { - (*rp_proj.offset(pos + pos_x as isize)).mv = (*rb).mv; - (*rp_proj.offset(pos + pos_x as isize)).r#ref = ref2ref as i8; - } - x += 1; - if x >= col_end8i { - break; - } - rb = rb.offset(1); - let rb_mv = (*rb).mv; - if (*rb).r#ref != b_ref || rb_mv != b_mv { - break; - } - pos_x += 1; - } - } else { - loop { - x += 1; - if x >= col_end8i { - break; - } - rb = rb.offset(1); - let rb_mv = (*rb).mv; - if (*rb).r#ref != b_ref || rb_mv != b_mv { - break; - } - } + if b_ref == 0 { + x += 1; + continue; + } + let ref2ref = rf.mfmv_ref2ref[n as usize][(b_ref - 1) as usize]; + if ref2ref == 0 { + x += 1; + continue; + } + let b_mv = (*rb).mv; + let offset = mv_projection(b_mv, ref2cur, ref2ref); + let mut pos_x = + x + apply_sign((offset.x as c_int).abs() >> 6, offset.x as c_int ^ ref_sign); + let pos_y = + y + apply_sign((offset.y as c_int).abs() >> 6, offset.y as c_int ^ ref_sign); + if pos_y >= y_proj_start && pos_y < y_proj_end { + let pos = (pos_y & 15) as isize * stride; + loop { + let x_sb_align = x & !7; + if pos_x >= cmp::max(x_sb_align - 8, col_start8) + && pos_x < cmp::min(x_sb_align + 16, col_end8) + { + (*rp_proj.offset(pos + pos_x as isize)).mv = (*rb).mv; + (*rp_proj.offset(pos + pos_x as isize)).r#ref = ref2ref as i8; + } + x += 1; + if x >= col_end8i { + break; + } + rb = rb.offset(1); + let rb_mv = (*rb).mv; + if (*rb).r#ref != b_ref || rb_mv != b_mv { + break; + } + pos_x += 1; + } + } else { + loop { + x += 1; + if x >= col_end8i { + break; + } + rb = rb.offset(1); + let rb_mv = (*rb).mv; + if (*rb).r#ref != b_ref || rb_mv != b_mv { + break; } - x -= 1; } } - x += 1; } r = r.offset(stride as isize); }