ref: 9a7785b9d6ec67026980c1a17d8639f08a8231fe
parent: 255bcf869707fc0b4ccc2cbdf6ef2fc05dd09ecb
author: Marco <[email protected]>
date: Tue Nov 3 06:47:23 EST 2015
Update to encoder_breakout_test, for non-rd mode. Only use non-zero threshold(s) for breakout if the motion level of the current tested mode is low. Change-Id: I22aae961cc42371b49d3f648560181cc54708502
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -779,7 +779,7 @@
struct buf_2d yv12_mb[][MAX_MB_PLANE],
int *rate, int64_t *dist) {
MACROBLOCKD *xd = &x->e_mbd;
-
+ MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi;
const BLOCK_SIZE uv_size = get_plane_block_size(bsize, &xd->plane[1]);
unsigned int var = var_y, sse = sse_y;
// Skipping threshold for ac.
@@ -786,7 +786,13 @@
unsigned int thresh_ac;
// Skipping threshold for dc.
unsigned int thresh_dc;
- if (x->encode_breakout > 0) {
+ int motion_low = 1;
+ if (mbmi->mv[0].as_mv.row > 64 ||
+ mbmi->mv[0].as_mv.row < -64 ||
+ mbmi->mv[0].as_mv.col > 64 ||
+ mbmi->mv[0].as_mv.col < -64)
+ motion_low = 0;
+ if (x->encode_breakout > 0 && motion_low == 1) {
// Set a maximum for threshold to avoid big PSNR loss in low bit rate
// case. Use extreme low threshold for static frames to limit
// skipping.