RTC: Remove rate control's dependency on sad_based_comp_prune
Currently, realtime mode's rate control relies on the array
src_sad_blk_64x64, which is only allocated/populated when the
sad_baed_comp_prune speed feature is enabled. This causes some
discrepancy in rate control at different speed settings. This commit
removes the dependency so that src_sad_blk_64x64 is always populated.
Performance:
| SPD_SET | TESTSET | AVG_PSNR | OVR_PSNR | SSIM | ENC_T |
|---------|----------|----------|----------|---------|-------|
| 7 | rtc | -0.273% | -0.222% | -0.623% | +0.6% |
| 7 | rtc_derf | -0.192% | -0.216% | -0.680% | +0.1% |
|---------|----------|----------|----------|---------|-------|
| 8 | rtc | -0.141% | -0.122% | -0.480% | +0.5% |
| 8 | rtc_derf | -0.040% | -0.002% | -0.587% | +0.1% |
|---------|----------|----------|----------|---------|-------|
| 9 | rtc | -0.057% | -0.063% | -0.251% | +0.4% |
| 9 | rtc_derf | -0.210% | -0.262% | -0.784% | +0.5% |
|---------|----------|----------|----------|---------|-------|
| 10 | rtc | -0.050% | -0.033% | -0.185% | +0.5% |
| 10 | rtc_derf | -0.115% | -0.122% | -0.805% | +0.5% |
Note that to reduce some noise, the effect of thaloundeskmtgvga.y4m is
removed from the numbers reported.
STATS_CHANGED
Change-Id: I0c7e7e9eeef9119671948f51035ea5f9c9ad66c4
diff --git a/av1/encoder/aq_cyclicrefresh.c b/av1/encoder/aq_cyclicrefresh.c
index 89c4ac3..0e65dfd 100644
--- a/av1/encoder/aq_cyclicrefresh.c
+++ b/av1/encoder/aq_cyclicrefresh.c
@@ -343,8 +343,7 @@
// Loop through all MI blocks in superblock and update map.
xmis = AOMMIN(mi_params->mi_cols - mi_col, cm->seq_params->mib_size);
ymis = AOMMIN(mi_params->mi_rows - mi_row, cm->seq_params->mib_size);
- if (cpi->sf.rt_sf.sad_based_comp_prune && cr->use_block_sad_scene_det &&
- cpi->rc.frames_since_key > 30 &&
+ if (cr->use_block_sad_scene_det && cpi->rc.frames_since_key > 30 &&
cr->counter_encode_maxq_scene_change > 30 &&
cpi->src_sad_blk_64x64 != NULL) {
sb_sad = cpi->src_sad_blk_64x64[sb_col_index + sb_cols * sb_row_index];
diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c
index b9a7421..ca1f9a0 100644
--- a/av1/encoder/ratectrl.c
+++ b/av1/encoder/ratectrl.c
@@ -2759,8 +2759,8 @@
// Flag to check light change or not.
const int check_light_change = 0;
// Store blkwise SAD for later use
- if (cpi->sf.rt_sf.sad_based_comp_prune && (cm->spatial_layer_id == 0) &&
- (cm->width == cm->render_width) && (cm->height == cm->render_height)) {
+ if ((cm->spatial_layer_id == 0) && (cm->width == cm->render_width) &&
+ (cm->height == cm->render_height)) {
full_sampling = 1;
if (cpi->src_sad_blk_64x64 == NULL) {
CHECK_MEM_ERROR(