Replace bilateral filter with domain transform RF

The main objective is to reduce computational complexity.
The domain transform filter has an effect of edge preserving smoothing
at a lower computational cost than the bilateral filter, and can be
readily paralelized.

A little drop in coding efficiency about 0.06% for lowres, 0.16% for
midres.

Change-Id: Id949406b7e5afe9b64588d130065c63a76e4f3f9
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 72ebc8a..81d8b39 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -2991,34 +2991,22 @@
       aom_wb_write_bit(wb, 0);
       aom_wb_write_bit(wb, 0);
       break;
-    case RESTORE_SWITCHABLE:
-      aom_wb_write_bit(wb, 0);
+    case RESTORE_WIENER:
       aom_wb_write_bit(wb, 1);
+      aom_wb_write_bit(wb, 0);
       break;
-    /*
-  case RESTORE_SGRPROJ:
-    aom_wb_write_bit(wb, 1);
-    aom_wb_write_bit(wb, 0);
-    break;
-    */
     case RESTORE_SGRPROJ:
       aom_wb_write_bit(wb, 1);
-      aom_wb_write_bit(wb, 0);
+      aom_wb_write_bit(wb, 1);
       aom_wb_write_bit(wb, 0);
       break;
     case RESTORE_DOMAINTXFMRF:
       aom_wb_write_bit(wb, 1);
-      aom_wb_write_bit(wb, 0);
+      aom_wb_write_bit(wb, 1);
       aom_wb_write_bit(wb, 1);
       break;
-    case RESTORE_BILATERAL:
-      aom_wb_write_bit(wb, 1);
-      aom_wb_write_bit(wb, 1);
+    case RESTORE_SWITCHABLE:
       aom_wb_write_bit(wb, 0);
-      break;
-    case RESTORE_WIENER:
-      aom_wb_write_bit(wb, 1);
-      aom_wb_write_bit(wb, 1);
       aom_wb_write_bit(wb, 1);
       break;
     default: assert(0);
@@ -3053,19 +3041,6 @@
   aom_write_literal(wb, domaintxfmrf_info->sigma_r, DOMAINTXFMRF_PARAMS_BITS);
 }
 
-static void write_bilateral_filter(const AV1_COMMON *cm,
-                                   BilateralInfo *bilateral_info,
-                                   aom_writer *wb) {
-  int s;
-  for (s = 0; s < BILATERAL_SUBTILES; ++s) {
-    aom_write(wb, bilateral_info->level[s] >= 0, RESTORE_NONE_BILATERAL_PROB);
-    if (bilateral_info->level[s] >= 0) {
-      aom_write_literal(wb, bilateral_info->level[s],
-                        av1_bilateral_level_bits(cm));
-    }
-  }
-}
-
 static void encode_restoration(AV1_COMMON *cm, aom_writer *wb) {
   int i;
   RestorationInfo *rsi = &cm->rst_info;
@@ -3076,14 +3051,7 @@
         av1_write_token(
             wb, av1_switchable_restore_tree, cm->fc->switchable_restore_prob,
             &switchable_restore_encodings[rsi->restoration_type[i]]);
-        if (rsi->restoration_type[i] == RESTORE_BILATERAL) {
-#if BILATERAL_SUBTILES == 0
-          aom_write_literal(wb, rsi->bilateral_info[i].level[0],
-                            av1_bilateral_level_bits(cm));
-#else
-          write_bilateral_filter(cm, &rsi->bilateral_info[i], wb);
-#endif
-        } else if (rsi->restoration_type[i] == RESTORE_WIENER) {
+        if (rsi->restoration_type[i] == RESTORE_WIENER) {
           write_wiener_filter(&rsi->wiener_info[i], wb);
         } else if (rsi->restoration_type[i] == RESTORE_SGRPROJ) {
           write_sgrproj_filter(&rsi->sgrproj_info[i], wb);
@@ -3091,10 +3059,6 @@
           write_domaintxfmrf_filter(&rsi->domaintxfmrf_info[i], wb);
         }
       }
-    } else if (rsi->frame_restoration_type == RESTORE_BILATERAL) {
-      for (i = 0; i < cm->rst_internal.ntiles; ++i) {
-        write_bilateral_filter(cm, &rsi->bilateral_info[i], wb);
-      }
     } else if (rsi->frame_restoration_type == RESTORE_WIENER) {
       for (i = 0; i < cm->rst_internal.ntiles; ++i) {
         aom_write(wb, rsi->wiener_info[i].level != 0, RESTORE_NONE_WIENER_PROB);