diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c index 4b60cfd32..1c773b731 100644 --- a/vp8/encoder/onyx_if.c +++ b/vp8/encoder/onyx_if.c @@ -3808,11 +3808,22 @@ static void encode_frame_to_data_rate /* Setup background Q adjustment for error resilient mode. * For multi-layer encodes only enable this for the base layer. - */ + * Reduce loop filter to reduce "dot" artifacts that can occur for repeated + * loop filtering on ZEROMV_LASTREF blocks. + * For now reducing it to -32, only for resolutions above CIF and + * #temporal_layers < 3 (artifact is hard to see at low spatial resolution + * and/or high #temporal layers). + */ if (cpi->cyclic_refresh_mode_enabled) { + int delta_loop_filter = 0; + if (cm->Width > 352 && cm->Height > 288 && + cpi->oxcf.number_of_layers < 3) + { + delta_loop_filter = -32; + } if (cpi->current_layer==0) - cyclic_background_refresh(cpi, Q, 0); + cyclic_background_refresh(cpi, Q, delta_loop_filter); else disable_segmentation(cpi); }