shithub: libvpx

Download patch

ref: caea860a0fd5542ec76f4bdf53022f3ec2ceb3ed
parent: 7ea12f2c5f4340a6ec5f010172ee1def74b966fd
parent: e388251d5d3739ed5d5154c7fd108a9a1403c578
author: Yaowu Xu <yaowu@google.com>
date: Mon Apr 29 12:05:19 EDT 2013

Merge "Enabled i4x4 to use right above pixels" into experimental

--- a/vp9/common/vp9_reconintra.c
+++ b/vp9/common/vp9_reconintra.c
@@ -236,7 +236,10 @@
   if (up_available) {
     uint8_t *yabove_ptr = src - src_stride;
     vpx_memcpy(yabove_row, yabove_ptr, bw);
-    vpx_memset(yabove_row + bw, yabove_row[bw -1], bw);
+    if (bw == 4 && right_available)
+      vpx_memcpy(yabove_row + bw, yabove_ptr + bw, bw);
+    else
+      vpx_memset(yabove_row + bw, yabove_row[bw -1], bw);
     ytop_left = left_available ? yabove_ptr[-1] : 127;
   } else {
     vpx_memset(yabove_row, 127, bw * 2);
@@ -610,7 +613,7 @@
                           uint8_t *predictor, int pre_stride) {
   const int have_top = (block_idx >> 2) || xd->up_available;
   const int have_left = (block_idx & 3) || xd->left_available;
-  const int have_right = ((block_idx & 3) != 3) || xd->right_available;
+  const int have_right = ((block_idx & 3) != 3);
 
   vp9_build_intra_predictors(predictor, pre_stride,
                              predictor, pre_stride,
@@ -625,7 +628,7 @@
   const int block_idx = block4x4_idx & 3;
   const int have_top = (block_idx >> 1) || xd->up_available;
   const int have_left = (block_idx & 1) || xd->left_available;
-  const int have_right = !(block_idx & 1) || xd->right_available;
+  const int have_right = !(block_idx & 1);
 
   vp9_build_intra_predictors(predictor, pre_stride,
                              predictor, pre_stride,