| Index: source/libvpx/vp9/encoder/vp9_picklpf.c
|
| ===================================================================
|
| --- source/libvpx/vp9/encoder/vp9_picklpf.c (revision 292608)
|
| +++ source/libvpx/vp9/encoder/vp9_picklpf.c (working copy)
|
| @@ -40,7 +40,15 @@
|
|
|
| vp9_loop_filter_frame(cm->frame_to_show, cm, &cpi->mb.e_mbd, filt_level, 1,
|
| partial_frame);
|
| +#if CONFIG_VP9_HIGHBITDEPTH
|
| + if (cm->use_highbitdepth) {
|
| + filt_err = vp9_highbd_get_y_sse(sd, cm->frame_to_show, cm->bit_depth);
|
| + } else {
|
| + filt_err = vp9_get_y_sse(sd, cm->frame_to_show);
|
| + }
|
| +#else
|
| filt_err = vp9_get_y_sse(sd, cm->frame_to_show);
|
| +#endif // CONFIG_VP9_HIGHBITDEPTH
|
|
|
| // Re-instate the unfiltered frame
|
| vpx_yv12_copy_y(&cpi->last_frame_uf, cm->frame_to_show);
|
| @@ -145,7 +153,26 @@
|
| 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
|
| +#if CONFIG_VP9_HIGHDEPTH
|
| + int filt_guess;
|
| + switch (cm->bit_depth) {
|
| + case VPX_BITS_8:
|
| + filt_guess = ROUND_POWER_OF_TWO(q * 20723 + 1015158, 18);
|
| + break;
|
| + case VPX_BITS_10:
|
| + filt_guess = ROUND_POWER_OF_TWO(q * 20723 + 4060632, 20);
|
| + break;
|
| + case VPX_BITS_12:
|
| + filt_guess = ROUND_POWER_OF_TWO(q * 20723 + 16242526, 22);
|
| + break;
|
| + default:
|
| + assert(0 && "bit_depth should be VPX_BITS_8, VPX_BITS_10 "
|
| + "or VPX_BITS_12");
|
| + return;
|
| + }
|
| +#else
|
| int filt_guess = ROUND_POWER_OF_TWO(q * 20723 + 1015158, 18);
|
| +#endif // CONFIG_VP9_HIGHBITDEPTH
|
| if (cm->frame_type == KEY_FRAME)
|
| filt_guess -= 4;
|
| lf->filter_level = clamp(filt_guess, min_filter_level, max_filter_level);
|
|
|