diff options
author | Jingning Han <jingning@google.com> | 2013-12-02 15:24:41 -0800 |
---|---|---|
committer | Jingning Han <jingning@google.com> | 2013-12-02 17:30:41 -0800 |
commit | 9f81a50c853c902f575dbff4f0e61db7ebfa12fa (patch) | |
tree | cd25d82c3b65060747231168f57c5f1aada9e6e2 /vp9 | |
parent | e237b7dea350261b8da0635b9290e20da1561797 (diff) | |
download | libvpx-9f81a50c853c902f575dbff4f0e61db7ebfa12fa.tar libvpx-9f81a50c853c902f575dbff4f0e61db7ebfa12fa.tar.gz libvpx-9f81a50c853c902f575dbff4f0e61db7ebfa12fa.tar.bz2 libvpx-9f81a50c853c902f575dbff4f0e61db7ebfa12fa.zip |
Fix use_uv_intra_estimate in rd loop
This commit fixes the use of uv_intra_estimate by properly restoring
the mode_info struct required by rd_pick_intra_sbuv_mode.
Change-Id: I6a156d79533c4e2e60dfd3b8c5bb0a42a8eca280
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/encoder/vp9_onyx_if.c | 4 | ||||
-rw-r--r-- | vp9/encoder/vp9_rdopt.c | 19 |
2 files changed, 11 insertions, 12 deletions
diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c index b0314475f..fbe05941d 100644 --- a/vp9/encoder/vp9_onyx_if.c +++ b/vp9/encoder/vp9_onyx_if.c @@ -786,7 +786,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) { sf->last_partitioning_redo_frequency = 3; sf->use_uv_intra_rd_estimate = 1; - sf->skip_encode_sb = 1; + sf->skip_encode_sb = 0; sf->use_lp32x32fdct = 1; sf->subpel_iters_per_step = 1; sf->use_fast_coef_updates = 2; @@ -819,7 +819,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) { sf->last_partitioning_redo_frequency = 3; sf->use_uv_intra_rd_estimate = 1; - sf->skip_encode_sb = 1; + sf->skip_encode_sb = 0; sf->use_lp32x32fdct = 1; sf->subpel_iters_per_step = 1; sf->use_fast_coef_updates = 2; diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index feca403b3..e3e58cefc 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -270,7 +270,7 @@ void vp9_initialize_rd_consts(VP9_COMP *cpi) { cpi->mb.select_txfm_size = (cpi->sf.tx_size_search_method == USE_LARGESTALL && cm->frame_type != KEY_FRAME) ? - 0 : 1; + 0 : 1; set_block_thresholds(cpi); @@ -1286,11 +1286,7 @@ static int64_t rd_pick_intra_sbuv_mode(VP9_COMP *cpi, MACROBLOCK *x, int this_rate_tokenonly, this_rate, s; int64_t this_distortion, this_sse; - // int mode_mask = (bsize <= BLOCK_8X8) - // ? ALL_INTRA_MODES : cpi->sf.intra_uv_mode_mask; - - for (mode = DC_PRED; mode <= TM_PRED; mode ++) { - // if (!(mode_mask & (1 << mode))) + for (mode = DC_PRED; mode <= TM_PRED; ++mode) { if (!(cpi->sf.intra_uv_mode_mask[max_uv_txsize_lookup[bsize]] & (1 << mode))) continue; @@ -1318,7 +1314,7 @@ static int64_t rd_pick_intra_sbuv_mode(VP9_COMP *cpi, MACROBLOCK *x, struct macroblockd_plane *const pd = x->e_mbd.plane; for (i = 1; i < MAX_MB_PLANE; ++i) { p[i].coeff = ctx->coeff_pbuf[i][2]; - p[i].qcoeff = ctx->qcoeff_pbuf[i][2]; + p[i].qcoeff = ctx->qcoeff_pbuf[i][2]; pd[i].dqcoeff = ctx->dqcoeff_pbuf[i][2]; pd[i].eobs = ctx->eobs_pbuf[i][2]; @@ -1337,7 +1333,6 @@ static int64_t rd_pick_intra_sbuv_mode(VP9_COMP *cpi, MACROBLOCK *x, } x->e_mbd.mi_8x8[0]->mbmi.uv_mode = mode_selected; - return best_rd; } @@ -3662,7 +3657,9 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, if (cpi->sf.use_uv_intra_rd_estimate) { // Do Intra UV best rd mode selection if best mode choice above was intra. if (vp9_mode_order[best_mode_index].ref_frame == INTRA_FRAME) { - TX_SIZE uv_tx_size = get_uv_tx_size(mbmi); + TX_SIZE uv_tx_size; + *mbmi = best_mbmode; + uv_tx_size = get_uv_tx_size(mbmi); rd_pick_intra_sbuv_mode(cpi, x, ctx, &rate_uv_intra[uv_tx_size], &rate_uv_tokenonly[uv_tx_size], &dist_uv[uv_tx_size], @@ -4410,7 +4407,9 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x, if (cpi->sf.use_uv_intra_rd_estimate) { // Do Intra UV best rd mode selection if best mode choice above was intra. if (vp9_ref_order[best_mode_index].ref_frame == INTRA_FRAME) { - TX_SIZE uv_tx_size = get_uv_tx_size(mbmi); + TX_SIZE uv_tx_size; + *mbmi = best_mbmode; + uv_tx_size = get_uv_tx_size(mbmi); rd_pick_intra_sbuv_mode(cpi, x, ctx, &rate_uv_intra[uv_tx_size], &rate_uv_tokenonly[uv_tx_size], &dist_uv[uv_tx_size], |