vp9: Add flag to control usage of skin detection.
Set off as default; on for 1 pass cbr mode, speed >=5, non-screen-content. Change-Id: I03f2497e4028b354fd83b8a7d0e072c2a6bec878
This commit is contained in:
parent
f51dd8c2ac
commit
734dc36173
@ -210,7 +210,7 @@ void vp9_cyclic_refresh_update_segment(VP9_COMP *const cpi,
|
|||||||
int is_skin = 0;
|
int is_skin = 0;
|
||||||
if (refresh_this_block == 0 &&
|
if (refresh_this_block == 0 &&
|
||||||
bsize <= BLOCK_16X16 &&
|
bsize <= BLOCK_16X16 &&
|
||||||
cpi->oxcf.content != VP9E_CONTENT_SCREEN) {
|
cpi->use_skin_detection) {
|
||||||
is_skin = vp9_compute_skin_block(p[0].src.buf,
|
is_skin = vp9_compute_skin_block(p[0].src.buf,
|
||||||
p[1].src.buf,
|
p[1].src.buf,
|
||||||
p[2].src.buf,
|
p[2].src.buf,
|
||||||
|
@ -779,8 +779,8 @@ static int choose_partitioning(VP9_COMP *cpi,
|
|||||||
// (i.e., y_sad < cpi->vbp_threshold_sad) below. For now leave this as is.
|
// (i.e., y_sad < cpi->vbp_threshold_sad) below. For now leave this as is.
|
||||||
x->sb_is_skin = 0;
|
x->sb_is_skin = 0;
|
||||||
#if !CONFIG_VP9_HIGHBITDEPTH
|
#if !CONFIG_VP9_HIGHBITDEPTH
|
||||||
if (cpi->oxcf.content != VP9E_CONTENT_SCREEN && (!low_res && (mi_col >= 8 &&
|
if (cpi->use_skin_detection && !low_res && (mi_col >= 8 &&
|
||||||
mi_col + 8 < cm->mi_cols && mi_row >= 8 && mi_row + 8 < cm->mi_rows))) {
|
mi_col + 8 < cm->mi_cols && mi_row >= 8 && mi_row + 8 < cm->mi_rows)) {
|
||||||
int num_16x16_skin = 0;
|
int num_16x16_skin = 0;
|
||||||
int num_16x16_nonskin = 0;
|
int num_16x16_nonskin = 0;
|
||||||
uint8_t *ysignal = x->plane[0].src.buf;
|
uint8_t *ysignal = x->plane[0].src.buf;
|
||||||
|
@ -1671,6 +1671,7 @@ VP9_COMP *vp9_create_compressor(VP9EncoderConfig *oxcf,
|
|||||||
cpi->resize_state = 0;
|
cpi->resize_state = 0;
|
||||||
cpi->resize_avg_qp = 0;
|
cpi->resize_avg_qp = 0;
|
||||||
cpi->resize_buffer_underflow = 0;
|
cpi->resize_buffer_underflow = 0;
|
||||||
|
cpi->use_skin_detection = 0;
|
||||||
cpi->common.buffer_pool = pool;
|
cpi->common.buffer_pool = pool;
|
||||||
|
|
||||||
cpi->rc.high_source_sad = 0;
|
cpi->rc.high_source_sad = 0;
|
||||||
@ -3330,6 +3331,14 @@ static void encode_without_recode_loop(VP9_COMP *cpi,
|
|||||||
set_size_independent_vars(cpi);
|
set_size_independent_vars(cpi);
|
||||||
set_size_dependent_vars(cpi, &q, &bottom_index, &top_index);
|
set_size_dependent_vars(cpi, &q, &bottom_index, &top_index);
|
||||||
|
|
||||||
|
if (cpi->oxcf.speed >= 5 &&
|
||||||
|
cpi->oxcf.pass == 0 &&
|
||||||
|
cpi->oxcf.rc_mode == VPX_CBR &&
|
||||||
|
cpi->oxcf.content != VP9E_CONTENT_SCREEN &&
|
||||||
|
cpi->oxcf.aq_mode == CYCLIC_REFRESH_AQ) {
|
||||||
|
cpi->use_skin_detection = 1;
|
||||||
|
}
|
||||||
|
|
||||||
vp9_set_quantizer(cm, q);
|
vp9_set_quantizer(cm, q);
|
||||||
vp9_set_variance_partition_thresholds(cpi, q);
|
vp9_set_variance_partition_thresholds(cpi, q);
|
||||||
|
|
||||||
|
@ -494,6 +494,8 @@ typedef struct VP9_COMP {
|
|||||||
int resize_buffer_underflow;
|
int resize_buffer_underflow;
|
||||||
int resize_count;
|
int resize_count;
|
||||||
|
|
||||||
|
int use_skin_detection;
|
||||||
|
|
||||||
NOISE_ESTIMATE noise_estimate;
|
NOISE_ESTIMATE noise_estimate;
|
||||||
|
|
||||||
// VAR_BASED_PARTITION thresholds
|
// VAR_BASED_PARTITION thresholds
|
||||||
|
Loading…
x
Reference in New Issue
Block a user