Increase TPL stats block size for res < 720p
Increased TPL stats block size to 16x16 for resolution < 720p to reduce
memory usage without affecting encoding speed and quality.
Borg test results:
avg_psnr: ovr_psnr: ssim:
speed0:
midres: 0.037 0.044 -0.008
lowres: -0.006 0.003 -0.035
speed 1:
midres: -0.003 -0.008 -0.013
lowres: -0.009 -0.026 -0.018
Memory reduction:
midres(480p): 17.2%
lowres(cif): 13.8%
No impact on encoding speed.
STATS_CHANGED
Change-Id: I272d1d26b60b7231d8955c21d8e23279624816f2
diff --git a/av1/encoder/encoder_alloc.h b/av1/encoder/encoder_alloc.h
index 4713b8b..176dbae 100644
--- a/av1/encoder/encoder_alloc.h
+++ b/av1/encoder/encoder_alloc.h
@@ -99,23 +99,20 @@
aom_calloc(mi_params->mi_rows * mi_params->mi_cols, 1));
}
-static AOM_INLINE void set_tpl_stats_block_size(int width, int height,
- uint8_t *block_mis_log2,
+static AOM_INLINE void set_tpl_stats_block_size(uint8_t *block_mis_log2,
uint8_t *tpl_bsize_1d) {
- const int is_720p_or_larger = AOMMIN(width, height) >= 720;
-
- // 0: 4x4, 1: 8x8, 2: 16x16
- *block_mis_log2 = is_720p_or_larger ? 2 : 1;
+ // tpl stats bsize: 2 means 16x16
+ *block_mis_log2 = 2;
// Block size used in tpl motion estimation
*tpl_bsize_1d = 16;
+ // MIN_TPL_BSIZE_1D = 16;
assert(*tpl_bsize_1d >= 16);
}
static AOM_INLINE void setup_tpl_buffers(AV1_COMMON *const cm,
TplParams *const tpl_data) {
CommonModeInfoParams *const mi_params = &cm->mi_params;
- set_tpl_stats_block_size(cm->width, cm->height,
- &tpl_data->tpl_stats_block_mis_log2,
+ set_tpl_stats_block_size(&tpl_data->tpl_stats_block_mis_log2,
&tpl_data->tpl_bsize_1d);
const uint8_t block_mis_log2 = tpl_data->tpl_stats_block_mis_log2;
tpl_data->border_in_pixels =