Index: source/libvpx/vp9/encoder/vp9_picklpf.c |
=================================================================== |
--- source/libvpx/vp9/encoder/vp9_picklpf.c (revision 292072) |
+++ source/libvpx/vp9/encoder/vp9_picklpf.c (working copy) |
@@ -77,7 +77,6 @@ |
while (filter_step > 0) { |
const int filt_high = MIN(filt_mid + filter_step, max_filter_level); |
const int filt_low = MAX(filt_mid - filter_step, min_filter_level); |
- int filt_err; |
// Bias against raising loop filter in favor of lowering it. |
int bias = (best_err >> (15 - (filt_mid / 8))) * filter_step; |
@@ -92,17 +91,14 @@ |
if (filt_direction <= 0 && filt_low != filt_mid) { |
// Get Low filter error score |
if (ss_err[filt_low] < 0) { |
- filt_err = try_filter_frame(sd, cpi, filt_low, partial_frame); |
- ss_err[filt_low] = filt_err; |
- } else { |
- filt_err = ss_err[filt_low]; |
+ ss_err[filt_low] = try_filter_frame(sd, cpi, filt_low, partial_frame); |
} |
// If value is close to the best so far then bias towards a lower loop |
// filter value. |
- if ((filt_err - bias) < best_err) { |
+ if ((ss_err[filt_low] - bias) < best_err) { |
// Was it actually better than the previous best? |
- if (filt_err < best_err) |
- best_err = filt_err; |
+ if (ss_err[filt_low] < best_err) |
+ best_err = ss_err[filt_low]; |
filt_best = filt_low; |
} |
@@ -111,14 +107,11 @@ |
// Now look at filt_high |
if (filt_direction >= 0 && filt_high != filt_mid) { |
if (ss_err[filt_high] < 0) { |
- filt_err = try_filter_frame(sd, cpi, filt_high, partial_frame); |
- ss_err[filt_high] = filt_err; |
- } else { |
- filt_err = ss_err[filt_high]; |
+ ss_err[filt_high] = try_filter_frame(sd, cpi, filt_high, partial_frame); |
} |
// Was it better than the previous best? |
- if (filt_err < (best_err - bias)) { |
- best_err = filt_err; |
+ if (ss_err[filt_high] < (best_err - bias)) { |
+ best_err = ss_err[filt_high]; |
filt_best = filt_high; |
} |
} |
@@ -149,7 +142,7 @@ |
} else if (method >= LPF_PICK_FROM_Q) { |
const int min_filter_level = 0; |
const int max_filter_level = get_max_filter_level(cpi); |
- const int q = vp9_ac_quant(cm->base_qindex, 0); |
+ const int q = vp9_ac_quant(cm->base_qindex, 0, cm->bit_depth); |
// These values were determined by linear fitting the result of the |
// searched level, filt_guess = q * 0.316206 + 3.87252 |
int filt_guess = ROUND_POWER_OF_TWO(q * 20723 + 1015158, 18); |