From: Jerome Jiang Date: Thu, 24 May 2018 21:03:43 +0000 (-0700) Subject: VP9: Fix issues with high bitdepth in real-time. X-Git-Tag: v1.8.0~661^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8502a95a0de1bc06fa790759511cfcf3f7049b19;p=libvpx VP9: Fix issues with high bitdepth in real-time. Disable denoiser, skin detection and aq-mode for high bitdepth for now. BUG=webm:1534 Change-Id: I361a4e20b2319041148af497bf7043bfd5c5f589 --- diff --git a/vp9/encoder/vp9_aq_cyclicrefresh.c b/vp9/encoder/vp9_aq_cyclicrefresh.c index b47840795..b8c557275 100644 --- a/vp9/encoder/vp9_aq_cyclicrefresh.c +++ b/vp9/encoder/vp9_aq_cyclicrefresh.c @@ -428,7 +428,9 @@ void vp9_cyclic_refresh_update_parameters(VP9_COMP *const cpi) { double weight_segment = 0; int thresh_low_motion = (cm->width < 720) ? 55 : 20; cr->apply_cyclic_refresh = 1; - if (cm->frame_type == KEY_FRAME || cpi->svc.temporal_layer_id > 0 || + // TODO(jianj): Look into issue of cyclic refresh with high bitdepth. + if (cm->bit_depth > 8 || cm->frame_type == KEY_FRAME || + cpi->svc.temporal_layer_id > 0 || (cpi->use_svc && cpi->svc.layer_context[cpi->svc.temporal_layer_id].is_key_frame) || (!cpi->use_svc && rc->avg_frame_low_motion < thresh_low_motion && diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index f5b7b1264..e5059452e 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -3753,7 +3753,8 @@ static void encode_without_recode_loop(VP9_COMP *cpi, size_t *size, } } - if (cpi->oxcf.speed >= 5 && cpi->oxcf.pass == 0 && + // TODO(jianj): Look into issue of skin detection with high bitdepth. + if (cm->bit_depth == 8 && 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) { diff --git a/vp9/vp9_cx_iface.c b/vp9/vp9_cx_iface.c index d6c6ece91..477b66def 100644 --- a/vp9/vp9_cx_iface.c +++ b/vp9/vp9_cx_iface.c @@ -709,6 +709,8 @@ static vpx_codec_err_t ctrl_set_noise_sensitivity(vpx_codec_alg_priv_t *ctx, va_list args) { struct vp9_extracfg extra_cfg = ctx->extra_cfg; extra_cfg.noise_sensitivity = CAST(VP9E_SET_NOISE_SENSITIVITY, args); + // TODO(jianj): Look into issue of noise estimation with high bitdepth. + if (ctx->cfg.g_bit_depth > 8) extra_cfg.noise_sensitivity = 0; return update_extra_cfg(ctx, &extra_cfg); }