diff options
author | Yunqing Wang <yunqingwang@google.com> | 2015-03-12 17:16:48 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2015-03-12 17:16:48 -0700 |
commit | 769e6567e9c4467709af0b536d6da2e7f67b76a0 (patch) | |
tree | 0998f3a3c9871b8229d38b51b7362b142d583456 /vp9 | |
parent | 7a9d8f1efe688c47b8a012622904d2bad6a8c3cd (diff) | |
parent | 5d677c97eb3737e15399dcd5c1ee26dc5a3f7ba9 (diff) | |
download | libvpx-769e6567e9c4467709af0b536d6da2e7f67b76a0.tar libvpx-769e6567e9c4467709af0b536d6da2e7f67b76a0.tar.gz libvpx-769e6567e9c4467709af0b536d6da2e7f67b76a0.tar.bz2 libvpx-769e6567e9c4467709af0b536d6da2e7f67b76a0.zip |
Merge "Minorly modify model_rd_for_sb_y function"
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/encoder/vp9_pickmode.c | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c index f1b19e00a..e3acc5a82 100644 --- a/vp9/encoder/vp9_pickmode.c +++ b/vp9/encoder/vp9_pickmode.c @@ -217,6 +217,8 @@ static void model_rd_for_sb_y(VP9_COMP *cpi, BLOCK_SIZE bsize, const uint32_t ac_quant = pd->dequant[1]; unsigned int var = cpi->fn_ptr[bsize].vf(p->src.buf, p->src.stride, pd->dst.buf, pd->dst.stride, &sse); + int skip_dc = 0; + *var_y = var; *sse_y = sse; @@ -258,6 +260,9 @@ static void model_rd_for_sb_y(VP9_COMP *cpi, BLOCK_SIZE bsize, // Check if dc coefficient can be quantized to zero. if (sse_tx - var_tx < dc_thr || sse == var) x->skip_txfm[0] = 1; + } else { + if (sse_tx - var_tx < dc_thr || sse == var) + skip_dc = 1; } } @@ -267,21 +272,28 @@ static void model_rd_for_sb_y(VP9_COMP *cpi, BLOCK_SIZE bsize, return; } + if (!skip_dc) { #if CONFIG_VP9_HIGHBITDEPTH - if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) { - vp9_model_rd_from_var_lapndz(sse - var, num_pels_log2_lookup[bsize], - dc_quant >> (xd->bd - 5), &rate, &dist); - } else { + if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) { + vp9_model_rd_from_var_lapndz(sse - var, num_pels_log2_lookup[bsize], + dc_quant >> (xd->bd - 5), &rate, &dist); + } else { + vp9_model_rd_from_var_lapndz(sse - var, num_pels_log2_lookup[bsize], + dc_quant >> 3, &rate, &dist); + } +#else vp9_model_rd_from_var_lapndz(sse - var, num_pels_log2_lookup[bsize], dc_quant >> 3, &rate, &dist); - } -#else - vp9_model_rd_from_var_lapndz(sse - var, num_pels_log2_lookup[bsize], - dc_quant >> 3, &rate, &dist); #endif // CONFIG_VP9_HIGHBITDEPTH + } - *out_rate_sum = rate >> 1; - *out_dist_sum = dist << 3; + if (!skip_dc) { + *out_rate_sum = rate >> 1; + *out_dist_sum = dist << 3; + } else { + *out_rate_sum = 0; + *out_dist_sum = (sse - var) << 4; + } #if CONFIG_VP9_HIGHBITDEPTH if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) { |