Cleanup regarding buffer pool ref counts.

Change mysterious function name 'ref_cnt_fb' to 'assign_frame_buffer'.

Also, add comments for:
- ref_count variable, including which variables it depends on
- assign_frame_buffer() function

Finally, remove unused function: uref_cnt_fb().

BUG=aomedia:2230

Change-Id: I7a086c906c2499c4876d5a7126e225d13aae187b
diff --git a/av1/common/onyxc_int.h b/av1/common/onyxc_int.h
index 551e971..8af1626 100644
--- a/av1/common/onyxc_int.h
+++ b/av1/common/onyxc_int.h
@@ -110,6 +110,19 @@
 } MV_REF;
 
 typedef struct {
+  // For a RefCntBuffer, the following are reference-holding variables:
+  // - cm->ref_frame_map[]
+  // - cm->new_fb_idx
+  // - cm->scaled_ref_idx[] (encoder only)
+  // - cm->next_ref_frame_map[] (decoder only)
+  // - pbi->output_frame_index[] (decoder only)
+  // With that definition, 'ref_count' is the number of reference-holding
+  // variables that are currently referencing this buffer.
+  // For example:
+  // - suppose this buffer is at index 'k' in the buffer pool, and
+  // - Total 'n' of the variables / array elements above have value 'k' (that
+  // is, they are pointing to buffer at index 'k').
+  // Then, pool->frame_bufs[k].ref_count = n.
   int ref_count;
 
   unsigned int cur_frame_offset;
@@ -602,17 +615,20 @@
   return i;
 }
 
-static INLINE void ref_cnt_fb(RefCntBuffer *bufs, int *idx, int new_idx) {
-  const int ref_index = *idx;
-
-  if (ref_index >= 0) {
-    assert(bufs[ref_index].ref_count > 0);
-    bufs[ref_index].ref_count--;
+// Modify 'idx_ptr' to reference the buffer at 'new_idx', and update the ref
+// counts accordingly.
+static INLINE void assign_frame_buffer(RefCntBuffer *bufs, int *idx_ptr,
+                                       int new_idx) {
+  const int old_idx = *idx_ptr;
+  if (old_idx >= 0) {
+    assert(bufs[old_idx].ref_count > 0);
+    // One less reference to the buffer at 'old_idx', so decrease ref count.
+    --bufs[old_idx].ref_count;
   }
 
-  *idx = new_idx;
-
-  bufs[new_idx].ref_count++;
+  *idx_ptr = new_idx;
+  // One more reference to the buffer at 'new_idx', so increase ref count.
+  ++bufs[new_idx].ref_count;
 }
 
 static INLINE int frame_is_intra_only(const AV1_COMMON *const cm) {
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index b62c349..e36c9fe 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -4845,7 +4845,7 @@
       // decrease_ref_count(). If frame_bufs[cm->new_fb_idx].raw_frame_buffer
       // has already been allocated, it will not be released by ref_cnt_fb()!
       assert(!frame_bufs[cm->new_fb_idx].raw_frame_buffer.data);
-      ref_cnt_fb(frame_bufs, &cm->new_fb_idx, frame_to_show);
+      assign_frame_buffer(frame_bufs, &cm->new_fb_idx, frame_to_show);
       cm->reset_decoder_state =
           frame_bufs[frame_to_show].frame_type == KEY_FRAME;
       unlock_buffer_pool(pool);
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 2c779ed..626b5b7 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -2936,7 +2936,7 @@
                            "Buffer %d does not contain a reconstructed frame",
                            frame_to_show);
       }
-      ref_cnt_fb(frame_bufs, &cm->new_fb_idx, frame_to_show);
+      assign_frame_buffer(frame_bufs, &cm->new_fb_idx, frame_to_show);
 
       aom_wb_write_bit(wb, 1);  // show_existing_frame
       aom_wb_write_literal(wb, cpi->existing_fb_idx_to_show, 3);
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index b108111..7b91720 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -3519,9 +3519,9 @@
   // show_frame. This ensures a fwd keyframe does not update all of the buffers
   if ((cm->frame_type == KEY_FRAME && cm->show_frame) || frame_is_sframe(cm)) {
     for (int ref_frame = 0; ref_frame < REF_FRAMES; ++ref_frame) {
-      ref_cnt_fb(pool->frame_bufs,
-                 &cm->ref_frame_map[cpi->remapped_ref_idx[ref_frame]],
-                 cm->new_fb_idx);
+      assign_frame_buffer(pool->frame_bufs,
+                          &cm->ref_frame_map[cpi->remapped_ref_idx[ref_frame]],
+                          cm->new_fb_idx);
     }
     return;
   }
@@ -3541,9 +3541,10 @@
     // reference instead of replacing it with overlay.
 
     if (!cpi->preserve_arf_as_gld) {
-      ref_cnt_fb(pool->frame_bufs,
-                 &cm->ref_frame_map[cpi->remapped_ref_idx[ALTREF_FRAME - 1]],
-                 cm->new_fb_idx);
+      assign_frame_buffer(
+          pool->frame_bufs,
+          &cm->ref_frame_map[cpi->remapped_ref_idx[ALTREF_FRAME - 1]],
+          cm->new_fb_idx);
     }
 
     tmp = cpi->remapped_ref_idx[ALTREF_FRAME - 1];
@@ -3592,7 +3593,8 @@
     // === ALTREF_FRAME ===
     if (cpi->refresh_alt_ref_frame) {
       int arf_idx = cpi->remapped_ref_idx[ALTREF_FRAME - 1];
-      ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[arf_idx], cm->new_fb_idx);
+      assign_frame_buffer(pool->frame_bufs, &cm->ref_frame_map[arf_idx],
+                          cm->new_fb_idx);
 
       memcpy(cpi->interp_filter_selected[ALTREF_FRAME],
              cpi->interp_filter_selected[0],
@@ -3601,9 +3603,10 @@
 
     // === GOLDEN_FRAME ===
     if (cpi->refresh_golden_frame) {
-      ref_cnt_fb(pool->frame_bufs,
-                 &cm->ref_frame_map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]],
-                 cm->new_fb_idx);
+      assign_frame_buffer(
+          pool->frame_bufs,
+          &cm->ref_frame_map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]],
+          cm->new_fb_idx);
 
       memcpy(cpi->interp_filter_selected[GOLDEN_FRAME],
              cpi->interp_filter_selected[0],
@@ -3619,15 +3622,17 @@
         // and assign the newly coded frame to BWDREF so that it always
         // keeps the nearest future frame
         int tmp = cpi->remapped_ref_idx[EXTREF_FRAME - 1];
-        ref_cnt_fb(pool->frame_bufs, &cm->ref_frame_map[tmp], cm->new_fb_idx);
+        assign_frame_buffer(pool->frame_bufs, &cm->ref_frame_map[tmp],
+                            cm->new_fb_idx);
 
         rshift_bwd_ref_frames(cpi);
         cpi->remapped_ref_idx[BWDREF_FRAME - 1] = tmp;
       } else {
 #endif  // USE_SYMM_MULTI_LAYER
-        ref_cnt_fb(pool->frame_bufs,
-                   &cm->ref_frame_map[cpi->remapped_ref_idx[BWDREF_FRAME - 1]],
-                   cm->new_fb_idx);
+        assign_frame_buffer(
+            pool->frame_bufs,
+            &cm->ref_frame_map[cpi->remapped_ref_idx[BWDREF_FRAME - 1]],
+            cm->new_fb_idx);
 #if USE_SYMM_MULTI_LAYER
       }
 #endif
@@ -3638,9 +3643,10 @@
 
     // === ALTREF2_FRAME ===
     if (cpi->refresh_alt2_ref_frame) {
-      ref_cnt_fb(pool->frame_bufs,
-                 &cm->ref_frame_map[cpi->remapped_ref_idx[ALTREF2_FRAME - 1]],
-                 cm->new_fb_idx);
+      assign_frame_buffer(
+          pool->frame_bufs,
+          &cm->ref_frame_map[cpi->remapped_ref_idx[ALTREF2_FRAME - 1]],
+          cm->new_fb_idx);
 
       memcpy(cpi->interp_filter_selected[ALTREF2_FRAME],
              cpi->interp_filter_selected[0],
@@ -3681,9 +3687,10 @@
     // remapped_ref_idx[2],   remapped_ref_idx[0],     remapped_ref_idx[1]
     int tmp;
 
-    ref_cnt_fb(pool->frame_bufs,
-               &cm->ref_frame_map[cpi->remapped_ref_idx[LAST_REF_FRAMES - 1]],
-               cm->new_fb_idx);
+    assign_frame_buffer(
+        pool->frame_bufs,
+        &cm->ref_frame_map[cpi->remapped_ref_idx[LAST_REF_FRAMES - 1]],
+        cm->new_fb_idx);
 
     tmp = cpi->remapped_ref_idx[LAST_REF_FRAMES - 1];
 
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index fcf9f2a..f7747e0 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -1043,18 +1043,6 @@
 
 #define LAYER_IDS_TO_IDX(sl, tl, num_tl) ((sl) * (num_tl) + (tl))
 
-// Update up-sampled reference frame index.
-static INLINE void uref_cnt_fb(EncRefCntBuffer *ubufs, int *uidx,
-                               int new_uidx) {
-  const int ref_index = *uidx;
-
-  if (ref_index >= 0 && ubufs[ref_index].ref_count > 0)
-    ubufs[ref_index].ref_count--;
-
-  *uidx = new_uidx;
-  ubufs[new_uidx].ref_count++;
-}
-
 // Returns 1 if a frame is scaled and 0 otherwise.
 static INLINE int av1_resize_scaled(const AV1_COMMON *cm) {
   return !(cm->superres_upscaled_width == cm->render_width &&
diff --git a/av1/encoder/firstpass.c b/av1/encoder/firstpass.c
index 00aa0ad..ca2761e 100644
--- a/av1/encoder/firstpass.c
+++ b/av1/encoder/firstpass.c
@@ -1060,9 +1060,10 @@
        ((twopass->this_frame_stats.intra_error /
          DOUBLE_DIVIDE_CHECK(twopass->this_frame_stats.coded_error)) > 2.0))) {
     if (gld_yv12 != NULL) {
-      ref_cnt_fb(pool->frame_bufs,
-                 &cm->ref_frame_map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]],
-                 cm->ref_frame_map[cpi->remapped_ref_idx[LAST_FRAME - 1]]);
+      assign_frame_buffer(
+          pool->frame_bufs,
+          &cm->ref_frame_map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]],
+          cm->ref_frame_map[cpi->remapped_ref_idx[LAST_FRAME - 1]]);
     }
     twopass->sr_update_lag = 1;
   } else {
@@ -1072,17 +1073,18 @@
   aom_extend_frame_borders(new_yv12, num_planes);
 
   // The frame we just compressed now becomes the last frame.
-  ref_cnt_fb(pool->frame_bufs,
-             &cm->ref_frame_map[cpi->remapped_ref_idx[LAST_FRAME - 1]],
-             cm->new_fb_idx);
+  assign_frame_buffer(pool->frame_bufs,
+                      &cm->ref_frame_map[cpi->remapped_ref_idx[LAST_FRAME - 1]],
+                      cm->new_fb_idx);
 
   // Special case for the first frame. Copy into the GF buffer as a second
   // reference.
   if (cm->current_video_frame == 0 &&
       cpi->remapped_ref_idx[GOLDEN_FRAME - 1] != INVALID_IDX) {
-    ref_cnt_fb(pool->frame_bufs,
-               &cm->ref_frame_map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]],
-               cm->ref_frame_map[cpi->remapped_ref_idx[LAST_FRAME - 1]]);
+    assign_frame_buffer(
+        pool->frame_bufs,
+        &cm->ref_frame_map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]],
+        cm->ref_frame_map[cpi->remapped_ref_idx[LAST_FRAME - 1]]);
   }
 
   // Use this to see what the first pass reconstruction looks like.