]> granicus.if.org Git - libvpx/commitdiff
vp9_reconintra/d45_predictor: remove temp storage
authorJames Zern <jzern@google.com>
Fri, 5 Jun 2015 02:17:30 +0000 (19:17 -0700)
committerJames Zern <jzern@google.com>
Fri, 5 Jun 2015 03:11:53 +0000 (20:11 -0700)
dst row 0 can be reused in the same way

Change-Id: Id977da62545dcc4a89cebbcbad90ba84f8ff5d6b

vp9/common/vp9_reconintra.c

index 3312f2977308e3a3d2078286a0443c2b0e5a9db5..650f4addee192c16b08487d94425e14e217cb662 100644 (file)
@@ -464,15 +464,17 @@ void vp9_d45_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
 static INLINE void d45_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
                                  const uint8_t *above, const uint8_t *left) {
   const uint8_t above_right = above[bs - 1];
+  const uint8_t *const dst_row0 = dst;
   int x, size;
-  uint8_t avg[31];  // TODO(jzern): this could be block size specific
   (void)left;
 
   for (x = 0; x < bs - 1; ++x) {
-    avg[x] = AVG3(above[x], above[x + 1], above[x + 2]);
+    dst[x] = AVG3(above[x], above[x + 1], above[x + 2]);
   }
-  for (x = 0, size = bs - 1; x < bs; ++x, --size) {
-    memcpy(dst, avg + x, size);
+  dst[bs - 1] = above_right;
+  dst += stride;
+  for (x = 1, size = bs - 2; x < bs; ++x, --size) {
+    memcpy(dst, dst_row0 + x, size);
     memset(dst + size, above_right, x + 1);
     dst += stride;
   }