]> granicus.if.org Git - libvpx/commitdiff
Correct q_low and q_high limits for the recode loop
authorPaul Wilkins <paulwilkins@google.com>
Thu, 9 Dec 2010 15:02:04 +0000 (15:02 +0000)
committerPaul Wilkins <paulwilkins@google.com>
Thu, 9 Dec 2010 15:02:04 +0000 (15:02 +0000)
Corrected the initial Q range limits for the recode loop
to reflect the current allowed range for the frame.

In experimental work on constrained quality this bug was
causing unnecessary recodes.

Change-Id: I7e256fbfa681293b0223fe21ec329933d76c229f

vp8/encoder/onyx_if.c

index aad326ca2501b0bf810716d574c9212e44dd3cf2..a003828b0f658463acc147d9e9d10d4baf27f0ea 100644 (file)
@@ -3837,17 +3837,16 @@ static void encode_frame_to_data_rate
 
     vp8_compute_frame_size_bounds(cpi, &frame_under_shoot_limit, &frame_over_shoot_limit);
 
-    // Limit Q range for the adaptive loop (Values not clipped to range 20-60 as in VP8).
+    // Limit Q range for the adaptive loop.
     bottom_index = cpi->active_best_quality;
     top_index    = cpi->active_worst_quality;
+    q_low  = cpi->active_best_quality;
+    q_high = cpi->active_worst_quality;
 
     vp8_save_coding_context(cpi);
 
     loop_count = 0;
 
-    q_low  = cpi->best_quality;
-    q_high = cpi->worst_quality;
-
 
     scale_and_extend_source(cpi->un_scaled_source, cpi);
 #if !(CONFIG_REALTIME_ONLY) && CONFIG_POSTPROC
@@ -4029,15 +4028,13 @@ static void encode_frame_to_data_rate
 
                 Q = vp8_regulate_q(cpi, cpi->this_frame_target);
 
-                q_low  = cpi->best_quality;
-                q_high = cpi->worst_quality;
-
                 vp8_compute_frame_size_bounds(cpi, &frame_under_shoot_limit, &frame_over_shoot_limit);
 
-                // Limit Q range for the adaptive loop (Values not clipped to range 20-60 as in VP8).
+                // Limit Q range for the adaptive loop.
                 bottom_index = cpi->active_best_quality;
                 top_index    = cpi->active_worst_quality;
-
+                q_low  = cpi->active_best_quality;
+                q_high = cpi->active_worst_quality;
 
                 loop_count++;
                 Loop = TRUE;