shithub: libvpx

Download patch

ref: 32c375447c037526f32ea0e8bc50c8c783fa14ce
parent: 99ef84c65a2b5760bec5d9300974946303090afb
author: Tristan Matthews <[email protected]>
date: Thu Sep 22 14:49:27 EDT 2016

vp9: fix compilation for g++ 6.2.x

Inline function called from test/dct16x16_test.cc wouldn't build due to:
  invalid operands of types ‘__gnu_cxx::__enable_if<true, double>::__type
  {aka double}’ and ‘int’ to binary ‘operator>>’
  return (abs(ref->row) >> 3) < COMPANDED_MVREF_THRESH &&

this converts the test to abs() < COMPANDED_MVREF_THRESH << 3 which
hides the promotion issue.

Regression from commit de993a847f8080d3128420c8ef8495642013bdb1

BUG=webm:1291

Change-Id: I73b5943d07d5b61b709d299114216a2371a8fd62

--- a/vp9/common/vp9_entropymv.h
+++ b/vp9/common/vp9_entropymv.h
@@ -27,12 +27,9 @@
 
 void vp9_adapt_mv_probs(struct VP9Common *cm, int usehp);
 
-// Integer pel reference mv threshold for use of high-precision 1/8 mv
-#define COMPANDED_MVREF_THRESH 8
-
 static INLINE int use_mv_hp(const MV *ref) {
-  return (abs(ref->row) >> 3) < COMPANDED_MVREF_THRESH &&
-         (abs(ref->col) >> 3) < COMPANDED_MVREF_THRESH;
+  const int kMvRefThresh = 64;  // threshold for use of high-precision 1/8 mv
+  return abs(ref->row) < kMvRefThresh && abs(ref->col) < kMvRefThresh;
 }
 
 #define MV_UPDATE_PROB 252