Be consistent with SAD values

SAD returns unsigned values. Make all the declarations the same.

Remove bestsad initialization and check. It is always set to the
result of a SAD call so it will never remain UINT_MAX

Use ja instead of jg to test unsigned comparison instead of signed.

Update test.

Change-Id: I46336ab45f4e60fc37caf20bd36bc5782079c7a5
This commit is contained in:
Johann 2012-06-26 11:37:33 -07:00
parent aa4f9dd153
commit 1161055129
8 changed files with 202 additions and 238 deletions

View File

@ -28,7 +28,7 @@ typedef unsigned int (*sad_m_by_n_fn_t)(const unsigned char *source_ptr,
int source_stride, int source_stride,
const unsigned char *reference_ptr, const unsigned char *reference_ptr,
int reference_stride, int reference_stride,
int max_sad); unsigned int max_sad);
using libvpx_test::ACMRandom; using libvpx_test::ACMRandom;
@ -45,7 +45,7 @@ class SADTest : public PARAMS(int, int, sad_m_by_n_fn_t) {
} }
sad_m_by_n_fn_t sad_fn_; sad_m_by_n_fn_t sad_fn_;
virtual unsigned int SAD(int max_sad) { virtual unsigned int SAD(unsigned int max_sad) {
return sad_fn_(source_data_, source_stride_, return sad_fn_(source_data_, source_stride_,
reference_data_, reference_stride_, reference_data_, reference_stride_,
max_sad); max_sad);
@ -111,13 +111,13 @@ class SADTest : public PARAMS(int, int, sad_m_by_n_fn_t) {
TEST_P(SADTest, MaxRef) { TEST_P(SADTest, MaxRef) {
FillConstant(source_data_, source_stride_, 0); FillConstant(source_data_, source_stride_, 0);
FillConstant(reference_data_, reference_stride_, 255); FillConstant(reference_data_, reference_stride_, 255);
CheckSad(INT_MAX); CheckSad(UINT_MAX);
} }
TEST_P(SADTest, MaxSrc) { TEST_P(SADTest, MaxSrc) {
FillConstant(source_data_, source_stride_, 255); FillConstant(source_data_, source_stride_, 255);
FillConstant(reference_data_, reference_stride_, 0); FillConstant(reference_data_, reference_stride_, 0);
CheckSad(INT_MAX); CheckSad(UINT_MAX);
} }
TEST_P(SADTest, ShortRef) { TEST_P(SADTest, ShortRef) {
@ -125,7 +125,7 @@ TEST_P(SADTest, ShortRef) {
reference_stride_ >>= 1; reference_stride_ >>= 1;
FillRandom(source_data_, source_stride_); FillRandom(source_data_, source_stride_);
FillRandom(reference_data_, reference_stride_); FillRandom(reference_data_, reference_stride_);
CheckSad(INT_MAX); CheckSad(UINT_MAX);
reference_stride_ = tmp_stride; reference_stride_ = tmp_stride;
} }
@ -136,7 +136,7 @@ TEST_P(SADTest, UnalignedRef) {
reference_stride_ -= 1; reference_stride_ -= 1;
FillRandom(source_data_, source_stride_); FillRandom(source_data_, source_stride_);
FillRandom(reference_data_, reference_stride_); FillRandom(reference_data_, reference_stride_);
CheckSad(INT_MAX); CheckSad(UINT_MAX);
reference_stride_ = tmp_stride; reference_stride_ = tmp_stride;
} }
@ -145,7 +145,7 @@ TEST_P(SADTest, ShortSrc) {
source_stride_ >>= 1; source_stride_ >>= 1;
FillRandom(source_data_, source_stride_); FillRandom(source_data_, source_stride_);
FillRandom(reference_data_, reference_stride_); FillRandom(reference_data_, reference_stride_);
CheckSad(INT_MAX); CheckSad(UINT_MAX);
source_stride_ = tmp_stride; source_stride_ = tmp_stride;
} }

View File

@ -160,9 +160,9 @@ static void multiframe_quality_enhance_block
vsad = (vp8_variance8x8(v, uv_stride, vd, uvd_stride, &sse)); vsad = (vp8_variance8x8(v, uv_stride, vd, uvd_stride, &sse));
vsad = (sse + 32)>>6; vsad = (sse + 32)>>6;
#else #else
sad = (vp8_sad16x16(y, y_stride, yd, yd_stride, INT_MAX)+128)>>8; sad = (vp8_sad16x16(y, y_stride, yd, yd_stride, UINT_MAX) + 128) >> 8;
usad = (vp8_sad8x8(u, uv_stride, ud, uvd_stride, INT_MAX)+32)>>6; usad = (vp8_sad8x8(u, uv_stride, ud, uvd_stride, UINT_MAX) + 32) >> 6;
vsad = (vp8_sad8x8(v, uv_stride, vd, uvd_stride, INT_MAX)+32)>>6; vsad = (vp8_sad8x8(v, uv_stride, vd, uvd_stride, UINT_MAX)+ 32) >> 6;
#endif #endif
} }
else /* if (blksize == 8) */ else /* if (blksize == 8) */
@ -177,9 +177,9 @@ static void multiframe_quality_enhance_block
vsad = (vp8_variance4x4(v, uv_stride, vd, uvd_stride, &sse)); vsad = (vp8_variance4x4(v, uv_stride, vd, uvd_stride, &sse));
vsad = (sse + 8)>>4; vsad = (sse + 8)>>4;
#else #else
sad = (vp8_sad8x8(y, y_stride, yd, yd_stride, INT_MAX)+32)>>6; sad = (vp8_sad8x8(y, y_stride, yd, yd_stride, UINT_MAX) + 32) >> 6;
usad = (vp8_sad4x4(u, uv_stride, ud, uvd_stride, INT_MAX)+8)>>4; usad = (vp8_sad4x4(u, uv_stride, ud, uvd_stride, UINT_MAX) + 8) >> 4;
vsad = (vp8_sad4x4(v, uv_stride, vd, uvd_stride, INT_MAX)+8)>>4; vsad = (vp8_sad4x4(v, uv_stride, vd, uvd_stride, UINT_MAX) + 8) >> 4;
#endif #endif
} }

View File

@ -295,23 +295,23 @@ vp8_variance_halfpixvar16x16_hv_media=vp8_variance_halfpixvar16x16_hv_armv6
# #
# Single block SAD # Single block SAD
# #
prototype unsigned int vp8_sad4x4 "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int max_sad" prototype unsigned int vp8_sad4x4 "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad"
specialize vp8_sad4x4 mmx sse2 neon specialize vp8_sad4x4 mmx sse2 neon
vp8_sad4x4_sse2=vp8_sad4x4_wmt vp8_sad4x4_sse2=vp8_sad4x4_wmt
prototype unsigned int vp8_sad8x8 "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int max_sad" prototype unsigned int vp8_sad8x8 "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad"
specialize vp8_sad8x8 mmx sse2 neon specialize vp8_sad8x8 mmx sse2 neon
vp8_sad8x8_sse2=vp8_sad8x8_wmt vp8_sad8x8_sse2=vp8_sad8x8_wmt
prototype unsigned int vp8_sad8x16 "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int max_sad" prototype unsigned int vp8_sad8x16 "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad"
specialize vp8_sad8x16 mmx sse2 neon specialize vp8_sad8x16 mmx sse2 neon
vp8_sad8x16_sse2=vp8_sad8x16_wmt vp8_sad8x16_sse2=vp8_sad8x16_wmt
prototype unsigned int vp8_sad16x8 "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int max_sad" prototype unsigned int vp8_sad16x8 "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad"
specialize vp8_sad16x8 mmx sse2 neon specialize vp8_sad16x8 mmx sse2 neon
vp8_sad16x8_sse2=vp8_sad16x8_wmt vp8_sad16x8_sse2=vp8_sad16x8_wmt
prototype unsigned int vp8_sad16x16 "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int max_sad" prototype unsigned int vp8_sad16x16 "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad"
specialize vp8_sad16x16 mmx sse2 sse3 media neon specialize vp8_sad16x16 mmx sse2 sse3 media neon
vp8_sad16x16_sse2=vp8_sad16x16_wmt vp8_sad16x16_sse2=vp8_sad16x16_wmt
vp8_sad16x16_media=vp8_sad16x16_armv6 vp8_sad16x16_media=vp8_sad16x16_armv6

View File

@ -9,13 +9,14 @@
*/ */
#include <limits.h>
#include <stdlib.h> #include <stdlib.h>
#include "vpx_config.h" #include "vpx_config.h"
#include "vpx/vpx_integer.h" #include "vpx/vpx_integer.h"
static unsigned int sad_mx_n_c(const unsigned char *src_ptr, int src_stride, static unsigned int sad_mx_n_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
int max_sad, int m, int n) unsigned int max_sad, int m, int n)
{ {
int r, c; int r, c;
unsigned int sad = 0; unsigned int sad = 0;
@ -43,21 +44,21 @@ static unsigned int sad_mx_n_c(const unsigned char *src_ptr, int src_stride,
unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride, unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
int max_sad) unsigned int max_sad)
{ {
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 16, 16); 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, unsigned int vp8_sad8x8_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
int max_sad) unsigned int max_sad)
{ {
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 8, 8); return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 8, 8);
} }
unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride, unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
int max_sad) unsigned int max_sad)
{ {
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 16, 8); return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 16, 8);
@ -65,196 +66,181 @@ unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride,
unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride, unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
int max_sad) unsigned int max_sad)
{ {
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 8, 16); return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 8, 16);
} }
unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride, unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
int max_sad) unsigned int max_sad)
{ {
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 4, 4); return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 4, 4);
} }
void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride, void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
unsigned int *sad_array unsigned int *sad_array)
)
{ {
sad_array[0] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, 0x7fffffff); sad_array[0] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
sad_array[1] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
sad_array[2] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
} }
void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride, void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
unsigned short *sad_array unsigned short *sad_array)
)
{ {
sad_array[0] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, 0x7fffffff); sad_array[0] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
sad_array[1] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
sad_array[2] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
sad_array[3] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, 0x7fffffff); sad_array[3] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, UINT_MAX);
sad_array[4] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); sad_array[4] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, UINT_MAX);
sad_array[5] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); sad_array[5] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, UINT_MAX);
sad_array[6] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, 0x7fffffff); sad_array[6] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, UINT_MAX);
sad_array[7] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); sad_array[7] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, UINT_MAX);
} }
void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride, void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
unsigned int *sad_array unsigned int *sad_array)
)
{ {
sad_array[0] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, 0x7fffffff); sad_array[0] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
sad_array[1] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
sad_array[2] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
} }
void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride, void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
unsigned short *sad_array unsigned short *sad_array)
)
{ {
sad_array[0] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, 0x7fffffff); sad_array[0] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
sad_array[1] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
sad_array[2] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
sad_array[3] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, 0x7fffffff); sad_array[3] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, UINT_MAX);
sad_array[4] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); sad_array[4] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, UINT_MAX);
sad_array[5] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); sad_array[5] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, UINT_MAX);
sad_array[6] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, 0x7fffffff); sad_array[6] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, UINT_MAX);
sad_array[7] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); sad_array[7] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, UINT_MAX);
} }
void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride, void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
unsigned int *sad_array unsigned int *sad_array)
)
{ {
sad_array[0] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, 0x7fffffff); sad_array[0] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
sad_array[1] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
sad_array[2] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
} }
void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride, void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
unsigned short *sad_array unsigned short *sad_array)
)
{ {
sad_array[0] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, 0x7fffffff); sad_array[0] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
sad_array[1] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
sad_array[2] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
sad_array[3] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, 0x7fffffff); sad_array[3] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, UINT_MAX);
sad_array[4] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); sad_array[4] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, UINT_MAX);
sad_array[5] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); sad_array[5] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, UINT_MAX);
sad_array[6] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, 0x7fffffff); sad_array[6] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, UINT_MAX);
sad_array[7] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); sad_array[7] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, UINT_MAX);
} }
void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride, void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
unsigned int *sad_array unsigned int *sad_array)
)
{ {
sad_array[0] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, 0x7fffffff); sad_array[0] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
sad_array[1] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
sad_array[2] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
} }
void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride, void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
unsigned short *sad_array unsigned short *sad_array)
)
{ {
sad_array[0] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, 0x7fffffff); sad_array[0] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
sad_array[1] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
sad_array[2] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
sad_array[3] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, 0x7fffffff); sad_array[3] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, UINT_MAX);
sad_array[4] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); sad_array[4] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, UINT_MAX);
sad_array[5] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); sad_array[5] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, UINT_MAX);
sad_array[6] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, 0x7fffffff); sad_array[6] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, UINT_MAX);
sad_array[7] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); sad_array[7] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, UINT_MAX);
} }
void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride, void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
unsigned int *sad_array unsigned int *sad_array)
)
{ {
sad_array[0] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, 0x7fffffff); sad_array[0] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
sad_array[1] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
sad_array[2] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
} }
void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride, void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride,
const unsigned char *ref_ptr, int ref_stride, const unsigned char *ref_ptr, int ref_stride,
unsigned short *sad_array unsigned short *sad_array)
)
{ {
sad_array[0] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, 0x7fffffff); sad_array[0] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
sad_array[1] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
sad_array[2] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
sad_array[3] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, 0x7fffffff); sad_array[3] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, UINT_MAX);
sad_array[4] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); sad_array[4] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, UINT_MAX);
sad_array[5] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); sad_array[5] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, UINT_MAX);
sad_array[6] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, 0x7fffffff); sad_array[6] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, UINT_MAX);
sad_array[7] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); sad_array[7] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, UINT_MAX);
} }
void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride, void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride,
const unsigned char * const ref_ptr[], int ref_stride, const unsigned char * const ref_ptr[], int ref_stride,
unsigned int *sad_array unsigned int *sad_array)
)
{ {
sad_array[0] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr[0], ref_stride, 0x7fffffff); sad_array[0] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr[0], ref_stride, UINT_MAX);
sad_array[1] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr[1], ref_stride, 0x7fffffff); sad_array[1] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr[1], ref_stride, UINT_MAX);
sad_array[2] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr[2], ref_stride, 0x7fffffff); sad_array[2] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr[2], ref_stride, UINT_MAX);
sad_array[3] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr[3], ref_stride, 0x7fffffff); sad_array[3] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr[3], ref_stride, UINT_MAX);
} }
void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride, void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride,
const unsigned char * const ref_ptr[], int ref_stride, const unsigned char * const ref_ptr[], int ref_stride,
unsigned int *sad_array unsigned int *sad_array)
)
{ {
sad_array[0] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr[0], ref_stride, 0x7fffffff); sad_array[0] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr[0], ref_stride, UINT_MAX);
sad_array[1] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr[1], ref_stride, 0x7fffffff); sad_array[1] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr[1], ref_stride, UINT_MAX);
sad_array[2] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr[2], ref_stride, 0x7fffffff); sad_array[2] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr[2], ref_stride, UINT_MAX);
sad_array[3] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr[3], ref_stride, 0x7fffffff); sad_array[3] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr[3], ref_stride, UINT_MAX);
} }
void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride, void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride,
const unsigned char * const ref_ptr[], int ref_stride, const unsigned char * const ref_ptr[], int ref_stride,
unsigned int *sad_array unsigned int *sad_array)
)
{ {
sad_array[0] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr[0], ref_stride, 0x7fffffff); sad_array[0] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr[0], ref_stride, UINT_MAX);
sad_array[1] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr[1], ref_stride, 0x7fffffff); sad_array[1] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr[1], ref_stride, UINT_MAX);
sad_array[2] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr[2], ref_stride, 0x7fffffff); sad_array[2] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr[2], ref_stride, UINT_MAX);
sad_array[3] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr[3], ref_stride, 0x7fffffff); sad_array[3] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr[3], ref_stride, UINT_MAX);
} }
void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride, void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride,
const unsigned char * const ref_ptr[], int ref_stride, const unsigned char * const ref_ptr[], int ref_stride,
unsigned int *sad_array unsigned int *sad_array)
)
{ {
sad_array[0] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr[0], ref_stride, 0x7fffffff); sad_array[0] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr[0], ref_stride, UINT_MAX);
sad_array[1] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr[1], ref_stride, 0x7fffffff); sad_array[1] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr[1], ref_stride, UINT_MAX);
sad_array[2] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr[2], ref_stride, 0x7fffffff); sad_array[2] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr[2], ref_stride, UINT_MAX);
sad_array[3] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr[3], ref_stride, 0x7fffffff); sad_array[3] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr[3], ref_stride, UINT_MAX);
} }
void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride, void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride,
const unsigned char * const ref_ptr[], int ref_stride, const unsigned char * const ref_ptr[], int ref_stride,
unsigned int *sad_array unsigned int *sad_array)
)
{ {
sad_array[0] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr[0], ref_stride, 0x7fffffff); sad_array[0] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr[0], ref_stride, UINT_MAX);
sad_array[1] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr[1], ref_stride, 0x7fffffff); sad_array[1] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr[1], ref_stride, UINT_MAX);
sad_array[2] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr[2], ref_stride, 0x7fffffff); sad_array[2] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr[2], ref_stride, UINT_MAX);
sad_array[3] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr[3], ref_stride, 0x7fffffff); sad_array[3] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr[3], ref_stride, UINT_MAX);
} }
/* Copy 2 macroblocks to a buffer */ /* Copy 2 macroblocks to a buffer */

View File

@ -12,14 +12,12 @@
#ifndef VARIANCE_H #ifndef VARIANCE_H
#define VARIANCE_H #define VARIANCE_H
typedef unsigned int(*vp8_sad_fn_t) typedef unsigned int(*vp8_sad_fn_t)(
(
const unsigned char *src_ptr, const unsigned char *src_ptr,
int source_stride, int source_stride,
const unsigned char *ref_ptr, const unsigned char *ref_ptr,
int ref_stride, int ref_stride,
int max_sad unsigned int max_sad);
);
typedef void (*vp8_copy32xn_fn_t)( typedef void (*vp8_copy32xn_fn_t)(
const unsigned char *src_ptr, const unsigned char *src_ptr,

View File

@ -115,7 +115,7 @@ sym(vp8_sad8x16_wmt):
movq rax, mm7 movq rax, mm7
cmp eax, arg(4) cmp eax, arg(4)
jg .x8x16sad_wmt_early_exit ja .x8x16sad_wmt_early_exit
movq mm0, QWORD PTR [rsi] movq mm0, QWORD PTR [rsi]
movq mm1, QWORD PTR [rdi] movq mm1, QWORD PTR [rdi]
@ -176,7 +176,7 @@ sym(vp8_sad8x8_wmt):
movq rax, mm7 movq rax, mm7
cmp eax, arg(4) cmp eax, arg(4)
jg .x8x8sad_wmt_early_exit ja .x8x8sad_wmt_early_exit
movq mm0, QWORD PTR [rsi] movq mm0, QWORD PTR [rsi]
movq mm1, QWORD PTR [rdi] movq mm1, QWORD PTR [rdi]
@ -285,7 +285,7 @@ sym(vp8_sad16x8_wmt):
movq rax, mm7 movq rax, mm7
cmp eax, arg(4) cmp eax, arg(4)
jg .x16x8sad_wmt_early_exit ja .x16x8sad_wmt_early_exit
movq mm0, QWORD PTR [rsi] movq mm0, QWORD PTR [rsi]
movq mm2, QWORD PTR [rsi+8] movq mm2, QWORD PTR [rsi+8]

View File

@ -198,7 +198,7 @@ void vp8_init3smotion_compensation(MACROBLOCK *x, int stride)
/* returns distortion + motion vector cost */ /* returns distortion + motion vector cost */
#define ERR(r,c) (MVC(r,c)+DIST(r,c)) #define ERR(r,c) (MVC(r,c)+DIST(r,c))
/* checks if (r,c) has better score than previous best */ /* checks if (r,c) has better score than previous best */
#define CHECK_BETTER(v,r,c) IFMVCV(r,c,{thismse = DIST(r,c); if((v = (MVC(r,c)+thismse)) < besterr) { besterr = v; br=r; bc=c; *distortion = thismse; *sse1 = sse; }}, v=INT_MAX;) #define CHECK_BETTER(v,r,c) IFMVCV(r,c,{thismse = DIST(r,c); if((v = (MVC(r,c)+thismse)) < besterr) { besterr = v; br=r; bc=c; *distortion = thismse; *sse1 = sse; }}, v=UINT_MAX;)
int vp8_find_best_sub_pixel_step_iteratively(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int vp8_find_best_sub_pixel_step_iteratively(MACROBLOCK *x, BLOCK *b, BLOCKD *d,
int_mv *bestmv, int_mv *ref_mv, int_mv *bestmv, int_mv *ref_mv,
@ -212,7 +212,7 @@ int vp8_find_best_sub_pixel_step_iteratively(MACROBLOCK *x, BLOCK *b, BLOCKD *d,
int rr = ref_mv->as_mv.row >> 1, rc = ref_mv->as_mv.col >> 1; int rr = ref_mv->as_mv.row >> 1, rc = ref_mv->as_mv.col >> 1;
int br = bestmv->as_mv.row << 2, bc = bestmv->as_mv.col << 2; int br = bestmv->as_mv.row << 2, bc = bestmv->as_mv.col << 2;
int tr = br, tc = bc; int tr = br, tc = bc;
unsigned int besterr = INT_MAX; unsigned int besterr;
unsigned int left, right, up, down, diag; unsigned int left, right, up, down, diag;
unsigned int sse; unsigned int sse;
unsigned int whichdir; unsigned int whichdir;
@ -870,7 +870,7 @@ int vp8_hex_search
int in_what_stride = pre_stride; int in_what_stride = pre_stride;
int br, bc; int br, bc;
int_mv this_mv; int_mv this_mv;
unsigned int bestsad = 0x7fffffff; unsigned int bestsad;
unsigned int thissad; unsigned int thissad;
unsigned char *base_offset; unsigned char *base_offset;
unsigned char *this_offset; unsigned char *this_offset;
@ -894,8 +894,7 @@ int vp8_hex_search
this_offset = base_offset + (br * (pre_stride)) + bc; this_offset = base_offset + (br * (pre_stride)) + bc;
this_mv.as_mv.row = br; this_mv.as_mv.row = br;
this_mv.as_mv.col = bc; this_mv.as_mv.col = bc;
bestsad = vfp->sdf( what, what_stride, this_offset, bestsad = vfp->sdf(what, what_stride, this_offset, in_what_stride, UINT_MAX)
in_what_stride, 0x7fffffff)
+ mvsad_err_cost(&this_mv, &fcenter_mv, mvsadcost, sad_per_bit); + mvsad_err_cost(&this_mv, &fcenter_mv, mvsadcost, sad_per_bit);
#if CONFIG_MULTI_RES_ENCODING #if CONFIG_MULTI_RES_ENCODING
@ -920,7 +919,7 @@ int vp8_hex_search
this_mv.as_mv.row = br + hex[i].row; this_mv.as_mv.row = br + hex[i].row;
this_mv.as_mv.col = bc + hex[i].col; this_mv.as_mv.col = bc + hex[i].col;
this_offset = base_offset + (this_mv.as_mv.row * in_what_stride) + this_mv.as_mv.col; this_offset = base_offset + (this_mv.as_mv.row * in_what_stride) + this_mv.as_mv.col;
thissad=vfp->sdf( what, what_stride, this_offset, in_what_stride, bestsad); thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride, bestsad);
CHECK_BETTER CHECK_BETTER
} }
}else }else
@ -931,7 +930,7 @@ int vp8_hex_search
this_mv.as_mv.col = bc + hex[i].col; this_mv.as_mv.col = bc + hex[i].col;
CHECK_POINT CHECK_POINT
this_offset = base_offset + (this_mv.as_mv.row * in_what_stride) + this_mv.as_mv.col; this_offset = base_offset + (this_mv.as_mv.row * in_what_stride) + this_mv.as_mv.col;
thissad=vfp->sdf( what, what_stride, this_offset, in_what_stride, bestsad); thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride, bestsad);
CHECK_BETTER CHECK_BETTER
} }
} }
@ -957,7 +956,7 @@ int vp8_hex_search
this_mv.as_mv.row = br + next_chkpts[k][i].row; this_mv.as_mv.row = br + next_chkpts[k][i].row;
this_mv.as_mv.col = bc + next_chkpts[k][i].col; this_mv.as_mv.col = bc + next_chkpts[k][i].col;
this_offset = base_offset + (this_mv.as_mv.row * (in_what_stride)) + this_mv.as_mv.col; this_offset = base_offset + (this_mv.as_mv.row * (in_what_stride)) + this_mv.as_mv.col;
thissad = vfp->sdf( what, what_stride, this_offset, in_what_stride, bestsad); thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride, bestsad);
CHECK_BETTER CHECK_BETTER
} }
}else }else
@ -968,7 +967,7 @@ int vp8_hex_search
this_mv.as_mv.col = bc + next_chkpts[k][i].col; this_mv.as_mv.col = bc + next_chkpts[k][i].col;
CHECK_POINT CHECK_POINT
this_offset = base_offset + (this_mv.as_mv.row * (in_what_stride)) + this_mv.as_mv.col; this_offset = base_offset + (this_mv.as_mv.row * (in_what_stride)) + this_mv.as_mv.col;
thissad = vfp->sdf( what, what_stride, this_offset, in_what_stride, bestsad); thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride, bestsad);
CHECK_BETTER CHECK_BETTER
} }
} }
@ -999,7 +998,7 @@ cal_neighbors:
this_mv.as_mv.row = br + neighbors[i].row; this_mv.as_mv.row = br + neighbors[i].row;
this_mv.as_mv.col = bc + neighbors[i].col; this_mv.as_mv.col = bc + neighbors[i].col;
this_offset = base_offset + (this_mv.as_mv.row * (in_what_stride)) + this_mv.as_mv.col; this_offset = base_offset + (this_mv.as_mv.row * (in_what_stride)) + this_mv.as_mv.col;
thissad = vfp->sdf( what, what_stride, this_offset, in_what_stride, bestsad); thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride, bestsad);
CHECK_BETTER CHECK_BETTER
} }
}else }else
@ -1010,7 +1009,7 @@ cal_neighbors:
this_mv.as_mv.col = bc + neighbors[i].col; this_mv.as_mv.col = bc + neighbors[i].col;
CHECK_POINT CHECK_POINT
this_offset = base_offset + (this_mv.as_mv.row * (in_what_stride)) + this_mv.as_mv.col; this_offset = base_offset + (this_mv.as_mv.row * (in_what_stride)) + this_mv.as_mv.col;
thissad = vfp->sdf( what, what_stride, this_offset, in_what_stride, bestsad); thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride, bestsad);
CHECK_BETTER CHECK_BETTER
} }
} }
@ -1061,7 +1060,8 @@ int vp8_diamond_search_sad_c
int tot_steps; int tot_steps;
int_mv this_mv; int_mv this_mv;
int bestsad = INT_MAX; unsigned int bestsad;
unsigned int thissad;
int best_site = 0; int best_site = 0;
int last_site = 0; int last_site = 0;
@ -1072,7 +1072,6 @@ int vp8_diamond_search_sad_c
search_site *ss; search_site *ss;
unsigned char *check_here; unsigned char *check_here;
int thissad;
int *mvsadcost[2]; int *mvsadcost[2];
int_mv fcenter_mv; int_mv fcenter_mv;
@ -1094,9 +1093,8 @@ int vp8_diamond_search_sad_c
best_address = in_what; best_address = in_what;
/* Check the starting position */ /* Check the starting position */
bestsad = fn_ptr->sdf(what, what_stride, in_what, bestsad = fn_ptr->sdf(what, what_stride, in_what, in_what_stride, UINT_MAX)
in_what_stride, 0x7fffffff) + mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit);
+ mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit);
/* search_param determines the length of the initial step and hence /* search_param determines the length of the initial step and hence
* the number of iterations 0 = initial step (MAX_FIRST_STEP) pel : * the number of iterations 0 = initial step (MAX_FIRST_STEP) pel :
@ -1120,14 +1118,14 @@ int vp8_diamond_search_sad_c
{ {
check_here = ss[i].offset + best_address; check_here = ss[i].offset + best_address;
thissad = fn_ptr->sdf(what, what_stride, check_here , in_what_stride, bestsad); thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride, bestsad);
if (thissad < bestsad) if (thissad < bestsad)
{ {
this_mv.as_mv.row = this_row_offset; this_mv.as_mv.row = this_row_offset;
this_mv.as_mv.col = this_col_offset; this_mv.as_mv.col = this_col_offset;
thissad += mvsad_err_cost(&this_mv, &fcenter_mv, thissad += mvsad_err_cost(&this_mv, &fcenter_mv,
mvsadcost, sad_per_bit); mvsadcost, sad_per_bit);
if (thissad < bestsad) if (thissad < bestsad)
{ {
@ -1154,11 +1152,8 @@ int vp8_diamond_search_sad_c
this_mv.as_mv.row = best_mv->as_mv.row << 3; this_mv.as_mv.row = best_mv->as_mv.row << 3;
this_mv.as_mv.col = best_mv->as_mv.col << 3; this_mv.as_mv.col = best_mv->as_mv.col << 3;
if (bestsad == INT_MAX) return fn_ptr->vf(what, what_stride, best_address, in_what_stride, &thissad)
return INT_MAX; + mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
return fn_ptr->vf(what, what_stride, best_address, in_what_stride, (unsigned int *)(&thissad))
+ mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
} }
int vp8_diamond_search_sadx4 int vp8_diamond_search_sadx4
@ -1189,7 +1184,8 @@ int vp8_diamond_search_sadx4
int tot_steps; int tot_steps;
int_mv this_mv; int_mv this_mv;
unsigned int bestsad = UINT_MAX; unsigned int bestsad;
unsigned int thissad;
int best_site = 0; int best_site = 0;
int last_site = 0; int last_site = 0;
@ -1200,7 +1196,6 @@ int vp8_diamond_search_sadx4
search_site *ss; search_site *ss;
unsigned char *check_here; unsigned char *check_here;
unsigned int thissad;
int *mvsadcost[2]; int *mvsadcost[2];
int_mv fcenter_mv; int_mv fcenter_mv;
@ -1222,9 +1217,8 @@ int vp8_diamond_search_sadx4
best_address = in_what; best_address = in_what;
/* Check the starting position */ /* Check the starting position */
bestsad = fn_ptr->sdf(what, what_stride, bestsad = fn_ptr->sdf(what, what_stride, in_what, in_what_stride, UINT_MAX)
in_what, in_what_stride, 0x7fffffff) + mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit);
+ mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit);
/* search_param determines the length of the initial step and hence the /* search_param determines the length of the initial step and hence the
* number of iterations 0 = initial step (MAX_FIRST_STEP) pel : 1 = * number of iterations 0 = initial step (MAX_FIRST_STEP) pel : 1 =
@ -1291,14 +1285,14 @@ int vp8_diamond_search_sadx4
(this_row_offset > x->mv_row_min) && (this_row_offset < x->mv_row_max)) (this_row_offset > x->mv_row_min) && (this_row_offset < x->mv_row_max))
{ {
check_here = ss[i].offset + best_address; check_here = ss[i].offset + best_address;
thissad = fn_ptr->sdf(what, what_stride, check_here , in_what_stride, bestsad); thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride, bestsad);
if (thissad < bestsad) if (thissad < bestsad)
{ {
this_mv.as_mv.row = this_row_offset; this_mv.as_mv.row = this_row_offset;
this_mv.as_mv.col = this_col_offset; this_mv.as_mv.col = this_col_offset;
thissad += mvsad_err_cost(&this_mv, &fcenter_mv, thissad += mvsad_err_cost(&this_mv, &fcenter_mv,
mvsadcost, sad_per_bit); mvsadcost, sad_per_bit);
if (thissad < bestsad) if (thissad < bestsad)
{ {
@ -1325,11 +1319,8 @@ int vp8_diamond_search_sadx4
this_mv.as_mv.row = best_mv->as_mv.row << 3; this_mv.as_mv.row = best_mv->as_mv.row << 3;
this_mv.as_mv.col = best_mv->as_mv.col << 3; this_mv.as_mv.col = best_mv->as_mv.col << 3;
if (bestsad == INT_MAX) return fn_ptr->vf(what, what_stride, best_address, in_what_stride, &thissad)
return INT_MAX; + mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
return fn_ptr->vf(what, what_stride, best_address, in_what_stride, (unsigned int *)(&thissad))
+ mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
} }
int vp8_full_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv, int vp8_full_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
@ -1347,11 +1338,11 @@ int vp8_full_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
unsigned char *bestaddress; unsigned char *bestaddress;
int_mv *best_mv = &d->bmi.mv; int_mv *best_mv = &d->bmi.mv;
int_mv this_mv; int_mv this_mv;
int bestsad = INT_MAX; unsigned int bestsad;
unsigned int thissad;
int r, c; int r, c;
unsigned char *check_here; unsigned char *check_here;
int thissad;
int ref_row = ref_mv->as_mv.row; int ref_row = ref_mv->as_mv.row;
int ref_col = ref_mv->as_mv.col; int ref_col = ref_mv->as_mv.col;
@ -1378,8 +1369,8 @@ int vp8_full_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
/* Baseline value at the centre */ /* Baseline value at the centre */
bestsad = fn_ptr->sdf(what, what_stride, bestaddress, bestsad = fn_ptr->sdf(what, what_stride, bestaddress,
in_what_stride, 0x7fffffff) in_what_stride, UINT_MAX)
+ mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit); + mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit);
/* Apply further limits to prevent us looking using vectors that /* Apply further limits to prevent us looking using vectors that
* stretch beyiond the UMV border * stretch beyiond the UMV border
@ -1403,11 +1394,11 @@ int vp8_full_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
for (c = col_min; c < col_max; c++) for (c = col_min; c < col_max; c++)
{ {
thissad = fn_ptr->sdf(what, what_stride, check_here , in_what_stride, bestsad); thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride, bestsad);
this_mv.as_mv.col = c; this_mv.as_mv.col = c;
thissad += mvsad_err_cost(&this_mv, &fcenter_mv, thissad += mvsad_err_cost(&this_mv, &fcenter_mv,
mvsadcost, sad_per_bit); mvsadcost, sad_per_bit);
if (thissad < bestsad) if (thissad < bestsad)
{ {
@ -1424,11 +1415,8 @@ int vp8_full_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
this_mv.as_mv.row = best_mv->as_mv.row << 3; this_mv.as_mv.row = best_mv->as_mv.row << 3;
this_mv.as_mv.col = best_mv->as_mv.col << 3; this_mv.as_mv.col = best_mv->as_mv.col << 3;
if (bestsad < INT_MAX) return fn_ptr->vf(what, what_stride, bestaddress, in_what_stride, &thissad)
return fn_ptr->vf(what, what_stride, bestaddress, in_what_stride, (unsigned int *)(&thissad)) + mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
+ mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
else
return INT_MAX;
} }
int vp8_full_search_sadx3(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv, int vp8_full_search_sadx3(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
@ -1446,11 +1434,11 @@ int vp8_full_search_sadx3(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
unsigned char *bestaddress; unsigned char *bestaddress;
int_mv *best_mv = &d->bmi.mv; int_mv *best_mv = &d->bmi.mv;
int_mv this_mv; int_mv this_mv;
unsigned int bestsad = UINT_MAX; unsigned int bestsad;
unsigned int thissad;
int r, c; int r, c;
unsigned char *check_here; unsigned char *check_here;
unsigned int thissad;
int ref_row = ref_mv->as_mv.row; int ref_row = ref_mv->as_mv.row;
int ref_col = ref_mv->as_mv.col; int ref_col = ref_mv->as_mv.col;
@ -1478,9 +1466,9 @@ int vp8_full_search_sadx3(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
best_mv->as_mv.col = ref_col; best_mv->as_mv.col = ref_col;
/* Baseline value at the centre */ /* Baseline value at the centre */
bestsad = fn_ptr->sdf(what, what_stride, bestsad = fn_ptr->sdf(what, what_stride, bestaddress,
bestaddress, in_what_stride, 0x7fffffff) in_what_stride, UINT_MAX)
+ mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit); + mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit);
/* Apply further limits to prevent us looking using vectors that stretch /* Apply further limits to prevent us looking using vectors that stretch
* beyond the UMV border * beyond the UMV border
@ -1507,7 +1495,7 @@ int vp8_full_search_sadx3(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
{ {
int i; int i;
fn_ptr->sdx3f(what, what_stride, check_here , in_what_stride, sad_array); fn_ptr->sdx3f(what, what_stride, check_here, in_what_stride, sad_array);
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
{ {
@ -1516,8 +1504,8 @@ int vp8_full_search_sadx3(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
if (thissad < bestsad) if (thissad < bestsad)
{ {
this_mv.as_mv.col = c; this_mv.as_mv.col = c;
thissad += mvsad_err_cost(&this_mv, &fcenter_mv, thissad += mvsad_err_cost(&this_mv, &fcenter_mv,
mvsadcost, sad_per_bit); mvsadcost, sad_per_bit);
if (thissad < bestsad) if (thissad < bestsad)
{ {
@ -1535,13 +1523,13 @@ int vp8_full_search_sadx3(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
while (c < col_max) while (c < col_max)
{ {
thissad = fn_ptr->sdf(what, what_stride, check_here , in_what_stride, bestsad); thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride, bestsad);
if (thissad < bestsad) if (thissad < bestsad)
{ {
this_mv.as_mv.col = c; this_mv.as_mv.col = c;
thissad += mvsad_err_cost(&this_mv, &fcenter_mv, thissad += mvsad_err_cost(&this_mv, &fcenter_mv,
mvsadcost, sad_per_bit); mvsadcost, sad_per_bit);
if (thissad < bestsad) if (thissad < bestsad)
{ {
@ -1561,11 +1549,8 @@ int vp8_full_search_sadx3(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
this_mv.as_mv.row = best_mv->as_mv.row << 3; this_mv.as_mv.row = best_mv->as_mv.row << 3;
this_mv.as_mv.col = best_mv->as_mv.col << 3; this_mv.as_mv.col = best_mv->as_mv.col << 3;
if (bestsad < INT_MAX) return fn_ptr->vf(what, what_stride, bestaddress, in_what_stride, &thissad)
return fn_ptr->vf(what, what_stride, bestaddress, in_what_stride, (unsigned int *)(&thissad)) + mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
+ mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
else
return INT_MAX;
} }
int vp8_full_search_sadx8(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv, int vp8_full_search_sadx8(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
@ -1583,11 +1568,11 @@ int vp8_full_search_sadx8(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
unsigned char *bestaddress; unsigned char *bestaddress;
int_mv *best_mv = &d->bmi.mv; int_mv *best_mv = &d->bmi.mv;
int_mv this_mv; int_mv this_mv;
unsigned int bestsad = UINT_MAX; unsigned int bestsad;
unsigned int thissad;
int r, c; int r, c;
unsigned char *check_here; unsigned char *check_here;
unsigned int thissad;
int ref_row = ref_mv->as_mv.row; int ref_row = ref_mv->as_mv.row;
int ref_col = ref_mv->as_mv.col; int ref_col = ref_mv->as_mv.col;
@ -1617,8 +1602,8 @@ int vp8_full_search_sadx8(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
/* Baseline value at the centre */ /* Baseline value at the centre */
bestsad = fn_ptr->sdf(what, what_stride, bestsad = fn_ptr->sdf(what, what_stride,
bestaddress, in_what_stride, 0x7fffffff) bestaddress, in_what_stride, UINT_MAX)
+ mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit); + mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit);
/* Apply further limits to prevent us looking using vectors that stretch /* Apply further limits to prevent us looking using vectors that stretch
* beyond the UMV border * beyond the UMV border
@ -1645,17 +1630,17 @@ int vp8_full_search_sadx8(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
{ {
int i; int i;
fn_ptr->sdx8f(what, what_stride, check_here , in_what_stride, sad_array8); fn_ptr->sdx8f(what, what_stride, check_here, in_what_stride, sad_array8);
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
{ {
thissad = (unsigned int)sad_array8[i]; thissad = sad_array8[i];
if (thissad < bestsad) if (thissad < bestsad)
{ {
this_mv.as_mv.col = c; this_mv.as_mv.col = c;
thissad += mvsad_err_cost(&this_mv, &fcenter_mv, thissad += mvsad_err_cost(&this_mv, &fcenter_mv,
mvsadcost, sad_per_bit); mvsadcost, sad_per_bit);
if (thissad < bestsad) if (thissad < bestsad)
{ {
@ -1728,11 +1713,8 @@ int vp8_full_search_sadx8(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
this_mv.as_mv.row = best_mv->as_mv.row << 3; this_mv.as_mv.row = best_mv->as_mv.row << 3;
this_mv.as_mv.col = best_mv->as_mv.col << 3; this_mv.as_mv.col = best_mv->as_mv.col << 3;
if (bestsad < INT_MAX) return fn_ptr->vf(what, what_stride, bestaddress, in_what_stride, &thissad)
return fn_ptr->vf(what, what_stride, bestaddress, in_what_stride, (unsigned int *)(&thissad)) + mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
+ mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
else
return INT_MAX;
} }
int vp8_refining_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv, int vp8_refining_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
@ -1752,9 +1734,9 @@ int vp8_refining_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv
unsigned char *best_address = (unsigned char *)(base_pre + d->offset + unsigned char *best_address = (unsigned char *)(base_pre + d->offset +
(ref_mv->as_mv.row * pre_stride) + ref_mv->as_mv.col); (ref_mv->as_mv.row * pre_stride) + ref_mv->as_mv.col);
unsigned char *check_here; unsigned char *check_here;
unsigned int thissad;
int_mv this_mv; int_mv this_mv;
unsigned int bestsad = INT_MAX; unsigned int bestsad;
unsigned int thissad;
int *mvsadcost[2]; int *mvsadcost[2];
int_mv fcenter_mv; int_mv fcenter_mv;
@ -1764,7 +1746,9 @@ int vp8_refining_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv
fcenter_mv.as_mv.row = center_mv->as_mv.row >> 3; fcenter_mv.as_mv.row = center_mv->as_mv.row >> 3;
fcenter_mv.as_mv.col = center_mv->as_mv.col >> 3; fcenter_mv.as_mv.col = center_mv->as_mv.col >> 3;
bestsad = fn_ptr->sdf(what, what_stride, best_address, in_what_stride, 0x7fffffff) + mvsad_err_cost(ref_mv, &fcenter_mv, mvsadcost, error_per_bit); bestsad = fn_ptr->sdf(what, what_stride, best_address,
in_what_stride, UINT_MAX)
+ mvsad_err_cost(ref_mv, &fcenter_mv, mvsadcost, error_per_bit);
for (i=0; i<search_range; i++) for (i=0; i<search_range; i++)
{ {
@ -1809,11 +1793,8 @@ int vp8_refining_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv
this_mv.as_mv.row = ref_mv->as_mv.row << 3; this_mv.as_mv.row = ref_mv->as_mv.row << 3;
this_mv.as_mv.col = ref_mv->as_mv.col << 3; this_mv.as_mv.col = ref_mv->as_mv.col << 3;
if (bestsad < INT_MAX) return fn_ptr->vf(what, what_stride, best_address, in_what_stride, &thissad)
return fn_ptr->vf(what, what_stride, best_address, in_what_stride, (unsigned int *)(&thissad)) + mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
+ mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
else
return INT_MAX;
} }
int vp8_refining_search_sadx4(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int vp8_refining_search_sadx4(MACROBLOCK *x, BLOCK *b, BLOCKD *d,
@ -1833,9 +1814,9 @@ int vp8_refining_search_sadx4(MACROBLOCK *x, BLOCK *b, BLOCKD *d,
unsigned char *best_address = (unsigned char *)(base_pre + d->offset + unsigned char *best_address = (unsigned char *)(base_pre + d->offset +
(ref_mv->as_mv.row * pre_stride) + ref_mv->as_mv.col); (ref_mv->as_mv.row * pre_stride) + ref_mv->as_mv.col);
unsigned char *check_here; unsigned char *check_here;
unsigned int thissad;
int_mv this_mv; int_mv this_mv;
unsigned int bestsad = INT_MAX; unsigned int bestsad;
unsigned int thissad;
int *mvsadcost[2]; int *mvsadcost[2];
int_mv fcenter_mv; int_mv fcenter_mv;
@ -1845,7 +1826,9 @@ int vp8_refining_search_sadx4(MACROBLOCK *x, BLOCK *b, BLOCKD *d,
fcenter_mv.as_mv.row = center_mv->as_mv.row >> 3; fcenter_mv.as_mv.row = center_mv->as_mv.row >> 3;
fcenter_mv.as_mv.col = center_mv->as_mv.col >> 3; fcenter_mv.as_mv.col = center_mv->as_mv.col >> 3;
bestsad = fn_ptr->sdf(what, what_stride, best_address, in_what_stride, 0x7fffffff) + mvsad_err_cost(ref_mv, &fcenter_mv, mvsadcost, error_per_bit); bestsad = fn_ptr->sdf(what, what_stride, best_address,
in_what_stride, UINT_MAX)
+ mvsad_err_cost(ref_mv, &fcenter_mv, mvsadcost, error_per_bit);
for (i=0; i<search_range; i++) for (i=0; i<search_range; i++)
{ {
@ -1926,11 +1909,8 @@ int vp8_refining_search_sadx4(MACROBLOCK *x, BLOCK *b, BLOCKD *d,
this_mv.as_mv.row = ref_mv->as_mv.row << 3; this_mv.as_mv.row = ref_mv->as_mv.row << 3;
this_mv.as_mv.col = ref_mv->as_mv.col << 3; this_mv.as_mv.col = ref_mv->as_mv.col << 3;
if (bestsad < INT_MAX) return fn_ptr->vf(what, what_stride, best_address, in_what_stride, &thissad)
return fn_ptr->vf(what, what_stride, best_address, in_what_stride, (unsigned int *)(&thissad)) + mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
+ mv_err_cost(&this_mv, center_mv, mvcost, x->errorperbit);
else
return INT_MAX;
} }
#ifdef ENTROPY_STATS #ifdef ENTROPY_STATS

View File

@ -1683,16 +1683,16 @@ void vp8_cal_sad(VP8_COMP *cpi, MACROBLOCKD *xd, MACROBLOCK *x, int recon_yoffse
}else if(xd->mb_to_top_edge==0) }else if(xd->mb_to_top_edge==0)
{ /* only has left MB for sad calculation. */ { /* only has left MB for sad calculation. */
near_sad[0] = near_sad[2] = INT_MAX; near_sad[0] = near_sad[2] = INT_MAX;
near_sad[1] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - 16,xd->dst.y_stride, 0x7fffffff); near_sad[1] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - 16,xd->dst.y_stride, UINT_MAX);
}else if(xd->mb_to_left_edge ==0) }else if(xd->mb_to_left_edge ==0)
{ /* only has left MB for sad calculation. */ { /* only has left MB for sad calculation. */
near_sad[1] = near_sad[2] = INT_MAX; near_sad[1] = near_sad[2] = INT_MAX;
near_sad[0] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - xd->dst.y_stride *16,xd->dst.y_stride, 0x7fffffff); near_sad[0] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - xd->dst.y_stride *16,xd->dst.y_stride, UINT_MAX);
}else }else
{ {
near_sad[0] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - xd->dst.y_stride *16,xd->dst.y_stride, 0x7fffffff); near_sad[0] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - xd->dst.y_stride *16,xd->dst.y_stride, UINT_MAX);
near_sad[1] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - 16,xd->dst.y_stride, 0x7fffffff); near_sad[1] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - 16,xd->dst.y_stride, UINT_MAX);
near_sad[2] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - xd->dst.y_stride *16 -16,xd->dst.y_stride, 0x7fffffff); near_sad[2] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - xd->dst.y_stride *16 -16,xd->dst.y_stride, UINT_MAX);
} }
if(cpi->common.last_frame_type != KEY_FRAME) if(cpi->common.last_frame_type != KEY_FRAME)
@ -1707,14 +1707,14 @@ void vp8_cal_sad(VP8_COMP *cpi, MACROBLOCKD *xd, MACROBLOCK *x, int recon_yoffse
if(xd->mb_to_bottom_edge==0) near_sad[7] = INT_MAX; if(xd->mb_to_bottom_edge==0) near_sad[7] = INT_MAX;
if(near_sad[4] != INT_MAX) if(near_sad[4] != INT_MAX)
near_sad[4] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer - pre_y_stride *16, pre_y_stride, 0x7fffffff); near_sad[4] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer - pre_y_stride *16, pre_y_stride, UINT_MAX);
if(near_sad[5] != INT_MAX) if(near_sad[5] != INT_MAX)
near_sad[5] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer - 16, pre_y_stride, 0x7fffffff); near_sad[5] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer - 16, pre_y_stride, UINT_MAX);
near_sad[3] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer, pre_y_stride, 0x7fffffff); near_sad[3] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer, pre_y_stride, UINT_MAX);
if(near_sad[6] != INT_MAX) if(near_sad[6] != INT_MAX)
near_sad[6] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer + 16, pre_y_stride, 0x7fffffff); near_sad[6] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer + 16, pre_y_stride, UINT_MAX);
if(near_sad[7] != INT_MAX) if(near_sad[7] != INT_MAX)
near_sad[7] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer + pre_y_stride *16, pre_y_stride, 0x7fffffff); near_sad[7] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer + pre_y_stride *16, pre_y_stride, UINT_MAX);
} }
if(cpi->common.last_frame_type != KEY_FRAME) if(cpi->common.last_frame_type != KEY_FRAME)