AV1 RT: Fix SVC number_saptial_layers usage for non-SVC case By default svc.number_spatial_layers are not set (hence 0). Some checks assuming it is 1. Overall PSNR improvement of the fix is 1.7% (one clip is 7%) on speed 8 Change-Id: I07c502c1ce53b8e31d9ba53bd2635dd1e5386e9a
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c index fb0cea7..e13bdd9 100644 --- a/av1/encoder/encodeframe.c +++ b/av1/encoder/encodeframe.c
@@ -4439,7 +4439,7 @@ get_mi_grid_idx(&cm->mi_params, mi_row, mi_col); const BLOCK_SIZE sb_size = cm->seq_params.sb_size; if (sf->rt_sf.source_metrics_sb_nonrd && sb_size == BLOCK_64X64 && - cpi->svc.number_spatial_layers == 1 && + cpi->svc.number_spatial_layers <= 1 && cm->current_frame.frame_type != KEY_FRAME) { int shift = cpi->source->y_stride * (mi_row << 2) + (mi_col << 2); source_content_sb(cpi, x, shift);
diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c index eec48bd..d24a929 100644 --- a/av1/encoder/ratectrl.c +++ b/av1/encoder/ratectrl.c
@@ -402,7 +402,7 @@ } // For single spatial layer: if resolution has increased push q closer // to the active_worst to avoid excess overshoot. - if (cpi->svc.number_spatial_layers == 1 && cm->prev_frame && + if (cpi->svc.number_spatial_layers <= 1 && cm->prev_frame && (cm->width * cm->height > 1.5 * cm->prev_frame->width * cm->prev_frame->height)) q = (q + active_worst_quality) >> 1;