Fix runtime error in av1_rc_set_frame_target()

Update frame target based on vbr_bits_off_target_fast only when
additional bits are present from local undershoot. Also fixes
the condition for fast redistribution of extra bits in FPMT path.

Change-Id: Ib9fe303ed45a2c8edb161f421a08258bffe778b0
diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c
index 4d239c6..9eb7414 100644
--- a/av1/encoder/ratectrl.c
+++ b/av1/encoder/ratectrl.c
@@ -2398,26 +2398,30 @@
     *this_frame_target += (vbr_bits_off_target >= 0) ? max_delta : -max_delta;
   }
 
+  int64_t vbr_bits_off_target_fast;
+#if CONFIG_FRAME_PARALLEL_ENCODE
+  vbr_bits_off_target_fast =
+      (cpi->ppi->gf_group.frame_parallel_level[cpi->gf_frame_index] > 0)
+          ? cpi->ppi->p_rc.temp_vbr_bits_off_target_fast
+          : rc->vbr_bits_off_target_fast;
+#else
+  vbr_bits_off_target_fast = rc->vbr_bits_off_target_fast;
+#endif
   // Fast redistribution of bits arising from massive local undershoot.
   // Dont do it for kf,arf,gf or overlay frames.
   if (!frame_is_kf_gf_arf(cpi) && !rc->is_src_frame_alt_ref &&
-      rc->vbr_bits_off_target_fast) {
-    int64_t vbr_bits_off_target_fast;
-#if CONFIG_FRAME_PARALLEL_ENCODE
-    vbr_bits_off_target_fast =
-        (cpi->ppi->gf_group.frame_parallel_level[cpi->gf_frame_index] > 0)
-            ? cpi->ppi->p_rc.temp_vbr_bits_off_target_fast
-            : rc->vbr_bits_off_target_fast;
-#else
-    vbr_bits_off_target_fast = rc->vbr_bits_off_target_fast;
-#endif
+      vbr_bits_off_target_fast) {
     int one_frame_bits = AOMMAX(rc->avg_frame_bandwidth, *this_frame_target);
     int fast_extra_bits;
     fast_extra_bits = (int)AOMMIN(vbr_bits_off_target_fast, one_frame_bits);
     fast_extra_bits =
         (int)AOMMIN(fast_extra_bits,
                     AOMMAX(one_frame_bits / 8, vbr_bits_off_target_fast / 8));
-    *this_frame_target += (int)fast_extra_bits;
+    if (fast_extra_bits > 0) {
+      // Update this_frame_target only if additional bits are available from
+      // local undershoot.
+      *this_frame_target += (int)fast_extra_bits;
+    }
 #if CONFIG_FRAME_PARALLEL_ENCODE
     rc->frame_level_fast_extra_bits += fast_extra_bits;
     if (cpi->do_frame_data_update) {