]> granicus.if.org Git - libvpx/commitdiff
Update to dynamic resize logic for 1pass CBR.
authorMarco <marpan@chromium.org>
Thu, 25 Jun 2015 19:22:19 +0000 (12:22 -0700)
committerMarco <marpan@chromium.org>
Thu, 25 Jun 2015 19:28:43 +0000 (12:28 -0700)
Only do the check for resizing if the feature is selected
(i.e., resize_mode = RESIZE_DYNAMIC).

And modify condition for checking to be resize_count >= window,
(since framerate can change).

Change-Id: Idceb4e50956bb965a1492b4993b0dcb393c9be4d

vp9/encoder/vp9_ratectrl.c

index 425073fcd12cc3c97111977bd8de69b0e5ff1c86..85003f65ef159038f5e5644e465a41b0e632cbb0 100644 (file)
@@ -1596,7 +1596,10 @@ void vp9_rc_get_one_pass_cbr_params(VP9_COMP *cpi) {
     target = calc_pframe_target_size_one_pass_cbr(cpi);
 
   vp9_rc_set_frame_target(cpi, target);
-  cpi->resize_state = vp9_resize_one_pass_cbr(cpi);
+  if (cpi->oxcf.resize_mode == RESIZE_DYNAMIC)
+    cpi->resize_state = vp9_resize_one_pass_cbr(cpi);
+  else
+    cpi->resize_state = 0;
 }
 
 int vp9_compute_qdelta(const RATE_CONTROL *rc, double qstart, double qtarget,
@@ -1781,7 +1784,7 @@ int vp9_resize_one_pass_cbr(VP9_COMP *cpi) {
       ++cpi->resize_buffer_underflow;
     ++cpi->resize_count;
     // Check for resize action every "window" frames.
-    if (cpi->resize_count == window) {
+    if (cpi->resize_count >= window) {
       int avg_qp = cpi->resize_avg_qp / cpi->resize_count;
       // Resize down if buffer level has underflowed sufficent amount in past
       // window, and we are at original resolution.