summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Zern <jzern@google.com>2015-05-29 20:05:57 -0700
committerJames Zern <jzern@google.com>2015-05-30 13:29:40 -0700
commit6e068e51b57507c24b3f43916328cb908fdce0cb (patch)
tree23332bcb6a5e6e792891c552bce4427e78528c10
parentb6782686f45a6f2a6a6a6aae0cbf0af3583fb270 (diff)
downloadlibvpx-6e068e51b57507c24b3f43916328cb908fdce0cb.tar
libvpx-6e068e51b57507c24b3f43916328cb908fdce0cb.tar.gz
libvpx-6e068e51b57507c24b3f43916328cb908fdce0cb.tar.bz2
libvpx-6e068e51b57507c24b3f43916328cb908fdce0cb.zip
vp9_reconintra: specialize d135 4x4
based on webp's RD4() Change-Id: I64c8f0a1325a8f201eaad39b396fae7a2d06efff
-rw-r--r--vp9/common/vp9_reconintra.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/vp9/common/vp9_reconintra.c b/vp9/common/vp9_reconintra.c
index fe2c74299..155975a83 100644
--- a/vp9/common/vp9_reconintra.c
+++ b/vp9/common/vp9_reconintra.c
@@ -538,6 +538,27 @@ static INLINE void d117_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
}
intra_pred_no_4x4(d117)
+void vp9_d135_predictor_4x4(uint8_t *dst, ptrdiff_t stride,
+ const uint8_t *above, const uint8_t *left) {
+ const int I = left[0];
+ const int J = left[1];
+ const int K = left[2];
+ const int L = left[3];
+ const int X = above[-1];
+ const int A = above[0];
+ const int B = above[1];
+ const int C = above[2];
+ const int D = above[3];
+ (void)stride;
+ DST(0, 3) = AVG3(J, K, L);
+ DST(1, 3) = DST(0, 2) = AVG3(I, J, K);
+ DST(2, 3) = DST(1, 2) = DST(0, 1) = AVG3(X, I, J);
+ DST(3, 3) = DST(2, 2) = DST(1, 1) = DST(0, 0) = AVG3(A, X, I);
+ DST(3, 2) = DST(2, 1) = DST(1, 0) = AVG3(B, A, X);
+ DST(3, 1) = DST(2, 0) = AVG3(C, B, A);
+ DST(3, 0) = AVG3(D, C, B);
+}
+
static INLINE void d135_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
const uint8_t *above, const uint8_t *left) {
int r, c;
@@ -557,7 +578,7 @@ static INLINE void d135_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
dst += stride;
}
}
-intra_pred_allsizes(d135)
+intra_pred_no_4x4(d135)
void vp9_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
const uint8_t *above, const uint8_t *left) {