From b1823a7dd290b233739fa437673d9ff385d5f273 Mon Sep 17 00:00:00 2001 From: Yaowu Xu Date: Tue, 6 Dec 2011 07:37:39 -0800 Subject: [PATCH] fixed a crash when MODE_STATS is enabled The MODE_STATS macro was used to #ifdef around code for mode entropy stats collection, this commit fixed a crash when MODE_STATS is on. The commit also changed a number of array definitions to use defined macros instead of hard-coded numbers. Change-Id: I114592f53a1e44e31e455f5725f036ae6168735a --- vp8/encoder/encodeframe.c | 8 ++++---- vp8/encoder/ethreading.c | 12 ++++++------ vp8/encoder/onyx_if.c | 20 ++++++++++++-------- vp8/encoder/onyx_int.h | 4 ++-- vp8/encoder/ratectrl.c | 6 +++--- 5 files changed, 27 insertions(+), 23 deletions(-) diff --git a/vp8/encoder/encodeframe.c b/vp8/encoder/encodeframe.c index ac3058106..9474b999d 100644 --- a/vp8/encoder/encodeframe.c +++ b/vp8/encoder/encodeframe.c @@ -65,10 +65,10 @@ static void adjust_act_zbin( VP8_COMP *cpi, MACROBLOCK *x ); #ifdef MODE_STATS -unsigned int inter_y_modes[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +unsigned int inter_y_modes[MB_MODE_COUNT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; unsigned int inter_uv_modes[VP8_UV_MODES] = {0, 0, 0, 0}; -unsigned int inter_b_modes[15] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -unsigned int y_modes[VP8_YMODES] = {0, 0, 0, 0, 0}; +unsigned int inter_b_modes[B_MODE_COUNT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +unsigned int y_modes[VP8_YMODES] = {0, 0, 0, 0, 0, 0}; unsigned int i8x8_modes[VP8_I8X8_MODES]={0 }; unsigned int uv_modes[VP8_UV_MODES] = {0, 0, 0, 0}; unsigned int uv_modes_y[VP8_YMODES][VP8_UV_MODES]= @@ -80,7 +80,7 @@ unsigned int uv_modes_y[VP8_YMODES][VP8_UV_MODES]= {0, 0, 0, 0}, {0, 0, 0, 0} }; -unsigned int b_modes[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +unsigned int b_modes[B_MODE_COUNT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; #endif diff --git a/vp8/encoder/ethreading.c b/vp8/encoder/ethreading.c index f2fa5b360..67b708db3 100644 --- a/vp8/encoder/ethreading.c +++ b/vp8/encoder/ethreading.c @@ -25,12 +25,12 @@ extern void vp8_build_block_offsets(MACROBLOCK *x); extern void vp8_setup_block_ptrs(MACROBLOCK *x); #ifdef MODE_STATS -extern unsigned int inter_y_modes[10]; -extern unsigned int inter_uv_modes[4]; -extern unsigned int inter_b_modes[15]; -extern unsigned int y_modes[5]; -extern unsigned int uv_modes[4]; -extern unsigned int b_modes[14]; +extern unsigned int inter_y_modes[MB_MODE_COUNT]; +extern unsigned int inter_uv_modes[VP8_UV_MODES]; +extern unsigned int inter_b_modes[B_MODE_COUNT]; +extern unsigned int y_modes[VP8_YMODES]; +extern unsigned int uv_modes[VP8_UV_MODES]; +extern unsigned int b_modes[B_MODE_COUNT]; #endif extern void loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm); diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c index 7b9f08fe6..cc3a17579 100644 --- a/vp8/encoder/onyx_if.c +++ b/vp8/encoder/onyx_if.c @@ -148,10 +148,10 @@ extern int y_modes[VP8_YMODES] ; extern int i8x8_modes[VP8_I8X8_MODES]; extern int uv_modes[VP8_UV_MODES] ; extern int uv_modes_y[VP8_YMODES][VP8_UV_MODES]; -extern int b_modes[10] ; -extern int inter_y_modes[10] ; -extern int inter_uv_modes[4] ; -extern unsigned int inter_b_modes[15]; +extern int b_modes[B_MODE_COUNT]; +extern int inter_y_modes[MB_MODE_COUNT] ; +extern int inter_uv_modes[VP8_UV_MODES] ; +extern unsigned int inter_b_modes[B_MODE_COUNT]; #endif extern void (*vp8_short_fdct4x4)(short *input, short *output, int pitch); @@ -2748,10 +2748,14 @@ void vp8_remove_compressor(VP8_PTR *ptr) } fprintf(f, "Modes in Inter Frames:\n"); - fprintf(f, "Y: %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d\n", - inter_y_modes[0], inter_y_modes[1], inter_y_modes[2], inter_y_modes[3], inter_y_modes[4], - inter_y_modes[5], inter_y_modes[6], inter_y_modes[7], inter_y_modes[8], inter_y_modes[9]); - fprintf(f, "UV:%8d, %8d, %8d, %8d\n", inter_uv_modes[0], inter_uv_modes[1], inter_uv_modes[2], inter_uv_modes[3]); + fprintf(f, + "Y: %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d\n", + inter_y_modes[0], inter_y_modes[1], inter_y_modes[2], + inter_y_modes[3], inter_y_modes[4], inter_y_modes[5], + inter_y_modes[6], inter_y_modes[7], inter_y_modes[8], + inter_y_modes[9], inter_y_modes[10]); + fprintf(f, "UV:%8d, %8d, %8d, %8d\n", inter_uv_modes[0], + inter_uv_modes[1], inter_uv_modes[2], inter_uv_modes[3]); fprintf(f, "B: "); { int i; diff --git a/vp8/encoder/onyx_int.h b/vp8/encoder/onyx_int.h index 5ed58e430..ce36cdb96 100644 --- a/vp8/encoder/onyx_int.h +++ b/vp8/encoder/onyx_int.h @@ -77,10 +77,10 @@ typedef struct int y_modes[VP8_YMODES]; int uv_modes[VP8_UV_MODES]; int i8x8_modes[VP8_I8X8_MODES]; - int b_modes[10]; + int b_modes[B_MODE_COUNT]; int inter_y_modes[MB_MODE_COUNT]; int inter_uv_modes[VP8_UV_MODES]; - int inter_b_modes[10]; + int inter_b_modes[B_MODE_COUNT]; #endif /* interframe intra mode probs */ vp8_prob ymode_prob[VP8_YMODES-1], uv_mode_prob[VP8_UV_MODES-1]; diff --git a/vp8/encoder/ratectrl.c b/vp8/encoder/ratectrl.c index 2ab16ed11..d510ad958 100644 --- a/vp8/encoder/ratectrl.c +++ b/vp8/encoder/ratectrl.c @@ -35,11 +35,11 @@ extern const MV_REFERENCE_FRAME vp8_ref_frame_order[MAX_MODES]; #ifdef MODE_STATS extern int y_modes[VP8_YMODES]; extern int uv_modes[VP8_UV_MODES]; -extern int b_modes[10]; +extern int b_modes[B_MODE_COUNT]; -extern int inter_y_modes[10]; +extern int inter_y_modes[MB_MODE_COUNT]; extern int inter_uv_modes[VP8_UV_MODES]; -extern int inter_b_modes[10]; +extern int inter_b_modes[B_MODE_COUNT]; #endif // Bits Per MB at different Q (Multiplied by 512) -- 2.40.0