rtc: Add off state for coeff/mode-upd-freq

Add off state for coeff/mode-cost-upd-freq.
The mv-cost-upd-freq already has off state, which
is set as default for RTC.

Setting coeff/mode-cost-upd-freq to off/3
(compared to 2 as used in rtc) has the following
stats (note there are bdrate gains for speeed >=8 on vga/hd).
Speedup is rough estimate on x86 over a few clips
for each set.

speed 7 (bdrate loss):
rtc-derf: avg 4.2%, max 7.9%; speedup ~5%
rtc:      avg 1%, max 7%; speedup ~4%

speed 8 (bdrate gain on rtc set):
rtc-derf: avg 0.6, max 1.6%, speedup ~5%
rtc:      avg -1.3, max -6%; speedup ~2%

speed 9 (bdrate gain on rtc set):
rtc-derf: avg 0.58%, max 1.6%; speeedup ~3%
rtc:      avg -1.2%, max -5%; speedup ~2%

Change-Id: I72aad4e80e9042d2169f32a8517537d7f7332543
diff --git a/apps/aomenc.c b/apps/aomenc.c
index 47761ad..4de1752 100644
--- a/apps/aomenc.c
+++ b/apps/aomenc.c
@@ -590,11 +590,11 @@
 static const arg_def_t coeff_cost_upd_freq =
     ARG_DEF(NULL, "coeff-cost-upd-freq", 1,
             "Update freq for coeff costs"
-            "0: SB, 1: SB Row per Tile, 2: Tile");
+            "0: SB, 1: SB Row per Tile, 2: Tile, 3: Off");
 static const arg_def_t mode_cost_upd_freq =
     ARG_DEF(NULL, "mode-cost-upd-freq", 1,
             "Update freq for mode costs"
-            "0: SB, 1: SB Row per Tile, 2: Tile");
+            "0: SB, 1: SB Row per Tile, 2: Tile, 3: Off");
 static const arg_def_t mv_cost_upd_freq =
     ARG_DEF(NULL, "mv-cost-upd-freq", 1,
             "Update freq for mv costs"
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index fe3178a..253dd71 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -549,8 +549,8 @@
   RANGE_CHECK_HI(extra_cfg, chroma_subsampling_y, 1);
 
   RANGE_CHECK_HI(extra_cfg, disable_trellis_quant, 3);
-  RANGE_CHECK(extra_cfg, coeff_cost_upd_freq, 0, 2);
-  RANGE_CHECK(extra_cfg, mode_cost_upd_freq, 0, 2);
+  RANGE_CHECK(extra_cfg, coeff_cost_upd_freq, 0, 3);
+  RANGE_CHECK(extra_cfg, mode_cost_upd_freq, 0, 3);
   RANGE_CHECK(extra_cfg, mv_cost_upd_freq, 0, 3);
 
   RANGE_CHECK(extra_cfg, min_partition_size, 4, 128);
diff --git a/av1/encoder/encodeframe_utils.c b/av1/encoder/encodeframe_utils.c
index e367245..9a67f01 100644
--- a/av1/encoder/encodeframe_utils.c
+++ b/av1/encoder/encodeframe_utils.c
@@ -1272,6 +1272,7 @@
   MACROBLOCKD *const xd = &x->e_mbd;
 
   switch (cpi->oxcf.cost_upd_freq.coeff) {
+    case COST_UPD_OFF: break;
     case COST_UPD_TILE:  // Tile level
       if (mi_row != tile_info->mi_row_start) break;
       AOM_FALLTHROUGH_INTENDED;
@@ -1288,6 +1289,7 @@
   }
 
   switch (cpi->oxcf.cost_upd_freq.mode) {
+    case COST_UPD_OFF: break;
     case COST_UPD_TILE:  // Tile level
       if (mi_row != tile_info->mi_row_start) break;
       AOM_FALLTHROUGH_INTENDED;