rtc: Adjust condition to set rps frame. This has some improvement for RPS, comes from the CL: https://aomedia-review.googlesource.com/c/aom/+/200501 Change-Id: I3272c88ee5e4376434e974b7f7eb5dea636586ab
diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c index e752568..b1c68d8 100644 --- a/av1/encoder/ratectrl.c +++ b/av1/encoder/ratectrl.c
@@ -3700,8 +3700,8 @@ // Set to true if this frame is a recovery frame, for 1 layer RPS, // and whether we should apply some boost (QP, adjust speed features, etc). -// Recovery frame here means frame whose closest reference suddenly -// switched from previous frame to one much further away. +// Recovery frame here means frame whose closest reference is x frames away, +// where x = 4. // TODO(marpan): Consider adding on/off flag to SVC_REF_FRAME_CONFIG to // allow more control for applications. static bool set_flag_rps_bias_recovery_frame(const AV1_COMP *const cpi) { @@ -3711,8 +3711,8 @@ cpi->ppi->rtc_ref.reference_was_previous_frame) { int min_dist = av1_svc_get_min_ref_dist(cpi); // Only consider boost for this frame if its closest reference is further - // than x frames away, using x = 4 for now. - if (min_dist != INT_MAX && min_dist > 4) return true; + // than or equal to x frames away, using x = 4 for now. + if (min_dist != INT_MAX && min_dist >= 4) return true; } return false; }
diff --git a/av1/encoder/svc_layercontext.c b/av1/encoder/svc_layercontext.c index 79ef8db..7ac5d5a 100644 --- a/av1/encoder/svc_layercontext.c +++ b/av1/encoder/svc_layercontext.c
@@ -699,8 +699,8 @@ for (unsigned int i = 0; i < INTER_REFS_PER_FRAME; i++) { if (rtc_ref->reference[i]) { const int ref_frame_map_idx = rtc_ref->ref_idx[i]; - const int dist = - current_frame_num - rtc_ref->buffer_time_index[ref_frame_map_idx]; + const int dist = (1 + current_frame_num) - + rtc_ref->buffer_time_index[ref_frame_map_idx]; if (dist < min_dist) min_dist = dist; } }