Deprecate the use of PARTITION_INFO from encoder
Use b_mode_info to store the inter prediction mode of sub8x8 block, in replacement of the use of partition_info. Remove redundant buffer update for partition_info. For bus_cif at 2000 kbps, this seem to make speed 0 about 1% faster. Change-Id: Id1b3be45e75a24fb4b42335ac480c23e440978f6
This commit is contained in:
parent
b4148c3a03
commit
03fe08ca30
@ -406,8 +406,6 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) {
|
|||||||
const BLOCK_SIZE bsize = mi->sb_type;
|
const BLOCK_SIZE bsize = mi->sb_type;
|
||||||
const int allow_hp = xd->allow_high_precision_mv;
|
const int allow_hp = xd->allow_high_precision_mv;
|
||||||
|
|
||||||
x->partition_info = x->pi + (m - cm->mi);
|
|
||||||
|
|
||||||
#ifdef ENTROPY_STATS
|
#ifdef ENTROPY_STATS
|
||||||
active_section = 9;
|
active_section = 9;
|
||||||
#endif
|
#endif
|
||||||
@ -489,7 +487,7 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) {
|
|||||||
for (idy = 0; idy < 2; idy += num_4x4_blocks_high) {
|
for (idy = 0; idy < 2; idy += num_4x4_blocks_high) {
|
||||||
for (idx = 0; idx < 2; idx += num_4x4_blocks_wide) {
|
for (idx = 0; idx < 2; idx += num_4x4_blocks_wide) {
|
||||||
const int j = idy * 2 + idx;
|
const int j = idy * 2 + idx;
|
||||||
const MB_PREDICTION_MODE blockmode = x->partition_info->bmi[j].mode;
|
const MB_PREDICTION_MODE blockmode = m->bmi[j].as_mode;
|
||||||
write_sb_mv_ref(bc, blockmode, mv_ref_p);
|
write_sb_mv_ref(bc, blockmode, mv_ref_p);
|
||||||
++cm->counts.inter_mode[mi->mode_context[rf]]
|
++cm->counts.inter_mode[mi->mode_context[rf]]
|
||||||
[inter_mode_offset(blockmode)];
|
[inter_mode_offset(blockmode)];
|
||||||
|
@ -23,16 +23,9 @@ typedef struct {
|
|||||||
int offset;
|
int offset;
|
||||||
} search_site;
|
} search_site;
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
struct {
|
|
||||||
MB_PREDICTION_MODE mode;
|
|
||||||
} bmi[4];
|
|
||||||
} PARTITION_INFO;
|
|
||||||
|
|
||||||
// Structure to hold snapshot of coding context during the mode picking process
|
// Structure to hold snapshot of coding context during the mode picking process
|
||||||
typedef struct {
|
typedef struct {
|
||||||
MODE_INFO mic;
|
MODE_INFO mic;
|
||||||
PARTITION_INFO partition_info;
|
|
||||||
unsigned char zcoeff_blk[256];
|
unsigned char zcoeff_blk[256];
|
||||||
int skip;
|
int skip;
|
||||||
int_mv best_ref_mv;
|
int_mv best_ref_mv;
|
||||||
@ -87,9 +80,6 @@ struct macroblock {
|
|||||||
|
|
||||||
MACROBLOCKD e_mbd;
|
MACROBLOCKD e_mbd;
|
||||||
int skip_block;
|
int skip_block;
|
||||||
PARTITION_INFO *partition_info; /* work pointer */
|
|
||||||
PARTITION_INFO *pi; /* Corresponds to upper left visible macroblock */
|
|
||||||
PARTITION_INFO *pip; /* Base of allocated array */
|
|
||||||
|
|
||||||
search_site *ss;
|
search_site *ss;
|
||||||
int ss_count;
|
int ss_count;
|
||||||
|
@ -381,7 +381,6 @@ static void update_state(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (is_inter_block(mbmi) && mbmi->sb_type < BLOCK_8X8) {
|
if (is_inter_block(mbmi) && mbmi->sb_type < BLOCK_8X8) {
|
||||||
*x->partition_info = ctx->partition_info;
|
|
||||||
mbmi->mv[0].as_int = mi->bmi[3].as_mv[0].as_int;
|
mbmi->mv[0].as_int = mi->bmi[3].as_mv[0].as_int;
|
||||||
mbmi->mv[1].as_int = mi->bmi[3].as_mv[1].as_int;
|
mbmi->mv[1].as_int = mi->bmi[3].as_mv[1].as_int;
|
||||||
}
|
}
|
||||||
@ -492,9 +491,6 @@ static void set_offsets(VP9_COMP *cpi, int mi_row, int mi_col,
|
|||||||
x->mb_activity_ptr = &cpi->mb_activity_map[idx_map];
|
x->mb_activity_ptr = &cpi->mb_activity_map[idx_map];
|
||||||
x->active_ptr = cpi->active_map + idx_map;
|
x->active_ptr = cpi->active_map + idx_map;
|
||||||
|
|
||||||
/* pointers to mode info contexts */
|
|
||||||
x->partition_info = x->pi + idx_str;
|
|
||||||
|
|
||||||
xd->mi_8x8 = cm->mi_grid_visible + idx_str;
|
xd->mi_8x8 = cm->mi_grid_visible + idx_str;
|
||||||
xd->prev_mi_8x8 = cm->prev_mi_grid_visible + idx_str;
|
xd->prev_mi_8x8 = cm->prev_mi_grid_visible + idx_str;
|
||||||
|
|
||||||
|
@ -337,7 +337,7 @@ void vp9_update_mv_count(VP9_COMP *cpi, MACROBLOCK *x, int_mv best_ref_mv[2]) {
|
|||||||
for (idy = 0; idy < 2; idy += num_4x4_h) {
|
for (idy = 0; idy < 2; idy += num_4x4_h) {
|
||||||
for (idx = 0; idx < 2; idx += num_4x4_w) {
|
for (idx = 0; idx < 2; idx += num_4x4_w) {
|
||||||
const int i = idy * 2 + idx;
|
const int i = idy * 2 + idx;
|
||||||
if (x->partition_info->bmi[i].mode == NEWMV)
|
if (mi->bmi[i].as_mode == NEWMV)
|
||||||
inc_mvs(mi->bmi[i].as_mv, best_ref_mv, is_compound, &cpi->NMVcount);
|
inc_mvs(mi->bmi[i].as_mv, best_ref_mv, is_compound, &cpi->NMVcount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -515,7 +515,6 @@ void vp9_first_pass(VP9_COMP *cpi) {
|
|||||||
setup_pre_planes(xd, 0, lst_yv12, 0, 0, NULL);
|
setup_pre_planes(xd, 0, lst_yv12, 0, 0, NULL);
|
||||||
setup_dst_planes(xd, new_yv12, 0, 0);
|
setup_dst_planes(xd, new_yv12, 0, 0);
|
||||||
|
|
||||||
x->partition_info = x->pi;
|
|
||||||
xd->mi_8x8 = cm->mi_grid_visible;
|
xd->mi_8x8 = cm->mi_grid_visible;
|
||||||
// required for vp9_frame_init_quantizer
|
// required for vp9_frame_init_quantizer
|
||||||
xd->this_mi =
|
xd->this_mi =
|
||||||
|
@ -309,9 +309,6 @@ static void dealloc_compressor_data(VP9_COMP *cpi) {
|
|||||||
cpi->mb_activity_map = 0;
|
cpi->mb_activity_map = 0;
|
||||||
vpx_free(cpi->mb_norm_activity_map);
|
vpx_free(cpi->mb_norm_activity_map);
|
||||||
cpi->mb_norm_activity_map = 0;
|
cpi->mb_norm_activity_map = 0;
|
||||||
|
|
||||||
vpx_free(cpi->mb.pip);
|
|
||||||
cpi->mb.pip = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Computes a q delta (in "q index" terms) to get from a starting q value
|
// Computes a q delta (in "q index" terms) to get from a starting q value
|
||||||
@ -983,20 +980,6 @@ static void alloc_raw_frame_buffers(VP9_COMP *cpi) {
|
|||||||
"Failed to allocate altref buffer");
|
"Failed to allocate altref buffer");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int alloc_partition_data(VP9_COMP *cpi) {
|
|
||||||
vpx_free(cpi->mb.pip);
|
|
||||||
|
|
||||||
cpi->mb.pip = vpx_calloc(cpi->common.mode_info_stride *
|
|
||||||
(cpi->common.mi_rows + MI_BLOCK_SIZE),
|
|
||||||
sizeof(PARTITION_INFO));
|
|
||||||
if (!cpi->mb.pip)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
cpi->mb.pi = cpi->mb.pip + cpi->common.mode_info_stride + 1;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void vp9_alloc_compressor_data(VP9_COMP *cpi) {
|
void vp9_alloc_compressor_data(VP9_COMP *cpi) {
|
||||||
VP9_COMMON *cm = &cpi->common;
|
VP9_COMMON *cm = &cpi->common;
|
||||||
|
|
||||||
@ -1004,10 +987,6 @@ void vp9_alloc_compressor_data(VP9_COMP *cpi) {
|
|||||||
vpx_internal_error(&cpi->common.error, VPX_CODEC_MEM_ERROR,
|
vpx_internal_error(&cpi->common.error, VPX_CODEC_MEM_ERROR,
|
||||||
"Failed to allocate frame buffers");
|
"Failed to allocate frame buffers");
|
||||||
|
|
||||||
if (alloc_partition_data(cpi))
|
|
||||||
vpx_internal_error(&cpi->common.error, VPX_CODEC_MEM_ERROR,
|
|
||||||
"Failed to allocate partition data");
|
|
||||||
|
|
||||||
if (vp9_alloc_frame_buffer(&cpi->last_frame_uf,
|
if (vp9_alloc_frame_buffer(&cpi->last_frame_uf,
|
||||||
cm->width, cm->height,
|
cm->width, cm->height,
|
||||||
cm->subsampling_x, cm->subsampling_y,
|
cm->subsampling_x, cm->subsampling_y,
|
||||||
|
@ -1499,7 +1499,8 @@ static int labels2mode(MACROBLOCK *x, int i,
|
|||||||
if (has_second_rf)
|
if (has_second_rf)
|
||||||
mic->bmi[i].as_mv[1].as_int = this_second_mv->as_int;
|
mic->bmi[i].as_mv[1].as_int = this_second_mv->as_int;
|
||||||
|
|
||||||
x->partition_info->bmi[i].mode = m;
|
mic->bmi[i].as_mode = m;
|
||||||
|
|
||||||
for (idy = 0; idy < num_4x4_blocks_high; ++idy)
|
for (idy = 0; idy < num_4x4_blocks_high; ++idy)
|
||||||
for (idx = 0; idx < num_4x4_blocks_wide; ++idx)
|
for (idx = 0; idx < num_4x4_blocks_wide; ++idx)
|
||||||
vpx_memcpy(&mic->bmi[i + idy * 2 + idx],
|
vpx_memcpy(&mic->bmi[i + idy * 2 + idx],
|
||||||
@ -1646,7 +1647,7 @@ static void rd_check_segment_txsize(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
BEST_SEG_INFO *bsi_buf, int filter_idx,
|
BEST_SEG_INFO *bsi_buf, int filter_idx,
|
||||||
int_mv seg_mvs[4][MAX_REF_FRAMES],
|
int_mv seg_mvs[4][MAX_REF_FRAMES],
|
||||||
int mi_row, int mi_col) {
|
int mi_row, int mi_col) {
|
||||||
int i, j, br = 0, idx, idy;
|
int i, br = 0, idx, idy;
|
||||||
int64_t bd = 0, block_sse = 0;
|
int64_t bd = 0, block_sse = 0;
|
||||||
MB_PREDICTION_MODE this_mode;
|
MB_PREDICTION_MODE this_mode;
|
||||||
MODE_INFO *mi = x->e_mbd.mi_8x8[0];
|
MODE_INFO *mi = x->e_mbd.mi_8x8[0];
|
||||||
@ -2008,15 +2009,6 @@ static void rd_check_segment_txsize(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
bsi->segment_rd = INT64_MAX;
|
bsi->segment_rd = INT64_MAX;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 1; j < num_4x4_blocks_high; ++j)
|
|
||||||
vpx_memcpy(&x->partition_info->bmi[i + j * 2],
|
|
||||||
&x->partition_info->bmi[i],
|
|
||||||
sizeof(x->partition_info->bmi[i]));
|
|
||||||
for (j = 1; j < num_4x4_blocks_wide; ++j)
|
|
||||||
vpx_memcpy(&x->partition_info->bmi[i + j],
|
|
||||||
&x->partition_info->bmi[i],
|
|
||||||
sizeof(x->partition_info->bmi[i]));
|
|
||||||
}
|
}
|
||||||
} /* for each label */
|
} /* for each label */
|
||||||
|
|
||||||
@ -2028,7 +2020,7 @@ static void rd_check_segment_txsize(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
|
|
||||||
// update the coding decisions
|
// update the coding decisions
|
||||||
for (i = 0; i < 4; ++i)
|
for (i = 0; i < 4; ++i)
|
||||||
bsi->modes[i] = x->partition_info->bmi[i].mode;
|
bsi->modes[i] = mi->bmi[i].as_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int64_t rd_pick_best_mbsegmentation(VP9_COMP *cpi, MACROBLOCK *x,
|
static int64_t rd_pick_best_mbsegmentation(VP9_COMP *cpi, MACROBLOCK *x,
|
||||||
@ -2073,7 +2065,7 @@ static int64_t rd_pick_best_mbsegmentation(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
if (has_second_ref(mbmi))
|
if (has_second_ref(mbmi))
|
||||||
mi->bmi[i].as_mv[1].as_int = bsi->rdstat[i][mode_idx].mvs[1].as_int;
|
mi->bmi[i].as_mv[1].as_int = bsi->rdstat[i][mode_idx].mvs[1].as_int;
|
||||||
xd->plane[0].eobs[i] = bsi->rdstat[i][mode_idx].eobs;
|
xd->plane[0].eobs[i] = bsi->rdstat[i][mode_idx].eobs;
|
||||||
x->partition_info->bmi[i].mode = bsi->modes[i];
|
mi->bmi[i].as_mode = bsi->modes[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2206,7 +2198,6 @@ static void estimate_ref_frame_costs(VP9_COMP *cpi, int segment_id,
|
|||||||
|
|
||||||
static void store_coding_context(MACROBLOCK *x, PICK_MODE_CONTEXT *ctx,
|
static void store_coding_context(MACROBLOCK *x, PICK_MODE_CONTEXT *ctx,
|
||||||
int mode_index,
|
int mode_index,
|
||||||
PARTITION_INFO *partition,
|
|
||||||
int_mv *ref_mv,
|
int_mv *ref_mv,
|
||||||
int_mv *second_ref_mv,
|
int_mv *second_ref_mv,
|
||||||
int64_t comp_pred_diff[NB_PREDICTION_TYPES],
|
int64_t comp_pred_diff[NB_PREDICTION_TYPES],
|
||||||
@ -2220,9 +2211,6 @@ static void store_coding_context(MACROBLOCK *x, PICK_MODE_CONTEXT *ctx,
|
|||||||
ctx->best_mode_index = mode_index;
|
ctx->best_mode_index = mode_index;
|
||||||
ctx->mic = *xd->this_mi;
|
ctx->mic = *xd->this_mi;
|
||||||
|
|
||||||
if (partition)
|
|
||||||
ctx->partition_info = *partition;
|
|
||||||
|
|
||||||
ctx->best_ref_mv.as_int = ref_mv->as_int;
|
ctx->best_ref_mv.as_int = ref_mv->as_int;
|
||||||
ctx->second_best_ref_mv.as_int = second_ref_mv->as_int;
|
ctx->second_best_ref_mv.as_int = second_ref_mv->as_int;
|
||||||
|
|
||||||
@ -3780,7 +3768,6 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
set_scale_factors(xd, mbmi->ref_frame[0], mbmi->ref_frame[1],
|
set_scale_factors(xd, mbmi->ref_frame[0], mbmi->ref_frame[1],
|
||||||
scale_factor);
|
scale_factor);
|
||||||
store_coding_context(x, ctx, best_mode_index,
|
store_coding_context(x, ctx, best_mode_index,
|
||||||
NULL,
|
|
||||||
&mbmi->ref_mvs[mbmi->ref_frame[0]][0],
|
&mbmi->ref_mvs[mbmi->ref_frame[0]][0],
|
||||||
&mbmi->ref_mvs[mbmi->ref_frame[1] < 0 ? 0 :
|
&mbmi->ref_mvs[mbmi->ref_frame[1] < 0 ? 0 :
|
||||||
mbmi->ref_frame[1]][0],
|
mbmi->ref_frame[1]][0],
|
||||||
@ -3839,7 +3826,6 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
cpi->common.y_dc_delta_q);
|
cpi->common.y_dc_delta_q);
|
||||||
int_mv seg_mvs[4][MAX_REF_FRAMES];
|
int_mv seg_mvs[4][MAX_REF_FRAMES];
|
||||||
b_mode_info best_bmodes[4];
|
b_mode_info best_bmodes[4];
|
||||||
PARTITION_INFO best_partition;
|
|
||||||
int best_skip2 = 0;
|
int best_skip2 = 0;
|
||||||
unsigned char best_zcoeff_blk[256] = { 0 };
|
unsigned char best_zcoeff_blk[256] = { 0 };
|
||||||
|
|
||||||
@ -4055,7 +4041,6 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
&mbmi->ref_mvs[second_ref_frame][0] : NULL;
|
&mbmi->ref_mvs[second_ref_frame][0] : NULL;
|
||||||
b_mode_info tmp_best_bmodes[16];
|
b_mode_info tmp_best_bmodes[16];
|
||||||
MB_MODE_INFO tmp_best_mbmode;
|
MB_MODE_INFO tmp_best_mbmode;
|
||||||
PARTITION_INFO tmp_best_partition;
|
|
||||||
BEST_SEG_INFO bsi[SWITCHABLE_FILTERS];
|
BEST_SEG_INFO bsi[SWITCHABLE_FILTERS];
|
||||||
int pred_exists = 0;
|
int pred_exists = 0;
|
||||||
int uv_skippable;
|
int uv_skippable;
|
||||||
@ -4119,7 +4104,6 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
tmp_best_sse = total_sse;
|
tmp_best_sse = total_sse;
|
||||||
tmp_best_skippable = skippable;
|
tmp_best_skippable = skippable;
|
||||||
tmp_best_mbmode = *mbmi;
|
tmp_best_mbmode = *mbmi;
|
||||||
tmp_best_partition = *x->partition_info;
|
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
tmp_best_bmodes[i] = xd->this_mi->bmi[i];
|
tmp_best_bmodes[i] = xd->this_mi->bmi[i];
|
||||||
pred_exists = 1;
|
pred_exists = 1;
|
||||||
@ -4171,7 +4155,6 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
distortion = tmp_best_distortion;
|
distortion = tmp_best_distortion;
|
||||||
skippable = tmp_best_skippable;
|
skippable = tmp_best_skippable;
|
||||||
*mbmi = tmp_best_mbmode;
|
*mbmi = tmp_best_mbmode;
|
||||||
*x->partition_info = tmp_best_partition;
|
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
xd->this_mi->bmi[i] = tmp_best_bmodes[i];
|
xd->this_mi->bmi[i] = tmp_best_bmodes[i];
|
||||||
}
|
}
|
||||||
@ -4299,7 +4282,6 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
RDCOST(x->rdmult, x->rddiv, rate_uv, distortion_uv);
|
RDCOST(x->rdmult, x->rddiv, rate_uv, distortion_uv);
|
||||||
best_mbmode = *mbmi;
|
best_mbmode = *mbmi;
|
||||||
best_skip2 = this_skip2;
|
best_skip2 = this_skip2;
|
||||||
best_partition = *x->partition_info;
|
|
||||||
vpx_memcpy(best_zcoeff_blk, x->zcoeff_blk[mbmi->tx_size],
|
vpx_memcpy(best_zcoeff_blk, x->zcoeff_blk[mbmi->tx_size],
|
||||||
sizeof(best_zcoeff_blk));
|
sizeof(best_zcoeff_blk));
|
||||||
|
|
||||||
@ -4457,15 +4439,8 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
xd->this_mi->bmi[i].as_mode = best_bmodes[i].as_mode;
|
xd->this_mi->bmi[i].as_mode = best_bmodes[i].as_mode;
|
||||||
} else {
|
} else {
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; ++i)
|
||||||
xd->this_mi->bmi[i].as_mv[0].as_int =
|
vpx_memcpy(&xd->this_mi->bmi[i], &best_bmodes[i], sizeof(b_mode_info));
|
||||||
best_bmodes[i].as_mv[0].as_int;
|
|
||||||
|
|
||||||
if (has_second_ref(mbmi))
|
|
||||||
for (i = 0; i < 4; i++)
|
|
||||||
xd->this_mi->bmi[i].as_mv[1].as_int = best_bmodes[i].as_mv[1].as_int;
|
|
||||||
|
|
||||||
*x->partition_info = best_partition;
|
|
||||||
|
|
||||||
mbmi->mv[0].as_int = xd->this_mi->bmi[3].as_mv[0].as_int;
|
mbmi->mv[0].as_int = xd->this_mi->bmi[3].as_mv[0].as_int;
|
||||||
mbmi->mv[1].as_int = xd->this_mi->bmi[3].as_mv[1].as_int;
|
mbmi->mv[1].as_int = xd->this_mi->bmi[3].as_mv[1].as_int;
|
||||||
@ -4508,7 +4483,6 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
set_scale_factors(xd, mbmi->ref_frame[0], mbmi->ref_frame[1],
|
set_scale_factors(xd, mbmi->ref_frame[0], mbmi->ref_frame[1],
|
||||||
scale_factor);
|
scale_factor);
|
||||||
store_coding_context(x, ctx, best_mode_index,
|
store_coding_context(x, ctx, best_mode_index,
|
||||||
&best_partition,
|
|
||||||
&mbmi->ref_mvs[mbmi->ref_frame[0]][0],
|
&mbmi->ref_mvs[mbmi->ref_frame[0]][0],
|
||||||
&mbmi->ref_mvs[mbmi->ref_frame[1] < 0 ? 0 :
|
&mbmi->ref_mvs[mbmi->ref_frame[1] < 0 ? 0 :
|
||||||
mbmi->ref_frame[1]][0],
|
mbmi->ref_frame[1]][0],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user