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;