From 91907e0bf445e63e24257296248d96396cdeb731 Mon Sep 17 00:00:00 2001 From: John Koleszar Date: Wed, 8 Jun 2011 13:08:12 -0400 Subject: [PATCH] vp8_pick_intra_mode: correct returned rate The returned rate was always the 4x4 rate, instead of the rate matching the selected mode. Change-Id: I51da31f80884f5e37f3bcc77d1047d31e612ded4 --- vp8/encoder/pickinter.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/vp8/encoder/pickinter.c b/vp8/encoder/pickinter.c index 021ab7f..b1dddd7 100644 --- a/vp8/encoder/pickinter.c +++ b/vp8/encoder/pickinter.c @@ -972,7 +972,7 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, void vp8_pick_intra_mode(VP8_COMP *cpi, MACROBLOCK *x, int *rate_) { int error4x4, error16x16 = INT_MAX; - int rate, distortion, best_distortion; + int rate, best_rate = 0, distortion, best_distortion; MB_PREDICTION_MODE mode, best_mode = DC_PRED; int this_rd; @@ -995,6 +995,7 @@ void vp8_pick_intra_mode(VP8_COMP *cpi, MACROBLOCK *x, int *rate_) error16x16 = this_rd; best_mode = mode; best_distortion = distortion; + best_rate = rate; } } x->e_mbd.mode_info_context->mbmi.mode = best_mode; @@ -1002,7 +1003,10 @@ void vp8_pick_intra_mode(VP8_COMP *cpi, MACROBLOCK *x, int *rate_) error4x4 = pick_intra4x4mby_modes(IF_RTCD(&cpi->rtcd), x, &rate, &best_distortion); if (error4x4 < error16x16) + { x->e_mbd.mode_info_context->mbmi.mode = B_PRED; + best_rate = rate; + } - *rate_ = rate; + *rate_ = best_rate; } -- 2.7.4