Modify boxnum to fix degenerate size videos

Fixes a memory issue and computes values correctly for 1x1 and
1xn or nx1 videos.
This also fixes a test failure in AV1FrameSizeTestsLarge.OneByOneVideo.

Change-Id: Ib5a4efd094763fb6ceb119383c11f776784f58a4
diff --git a/av1/common/restoration.c b/av1/common/restoration.c
index 08ab948..b8e6a93 100644
--- a/av1/common/restoration.c
+++ b/av1/common/restoration.c
@@ -428,24 +428,25 @@
 
 static void boxnum(int width, int height, int r, int8_t *num, int num_stride) {
   int i, j;
-  for (i = 0; i <= r; ++i) {
-    for (j = 0; j <= r; ++j) {
-      num[i * num_stride + j] = (r + 1 + i) * (r + 1 + j);
+  for (i = 0; i <= AOMMIN(r, height - 1); ++i) {
+    for (j = 0; j <= AOMMIN(r, width - 1); ++j) {
+      num[i * num_stride + j] =
+          AOMMIN(r + 1 + i, height) * AOMMIN(r + 1 + j, width);
       num[i * num_stride + (width - 1 - j)] = num[i * num_stride + j];
       num[(height - 1 - i) * num_stride + j] = num[i * num_stride + j];
       num[(height - 1 - i) * num_stride + (width - 1 - j)] =
           num[i * num_stride + j];
     }
   }
-  for (j = 0; j <= r; ++j) {
-    const int val = (2 * r + 1) * (r + 1 + j);
+  for (j = 0; j <= AOMMIN(r, width - 1); ++j) {
+    const int val = AOMMIN(2 * r + 1, height) * AOMMIN(r + 1 + j, width);
     for (i = r + 1; i < height - r; ++i) {
       num[i * num_stride + j] = val;
       num[i * num_stride + (width - 1 - j)] = val;
     }
   }
-  for (i = 0; i <= r; ++i) {
-    const int val = (2 * r + 1) * (r + 1 + i);
+  for (i = 0; i <= AOMMIN(r, height - 1); ++i) {
+    const int val = AOMMIN(2 * r + 1, width) * AOMMIN(r + 1 + i, height);
     for (j = r + 1; j < width - r; ++j) {
       num[i * num_stride + j] = val;
       num[(height - 1 - i) * num_stride + j] = val;
@@ -453,7 +454,8 @@
   }
   for (i = r + 1; i < height - r; ++i) {
     for (j = r + 1; j < width - r; ++j) {
-      num[i * num_stride + j] = (2 * r + 1) * (2 * r + 1);
+      num[i * num_stride + j] =
+          AOMMIN(2 * r + 1, height) * AOMMIN(2 * r + 1, width);
     }
   }
 }