ref: a63adac6040345003f806fba0e778092c06ffdff
parent: f62dcc9c334eb5060293cbf0cfd7de82bb4ea78c
author: paulwilkins <[email protected]>
date: Wed Feb 15 11:41:38 EST 2017
Change to prediction decay calculation. This change subtracts out low complexity intra regions that are also low error in the inter domain, in the calculation of the frame prediction decay. The rationale here his that low complexity regions (such as sky) do not imply high prediction decay in the same way as high error intra or neutral blocks. The effect of this is small in most clips but in a few clips it can be > 10%. (E.g. In to tree) Change-Id: If67ac23d17fca14285cad2defa464c61c9ea861c
--- a/vp9/encoder/vp9_firstpass.c
+++ b/vp9/encoder/vp9_firstpass.c
@@ -1275,7 +1275,11 @@
int scaled_low_intra_thresh = scale_sse_threshold(cm, LOW_I_THRESH);
if (this_intra_error < scaled_low_intra_thresh) {
fp_acc_data->frame_noise_energy += fp_estimate_block_noise(x, bsize);
- fp_acc_data->intra_count_low += 1.0;
+ if (motion_error < scaled_low_intra_thresh) {
+ fp_acc_data->intra_count_low += 1.0;
+ } else {
+ fp_acc_data->intra_count_high += 1.0;
+ }
} else {
fp_acc_data->frame_noise_energy += (int64_t)SECTION_NOISE_DEF;
fp_acc_data->intra_count_high += 1.0;
@@ -1731,7 +1735,8 @@
if (((frame->coded_error / num_mbs) > LOW_CODED_ERR_PER_MB) &&
((frame->intra_error / DOUBLE_DIVIDE_CHECK(frame->coded_error)) <
(double)NCOUNT_FRAME_II_THRESH)) {
- modified_pct_inter = frame->pcnt_inter - frame->pcnt_neutral;
+ modified_pct_inter =
+ frame->pcnt_inter + frame->pcnt_intra_low - frame->pcnt_neutral;
}
modified_pcnt_intra = 100 * (1.0 - modified_pct_inter);