shithub: libvpx

Download patch

ref: a1ec3eb3263dfc265961cc6d5c13dd7be788798e
parent: d88ca3c3354aa58e487683cd8736322a4e814d1c
author: Yaowu Xu <yaowu@google.com>
date: Mon Aug 24 15:09:03 EDT 2015

Limit new motion vector size

This commit adds clamp of new vectors similar to the logic in RD loop.
Such clamp is not necessary from the perspective of VP8 bitstream, but
is added to improve ChromeCast mirroring's robustness.

Change-Id: I42f6adbc60ffce283b994869364230858632d6fa

--- a/vp8/encoder/pickinter.c
+++ b/vp8/encoder/pickinter.c
@@ -1240,7 +1240,10 @@
             }
 
             mode_mv[NEWMV].as_int = d->bmi.mv.as_int;
-
+            // The clamp below is not necessary from the perspective
+            // of VP8 bitstream, but is added to improve ChromeCast
+            // mirroring's robustness. Please do not remove.
+            vp8_clamp_mv2(&mode_mv[this_mode], xd);
             /* mv cost; */
             rate2 += vp8_mv_bit_cost(&mode_mv[NEWMV], &best_ref_mv,
                                      cpi->mb.mvcost, 128);
@@ -1248,7 +1251,6 @@
 
         case NEARESTMV:
         case NEARMV:
-
             if (mode_mv[this_mode].as_int == 0)
                 continue;