Commit 359dc2b9 authored by Urvang Joshi's avatar Urvang Joshi

set_mi_row_col: Refactor functions and their calls.

BUG=aomedia:442

Change-Id: Ic5e4bb170ab7fd68355008cc4155e1a8910f344e
parent 78f4d0c3
...@@ -601,26 +601,31 @@ static INLINE void set_plane_n4(MACROBLOCKD *const xd, int bw, int bh) { ...@@ -601,26 +601,31 @@ static INLINE void set_plane_n4(MACROBLOCKD *const xd, int bw, int bh) {
} }
} }
#if CONFIG_DEPENDENT_HORZTILES
static INLINE void set_mi_row_col(MACROBLOCKD *xd, const TileInfo *const tile, static INLINE void set_mi_row_col(MACROBLOCKD *xd, const TileInfo *const tile,
int mi_row, int bh, int mi_col, int bw, int mi_row, int bh, int mi_col, int bw,
int mi_rows, int mi_cols, #if CONFIG_DEPENDENT_HORZTILES
int dependent_horz_tile_flag) { int dependent_horz_tile_flag,
#endif // CONFIG_DEPENDENT_HORZTILES
int mi_rows, int mi_cols) {
xd->mb_to_top_edge = -((mi_row * MI_SIZE) * 8); xd->mb_to_top_edge = -((mi_row * MI_SIZE) * 8);
xd->mb_to_bottom_edge = ((mi_rows - bh - mi_row) * MI_SIZE) * 8; xd->mb_to_bottom_edge = ((mi_rows - bh - mi_row) * MI_SIZE) * 8;
xd->mb_to_left_edge = -((mi_col * MI_SIZE) * 8); xd->mb_to_left_edge = -((mi_col * MI_SIZE) * 8);
xd->mb_to_right_edge = ((mi_cols - bw - mi_col) * MI_SIZE) * 8; xd->mb_to_right_edge = ((mi_cols - bw - mi_col) * MI_SIZE) * 8;
#if CONFIG_DEPENDENT_HORZTILES
if (dependent_horz_tile_flag) { if (dependent_horz_tile_flag) {
#if CONFIG_TILE_GROUPS #if CONFIG_TILE_GROUPS
xd->up_available = (mi_row > tile->mi_row_start) || !tile->tg_horz_boundary; xd->up_available = (mi_row > tile->mi_row_start) || !tile->tg_horz_boundary;
#else #else
xd->up_available = (mi_row > 0); xd->up_available = (mi_row > 0);
#endif #endif // CONFIG_TILE_GROUPS
} else { } else {
#endif // CONFIG_DEPENDENT_HORZTILES
// Are edges available for intra prediction? // Are edges available for intra prediction?
xd->up_available = (mi_row > tile->mi_row_start); xd->up_available = (mi_row > tile->mi_row_start);
#if CONFIG_DEPENDENT_HORZTILES
} }
#endif // CONFIG_DEPENDENT_HORZTILES
xd->left_available = (mi_col > tile->mi_col_start); xd->left_available = (mi_col > tile->mi_col_start);
if (xd->up_available) { if (xd->up_available) {
...@@ -650,50 +655,8 @@ static INLINE void set_mi_row_col(MACROBLOCKD *xd, const TileInfo *const tile, ...@@ -650,50 +655,8 @@ static INLINE void set_mi_row_col(MACROBLOCKD *xd, const TileInfo *const tile,
if (xd->n8_w > xd->n8_h) if (xd->n8_w > xd->n8_h)
if (mi_row & (xd->n8_w - 1)) xd->is_sec_rect = 1; if (mi_row & (xd->n8_w - 1)) xd->is_sec_rect = 1;
#endif #endif // CONFIG_REF_MV
}
#else
static INLINE void set_mi_row_col(MACROBLOCKD *xd, const TileInfo *const tile,
int mi_row, int bh, int mi_col, int bw,
int mi_rows, int mi_cols) {
xd->mb_to_top_edge = -((mi_row * MI_SIZE) * 8);
xd->mb_to_bottom_edge = ((mi_rows - bh - mi_row) * MI_SIZE) * 8;
xd->mb_to_left_edge = -((mi_col * MI_SIZE) * 8);
xd->mb_to_right_edge = ((mi_cols - bw - mi_col) * MI_SIZE) * 8;
// Are edges available for intra prediction?
xd->up_available = (mi_row > tile->mi_row_start);
xd->left_available = (mi_col > tile->mi_col_start);
if (xd->up_available) {
xd->above_mi = xd->mi[-xd->mi_stride];
// above_mi may be NULL in encoder's first pass.
xd->above_mbmi = xd->above_mi ? &xd->above_mi->mbmi : NULL;
} else {
xd->above_mi = NULL;
xd->above_mbmi = NULL;
}
if (xd->left_available) {
xd->left_mi = xd->mi[-1];
// left_mi may be NULL in encoder's first pass.
xd->left_mbmi = xd->left_mi ? &xd->left_mi->mbmi : NULL;
} else {
xd->left_mi = NULL;
xd->left_mbmi = NULL;
}
xd->n8_h = bh;
xd->n8_w = bw;
#if CONFIG_REF_MV
xd->is_sec_rect = 0;
if (xd->n8_w < xd->n8_h)
if (mi_col & (xd->n8_h - 1)) xd->is_sec_rect = 1;
if (xd->n8_w > xd->n8_h)
if (mi_row & (xd->n8_w - 1)) xd->is_sec_rect = 1;
#endif
} }
#endif
static INLINE const aom_prob *get_y_mode_probs(const AV1_COMMON *cm, static INLINE const aom_prob *get_y_mode_probs(const AV1_COMMON *cm,
const MODE_INFO *mi, const MODE_INFO *mi,
......
...@@ -718,14 +718,13 @@ static void set_offsets(AV1_COMMON *const cm, MACROBLOCKD *const xd, ...@@ -718,14 +718,13 @@ static void set_offsets(AV1_COMMON *const cm, MACROBLOCKD *const xd,
xd->max_tx_size = max_txsize_lookup[bsize]; xd->max_tx_size = max_txsize_lookup[bsize];
#endif #endif
// Distance of Mb to the various image edges. These are specified to 8th pel // Distance of Mb to the various image edges. These are specified to 8th pel
// as they are always compared to values that are in 1/8th pel units // as they are always compared to values that are in 1/8th pel units
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw,
#if CONFIG_DEPENDENT_HORZTILES #if CONFIG_DEPENDENT_HORZTILES
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols, cm->dependent_horz_tiles,
cm->dependent_horz_tiles); #endif // CONFIG_DEPENDENT_HORZTILES
#else cm->mi_rows, cm->mi_cols);
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols);
#endif
av1_setup_dst_planes(xd->plane, get_frame_new_buffer(cm), mi_row, mi_col); av1_setup_dst_planes(xd->plane, get_frame_new_buffer(cm), mi_row, mi_col);
} }
...@@ -745,13 +744,11 @@ static MB_MODE_INFO *set_offsets_extend(AV1_COMMON *const cm, ...@@ -745,13 +744,11 @@ static MB_MODE_INFO *set_offsets_extend(AV1_COMMON *const cm,
const int offset = mi_row_ori * cm->mi_stride + mi_col_ori; const int offset = mi_row_ori * cm->mi_stride + mi_col_ori;
xd->mi = cm->mi_grid_visible + offset; xd->mi = cm->mi_grid_visible + offset;
xd->mi[0] = cm->mi + offset; xd->mi[0] = cm->mi + offset;
set_mi_row_col(xd, tile, mi_row_pred, bh, mi_col_pred, bw,
#if CONFIG_DEPENDENT_HORZTILES #if CONFIG_DEPENDENT_HORZTILES
set_mi_row_col(xd, tile, mi_row_pred, bh, mi_col_pred, bw, cm->mi_rows, cm->dependent_horz_tiles,
cm->mi_cols, cm->dependent_horz_tiles); #endif // CONFIG_DEPENDENT_HORZTILES
#else cm->mi_rows, cm->mi_cols);
set_mi_row_col(xd, tile, mi_row_pred, bh, mi_col_pred, bw, cm->mi_rows,
cm->mi_cols);
#endif
xd->up_available = (mi_row_ori > tile->mi_row_start); xd->up_available = (mi_row_ori > tile->mi_row_start);
xd->left_available = (mi_col_ori > tile->mi_col_start); xd->left_available = (mi_col_ori > tile->mi_col_start);
...@@ -775,12 +772,11 @@ static MB_MODE_INFO *set_mb_offsets(AV1_COMMON *const cm, MACROBLOCKD *const xd, ...@@ -775,12 +772,11 @@ static MB_MODE_INFO *set_mb_offsets(AV1_COMMON *const cm, MACROBLOCKD *const xd,
for (y = 0; y < y_mis; ++y) for (y = 0; y < y_mis; ++y)
for (x = !y; x < x_mis; ++x) xd->mi[y * cm->mi_stride + x] = xd->mi[0]; for (x = !y; x < x_mis; ++x) xd->mi[y * cm->mi_stride + x] = xd->mi[0];
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw,
#if CONFIG_DEPENDENT_HORZTILES #if CONFIG_DEPENDENT_HORZTILES
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols, cm->dependent_horz_tiles,
cm->dependent_horz_tiles); #endif // CONFIG_DEPENDENT_HORZTILES
#else cm->mi_rows, cm->mi_cols);
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols);
#endif
return &xd->mi[0]->mbmi; return &xd->mi[0]->mbmi;
} }
#endif #endif
...@@ -797,12 +793,11 @@ static void set_offsets_topblock(AV1_COMMON *const cm, MACROBLOCKD *const xd, ...@@ -797,12 +793,11 @@ static void set_offsets_topblock(AV1_COMMON *const cm, MACROBLOCKD *const xd,
set_plane_n4(xd, bw, bh); set_plane_n4(xd, bw, bh);
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw,
#if CONFIG_DEPENDENT_HORZTILES #if CONFIG_DEPENDENT_HORZTILES
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols, cm->dependent_horz_tiles,
cm->dependent_horz_tiles); #endif // CONFIG_DEPENDENT_HORZTILES
#else cm->mi_rows, cm->mi_cols);
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols);
#endif
av1_setup_dst_planes(xd->plane, get_frame_new_buffer(cm), mi_row, mi_col); av1_setup_dst_planes(xd->plane, get_frame_new_buffer(cm), mi_row, mi_col);
} }
...@@ -2277,14 +2272,12 @@ static void decode_partition(AV1Decoder *const pbi, MACROBLOCKD *const xd, ...@@ -2277,14 +2272,12 @@ static void decode_partition(AV1Decoder *const pbi, MACROBLOCKD *const xd,
xd->mi = cm->mi_grid_visible + offset; xd->mi = cm->mi_grid_visible + offset;
xd->mi[0] = cm->mi + offset; xd->mi[0] = cm->mi + offset;
#if CONFIG_DEPENDENT_HORZTILES
set_mi_row_col(xd, tile, mi_row, mi_size_high[bsize], mi_col,
mi_size_wide[bsize], cm->mi_rows, cm->mi_cols,
cm->dependent_horz_tiles);
#else
set_mi_row_col(xd, tile, mi_row, mi_size_high[bsize], mi_col, set_mi_row_col(xd, tile, mi_row, mi_size_high[bsize], mi_col,
mi_size_wide[bsize], cm->mi_rows, cm->mi_cols); mi_size_wide[bsize],
#endif #if CONFIG_DEPENDENT_HORZTILES
cm->dependent_horz_tiles,
#endif // CONFIG_DEPENDENT_HORZTILES
cm->mi_rows, cm->mi_cols);
set_skip_context(xd, mi_row, mi_col); set_skip_context(xd, mi_row, mi_col);
skip = read_skip(cm, xd, xd->mi[0]->mbmi.segment_id_supertx, r); skip = read_skip(cm, xd, xd->mi[0]->mbmi.segment_id_supertx, r);
if (skip) { if (skip) {
......
...@@ -2313,12 +2313,11 @@ static void write_mbmi_b(AV1_COMP *cpi, const TileInfo *const tile, ...@@ -2313,12 +2313,11 @@ static void write_mbmi_b(AV1_COMP *cpi, const TileInfo *const tile,
cpi->td.mb.mbmi_ext = cpi->mbmi_ext_base + (mi_row * cm->mi_cols + mi_col); cpi->td.mb.mbmi_ext = cpi->mbmi_ext_base + (mi_row * cm->mi_cols + mi_col);
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw,
#if CONFIG_DEPENDENT_HORZTILES #if CONFIG_DEPENDENT_HORZTILES
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols, cm->dependent_horz_tiles,
cm->dependent_horz_tiles); #endif // CONFIG_DEPENDENT_HORZTILES
#else cm->mi_rows, cm->mi_cols);
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols);
#endif
if (frame_is_intra_only(cm)) { if (frame_is_intra_only(cm)) {
write_mb_modes_kf(cm, xd, mi_row, mi_col, w); write_mb_modes_kf(cm, xd, mi_row, mi_col, w);
...@@ -2389,12 +2388,11 @@ static void write_tokens_b(AV1_COMP *cpi, const TileInfo *const tile, ...@@ -2389,12 +2388,11 @@ static void write_tokens_b(AV1_COMP *cpi, const TileInfo *const tile,
bw = mi_size_wide[mbmi->sb_type]; bw = mi_size_wide[mbmi->sb_type];
cpi->td.mb.mbmi_ext = cpi->mbmi_ext_base + (mi_row * cm->mi_cols + mi_col); cpi->td.mb.mbmi_ext = cpi->mbmi_ext_base + (mi_row * cm->mi_cols + mi_col);
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw,
#if CONFIG_DEPENDENT_HORZTILES #if CONFIG_DEPENDENT_HORZTILES
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols, cm->dependent_horz_tiles,
cm->dependent_horz_tiles); #endif // CONFIG_DEPENDENT_HORZTILES
#else cm->mi_rows, cm->mi_cols);
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols);
#endif
#if CONFIG_PALETTE #if CONFIG_PALETTE
for (plane = 0; plane <= 1; ++plane) { for (plane = 0; plane <= 1; ++plane) {
...@@ -2806,14 +2804,12 @@ static void write_modes_sb(AV1_COMP *const cpi, const TileInfo *const tile, ...@@ -2806,14 +2804,12 @@ static void write_modes_sb(AV1_COMP *const cpi, const TileInfo *const tile,
#if CONFIG_SUPERTX #if CONFIG_SUPERTX
mbmi = &cm->mi_grid_visible[mi_offset]->mbmi; mbmi = &cm->mi_grid_visible[mi_offset]->mbmi;
xd->mi = cm->mi_grid_visible + mi_offset; xd->mi = cm->mi_grid_visible + mi_offset;
#if CONFIG_DEPENDENT_HORZTILES
set_mi_row_col(xd, tile, mi_row, mi_size_high[bsize], mi_col, set_mi_row_col(xd, tile, mi_row, mi_size_high[bsize], mi_col,
mi_size_wide[bsize], cm->mi_rows, cm->mi_cols, mi_size_wide[bsize],
cm->dependent_horz_tiles); #if CONFIG_DEPENDENT_HORZTILES
#else cm->dependent_horz_tiles,
set_mi_row_col(xd, tile, mi_row, mi_size_high[bsize], mi_col, #endif // CONFIG_DEPENDENT_HORZTILES
mi_size_wide[bsize], cm->mi_rows, cm->mi_cols); cm->mi_rows, cm->mi_cols);
#endif
if (!supertx_enabled && !frame_is_intra_only(cm) && if (!supertx_enabled && !frame_is_intra_only(cm) &&
partition != PARTITION_NONE && bsize <= MAX_SUPERTX_BLOCK_SIZE && partition != PARTITION_NONE && bsize <= MAX_SUPERTX_BLOCK_SIZE &&
!xd->lossless[0]) { !xd->lossless[0]) {
...@@ -2903,13 +2899,11 @@ static void write_modes_sb(AV1_COMP *const cpi, const TileInfo *const tile, ...@@ -2903,13 +2899,11 @@ static void write_modes_sb(AV1_COMP *const cpi, const TileInfo *const tile,
xd->mi = cm->mi_grid_visible + mi_offset; xd->mi = cm->mi_grid_visible + mi_offset;
supertx_size = mbmi->tx_size; supertx_size = mbmi->tx_size;
set_mi_row_col(xd, tile, mi_row, bsh, mi_col, bsw,
#if CONFIG_DEPENDENT_HORZTILES #if CONFIG_DEPENDENT_HORZTILES
set_mi_row_col(xd, tile, mi_row, bsh, mi_col, bsw, cm->mi_rows, cm->mi_cols, cm->dependent_horz_tiles,
cm->dependent_horz_tiles); #endif // CONFIG_DEPENDENT_HORZTILES
#else cm->mi_rows, cm->mi_cols);
set_mi_row_col(xd, tile, mi_row, bsh, mi_col, bsw, cm->mi_rows,
cm->mi_cols);
#endif
assert(IMPLIES(!cm->seg.enabled, mbmi->segment_id_supertx == 0)); assert(IMPLIES(!cm->seg.enabled, mbmi->segment_id_supertx == 0));
assert(mbmi->segment_id_supertx < MAX_SEGMENTS); assert(mbmi->segment_id_supertx < MAX_SEGMENTS);
......
...@@ -299,13 +299,11 @@ static void set_offsets_without_segment_id(const AV1_COMP *const cpi, ...@@ -299,13 +299,11 @@ static void set_offsets_without_segment_id(const AV1_COMP *const cpi,
// Set up distance of MB to edge of frame in 1/8th pel units. // Set up distance of MB to edge of frame in 1/8th pel units.
assert(!(mi_col & (mi_width - 1)) && !(mi_row & (mi_height - 1))); assert(!(mi_col & (mi_width - 1)) && !(mi_row & (mi_height - 1)));
set_mi_row_col(xd, tile, mi_row, mi_height, mi_col, mi_width,
#if CONFIG_DEPENDENT_HORZTILES #if CONFIG_DEPENDENT_HORZTILES
set_mi_row_col(xd, tile, mi_row, mi_height, mi_col, mi_width, cm->mi_rows, cm->dependent_horz_tiles,
cm->mi_cols, cm->dependent_horz_tiles); #endif // CONFIG_DEPENDENT_HORZTILES
#else cm->mi_rows, cm->mi_cols);
set_mi_row_col(xd, tile, mi_row, mi_height, mi_col, mi_width, cm->mi_rows,
cm->mi_cols);
#endif
// Set up source buffers. // Set up source buffers.
av1_setup_src_planes(x, cpi->source, mi_row, mi_col); av1_setup_src_planes(x, cpi->source, mi_row, mi_col);
...@@ -364,8 +362,11 @@ static void set_offsets_supertx(const AV1_COMP *const cpi, ThreadData *td, ...@@ -364,8 +362,11 @@ static void set_offsets_supertx(const AV1_COMP *const cpi, ThreadData *td,
// Set up distance of MB to edge of frame in 1/8th pel units. // Set up distance of MB to edge of frame in 1/8th pel units.
assert(!(mi_col & (mi_width - 1)) && !(mi_row & (mi_height - 1))); assert(!(mi_col & (mi_width - 1)) && !(mi_row & (mi_height - 1)));
set_mi_row_col(xd, tile, mi_row, mi_height, mi_col, mi_width, cm->mi_rows, set_mi_row_col(xd, tile, mi_row, mi_height, mi_col, mi_width,
cm->mi_cols); #if CONFIG_DEPENDENT_HORZTILES
cm->dependent_horz_tiles,
#endif // CONFIG_DEPENDENT_HORZTILES
cm->mi_rows, cm->mi_cols);
} }
static void set_offsets_extend(const AV1_COMP *const cpi, ThreadData *td, static void set_offsets_extend(const AV1_COMP *const cpi, ThreadData *td,
...@@ -405,6 +406,9 @@ static void set_offsets_extend(const AV1_COMP *const cpi, ThreadData *td, ...@@ -405,6 +406,9 @@ static void set_offsets_extend(const AV1_COMP *const cpi, ThreadData *td,
!(mi_row_pred & (mi_height - mi_size_high[BLOCK_8X8]))); !(mi_row_pred & (mi_height - mi_size_high[BLOCK_8X8])));
#endif #endif
set_mi_row_col(xd, tile, mi_row_pred, mi_height, mi_col_pred, mi_width, set_mi_row_col(xd, tile, mi_row_pred, mi_height, mi_col_pred, mi_width,
#if CONFIG_DEPENDENT_HORZTILES
cm->dependent_horz_tiles,
#endif // CONFIG_DEPENDENT_HORZTILES
cm->mi_rows, cm->mi_cols); cm->mi_rows, cm->mi_cols);
xd->up_available = (mi_row_ori > tile->mi_row_start); xd->up_available = (mi_row_ori > tile->mi_row_start);
xd->left_available = (mi_col_ori > tile->mi_col_start); xd->left_available = (mi_col_ori > tile->mi_col_start);
......
...@@ -642,15 +642,12 @@ void av1_first_pass(AV1_COMP *cpi, const struct lookahead_entry *source) { ...@@ -642,15 +642,12 @@ void av1_first_pass(AV1_COMP *cpi, const struct lookahead_entry *source) {
xd->left_available = (mb_col != 0); xd->left_available = (mb_col != 0);
xd->mi[0]->mbmi.sb_type = bsize; xd->mi[0]->mbmi.sb_type = bsize;
xd->mi[0]->mbmi.ref_frame[0] = INTRA_FRAME; xd->mi[0]->mbmi.ref_frame[0] = INTRA_FRAME;
#if CONFIG_DEPENDENT_HORZTILES
set_mi_row_col(xd, &tile, mb_row * mb_scale, mi_size_high[bsize],
mb_col * mb_scale, mi_size_wide[bsize], cm->mi_rows,
cm->mi_cols, cm->dependent_horz_tiles);
#else
set_mi_row_col(xd, &tile, mb_row * mb_scale, mi_size_high[bsize], set_mi_row_col(xd, &tile, mb_row * mb_scale, mi_size_high[bsize],
mb_col * mb_scale, mi_size_wide[bsize], cm->mi_rows, mb_col * mb_scale, mi_size_wide[bsize],
cm->mi_cols); #if CONFIG_DEPENDENT_HORZTILES
#endif cm->dependent_horz_tiles,
#endif // CONFIG_DEPENDENT_HORZTILES
cm->mi_rows, cm->mi_cols);
set_plane_n4(xd, mi_size_wide[bsize], mi_size_high[bsize]); set_plane_n4(xd, mi_size_wide[bsize], mi_size_high[bsize]);
......
...@@ -129,12 +129,11 @@ static void count_segs(const AV1_COMMON *cm, MACROBLOCKD *xd, ...@@ -129,12 +129,11 @@ static void count_segs(const AV1_COMMON *cm, MACROBLOCKD *xd,
xd->mi = mi; xd->mi = mi;
segment_id = xd->mi[0]->mbmi.segment_id; segment_id = xd->mi[0]->mbmi.segment_id;
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw,
#if CONFIG_DEPENDENT_HORZTILES #if CONFIG_DEPENDENT_HORZTILES
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols, cm->dependent_horz_tiles,
cm->dependent_horz_tiles); #endif // CONFIG_DEPENDENT_HORZTILES
#else cm->mi_rows, cm->mi_cols);
set_mi_row_col(xd, tile, mi_row, bh, mi_col, bw, cm->mi_rows, cm->mi_cols);
#endif
// Count the number of hits on each segment with no prediction // Count the number of hits on each segment with no prediction
no_pred_segcounts[segment_id]++; no_pred_segcounts[segment_id]++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment