rtc: Disable two features for high bitdepth mode
As quick fix to the issue below: disable accurate_bit_estimate
and use_model_yrd_large for cpi->oxcf.use_highbitdepth = 1.
Test case that triggers failures is here:
https://aomedia-review.googlesource.com/c/aom/+/181968
Bug: b/303023614
Change-Id: I7484f049128e846f44b3a647a9486c9da3d72e67
diff --git a/av1/encoder/nonrd_opt.h b/av1/encoder/nonrd_opt.h
index aec4d92..a53578e 100644
--- a/av1/encoder/nonrd_opt.h
+++ b/av1/encoder/nonrd_opt.h
@@ -394,12 +394,12 @@
// Indicates the blocks for which RD model should be based on special logic
static INLINE int get_model_rd_flag(const AV1_COMP *cpi, const MACROBLOCKD *xd,
BLOCK_SIZE bsize) {
- const int large_block = bsize >= BLOCK_32X32;
const AV1_COMMON *const cm = &cpi->common;
+ const int large_block = bsize >= BLOCK_32X32;
+ // Only enable for low bitdepth to mitigate issue: b/303023614.
return cpi->oxcf.rc_cfg.mode == AOM_CBR && large_block &&
!cyclic_refresh_segment_id_boosted(xd->mi[0]->segment_id) &&
- cm->quant_params.base_qindex &&
- cm->seq_params->bit_depth == AOM_BITS_8;
+ cm->quant_params.base_qindex && !cpi->oxcf.use_highbitdepth;
}
/*!\brief Finds predicted motion vectors for a block.
*
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index bfe0fea..feb50e7 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -1385,10 +1385,9 @@
if (speed == 7) {
sf->rt_sf.prefer_large_partition_blocks = 1;
// Enable this feature for [360p, 720p] resolution range initially.
- // Only enable for low bitdepth: see issue: b/303023614.
+ // Only enable for low bitdepth to mitigate issue: b/303023614.
if (!cpi->rc.rtc_external_ratectrl &&
- AOMMIN(cm->width, cm->height) <= 720 &&
- cm->seq_params->bit_depth == 8)
+ AOMMIN(cm->width, cm->height) <= 720 && !cpi->oxcf.use_highbitdepth)
sf->hl_sf.accurate_bit_estimate = cpi->oxcf.q_cfg.aq_mode == NO_AQ;
}
if (speed >= 7) {