Reduce loop filter in cyclic refresh.

Reduce the delta loop filter for blocks that are cyclicly refreshed.
This helps to reduce the dot artifacts that may happen
when zero_mv blocks are repeatedly loop-filtered.

This change, along with the fix in:
https://gerrit.chromium.org/gerrit/#/c/40409/
helps to reduce this artifact, but cannot remove the dot artifacts completely.

Change-Id: I44675e7a0f59295b648a3b7d4956fb301231a97f
This commit is contained in:
Marco Paniconi 2013-01-11 16:28:51 -08:00
parent 8aca351926
commit 07ce775189

View File

@ -3732,11 +3732,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);
}