summaryrefslogtreecommitdiff
path: root/vpx_dsp/x86
diff options
context:
space:
mode:
authorAlex Converse <aconverse@google.com>2016-01-13 00:25:54 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2016-01-13 00:25:54 +0000
commitea48370a500537906d62544ca4ed75301d79e772 (patch)
tree782752236c957a8286831a08652f90c341219069 /vpx_dsp/x86
parent15939cb2d76c773950cda40988ede89e111872ea (diff)
parent022c848b4d04a2c1f56a54748eee503767269023 (diff)
downloadlibvpx-ea48370a500537906d62544ca4ed75301d79e772.tar
libvpx-ea48370a500537906d62544ca4ed75301d79e772.tar.gz
libvpx-ea48370a500537906d62544ca4ed75301d79e772.tar.bz2
libvpx-ea48370a500537906d62544ca4ed75301d79e772.zip
Merge "Change highbd variance rounding to prevent negative variance."
Diffstat (limited to 'vpx_dsp/x86')
-rw-r--r--vpx_dsp/x86/highbd_variance_sse2.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/vpx_dsp/x86/highbd_variance_sse2.c b/vpx_dsp/x86/highbd_variance_sse2.c
index 81ec5dbdb..ade5eacad 100644
--- a/vpx_dsp/x86/highbd_variance_sse2.c
+++ b/vpx_dsp/x86/highbd_variance_sse2.c
@@ -9,6 +9,7 @@
*/
#include "./vpx_config.h"
+#include "vpx_dsp/variance.h"
#include "vpx_ports/mem.h"
typedef uint32_t (*high_variance_fn_t) (const uint16_t *src, int src_stride,
@@ -62,8 +63,8 @@ static void highbd_10_variance_sse2(const uint16_t *src, int src_stride,
sum_long += sum0;
}
}
- *sum = ROUND_POWER_OF_TWO(sum_long, 2);
- *sse = (uint32_t)ROUND_POWER_OF_TWO(sse_long, 4);
+ *sum = ROUND_ZERO_POWER_OF_TWO(sum_long, 2);
+ *sse = (uint32_t)ROUND_ZERO_POWER_OF_TWO(sse_long, 4);
}
static void highbd_12_variance_sse2(const uint16_t *src, int src_stride,
@@ -84,8 +85,8 @@ static void highbd_12_variance_sse2(const uint16_t *src, int src_stride,
sum_long += sum0;
}
}
- *sum = ROUND_POWER_OF_TWO(sum_long, 4);
- *sse = (uint32_t)ROUND_POWER_OF_TWO(sse_long, 8);
+ *sum = ROUND_ZERO_POWER_OF_TWO(sum_long, 4);
+ *sse = (uint32_t)ROUND_ZERO_POWER_OF_TWO(sse_long, 8);
}
@@ -106,7 +107,7 @@ void vpx_highbd_10_get##S##x##S##var_sse2(const uint8_t *src8, int src_stride, \
uint16_t *ref = CONVERT_TO_SHORTPTR(ref8); \
vpx_highbd_calc##S##x##S##var_sse2(src, src_stride, ref, ref_stride, \
sse, sum); \
- *sum = ROUND_POWER_OF_TWO(*sum, 2); \
+ *sum = ROUND_ZERO_POWER_OF_TWO(*sum, 2); \
*sse = ROUND_POWER_OF_TWO(*sse, 4); \
} \
\
@@ -117,7 +118,7 @@ void vpx_highbd_12_get##S##x##S##var_sse2(const uint8_t *src8, int src_stride, \
uint16_t *ref = CONVERT_TO_SHORTPTR(ref8); \
vpx_highbd_calc##S##x##S##var_sse2(src, src_stride, ref, ref_stride, \
sse, sum); \
- *sum = ROUND_POWER_OF_TWO(*sum, 4); \
+ *sum = ROUND_ZERO_POWER_OF_TWO(*sum, 4); \
*sse = ROUND_POWER_OF_TWO(*sse, 8); \
}
@@ -345,7 +346,7 @@ uint32_t vpx_highbd_10_sub_pixel_variance##w##x##h##_##opt( \
sse += sse2; \
} \
} \
- se = ROUND_POWER_OF_TWO(se, 2); \
+ se = ROUND_ZERO_POWER_OF_TWO(se, 2); \
sse = ROUND_POWER_OF_TWO(sse, 4); \
*sse_ptr = sse; \
return sse - ((cast se * se) >> (wlog2 + hlog2)); \
@@ -392,7 +393,7 @@ uint32_t vpx_highbd_12_sub_pixel_variance##w##x##h##_##opt( \
}\
} \
} \
- se = ROUND_POWER_OF_TWO(se, 4); \
+ se = ROUND_ZERO_POWER_OF_TWO(se, 4); \
sse = (uint32_t)ROUND_POWER_OF_TWO(long_sse, 8); \
*sse_ptr = sse; \
return sse - ((cast se * se) >> (wlog2 + hlog2)); \
@@ -514,7 +515,7 @@ uint32_t vpx_highbd_10_sub_pixel_avg_variance##w##x##h##_##opt( \
sse += sse2; \
} \
} \
- se = ROUND_POWER_OF_TWO(se, 2); \
+ se = ROUND_ZERO_POWER_OF_TWO(se, 2); \
sse = ROUND_POWER_OF_TWO(sse, 4); \
*sse_ptr = sse; \
return sse - ((cast se * se) >> (wlog2 + hlog2)); \
@@ -566,7 +567,7 @@ uint32_t vpx_highbd_12_sub_pixel_avg_variance##w##x##h##_##opt( \
} \
} \
} \
- se = ROUND_POWER_OF_TWO(se, 4); \
+ se = ROUND_ZERO_POWER_OF_TWO(se, 4); \
sse = (uint32_t)ROUND_POWER_OF_TWO(long_sse, 8); \
*sse_ptr = sse; \
return sse - ((cast se * se) >> (wlog2 + hlog2)); \