From: Alex Converse Date: Fri, 14 Feb 2014 22:46:29 +0000 (-0800) Subject: Only track mode_chosen_counts if CONFIG_INTERNAL_STATS. X-Git-Tag: v1.4.0~2313^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=657519192ed3bda91699a9d57d3619b691638bde;p=libvpx Only track mode_chosen_counts if CONFIG_INTERNAL_STATS. Change-Id: Ia9252ad0caa4d2bda529a3fe93efcb31e7eb2da0 --- diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index ce8614639..826b0c10c 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -398,7 +398,6 @@ static void update_state(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx, MB_MODE_INFO *const mbmi = &xd->mi_8x8[0]->mbmi; MODE_INFO *mi_addr = xd->mi_8x8[0]; - const int mb_mode_index = ctx->best_mode_index; const int mis = cm->mode_info_stride; const int mi_width = num_8x8_blocks_wide_lookup[bsize]; const int mi_height = num_8x8_blocks_high_lookup[bsize]; @@ -470,8 +469,8 @@ static void update_state(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx, cpi->rd_tx_select_diff[i] += ctx->tx_rd_diff[i]; } - if (frame_is_intra_only(cm)) { #if CONFIG_INTERNAL_STATS + if (frame_is_intra_only(cm)) { static const int kf_mode_index[] = { THR_DC /*DC_PRED*/, THR_V_PRED /*V_PRED*/, @@ -484,12 +483,13 @@ static void update_state(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx, THR_D63_PRED /*D63_PRED*/, THR_TM /*TM_PRED*/, }; - cpi->mode_chosen_counts[kf_mode_index[mbmi->mode]]++; -#endif + ++cpi->mode_chosen_counts[kf_mode_index[mbmi->mode]]; } else { // Note how often each mode chosen as best - cpi->mode_chosen_counts[mb_mode_index]++; - + ++cpi->mode_chosen_counts[ctx->best_mode_index]; + } +#endif + if (!frame_is_intra_only(cm)) { if (is_inter_block(mbmi)) { if (mbmi->sb_type < BLOCK_8X8 || mbmi->mode == NEWMV) { int_mv best_mv[2]; @@ -1049,11 +1049,10 @@ static void update_state_rt(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx, MACROBLOCKD *const xd = &x->e_mbd; MB_MODE_INFO *const mbmi = &xd->mi_8x8[0]->mbmi; - const int mb_mode_index = ctx->best_mode_index; x->skip = ctx->skip; - if (frame_is_intra_only(cm)) { #if CONFIG_INTERNAL_STATS + if (frame_is_intra_only(cm)) { static const int kf_mode_index[] = { THR_DC /*DC_PRED*/, THR_V_PRED /*V_PRED*/, @@ -1067,10 +1066,12 @@ static void update_state_rt(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx, THR_TM /*TM_PRED*/, }; ++cpi->mode_chosen_counts[kf_mode_index[mbmi->mode]]; -#endif } else { // Note how often each mode chosen as best - cpi->mode_chosen_counts[mb_mode_index]++; + ++cpi->mode_chosen_counts[ctx->best_mode_index]; + } +#endif + if (!frame_is_intra_only(cm)) { if (is_inter_block(mbmi)) { if (mbmi->sb_type < BLOCK_8X8 || mbmi->mode == NEWMV) { int_mv best_mv[2]; diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c index cdb03c00c..58290a278 100644 --- a/vp9/encoder/vp9_onyx_if.c +++ b/vp9/encoder/vp9_onyx_if.c @@ -875,8 +875,10 @@ void vp9_set_speed_features(VP9_COMP *cpi) { if (speed < 0) speed = -speed; +#if CONFIG_INTERNAL_STATS for (i = 0; i < MAX_MODES; ++i) cpi->mode_chosen_counts[i] = 0; +#endif // best quality defaults sf->frame_parameter_update = 1; @@ -2782,8 +2784,6 @@ static void output_frame_level_debug_stats(VP9_COMP *cpi) { for (i = 0; i < MAX_MODES; ++i) fprintf(fmodes, "%5d ", cpi->mode_chosen_counts[i]); - for (i = 0; i < MAX_REFS; ++i) - fprintf(fmodes, "%5d ", cpi->sub8x8_mode_chosen_counts[i]); fprintf(fmodes, "\n"); diff --git a/vp9/encoder/vp9_onyx_int.h b/vp9/encoder/vp9_onyx_int.h index 7c0135eb5..813342011 100644 --- a/vp9/encoder/vp9_onyx_int.h +++ b/vp9/encoder/vp9_onyx_int.h @@ -486,9 +486,6 @@ typedef struct VP9_COMP { // Ambient reconstruction err target for force key frames int ambient_err; - unsigned int mode_chosen_counts[MAX_MODES]; - unsigned int sub8x8_mode_chosen_counts[MAX_REFS]; - int rd_threshes[MAX_SEGMENTS][BLOCK_SIZES][MAX_MODES]; int rd_thresh_freq_fact[BLOCK_SIZES][MAX_MODES]; int rd_thresh_sub8x8[MAX_SEGMENTS][BLOCK_SIZES][MAX_REFS]; @@ -586,6 +583,8 @@ typedef struct VP9_COMP { int fixed_divide[512]; #if CONFIG_INTERNAL_STATS + unsigned int mode_chosen_counts[MAX_MODES]; + int count; double total_y; double total_u;