From 6e068e51b57507c24b3f43916328cb908fdce0cb Mon Sep 17 00:00:00 2001 From: James Zern Date: Fri, 29 May 2015 20:05:57 -0700 Subject: [PATCH] vp9_reconintra: specialize d135 4x4 based on webp's RD4() Change-Id: I64c8f0a1325a8f201eaad39b396fae7a2d06efff --- vp9/common/vp9_reconintra.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) 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) { -- 2.40.0