vp9: Fix condition to update consec_zero_mv.
Fix will reset the consec_zero_mv map on non-skipped blocks with non-zero mv. Adjust thresholds on consec_zero_mv in noise estimation and skin detection, as more possible reset on map means lower thresholds should be used. Change-Id: Ibe8520057472b3609585260b51b6f95a38fb777d
This commit is contained in:
parent
97d8adef82
commit
9f90473ef8
@ -4295,8 +4295,7 @@ static void update_zeromv_cnt(VP9_COMP *const cpi,
|
||||
for (y = 0; y < ymis; y++)
|
||||
for (x = 0; x < xmis; x++) {
|
||||
int map_offset = block_index + y * cm->mi_cols + x;
|
||||
if (is_inter_block(mi) && mi->skip &&
|
||||
mi->segment_id <= CR_SEGMENT_ID_BOOST2) {
|
||||
if (is_inter_block(mi) && mi->segment_id <= CR_SEGMENT_ID_BOOST2) {
|
||||
if (abs(mv.row) < 8 && abs(mv.col) < 8) {
|
||||
if (cpi->consec_zero_mv[map_offset] < 255)
|
||||
cpi->consec_zero_mv[map_offset]++;
|
||||
|
@ -102,7 +102,7 @@ void vp9_update_noise_estimate(VP9_COMP *const cpi) {
|
||||
NOISE_ESTIMATE *const ne = &cpi->noise_estimate;
|
||||
// Estimate of noise level every frame_period frames.
|
||||
int frame_period = 10;
|
||||
int thresh_consec_zeromv = 8;
|
||||
int thresh_consec_zeromv = 6;
|
||||
unsigned int thresh_sum_diff = 100;
|
||||
unsigned int thresh_sum_spatial = (200 * 200) << 8;
|
||||
unsigned int thresh_spatial_var = (32 * 32) << 8;
|
||||
|
@ -88,7 +88,7 @@ int vp9_compute_skin_block(const uint8_t *y, const uint8_t *u, const uint8_t *v,
|
||||
int stride, int strideuv, int bsize,
|
||||
int consec_zeromv, int curr_motion_magn) {
|
||||
// No skin if block has been zero/small motion for long consecutive time.
|
||||
if (consec_zeromv > 80 && curr_motion_magn == 0) {
|
||||
if (consec_zeromv > 60 && curr_motion_magn == 0) {
|
||||
return 0;
|
||||
} else {
|
||||
int motion = 1;
|
||||
@ -100,7 +100,7 @@ int vp9_compute_skin_block(const uint8_t *y, const uint8_t *u, const uint8_t *v,
|
||||
const uint8_t ysource = y[y_height_shift * stride + y_width_shift];
|
||||
const uint8_t usource = u[uv_height_shift * strideuv + uv_width_shift];
|
||||
const uint8_t vsource = v[uv_height_shift * strideuv + uv_width_shift];
|
||||
if (consec_zeromv > 30 && curr_motion_magn == 0)
|
||||
if (consec_zeromv > 25 && curr_motion_magn == 0)
|
||||
motion = 0;
|
||||
return vp9_skin_pixel(ysource, usource, vsource, motion);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user