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,