Merge "Using is_inter_block and has_second_ref functions."

This commit is contained in:
Dmitry Kovalev 2013-09-29 12:14:41 -07:00 коммит произвёл Gerrit Code Review
Родитель 29815ca729 eda4e24c0d
Коммит b927620231
4 изменённых файлов: 15 добавлений и 21 удалений

Просмотреть файл

@ -55,13 +55,11 @@ static MB_PREDICTION_MODE left_block_mode(const MODE_INFO *cur_mb,
if (!mi) if (!mi)
return DC_PRED; return DC_PRED;
if (mi->mbmi.ref_frame[0] != INTRA_FRAME) { if (is_inter_block(&mi->mbmi))
return DC_PRED; return DC_PRED;
} else if (mi->mbmi.sb_type < BLOCK_8X8) { else
return ((mi->bmi + 1 + b)->as_mode); return mi->mbmi.sb_type < BLOCK_8X8 ? (mi->bmi + 1 + b)->as_mode
} else { : mi->mbmi.mode;
return mi->mbmi.mode;
}
} }
assert(b == 1 || b == 3); assert(b == 1 || b == 3);
return (mi->bmi + b - 1)->as_mode; return (mi->bmi + b - 1)->as_mode;
@ -77,13 +75,11 @@ static MB_PREDICTION_MODE above_block_mode(const MODE_INFO *cur_mb,
if (!mi) if (!mi)
return DC_PRED; return DC_PRED;
if (mi->mbmi.ref_frame[0] != INTRA_FRAME) { if (is_inter_block(&mi->mbmi))
return DC_PRED; return DC_PRED;
} else if (mi->mbmi.sb_type < BLOCK_8X8) { else
return ((mi->bmi + 2 + b)->as_mode); return mi->mbmi.sb_type < BLOCK_8X8 ? (mi->bmi + 2 + b)->as_mode
} else { : mi->mbmi.mode;
return mi->mbmi.mode;
}
} }
return (mi->bmi + b - 2)->as_mode; return (mi->bmi + b - 2)->as_mode;

Просмотреть файл

@ -132,7 +132,7 @@ static void build_inter_predictors(int plane, int block, BLOCK_SIZE bsize,
const int x = 4 * (block & ((1 << bwl) - 1)); const int x = 4 * (block & ((1 << bwl) - 1));
const int y = 4 * (block >> bwl); const int y = 4 * (block >> bwl);
const MODE_INFO *mi = xd->this_mi; const MODE_INFO *mi = xd->this_mi;
const int use_second_ref = mi->mbmi.ref_frame[1] > 0; const int is_compound = has_second_ref(&mi->mbmi);
int ref; int ref;
assert(x < bw); assert(x < bw);
@ -140,7 +140,7 @@ static void build_inter_predictors(int plane, int block, BLOCK_SIZE bsize,
assert(mi->mbmi.sb_type < BLOCK_8X8 || 4 << pred_w == bw); assert(mi->mbmi.sb_type < BLOCK_8X8 || 4 << pred_w == bw);
assert(mi->mbmi.sb_type < BLOCK_8X8 || 4 << pred_h == bh); assert(mi->mbmi.sb_type < BLOCK_8X8 || 4 << pred_h == bh);
for (ref = 0; ref < 1 + use_second_ref; ++ref) { for (ref = 0; ref < 1 + is_compound; ++ref) {
struct scale_factors *const scale = &xd->scale_factor[ref]; struct scale_factors *const scale = &xd->scale_factor[ref];
struct buf_2d *const pre_buf = &pd->pre[ref]; struct buf_2d *const pre_buf = &pd->pre[ref];
struct buf_2d *const dst_buf = &pd->dst; struct buf_2d *const dst_buf = &pd->dst;

Просмотреть файл

@ -2736,7 +2736,7 @@ static void encode_superblock(VP9_COMP *cpi, TOKENEXTRA **t, int output_enabled,
int idx = cm->ref_frame_map[get_ref_frame_idx(cpi, mbmi->ref_frame[0])]; int idx = cm->ref_frame_map[get_ref_frame_idx(cpi, mbmi->ref_frame[0])];
YV12_BUFFER_CONFIG *ref_fb = &cm->yv12_fb[idx]; YV12_BUFFER_CONFIG *ref_fb = &cm->yv12_fb[idx];
YV12_BUFFER_CONFIG *second_ref_fb = NULL; YV12_BUFFER_CONFIG *second_ref_fb = NULL;
if (mbmi->ref_frame[1] > 0) { if (has_second_ref(mbmi)) {
idx = cm->ref_frame_map[get_ref_frame_idx(cpi, mbmi->ref_frame[1])]; idx = cm->ref_frame_map[get_ref_frame_idx(cpi, mbmi->ref_frame[1])];
second_ref_fb = &cm->yv12_fb[idx]; second_ref_fb = &cm->yv12_fb[idx];
} }

Просмотреть файл

@ -2653,7 +2653,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
VP9_COMMON *cm = &cpi->common; VP9_COMMON *cm = &cpi->common;
MACROBLOCKD *xd = &x->e_mbd; MACROBLOCKD *xd = &x->e_mbd;
MB_MODE_INFO *mbmi = &xd->this_mi->mbmi; MB_MODE_INFO *mbmi = &xd->this_mi->mbmi;
const int is_comp_pred = (mbmi->ref_frame[1] > 0); const int is_comp_pred = has_second_ref(mbmi);
const int num_refs = is_comp_pred ? 2 : 1; const int num_refs = is_comp_pred ? 2 : 1;
const int this_mode = mbmi->mode; const int this_mode = mbmi->mode;
int_mv *frame_mv = mode_mv[this_mode]; int_mv *frame_mv = mode_mv[this_mode];
@ -4025,13 +4025,11 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
if (best_mbmode.ref_frame[0] != INTRA_FRAME && if (best_mbmode.ref_frame[0] != INTRA_FRAME &&
best_mbmode.sb_type < BLOCK_8X8) { best_mbmode.sb_type < BLOCK_8X8) {
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
xd->this_mi->bmi[i].as_mv[0].as_int = xd->this_mi->bmi[i].as_mv[0].as_int = best_bmodes[i].as_mv[0].as_int;
best_bmodes[i].as_mv[0].as_int;
if (mbmi->ref_frame[1] > 0) if (has_second_ref(mbmi))
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
xd->this_mi->bmi[i].as_mv[1].as_int = xd->this_mi->bmi[i].as_mv[1].as_int = best_bmodes[i].as_mv[1].as_int;
best_bmodes[i].as_mv[1].as_int;
*x->partition_info = best_partition; *x->partition_info = best_partition;