From 7fa61d7d51b7bdf20bcc4c3710c8cf5a89c91738 Mon Sep 17 00:00:00 2001 From: hui su Date: Fri, 10 Jun 2016 10:37:24 -0700 Subject: [PATCH] Fix rate cost calculation for ext-intra It was broken by commit 8ee640f979. Change-Id: I26b9eba810c74849b0805e64da2d269ab0685cb9 --- vp10/encoder/rdopt.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/vp10/encoder/rdopt.c b/vp10/encoder/rdopt.c index e8ff02035..d3b620dab 100644 --- a/vp10/encoder/rdopt.c +++ b/vp10/encoder/rdopt.c @@ -9033,11 +9033,26 @@ void vp10_rd_pick_inter_mode_sb(VP10_COMP *cpi, rate2 += vp10_cost_bit(cm->fc->ext_intra_probs[0], mbmi->ext_intra_mode_info.use_ext_intra_mode[0]); if (mbmi->ext_intra_mode_info.use_ext_intra_mode[0]) { - EXT_INTRA_MODE ext_intra_mode = - mbmi->ext_intra_mode_info.ext_intra_mode[0]; - rate2 += write_uniform_cost(FILTER_INTRA_MODES, ext_intra_mode); + rate2 += + write_uniform_cost(FILTER_INTRA_MODES, + mbmi->ext_intra_mode_info.ext_intra_mode[0]); } } + + if (mbmi->uv_mode != DC_PRED && mbmi->uv_mode != TM_PRED) { + rate2 += write_uniform_cost(2 * MAX_ANGLE_DELTAS + 1, + MAX_ANGLE_DELTAS + + mbmi->angle_delta[1]); + } + + if (ALLOW_FILTER_INTRA_MODES && mbmi->mode == DC_PRED) { + rate2 += vp10_cost_bit(cpi->common.fc->ext_intra_probs[1], + mbmi->ext_intra_mode_info.use_ext_intra_mode[1]); + if (mbmi->ext_intra_mode_info.use_ext_intra_mode[1]) + rate2 += + write_uniform_cost(FILTER_INTRA_MODES, + mbmi->ext_intra_mode_info.ext_intra_mode[1]); + } #endif // CONFIG_EXT_INTRA if (this_mode != DC_PRED && this_mode != TM_PRED) rate2 += intra_cost_penalty; -- 2.50.1