]> granicus.if.org Git - libvpx/commitdiff
vp9_reconintra: specialize d135 4x4
authorJames Zern <jzern@google.com>
Sat, 30 May 2015 03:05:57 +0000 (20:05 -0700)
committerJames Zern <jzern@google.com>
Sat, 30 May 2015 20:29:40 +0000 (13:29 -0700)
based on webp's RD4()

Change-Id: I64c8f0a1325a8f201eaad39b396fae7a2d06efff

vp9/common/vp9_reconintra.c

index fe2c7429934b97ecb075e458c2b6bdf81901902f..155975a83b365f25c3a090532e54e01e7878d4df 100644 (file)
@@ -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) {