]> granicus.if.org Git - libvpx/commitdiff
Correct SPLITMV clamping
authorJohn Koleszar <jkoleszar@google.com>
Mon, 31 Oct 2011 21:42:51 +0000 (14:42 -0700)
committerJohn Koleszar <jkoleszar@google.com>
Mon, 31 Oct 2011 21:42:51 +0000 (14:42 -0700)
Prior to this fix, the clamping state of the last subblock partition
dominated, whereas the correct behavior is to clamp if any partition
needs clamping. This bug was introduced by v0.9.6-232-g6b25501

See also:
  [1]: http://code.google.com/p/webm/issues/detail?id=371
  [2]: https://bugzilla.mozilla.org/show_bug.cgi?id=696390

Change-Id: I444db492b4c4f05f039c7da6f4216da8207dc138

vp8/decoder/decodemv.c

index 712a5975796edc6fe3a2481fede516f12d5768e7..5b913ae6bbdbbaa1f1e94a497eae3dd3617c444f 100644 (file)
@@ -273,6 +273,7 @@ static void decode_split_mv(vp8_reader *const bc, MODE_INFO *mi,
         }
     }
 
+    mbmi->need_to_clamp_mvs = 0;
     do  /* for each subset j */
     {
         int_mv leftmv, abovemv;
@@ -289,7 +290,7 @@ static void decode_split_mv(vp8_reader *const bc, MODE_INFO *mi,
 
         blockmv = sub_mv_ref(bc, prob, abovemv, leftmv, best_mv, mvc);
 
-        mbmi->need_to_clamp_mvs = vp8_check_mv_bounds(&blockmv,
+        mbmi->need_to_clamp_mvs |= vp8_check_mv_bounds(&blockmv,
                                                   mb_to_left_edge,
                                                   mb_to_right_edge,
                                                   mb_to_top_edge,