ref: 4e1ba35458bf933113aa1ec74ca306c1fd47e9af
parent: 52b3e1a63314a1ed4d526f67cbeb0c5bf21667ec
author: Marco <marpan@google.com>
date: Mon Feb 20 15:15:40 EST 2017
vp9: Fix for non-rd pickmode for high-bitdepth build. Use the simple block_yrd under certain conditions. The optimization code is completed but the speed is still slower (~6% on 720p) than the low-bitdepth build. For now, use the more complex block_yrd under certain conditions (always use it for speed <= 5, otherwise use it on key frames and for bsize >= 32x32). This gives about ~2-3% gain in quality for speed 7 on RTC set (over high bitdepth build), with about the same encoder fps as the low bitdepth build. Change-Id: Ibe92a1945d0bd635f880befb4c815727df62d754
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -636,17 +636,19 @@
#if CONFIG_VP9_HIGHBITDEPTH
// TODO(jingning): Implement the high bit-depth Hadamard transforms and
// remove this check condition.
- // TODO(marpan): Disable this for 8 bit once optimizations for the functions
- // below are merged in.
- // if (xd->bd != 8) {
- unsigned int var_y, sse_y;
- (void)tx_size;
- model_rd_for_sb_y(cpi, bsize, x, xd, &this_rdc->rate, &this_rdc->dist, &var_y,
- &sse_y);
- *sse = INT_MAX;
- *skippable = 0;
- return;
-// }
+ // TODO(marpan): Use this path (model_rd) for 8bit under certain conditions
+ // for now, as the vp9_quantize_fp below for highbitdepth build is slow.
+ if (xd->bd != 8 ||
+ (cpi->oxcf.speed > 5 && cpi->common.frame_type != KEY_FRAME &&
+ bsize < BLOCK_32X32)) {
+ unsigned int var_y, sse_y;
+ (void)tx_size;
+ model_rd_for_sb_y(cpi, bsize, x, xd, &this_rdc->rate, &this_rdc->dist,
+ &var_y, &sse_y);
+ *sse = INT_MAX;
+ *skippable = 0;
+ return;
+ }
#endif
(void)cpi;