]> granicus.if.org Git - libvpx/commitdiff
Refactor find_arf_order()
authorJingning Han <jingning@google.com>
Mon, 5 Nov 2018 19:12:24 +0000 (11:12 -0800)
committerJingning Han <jingning@google.com>
Mon, 5 Nov 2018 19:12:24 +0000 (11:12 -0800)
Make the maximum layer depth allowed a control parameter in
GF_GROUP. No coding stats would change.

Change-Id: I9d17167da322831e7013d761980e1c16375a161b

vp9/encoder/vp9_firstpass.c
vp9/encoder/vp9_firstpass.h

index 81fbf34b157898ef09a4481763b8b128f4a08ccd..488dab2b42544241db5480d390a8092da84b2bfb 100644 (file)
@@ -2116,7 +2116,7 @@ static void find_arf_order(VP9_COMP *cpi, GF_GROUP *gf_group,
 
   // Process regular P frames
   if ((end - start < min_frame_interval) ||
-      (depth > cpi->oxcf.enable_auto_arf)) {
+      (depth > gf_group->allowed_max_layer_depth)) {
     int idx;
     for (idx = start; idx < end; ++idx) {
       gf_group->update_type[*index_counter] = LF_UPDATE;
@@ -2210,6 +2210,7 @@ static int define_gf_group_structure(VP9_COMP *cpi) {
   }
 
   if (rc->source_alt_ref_pending && cpi->multi_layer_arf) {
+    gf_group->allowed_max_layer_depth = cpi->oxcf.enable_auto_arf;
     find_arf_order(cpi, gf_group, &frame_index, 2, 1, rc->baseline_gf_interval);
 
     set_gf_overlay_frame_type(gf_group, frame_index,
index 39715a9c0ed814a8fc62821df7fb4fa8204beeec..0807097ac1ab0ba5ce3dbd5805051bcbad47edd1 100644 (file)
@@ -140,6 +140,8 @@ typedef struct {
   int top_arf_idx;
   int stack_size;
   int gf_group_size;
+  int max_layer_depth;
+  int allowed_max_layer_depth;
 } GF_GROUP;
 
 typedef struct {