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.
