ref: e4e864586c6e020d7ed028cc5c1e93de4fd8ee10
parent: 3476404912e1f3685ad8538f45c9f6adf9d6c436
parent: 736114f44bb52639d545d46ce1900ea1e32de46c
author: Jim Bankoski <jimbankoski@google.com>
date: Fri Sep 6 02:21:28 EDT 2013
Merge "fix loop filter setup_mask could reach out of bounds issue"
--- a/vp9/common/vp9_loopfilter.c
+++ b/vp9/common/vp9_loopfilter.c
@@ -603,11 +603,15 @@
case BLOCK_64X32:
build_masks(lfi_n, mip, 0, 0, lfm);
mip2 = mip + mode_info_stride * 4;
+ if (4 >= max_rows)
+ break;
build_masks(lfi_n, mip2 , 32, 8, lfm);
break;
case BLOCK_32X64:
build_masks(lfi_n, mip, 0, 0, lfm);
mip2 = mip + 4;
+ if (4 >= max_cols)
+ break;
build_masks(lfi_n, mip2, 4, 2, lfm);
break;
default:
@@ -624,11 +628,15 @@
break;
case BLOCK_32X16:
build_masks(lfi_n, mip, shift_y, shift_uv, lfm);
+ if (mi_32_row_offset + 2 >= max_rows)
+ continue;
mip2 = mip + mode_info_stride * 2;
build_masks(lfi_n, mip2, shift_y + 16, shift_uv + 4, lfm);
break;
case BLOCK_16X32:
build_masks(lfi_n, mip, shift_y, shift_uv, lfm);
+ if (mi_32_col_offset + 2 >= max_cols)
+ continue;
mip2 = mip + 2;
build_masks(lfi_n, mip2, shift_y + 2, shift_uv + 1, lfm);
break;
@@ -650,11 +658,15 @@
break;
case BLOCK_16X8:
build_masks(lfi_n, mip, shift_y, shift_uv, lfm);
+ if (mi_16_row_offset + 1 >= max_rows)
+ continue;
mip2 = mip + mode_info_stride;
build_y_mask(lfi_n, mip2, shift_y+8, lfm);
break;
case BLOCK_8X16:
build_masks(lfi_n, mip, shift_y, shift_uv, lfm);
+ if (mi_16_col_offset +1 >= max_cols)
+ continue;
mip2 = mip + 1;
build_y_mask(lfi_n, mip2, shift_y+1, lfm);
break;
--
⑨