Merge "vp9: Fixes in non-rd pickmode for denoising with SVC."
This commit is contained in:
commit
83ba1880bf
@ -1436,6 +1436,7 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
|
|||||||
#if CONFIG_VP9_TEMPORAL_DENOISING
|
#if CONFIG_VP9_TEMPORAL_DENOISING
|
||||||
VP9_PICKMODE_CTX_DEN ctx_den;
|
VP9_PICKMODE_CTX_DEN ctx_den;
|
||||||
int64_t zero_last_cost_orig = INT64_MAX;
|
int64_t zero_last_cost_orig = INT64_MAX;
|
||||||
|
int denoise_svc_pickmode = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
init_ref_frame_cost(cm, xd, ref_frame_cost);
|
init_ref_frame_cost(cm, xd, ref_frame_cost);
|
||||||
@ -1495,9 +1496,16 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_VP9_TEMPORAL_DENOISING
|
#if CONFIG_VP9_TEMPORAL_DENOISING
|
||||||
if (cpi->oxcf.noise_sensitivity > 0 && denoise_svc(cpi) &&
|
if (cpi->oxcf.noise_sensitivity > 0) {
|
||||||
cpi->denoiser.denoising_level > kDenLowLow) {
|
if (cpi->use_svc) {
|
||||||
vp9_denoiser_reset_frame_stats(ctx);
|
int layer = LAYER_IDS_TO_IDX(cpi->svc.spatial_layer_id,
|
||||||
|
cpi->svc.temporal_layer_id,
|
||||||
|
cpi->svc.number_temporal_layers);
|
||||||
|
LAYER_CONTEXT *lc = &cpi->svc.layer_context[layer];
|
||||||
|
denoise_svc_pickmode = denoise_svc(cpi) && !lc->is_key_frame;
|
||||||
|
}
|
||||||
|
if (cpi->denoiser.denoising_level > kDenLowLow && denoise_svc_pickmode)
|
||||||
|
vp9_denoiser_reset_frame_stats(ctx);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1547,6 +1555,14 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
|
|||||||
!svc_force_zero_mode[GOLDEN_FRAME - 1] && !force_skip_low_temp_var))
|
!svc_force_zero_mode[GOLDEN_FRAME - 1] && !force_skip_low_temp_var))
|
||||||
use_golden_nonzeromv = 0;
|
use_golden_nonzeromv = 0;
|
||||||
|
|
||||||
|
#if CONFIG_VP9_TEMPORAL_DENOISING
|
||||||
|
// TODO(marpan): Allowing golden as the (spatial) reference for SVC with
|
||||||
|
// denoising causes bad artifact. Remove this condition when artifact issue
|
||||||
|
// is resolved.
|
||||||
|
if (cpi->use_svc && cpi->oxcf.noise_sensitivity > 0 && denoise_svc_pickmode)
|
||||||
|
usable_ref_frame = LAST_FRAME;
|
||||||
|
#endif
|
||||||
|
|
||||||
for (ref_frame = LAST_FRAME; ref_frame <= usable_ref_frame; ++ref_frame) {
|
for (ref_frame = LAST_FRAME; ref_frame <= usable_ref_frame; ++ref_frame) {
|
||||||
if (!skip_ref_find_pred[ref_frame]) {
|
if (!skip_ref_find_pred[ref_frame]) {
|
||||||
find_predictors(cpi, x, ref_frame, frame_mv, const_motion,
|
find_predictors(cpi, x, ref_frame, frame_mv, const_motion,
|
||||||
@ -1923,7 +1939,7 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_VP9_TEMPORAL_DENOISING
|
#if CONFIG_VP9_TEMPORAL_DENOISING
|
||||||
if (cpi->oxcf.noise_sensitivity > 0 && denoise_svc(cpi) &&
|
if (cpi->oxcf.noise_sensitivity > 0 && denoise_svc_pickmode &&
|
||||||
cpi->denoiser.denoising_level > kDenLowLow) {
|
cpi->denoiser.denoising_level > kDenLowLow) {
|
||||||
vp9_denoiser_update_frame_stats(mi, sse_y, this_mode, ctx);
|
vp9_denoiser_update_frame_stats(mi, sse_y, this_mode, ctx);
|
||||||
// Keep track of zero_last cost.
|
// Keep track of zero_last cost.
|
||||||
@ -2122,7 +2138,7 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
|
|||||||
|
|
||||||
#if CONFIG_VP9_TEMPORAL_DENOISING
|
#if CONFIG_VP9_TEMPORAL_DENOISING
|
||||||
if (cpi->oxcf.noise_sensitivity > 0 && cpi->resize_pending == 0 &&
|
if (cpi->oxcf.noise_sensitivity > 0 && cpi->resize_pending == 0 &&
|
||||||
denoise_svc(cpi) && cpi->denoiser.denoising_level > kDenLowLow &&
|
denoise_svc_pickmode && cpi->denoiser.denoising_level > kDenLowLow &&
|
||||||
cpi->denoiser.reset == 0) {
|
cpi->denoiser.reset == 0) {
|
||||||
VP9_DENOISER_DECISION decision = COPY_BLOCK;
|
VP9_DENOISER_DECISION decision = COPY_BLOCK;
|
||||||
vp9_pickmode_ctx_den_update(&ctx_den, zero_last_cost_orig, ref_frame_cost,
|
vp9_pickmode_ctx_den_update(&ctx_den, zero_last_cost_orig, ref_frame_cost,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user