From: Marco Date: Wed, 16 Mar 2016 18:53:43 +0000 (-0700) Subject: vp9-svc: Bugfix on usage of svc_force_zeromv in non-rd pickmode. X-Git-Tag: v1.6.0~292^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f03dfcb11839bcbaa883a065f13072d21317fa33;p=libvpx vp9-svc: Bugfix on usage of svc_force_zeromv in non-rd pickmode. Only affects 1 pass cbr svc mode. Change-Id: Ifc0948b4aabffa64a9701295d8dbc58a7208a30f --- diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c index f29a5d84a..3ea2ccd88 100644 --- a/vp9/encoder/vp9_pickmode.c +++ b/vp9/encoder/vp9_pickmode.c @@ -1689,12 +1689,15 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, xd->mi[0]->bmi[0].as_mv[0].as_int = mi->mv[0].as_int; x->skip_txfm[0] = best_mode_skip_txfm; - // Perform intra prediction only if base layer is chosen as the reference. + // For spatial enhancemanent layer: perform intra prediction only if base + // layer is chosen as the reference. Always perform intra prediction if + // LAST is the only reference or is_key_frame is set. if (cpi->svc.spatial_layer_id) { perform_intra_pred = cpi->svc.layer_context[cpi->svc.temporal_layer_id].is_key_frame || + !(cpi->ref_frame_flags & flag_list[GOLDEN_FRAME]) || (!cpi->svc.layer_context[cpi->svc.temporal_layer_id].is_key_frame - && svc_force_zero_mode[best_ref_frame]); + && svc_force_zero_mode[best_ref_frame - 1]); inter_mode_thresh = (inter_mode_thresh << 1) + inter_mode_thresh; } // Perform intra prediction search, if the best SAD is above a certain