shithub: libvpx

Download patch

ref: 5ba4b16c2df952a7e3a88e8dfb213f697f2bf121
parent: 84b4d8c692538e4d85b1179f432757e2c540c545
author: Marco Paniconi <marpan@google.com>
date: Thu Dec 19 09:26:46 EST 2013

Initialize avg_frame_qindex to worst_allowed for 1 pass.

Change-Id: I535bde16c8fc4c2cd263bbbbaed46ead4c776090

--- a/vp9/encoder/vp9_onyx_if.c
+++ b/vp9/encoder/vp9_onyx_if.c
@@ -1094,12 +1094,18 @@
   // Initialize active best and worst q and average q values.
   cpi->rc.active_worst_quality      = cpi->oxcf.worst_allowed_q;
 
-  cpi->rc.avg_frame_qindex[0]       = (cpi->oxcf.worst_allowed_q +
-                                       cpi->oxcf.best_allowed_q) / 2;
-  cpi->rc.avg_frame_qindex[1]       = (cpi->oxcf.worst_allowed_q +
-                                       cpi->oxcf.best_allowed_q) / 2;
-  cpi->rc.avg_frame_qindex[2]       = (cpi->oxcf.worst_allowed_q +
-                                       cpi->oxcf.best_allowed_q) / 2;
+  if (cpi->pass == 0 && cpi->oxcf.end_usage == USAGE_STREAM_FROM_SERVER) {
+    cpi->rc.avg_frame_qindex[0] = cpi->oxcf.worst_allowed_q;
+    cpi->rc.avg_frame_qindex[1] = cpi->oxcf.worst_allowed_q;
+    cpi->rc.avg_frame_qindex[2] = cpi->oxcf.worst_allowed_q;
+  } else {
+    cpi->rc.avg_frame_qindex[0] = (cpi->oxcf.worst_allowed_q +
+                                   cpi->oxcf.best_allowed_q) / 2;
+    cpi->rc.avg_frame_qindex[1] = (cpi->oxcf.worst_allowed_q +
+                                   cpi->oxcf.best_allowed_q) / 2;
+    cpi->rc.avg_frame_qindex[2] = (cpi->oxcf.worst_allowed_q +
+                                   cpi->oxcf.best_allowed_q) / 2;
+  }
   cpi->rc.last_q[0]                 = cpi->oxcf.best_allowed_q;
   cpi->rc.last_q[1]                 = cpi->oxcf.best_allowed_q;
   cpi->rc.last_q[2]                 = cpi->oxcf.best_allowed_q;