Fix a bug for loop filter level assignment

To apply loop filter for a block, its filter level is decided as:
level = (current_level != 0) ? current_level : previous_level.

Previous logic assign level = current_level. This CL fixes it.

Change-Id: Ie41d83ea322e83bb5f686d24f37fef192c32eb9e
diff --git a/av1/common/av1_loopfilter.c b/av1/common/av1_loopfilter.c
index 6de130d..d1659bc 100644
--- a/av1/common/av1_loopfilter.c
+++ b/av1/common/av1_loopfilter.c
@@ -1512,6 +1512,14 @@
             case 2: lfm->left_v[min_tx_size].bits[index] |= mask_1; break;
             default: assert(plane >= 0 && plane <= 2); return;
           }
+          if (level == 0 && prev_level != 0) {
+            switch (plane) {
+              case 0: lfm->lfl_y_ver[tmp_row][tmp_col] = prev_level; break;
+              case 1: lfm->lfl_u[tmp_row][tmp_col] = prev_level; break;
+              case 2: lfm->lfl_v[tmp_row][tmp_col] = prev_level; break;
+              default: assert(plane >= 0 && plane <= 2); return;
+            }
+          }
         }
 
         // update prev info
@@ -1584,6 +1592,14 @@
             case 2: lfm->above_v[min_tx_size].bits[index] |= mask_1; break;
             default: assert(plane >= 0 && plane <= 2); return;
           }
+          if (level == 0 && prev_level != 0) {
+            switch (plane) {
+              case 0: lfm->lfl_y_ver[tmp_row][tmp_col] = prev_level; break;
+              case 1: lfm->lfl_u[tmp_row][tmp_col] = prev_level; break;
+              case 2: lfm->lfl_v[tmp_row][tmp_col] = prev_level; break;
+              default: assert(plane >= 0 && plane <= 2); return;
+            }
+          }
         }
 
         // update prev info
@@ -1756,10 +1772,10 @@
   uint8_t *lfl2;
 
   // filter two rows at a time
-  for (r = 0; r < cm->seq_params.mib_size &&
+  for (r = 0; r < cm->seq_params.sb_size &&
               ((mi_row + r) << MI_SIZE_LOG2 < cm->height);
        r += r_step) {
-    for (c = 0; c < cm->seq_params.mib_size &&
+    for (c = 0; c < cm->seq_params.sb_size &&
                 ((mi_col + c) << MI_SIZE_LOG2 < cm->width);
          c += MI_SIZE_64X64) {
       dst->buf += ((c << MI_SIZE_LOG2) >> ssx);
@@ -1835,10 +1851,10 @@
   uint64_t mask_4x4 = 0;
   uint8_t *lfl;
 
-  for (r = 0; r < cm->seq_params.mib_size &&
+  for (r = 0; r < cm->seq_params.sb_size &&
               ((mi_row + r) << MI_SIZE_LOG2 < cm->height);
        r += r_step) {
-    for (c = 0; c < cm->seq_params.mib_size &&
+    for (c = 0; c < cm->seq_params.sb_size &&
                 ((mi_col + c) << MI_SIZE_LOG2 < cm->width);
          c += MI_SIZE_64X64) {
       if (mi_row + r == 0) continue;