Shares one set of RD costs tables between all encoding threads

RD costs were local to MACROBLOCK data and had to be copied all the
time to each thread's MACROBLOCK data. Tables moved to a common place
and only pointers are setup for each encoding thread.

vp8_cost_tokens() generates 'int' costs so changed all types to be
int (i.e. removed unsigned).

NOTE: Could do some more cleaning in vp8cx_init_mbrthread_data().

Change-Id: Ifa4de4c6286dffaca7ed3082041fe5af1345ddc0
This commit is contained in:
Attila Nagy
2012-04-17 10:40:56 +03:00
committed by Yunqing Wang
parent 11876faa11
commit b41c17d625
8 changed files with 90 additions and 65 deletions

View File

@@ -693,6 +693,17 @@ typedef struct VP8_COMP
int mr_low_res_mb_cols;
#endif
struct rd_costs_struct
{
int mvcosts[2][MVvals+1];
int mvsadcosts[2][MVfpvals+1];
int mbmode_cost[2][MB_MODE_COUNT];
int intra_uv_mode_cost[2][MB_MODE_COUNT];
int bmode_costs[10][10][10];
int inter_bmode_costs[B_MODE_COUNT];
int token_costs[BLOCK_TYPES][COEF_BANDS]
[PREV_COEF_CONTEXTS][MAX_ENTROPY_TOKENS];
} rd_costs;
} VP8_COMP;
void control_data_rate(VP8_COMP *cpi);