ref: b8fa2839a2d63091fda2c42e0f4bc984ea109e09
parent: ce328b855f951e5a9fd0d9d92df09d65ea0d8be9
author: Jim Bankoski <jimbankoski@google.com>
date: Wed Feb 29 04:03:13 EST 2012
vp8e - attempt to lessen blockiness applies a penalty to intra blocks in order to cut down on blockiness in easy sections. Change-Id: Ia9e5df16328b0bf01bf0f2e6e61abcb687316c12
--- a/vp8/encoder/rdopt.c
+++ b/vp8/encoder/rdopt.c
@@ -16,7 +16,6 @@
#include "vpx_config.h"
#include "vpx_rtcd.h"
#include "vp8/common/pragmas.h"
-
#include "tokenize.h"
#include "treewriter.h"
#include "onyx_int.h"
@@ -26,6 +25,7 @@
#include "vp8/common/reconinter.h"
#include "vp8/common/reconintra4x4.h"
#include "vp8/common/findnearmv.h"
+#include "vp8/common/quant_common.h"
#include "encodemb.h"
#include "quantize.h"
#include "variance.h"
@@ -1753,6 +1753,9 @@
int ref_frame_map[4];
int sign_bias = 0;
+ int intra_rd_penalty = 10* vp8_dc_quant(cpi->common.base_qindex,
+ cpi->common.y1dc_delta_q);
+
mode_mv = mode_mv_sb[sign_bias];
best_ref_mv.as_int = 0;
vpx_memset(mode_mv_sb, 0, sizeof(mode_mv_sb));
@@ -2258,6 +2261,9 @@
}
// Calculate the final RD estimate for this mode
this_rd = RDCOST(x->rdmult, x->rddiv, rate2, distortion2);
+ if (this_rd < INT_MAX && x->e_mbd.mode_info_context->mbmi.ref_frame
+ == INTRA_FRAME)
+ this_rd += intra_rd_penalty;
}
// Keep record of best intra distortion
--
⑨