From a8dde02f27adb689f2559b57a99e49b5c16cc53b Mon Sep 17 00:00:00 2001 From: fbossen <frank@bossentech.com> Date: Tue, 11 Sep 2018 18:54:20 -0230 Subject: [PATCH] Apply normative clamping to MV stack (#568) See section 7.10.2.14 context and clamping process --- src/context.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/context.rs b/src/context.rs index c2ef119e..33216a20 100755 --- a/src/context.rs +++ b/src/context.rs @@ -2430,6 +2430,20 @@ impl ContextWriter { /* TODO: Handle single reference frame extension */ + // clamp mvs + for mv in mv_stack { + let blk_w = bsize.width(); + let blk_h = bsize.height(); + let border_w = 128 + blk_w as isize * 8; + let border_h = 128 + blk_h as isize * 8; + let x_min = -(bo.x as isize) * (8 * MI_SIZE) as isize - border_w; + let x_max = (self.bc.cols - bo.x - blk_w / MI_SIZE) as isize * (8 * MI_SIZE) as isize + border_w; + let y_min = -(bo.y as isize) * (8 * MI_SIZE) as isize - border_h; + let y_max = (self.bc.rows - bo.y - blk_h / MI_SIZE) as isize * (8 * MI_SIZE) as isize + border_h; + mv.this_mv.row = (mv.this_mv.row as isize).max(y_min).min(y_max) as i16; + mv.this_mv.col = (mv.this_mv.col as isize).max(x_min).min(x_max) as i16; + } + mode_context } -- GitLab