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
This commit is contained in:
Yaowu Xu
2011-12-06 07:37:39 -08:00
parent d0e3acf98c
commit b1823a7dd2
5 changed files with 27 additions and 23 deletions

View File

@@ -65,10 +65,10 @@ static void adjust_act_zbin( VP8_COMP *cpi, MACROBLOCK *x );
#ifdef MODE_STATS #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_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 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}; unsigned int y_modes[VP8_YMODES] = {0, 0, 0, 0, 0, 0};
unsigned int i8x8_modes[VP8_I8X8_MODES]={0 }; unsigned int i8x8_modes[VP8_I8X8_MODES]={0 };
unsigned int uv_modes[VP8_UV_MODES] = {0, 0, 0, 0}; unsigned int uv_modes[VP8_UV_MODES] = {0, 0, 0, 0};
unsigned int uv_modes_y[VP8_YMODES][VP8_UV_MODES]= 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},
{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 #endif

View File

@@ -25,12 +25,12 @@ extern void vp8_build_block_offsets(MACROBLOCK *x);
extern void vp8_setup_block_ptrs(MACROBLOCK *x); extern void vp8_setup_block_ptrs(MACROBLOCK *x);
#ifdef MODE_STATS #ifdef MODE_STATS
extern unsigned int inter_y_modes[10]; extern unsigned int inter_y_modes[MB_MODE_COUNT];
extern unsigned int inter_uv_modes[4]; extern unsigned int inter_uv_modes[VP8_UV_MODES];
extern unsigned int inter_b_modes[15]; extern unsigned int inter_b_modes[B_MODE_COUNT];
extern unsigned int y_modes[5]; extern unsigned int y_modes[VP8_YMODES];
extern unsigned int uv_modes[4]; extern unsigned int uv_modes[VP8_UV_MODES];
extern unsigned int b_modes[14]; extern unsigned int b_modes[B_MODE_COUNT];
#endif #endif
extern void loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm); extern void loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm);

View File

@@ -148,10 +148,10 @@ extern int y_modes[VP8_YMODES] ;
extern int i8x8_modes[VP8_I8X8_MODES]; extern int i8x8_modes[VP8_I8X8_MODES];
extern int uv_modes[VP8_UV_MODES] ; extern int uv_modes[VP8_UV_MODES] ;
extern int uv_modes_y[VP8_YMODES][VP8_UV_MODES]; extern int uv_modes_y[VP8_YMODES][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[4] ; extern int inter_uv_modes[VP8_UV_MODES] ;
extern unsigned int inter_b_modes[15]; extern unsigned int inter_b_modes[B_MODE_COUNT];
#endif #endif
extern void (*vp8_short_fdct4x4)(short *input, short *output, int pitch); 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, "Modes in Inter Frames:\n");
fprintf(f, "Y: %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d\n", fprintf(f,
inter_y_modes[0], inter_y_modes[1], inter_y_modes[2], inter_y_modes[3], inter_y_modes[4], "Y: %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d, %8d\n",
inter_y_modes[5], inter_y_modes[6], inter_y_modes[7], inter_y_modes[8], inter_y_modes[9]); inter_y_modes[0], inter_y_modes[1], inter_y_modes[2],
fprintf(f, "UV:%8d, %8d, %8d, %8d\n", inter_uv_modes[0], inter_uv_modes[1], inter_uv_modes[2], inter_uv_modes[3]); 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: "); fprintf(f, "B: ");
{ {
int i; int i;

View File

@@ -77,10 +77,10 @@ typedef struct
int y_modes[VP8_YMODES]; int y_modes[VP8_YMODES];
int uv_modes[VP8_UV_MODES]; int uv_modes[VP8_UV_MODES];
int i8x8_modes[VP8_I8X8_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_y_modes[MB_MODE_COUNT];
int inter_uv_modes[VP8_UV_MODES]; int inter_uv_modes[VP8_UV_MODES];
int inter_b_modes[10]; int inter_b_modes[B_MODE_COUNT];
#endif #endif
/* interframe intra mode probs */ /* interframe intra mode probs */
vp8_prob ymode_prob[VP8_YMODES-1], uv_mode_prob[VP8_UV_MODES-1]; vp8_prob ymode_prob[VP8_YMODES-1], uv_mode_prob[VP8_UV_MODES-1];

View File

@@ -35,11 +35,11 @@ extern const MV_REFERENCE_FRAME vp8_ref_frame_order[MAX_MODES];
#ifdef MODE_STATS #ifdef MODE_STATS
extern int y_modes[VP8_YMODES]; extern int y_modes[VP8_YMODES];
extern int uv_modes[VP8_UV_MODES]; 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_uv_modes[VP8_UV_MODES];
extern int inter_b_modes[10]; extern int inter_b_modes[B_MODE_COUNT];
#endif #endif
// Bits Per MB at different Q (Multiplied by 512) // Bits Per MB at different Q (Multiplied by 512)