rtc-svc: Adjust use_modeled_non_rd_cost for layers
Always use modeled_non_rd_cost for non_reference_frames,
and never use it for base temporal layer frames.
Only affects speed >=8 and resolns >= 360p, where the
speed feature is enabled.
bdrate gain for 3 TL on rtc set ~0.8%, max of 7%.
Speed change is neutral.
Change-Id: Ie1495b151a1f9c1639822907c8458b3336d7f892
diff --git a/av1/encoder/nonrd_pickmode.c b/av1/encoder/nonrd_pickmode.c
index 6dab777..dfa2c5e 100644
--- a/av1/encoder/nonrd_pickmode.c
+++ b/av1/encoder/nonrd_pickmode.c
@@ -2004,6 +2004,7 @@
int64_t thresh_sad_pred = INT64_MAX;
const int mi_row = xd->mi_row;
const int mi_col = xd->mi_col;
+ int use_modeled_non_rd_cost = 0;
init_best_pickmode(&best_pickmode);
@@ -2068,11 +2069,18 @@
// TODO(marpan): Look into reducing these conditions. For now constrain
// it to avoid significant bdrate loss.
- const int use_modeled_non_rd_cost =
- (cpi->sf.rt_sf.use_modeled_non_rd_cost &&
- quant_params->base_qindex > 120 && x->source_variance > 100 &&
- bsize <= BLOCK_16X16 && x->content_state_sb != kLowVarHighSumdiff &&
- x->content_state_sb != kHighSad);
+ if (cpi->sf.rt_sf.use_modeled_non_rd_cost) {
+ if (cpi->svc.non_reference_frame)
+ use_modeled_non_rd_cost = 1;
+ else if (cpi->svc.number_temporal_layers > 1 &&
+ cpi->svc.temporal_layer_id == 0)
+ use_modeled_non_rd_cost = 0;
+ else
+ use_modeled_non_rd_cost =
+ (quant_params->base_qindex > 120 && x->source_variance > 100 &&
+ bsize <= BLOCK_16X16 && x->content_state_sb != kLowVarHighSumdiff &&
+ x->content_state_sb != kHighSad);
+ }
#if COLLECT_PICK_MODE_STAT
ms_stat.num_blocks[bsize]++;