]> granicus.if.org Git - libvpx/commitdiff
Fixed incorrect use of compute_qdelta()
authorPaul Wilkins <paulwilkins@google.com>
Thu, 28 Mar 2013 19:46:35 +0000 (19:46 +0000)
committerPaul Wilkins <paulwilkins@google.com>
Thu, 4 Apr 2013 09:19:16 +0000 (10:19 +0100)
This function expects real Q values as inputs
not index values.

The use-age her impacts the Q chosen for force key
frames. Though this is a bug fix I have not yet verified
whether following the bug fix the q multiplier value used is
correct.

Change-Id: I49f6da894d90baeb1e86c820c335f02dc80d3b66

vp9/encoder/vp9_onyx_if.c

index f742730860ae485622279857a82f5b8eda499d45..5574605dffeb750c19b8dcc3cfac6fa748efff1d 100644 (file)
@@ -2735,8 +2735,13 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi,
     // the maximum key frame interval. Here force the Q to a range
     // based on the ambient Q to reduce the risk of popping
     if (cpi->this_key_frame_forced) {
-      const int qindex = cpi->last_boosted_qindex;
-      const int delta_qindex = compute_qdelta(cpi, qindex, qindex * 0.75);
+      int delta_qindex;
+      int qindex = cpi->last_boosted_qindex;
+      double last_boosted_q = vp9_convert_qindex_to_q(qindex);
+
+      delta_qindex = compute_qdelta(cpi, last_boosted_q,
+                                    (last_boosted_q * 0.75));
+
 
       cpi->active_best_quality = MAX(qindex + delta_qindex, cpi->best_quality);
     }