shithub: libvpx

Download patch

ref: ec6cf493ff8f1bd39cefe6becc7f6468db438e59
parent: 14301116e27e6d776afe00214dc370355ecc3d0b
author: Marco Paniconi <marpan@google.com>
date: Thu Jan 31 05:46:39 EST 2013

Fix for divide by zero in vp8_adjust_key_frame.

Change-Id: I3bf9bdd95abfd287fbcb644f4fb85fb9204be95a

--- a/vp8/encoder/ratectrl.c
+++ b/vp8/encoder/ratectrl.c
@@ -1360,10 +1360,10 @@
          * whichever is smaller.
          */
         int key_freq = cpi->oxcf.key_freq>0 ? cpi->oxcf.key_freq : 1;
-        av_key_frame_frequency = (int)cpi->output_frame_rate * 2;
+        av_key_frame_frequency = 1 + (int)cpi->output_frame_rate * 2;
 
         if (cpi->oxcf.auto_key && av_key_frame_frequency > key_freq)
-            av_key_frame_frequency = cpi->oxcf.key_freq;
+            av_key_frame_frequency = key_freq;
 
         cpi->prior_key_frame_distance[KEY_FRAME_CONTEXT - 1]
             = av_key_frame_frequency;
@@ -1393,6 +1393,10 @@
         av_key_frame_frequency  /= total_weight;
 
     }
+    // TODO (marpan): Given the checks above, |av_key_frame_frequency|
+    // should always be above 0. But for now we keep the sanity check in.
+    if (av_key_frame_frequency == 0)
+        av_key_frame_frequency = 1;
     return av_key_frame_frequency;
 }