Merge "Fix incorrect use of uv eobs in intra modes"
diff --git a/build/make/configure.sh b/build/make/configure.sh
index 78a1cee..571fd84 100755
--- a/build/make/configure.sh
+++ b/build/make/configure.sh
@@ -796,6 +796,8 @@
add_cflags "--sysroot=${alt_libc}"
add_ldflags "--sysroot=${alt_libc}"
+ add_cflags "-I${SDK_PATH}/sources/android/cpufeatures/"
+
enable pic
soft_enable realtime_only
if [ ${tgt_isa} == "armv7" ]; then
diff --git a/vp8/encoder/sad_c.c b/vp8/encoder/sad_c.c
index 3b6e26c..f745bbd 100644
--- a/vp8/encoder/sad_c.c
+++ b/vp8/encoder/sad_c.c
@@ -13,40 +13,15 @@
#include "vpx_config.h"
#include "vpx/vpx_integer.h"
-unsigned int vp8_sad16x16_c(
- const unsigned char *src_ptr,
- int src_stride,
- const unsigned char *ref_ptr,
- int ref_stride,
- int max_sad)
-{
-
- int r, c;
- unsigned int sad = 0;
-
- for (r = 0; r < 16; r++)
- {
- for (c = 0; c < 16; c++)
- {
- sad += abs(src_ptr[c] - ref_ptr[c]);
- }
-
- src_ptr += src_stride;
- ref_ptr += ref_stride;
- }
-
- return sad;
-}
-
-
static __inline
unsigned int sad_mx_n_c(
const unsigned char *src_ptr,
int src_stride,
const unsigned char *ref_ptr,
int ref_stride,
- int m,
- int n)
+ int max_sad,
+ int m,
+ int n)
{
int r, c;
@@ -59,6 +34,9 @@
sad += abs(src_ptr[c] - ref_ptr[c]);
}
+ if (sad > max_sad)
+ break;
+
src_ptr += src_stride;
ref_ptr += ref_stride;
}
@@ -66,16 +44,31 @@
return sad;
}
+/* max_sad is provided as an optional optimization point. Alternative
+ * implementations of these functions are not required to check it.
+ */
+
+unsigned int vp8_sad16x16_c(
+ const unsigned char *src_ptr,
+ int src_stride,
+ const unsigned char *ref_ptr,
+ int ref_stride,
+ int max_sad)
+{
+
+ return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 16, 16);
+}
+
unsigned int vp8_sad8x8_c(
const unsigned char *src_ptr,
int src_stride,
const unsigned char *ref_ptr,
int ref_stride,
- int max_sad)
+ int max_sad)
{
- return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 8, 8);
+ return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 8, 8);
}
@@ -84,10 +77,10 @@
int src_stride,
const unsigned char *ref_ptr,
int ref_stride,
- int max_sad)
+ int max_sad)
{
- return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 16, 8);
+ return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 16, 8);
}
@@ -97,10 +90,10 @@
int src_stride,
const unsigned char *ref_ptr,
int ref_stride,
- int max_sad)
+ int max_sad)
{
- return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 8, 16);
+ return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 8, 16);
}
@@ -109,10 +102,10 @@
int src_stride,
const unsigned char *ref_ptr,
int ref_stride,
- int max_sad)
+ int max_sad)
{
- return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 4, 4);
+ return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 4, 4);
}
void vp8_sad16x16x3_c(
diff --git a/vp8/encoder/x86/sad_sse2.asm b/vp8/encoder/x86/sad_sse2.asm
index fa8e3e3..0b01d7b 100644
--- a/vp8/encoder/x86/sad_sse2.asm
+++ b/vp8/encoder/x86/sad_sse2.asm
@@ -89,7 +89,7 @@
; int src_stride,
; unsigned char *ref_ptr,
; int ref_stride,
-; int max_err)
+; int max_sad)
global sym(vp8_sad8x16_wmt)
sym(vp8_sad8x16_wmt):
push rbp
diff --git a/vp8/encoder/x86/sad_sse3.asm b/vp8/encoder/x86/sad_sse3.asm
index a255097..c2af3c8 100644
--- a/vp8/encoder/x86/sad_sse3.asm
+++ b/vp8/encoder/x86/sad_sse3.asm
@@ -19,7 +19,7 @@
%define end_ptr rcx
%define ret_var rbx
%define result_ptr arg(4)
- %define max_err arg(4)
+ %define max_sad arg(4)
%define height dword ptr arg(4)
push rbp
mov rbp, rsp
@@ -42,7 +42,7 @@
%define end_ptr r10
%define ret_var r11
%define result_ptr [rsp+xmm_stack_space+8+4*8]
- %define max_err [rsp+xmm_stack_space+8+4*8]
+ %define max_sad [rsp+xmm_stack_space+8+4*8]
%define height dword ptr [rsp+xmm_stack_space+8+4*8]
%else
%define src_ptr rdi
@@ -52,7 +52,7 @@
%define end_ptr r9
%define ret_var r10
%define result_ptr r8
- %define max_err r8
+ %define max_sad r8
%define height r8
%endif
%endif
@@ -67,7 +67,7 @@
%define end_ptr
%define ret_var
%define result_ptr
- %define max_err
+ %define max_sad
%define height
%if ABI_IS_32BIT
@@ -587,7 +587,7 @@
; int src_stride,
; unsigned char *ref_ptr,
; int ref_stride,
-; int max_err)
+; int max_sad)
;%define lddqu movdqu
global sym(vp8_sad16x16_sse3)
sym(vp8_sad16x16_sse3):