sf->thresh_mult[THR_NEARG ] = 1000;
sf->thresh_mult[THR_NEARA ] = 1000;
+#if 1
+ sf->thresh_mult[THR_ZEROMV ] = 0;
+ sf->thresh_mult[THR_ZEROG ] = 0;
+ sf->thresh_mult[THR_ZEROA ] = 0;
+ sf->thresh_mult[THR_NEARESTMV] = 0;
+ sf->thresh_mult[THR_NEARESTG ] = 0;
+ sf->thresh_mult[THR_NEARESTA ] = 0;
+ sf->thresh_mult[THR_NEARMV ] = 0;
+ sf->thresh_mult[THR_NEARG ] = 0;
+ sf->thresh_mult[THR_NEARA ] = 0;
+
+// sf->thresh_mult[THR_DC ] = 0;
+
+// sf->thresh_mult[THR_V_PRED ] = 1000;
+// sf->thresh_mult[THR_H_PRED ] = 1000;
+// sf->thresh_mult[THR_B_PRED ] = 2000;
+// sf->thresh_mult[THR_TM ] = 1000;
+
+ sf->thresh_mult[THR_NEWMV ] = 1000;
+ sf->thresh_mult[THR_NEWG ] = 1000;
+ sf->thresh_mult[THR_NEWA ] = 1000;
+
+ sf->thresh_mult[THR_SPLITMV ] = 1700;
+ sf->thresh_mult[THR_SPLITG ] = 4500;
+ sf->thresh_mult[THR_SPLITA ] = 4500;
+#else
sf->thresh_mult[THR_NEWMV ] = 1500;
sf->thresh_mult[THR_NEWG ] = 1500;
sf->thresh_mult[THR_NEWA ] = 1500;
sf->thresh_mult[THR_SPLITMV ] = 5000;
sf->thresh_mult[THR_SPLITG ] = 10000;
sf->thresh_mult[THR_SPLITA ] = 10000;
-
+#endif
sf->full_freq[0] = 15;
sf->full_freq[1] = 31;
cpi->mode_check_freq[THR_SPLITG] = 4;
cpi->mode_check_freq[THR_SPLITA] = 4;
- cpi->mode_check_freq[THR_SPLITMV] = 2;
+ cpi->mode_check_freq[THR_SPLITMV] = 0;
sf->thresh_mult[THR_TM ] = 1500;
sf->thresh_mult[THR_V_PRED ] = 1500;
int d;
int segment_yrate;
B_PREDICTION_MODE modes[16];
- MV mvs[16];
+ int_mv mvs[16];
unsigned char eobs[16];
int mvthresh;
{
BLOCKD *bd = &x->e_mbd.block[i];
- bsi->mvs[i] = bd->bmi.mv.as_mv;
+ bsi->mvs[i].as_mv = bd->bmi.mv.as_mv;
bsi->modes[i] = bd->bmi.mode;
bsi->eobs[i] = bd->eob;
}
{
bsi.modes[i] = ZERO4X4;
}
-
- /* original */
- vp8_rd_check_segment(cpi, x, &bsi, 0);
- vp8_rd_check_segment(cpi, x, &bsi, 1);
- vp8_rd_check_segment(cpi, x, &bsi, 2);
- vp8_rd_check_segment(cpi, x, &bsi, 3);
+ if(cpi->compressor_speed == 0)
+ {
+ /* for now, we will keep the original segmentation order
+ when in best quality mode */
+ vp8_rd_check_segment(cpi, x, &bsi, BLOCK_16X8);
+ vp8_rd_check_segment(cpi, x, &bsi, BLOCK_8X16);
+ vp8_rd_check_segment(cpi, x, &bsi, BLOCK_8X8);
+ vp8_rd_check_segment(cpi, x, &bsi, BLOCK_4X4);
+ }
+ else
+ {
+ vp8_rd_check_segment(cpi, x, &bsi, BLOCK_8X8);
+ if (bsi.segment_rd < best_rd)
+ {
+ vp8_rd_check_segment(cpi, x, &bsi, BLOCK_8X16);
+ vp8_rd_check_segment(cpi, x, &bsi, BLOCK_16X8);
+ vp8_rd_check_segment(cpi, x, &bsi, BLOCK_4X4);
+ }
+ }
/* set it to the best */
for (i = 0; i < 16; i++)
{
BLOCKD *bd = &x->e_mbd.block[i];
- bd->bmi.mv.as_mv = bsi.mvs[i];
+ bd->bmi.mv.as_mv = bsi.mvs[i].as_mv;
bd->bmi.mode = bsi.modes[i];
bd->eob = bsi.eobs[i];
}