Use 0 initial levels for loop filter search in keyframes This fixes a discrepancy between GOP serial and parallel encoding. (GOP serial encoding is changed to match parallel encoding. BUG=aomedia:3004 STATS_CHANGED Change-Id: I8475cc3ddab0f03862f52da062b1e6be1a5408c6
diff --git a/av1/encoder/picklpf.c b/av1/encoder/picklpf.c index 4391ae9..30ce10f 100644 --- a/av1/encoder/picklpf.c +++ b/av1/encoder/picklpf.c
@@ -272,10 +272,13 @@ lf->filter_level_u = clamp(filt_guess, min_filter_level, max_filter_level); lf->filter_level_v = clamp(filt_guess, min_filter_level, max_filter_level); } else { - const int last_frame_filter_level[4] = { lf->filter_level[0], - lf->filter_level[1], - lf->filter_level_u, - lf->filter_level_v }; + int last_frame_filter_level[4] = { 0 }; + if (!frame_is_intra_only(cm)) { + last_frame_filter_level[0] = lf->filter_level[0]; + last_frame_filter_level[1] = lf->filter_level[1]; + last_frame_filter_level[2] = lf->filter_level_u; + last_frame_filter_level[3] = lf->filter_level_v; + } lf->filter_level[0] = lf->filter_level[1] = search_filter_level(sd, cpi, method == LPF_PICK_FROM_SUBIMAGE,