From: James Zern Date: Sat, 30 May 2015 03:11:15 +0000 (-0700) Subject: vp9_reconintra: specialize d207 4x4 X-Git-Tag: v1.5.0~615^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c022dbc4d3ede895ef2cdd7dbaf41a3b548bd17a;p=libvpx vp9_reconintra: specialize d207 4x4 based on webp's HU4() Change-Id: I2401ef307cd94e70cc7904f55954af04290c8af9 --- diff --git a/vp9/common/vp9_reconintra.c b/vp9/common/vp9_reconintra.c index de9ba43ae..4c1dce951 100644 --- a/vp9/common/vp9_reconintra.c +++ b/vp9/common/vp9_reconintra.c @@ -363,6 +363,23 @@ static INLINE void highbd_dc_predictor(uint16_t *dst, ptrdiff_t stride, #define AVG3(a, b, c) (((a) + 2 * (b) + (c) + 2) >> 2) #define AVG2(a, b) (((a) + (b) + 1) >> 1) +void vp9_d207_predictor_4x4_c(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]; + (void)above; + DST(0, 0) = AVG2(I, J); + DST(2, 0) = DST(0, 1) = AVG2(J, K); + DST(2, 1) = DST(0, 2) = AVG2(K, L); + DST(1, 0) = AVG3(I, J, K); + DST(3, 0) = DST(1, 1) = AVG3(J, K, L); + DST(3, 1) = DST(1, 2) = AVG3(K, L, L); + DST(3, 2) = DST(2, 2) = + DST(0, 3) = DST(1, 3) = DST(2, 3) = DST(3, 3) = L; +} + static INLINE void d207_predictor(uint8_t *dst, ptrdiff_t stride, int bs, const uint8_t *above, const uint8_t *left) { int r, c; @@ -390,7 +407,7 @@ static INLINE void d207_predictor(uint8_t *dst, ptrdiff_t stride, int bs, for (c = 0; c < bs - 2; ++c) dst[r * stride + c] = dst[(r + 1) * stride + c - 2]; } -intra_pred_allsizes(d207) +intra_pred_no_4x4(d207) void vp9_d63_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) {