Merge changes I7e96d619,I9a7631d5

* changes:
  normalize int64_t high value to INT64_MAX
  resolve issue with arm code failing unit test
This commit is contained in:
Yaowu Xu 2014-02-25 08:22:49 -08:00 committed by Gerrit Code Review
commit b67bd637e0
2 changed files with 25 additions and 29 deletions

View File

@ -1211,13 +1211,11 @@ static void rd_use_partition(VP9_COMP *cpi,
ENTROPY_CONTEXT l[16 * MAX_MB_PLANE], a[16 * MAX_MB_PLANE];
PARTITION_CONTEXT sl[8], sa[8];
int last_part_rate = INT_MAX;
int64_t last_part_dist = INT_MAX;
int split_rate = INT_MAX;
int64_t split_dist = INT_MAX;
int64_t last_part_dist = INT64_MAX;
int none_rate = INT_MAX;
int64_t none_dist = INT_MAX;
int64_t none_dist = INT64_MAX;
int chosen_rate = INT_MAX;
int64_t chosen_dist = INT_MAX;
int64_t chosen_dist = INT64_MAX;
BLOCK_SIZE sub_subsize = BLOCK_4X4;
int splits_below = 0;
BLOCK_SIZE bs_type = mi_8x8[0]->mbmi.sb_type;
@ -1300,9 +1298,9 @@ static void rd_use_partition(VP9_COMP *cpi,
*get_sb_index(x, subsize) = 1;
rd_pick_sb_modes(cpi, tile, mi_row + (ms >> 1), mi_col, &rt, &dt,
subsize, get_block_context(x, subsize), INT64_MAX);
if (rt == INT_MAX || dt == INT_MAX) {
if (rt == INT_MAX || dt == INT64_MAX) {
last_part_rate = INT_MAX;
last_part_dist = INT_MAX;
last_part_dist = INT64_MAX;
break;
}
@ -1324,9 +1322,9 @@ static void rd_use_partition(VP9_COMP *cpi,
*get_sb_index(x, subsize) = 1;
rd_pick_sb_modes(cpi, tile, mi_row, mi_col + (ms >> 1), &rt, &dt,
subsize, get_block_context(x, subsize), INT64_MAX);
if (rt == INT_MAX || dt == INT_MAX) {
if (rt == INT_MAX || dt == INT64_MAX) {
last_part_rate = INT_MAX;
last_part_dist = INT_MAX;
last_part_dist = INT64_MAX;
break;
}
last_part_rate += rt;
@ -1352,9 +1350,9 @@ static void rd_use_partition(VP9_COMP *cpi,
rd_use_partition(cpi, tile, mi_8x8 + jj * bss * mis + ii * bss, tp,
mi_row + y_idx, mi_col + x_idx, subsize, &rt, &dt,
i != 3);
if (rt == INT_MAX || dt == INT_MAX) {
if (rt == INT_MAX || dt == INT64_MAX) {
last_part_rate = INT_MAX;
last_part_dist = INT_MAX;
last_part_dist = INT64_MAX;
break;
}
last_part_rate += rt;
@ -1375,8 +1373,8 @@ static void rd_use_partition(VP9_COMP *cpi,
&& (mi_row + ms < cm->mi_rows || mi_row + (ms >> 1) == cm->mi_rows)
&& (mi_col + ms < cm->mi_cols || mi_col + (ms >> 1) == cm->mi_cols)) {
BLOCK_SIZE split_subsize = get_subsize(bsize, PARTITION_SPLIT);
split_rate = 0;
split_dist = 0;
chosen_rate = 0;
chosen_dist = 0;
restore_context(cpi, mi_row, mi_col, a, l, sa, sl, bsize);
// Split partition.
@ -1403,31 +1401,29 @@ static void rd_use_partition(VP9_COMP *cpi,
restore_context(cpi, mi_row, mi_col, a, l, sa, sl, bsize);
if (rt == INT_MAX || dt == INT_MAX) {
split_rate = INT_MAX;
split_dist = INT_MAX;
if (rt == INT_MAX || dt == INT64_MAX) {
chosen_rate = INT_MAX;
chosen_dist = INT64_MAX;
break;
}
chosen_rate += rt;
chosen_dist += dt;
if (i != 3)
encode_sb(cpi, tile, tp, mi_row + y_idx, mi_col + x_idx, 0,
split_subsize);
split_rate += rt;
split_dist += dt;
pl = partition_plane_context(cpi->above_seg_context,
cpi->left_seg_context,
mi_row + y_idx, mi_col + x_idx,
split_subsize);
split_rate += x->partition_cost[pl][PARTITION_NONE];
chosen_rate += x->partition_cost[pl][PARTITION_NONE];
}
pl = partition_plane_context(cpi->above_seg_context, cpi->left_seg_context,
mi_row, mi_col, bsize);
if (split_rate < INT_MAX) {
split_rate += x->partition_cost[pl][PARTITION_SPLIT];
chosen_rate = split_rate;
chosen_dist = split_dist;
if (chosen_rate < INT_MAX) {
chosen_rate += x->partition_cost[pl][PARTITION_SPLIT];
}
}
@ -1454,7 +1450,7 @@ static void rd_use_partition(VP9_COMP *cpi,
// We must have chosen a partitioning and encoding or we'll fail later on.
// No other opportunities for success.
if ( bsize == BLOCK_64X64)
assert(chosen_rate < INT_MAX && chosen_dist < INT_MAX);
assert(chosen_rate < INT_MAX && chosen_dist < INT64_MAX);
if (do_recon) {
int output_enabled = (bsize == BLOCK_64X64);
@ -1912,7 +1908,7 @@ static void rd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
if (bsize == BLOCK_64X64) {
assert(tp_orig < *tp);
assert(best_rate < INT_MAX);
assert(best_dist < INT_MAX);
assert(best_dist < INT64_MAX);
} else {
assert(tp_orig == *tp);
}
@ -2266,7 +2262,7 @@ static void rtc_use_partition(VP9_COMP *cpi,
int br, bc;
int i, j;
int chosen_rate = INT_MAX;
int64_t chosen_dist = INT_MAX;
int64_t chosen_dist = INT64_MAX;
MB_PREDICTION_MODE mode = DC_PRED;
int rows = MIN(MI_BLOCK_SIZE, tile->mi_row_end - mi_row);
int cols = MIN(MI_BLOCK_SIZE, tile->mi_col_end - mi_col);

View File

@ -3238,7 +3238,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
int64_t tx_cache[TX_MODES];
int i;
int this_skip2 = 0;
int64_t total_sse = INT_MAX;
int64_t total_sse = INT64_MAX;
int early_term = 0;
// Look at the reference frame of the best mode so far and set the
@ -4367,7 +4367,7 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
if (best_rd == INT64_MAX && bsize < BLOCK_8X8) {
*returnrate = INT_MAX;
*returndistortion = INT_MAX;
*returndistortion = INT64_MAX;
return best_rd;
}