summaryrefslogtreecommitdiff
path: root/vpx_dsp
diff options
context:
space:
mode:
authorJames Zern <jzern@google.com>2017-09-08 19:20:07 -0700
committerJames Zern <jzern@google.com>2017-09-08 19:28:01 -0700
commitfb40b5d7a76978e6fcedf5997fd7a45571aa6b0d (patch)
treeeab6593811942fb3b019b93d246703d493101c91 /vpx_dsp
parent9dfa76f94877db19e70ae846eef4a20bfb2481e8 (diff)
downloadlibvpx-fb40b5d7a76978e6fcedf5997fd7a45571aa6b0d.tar
libvpx-fb40b5d7a76978e6fcedf5997fd7a45571aa6b0d.tar.gz
libvpx-fb40b5d7a76978e6fcedf5997fd7a45571aa6b0d.tar.bz2
libvpx-fb40b5d7a76978e6fcedf5997fd7a45571aa6b0d.zip
intrapred: sync highbd_d63_predictor w/d63_
8/16/32: ~6%/~18%/~33% faster previously: 7012ba639 vp9_reconintra: simplify d63_predictor BUG=webm:1411 Change-Id: Ie775f3a4f7fd74df44754e65686d826a51c2cdc2
Diffstat (limited to 'vpx_dsp')
-rw-r--r--vpx_dsp/intrapred.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/vpx_dsp/intrapred.c b/vpx_dsp/intrapred.c
index 4c640e5d2..400e632e9 100644
--- a/vpx_dsp/intrapred.c
+++ b/vpx_dsp/intrapred.c
@@ -489,15 +489,19 @@ static INLINE void highbd_d63_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
const uint16_t *above,
const uint16_t *left, int bd) {
int r, c;
+ int size;
(void)left;
(void)bd;
- for (r = 0; r < bs; ++r) {
- for (c = 0; c < bs; ++c) {
- dst[c] = r & 1 ? AVG3(above[(r >> 1) + c], above[(r >> 1) + c + 1],
- above[(r >> 1) + c + 2])
- : AVG2(above[(r >> 1) + c], above[(r >> 1) + c + 1]);
- }
- dst += stride;
+ for (c = 0; c < bs; ++c) {
+ dst[c] = AVG2(above[c], above[c + 1]);
+ dst[stride + c] = AVG3(above[c], above[c + 1], above[c + 2]);
+ }
+ for (r = 2, size = bs - 2; r < bs; r += 2, --size) {
+ memcpy(dst + (r + 0) * stride, dst + (r >> 1), size * sizeof(*dst));
+ vpx_memset16(dst + (r + 0) * stride + size, above[bs - 1], bs - size);
+ memcpy(dst + (r + 1) * stride, dst + stride + (r >> 1),
+ size * sizeof(*dst));
+ vpx_memset16(dst + (r + 1) * stride + size, above[bs - 1], bs - size);
}
}