Fix libvpx VP9 decoder dr memory errors
authorYunqing Wang <yunqingwang@google.com>
Fri, 21 Mar 2014 19:23:47 +0000 (12:23 -0700)
committerYunqing Wang <yunqingwang@google.com>
Fri, 21 Mar 2014 19:23:47 +0000 (12:23 -0700)
Fixed dr memory errors reported in Issue 736:
https://code.google.com/p/webm/issues/detail?id=736

All elements in left_col buffer need to be initialized to ensure
the correctness of SIMD operations in x86 optimized code.

Change-Id: I8e7f26ab45cca8099c1f9342bcf852f828bda7e4

vp9/common/vp9_reconintra.c

index 915c1c1..44951b5 100644 (file)
@@ -347,6 +347,8 @@ static void build_intra_predictors(const MACROBLOCKD *xd, const uint8_t *ref,
   x0 = (-xd->mb_to_left_edge >> (3 + pd->subsampling_x)) + x;
   y0 = (-xd->mb_to_top_edge >> (3 + pd->subsampling_y)) + y;
 
+  vpx_memset(left_col, 129, 64);
+
   // left
   if (left_available) {
     if (xd->mb_to_bottom_edge < 0) {
@@ -366,8 +368,6 @@ static void build_intra_predictors(const MACROBLOCKD *xd, const uint8_t *ref,
       for (i = 0; i < bs; ++i)
         left_col[i] = ref[i * ref_stride - 1];
     }
-  } else {
-    vpx_memset(left_col, 129, bs);
   }
 
   // TODO(hkuang) do not extend 2*bs pixels for all modes.