Index: source/libvpx/vp9/decoder/vp9_decodemv.c |
=================================================================== |
--- source/libvpx/vp9/decoder/vp9_decodemv.c (revision 177019) |
+++ source/libvpx/vp9/decoder/vp9_decodemv.c (working copy) |
@@ -14,7 +14,7 @@ |
#include "vp9/common/vp9_entropymode.h" |
#include "vp9/decoder/vp9_onyxd_int.h" |
#include "vp9/common/vp9_findnearmv.h" |
- |
+#include "vp9/common/vp9_common.h" |
#include "vp9/common/vp9_seg_common.h" |
#include "vp9/common/vp9_pred_common.h" |
#include "vp9/common/vp9_entropy.h" |
@@ -51,7 +51,6 @@ |
return treed_read(bc, vp9_ymode_tree, p); |
} |
-#if CONFIG_SUPERBLOCKS |
static int read_sb_ymode(vp9_reader *bc, const vp9_prob *p) { |
return treed_read(bc, vp9_sb_ymode_tree, p); |
} |
@@ -59,7 +58,6 @@ |
static int read_kf_sb_ymode(vp9_reader *bc, const vp9_prob *p) { |
return treed_read(bc, vp9_uv_mode_tree, p); |
} |
-#endif |
static int read_kf_mb_ymode(vp9_reader *bc, const vp9_prob *p) { |
return treed_read(bc, vp9_kf_ymode_tree, p); |
@@ -122,7 +120,21 @@ |
m->mbmi.segment_id = 0; |
if (pbi->mb.update_mb_segmentation_map) { |
read_mb_segid(bc, &m->mbmi, &pbi->mb); |
- pbi->common.last_frame_seg_map[map_index] = m->mbmi.segment_id; |
+ if (m->mbmi.sb_type) { |
+ const int nmbs = 1 << m->mbmi.sb_type; |
+ const int ymbs = MIN(cm->mb_rows - mb_row, nmbs); |
+ const int xmbs = MIN(cm->mb_cols - mb_col, nmbs); |
+ int x, y; |
+ |
+ for (y = 0; y < ymbs; y++) { |
+ for (x = 0; x < xmbs; x++) { |
+ cm->last_frame_seg_map[map_index + x + y * cm->mb_cols] = |
+ m->mbmi.segment_id; |
+ } |
+ } |
+ } else { |
+ cm->last_frame_seg_map[map_index] = m->mbmi.segment_id; |
+ } |
} |
m->mbmi.mb_skip_coeff = 0; |
@@ -144,25 +156,18 @@ |
m->mbmi.mb_skip_coeff = 0; |
} |
-#if CONFIG_SUPERBLOCKS |
- if (m->mbmi.encoded_as_sb) { |
+ if (m->mbmi.sb_type) { |
y_mode = (MB_PREDICTION_MODE) read_kf_sb_ymode(bc, |
pbi->common.sb_kf_ymode_prob[pbi->common.kf_ymode_probs_index]); |
- } else |
-#endif |
- y_mode = (MB_PREDICTION_MODE) read_kf_mb_ymode(bc, |
- pbi->common.kf_ymode_prob[pbi->common.kf_ymode_probs_index]); |
-#if CONFIG_COMP_INTRA_PRED |
- m->mbmi.second_mode = (MB_PREDICTION_MODE)(DC_PRED - 1); |
-#endif |
+ } else { |
+ y_mode = (MB_PREDICTION_MODE) read_kf_mb_ymode(bc, |
+ pbi->common.kf_ymode_prob[pbi->common.kf_ymode_probs_index]); |
+ } |
m->mbmi.ref_frame = INTRA_FRAME; |
if ((m->mbmi.mode = y_mode) == B_PRED) { |
int i = 0; |
-#if CONFIG_COMP_INTRA_PRED |
- int use_comp_pred = vp9_read(bc, DEFAULT_COMP_INTRA_PROB); |
-#endif |
do { |
const B_PREDICTION_MODE A = above_block_mode(m, i, mis); |
const B_PREDICTION_MODE L = left_block_mode(m, i); |
@@ -170,15 +175,6 @@ |
m->bmi[i].as_mode.first = |
(B_PREDICTION_MODE) read_kf_bmode( |
bc, pbi->common.kf_bmode_prob [A] [L]); |
-#if CONFIG_COMP_INTRA_PRED |
- if (use_comp_pred) { |
- m->bmi[i].as_mode.second = |
- (B_PREDICTION_MODE) read_kf_bmode( |
- bc, pbi->common.kf_bmode_prob [A] [L]); |
- } else { |
- m->bmi[i].as_mode.second = (B_PREDICTION_MODE)(B_DC_PRED - 1); |
- } |
-#endif |
} while (++i < 16); |
} |
if ((m->mbmi.mode = y_mode) == I8X8_PRED) { |
@@ -191,26 +187,22 @@ |
m->bmi[ib + 1].as_mode.first = mode8x8; |
m->bmi[ib + 4].as_mode.first = mode8x8; |
m->bmi[ib + 5].as_mode.first = mode8x8; |
-#if CONFIG_COMP_INTRA_PRED |
- m->bmi[ib + 0].as_mode.second = (MB_PREDICTION_MODE)(DC_PRED - 1); |
- m->bmi[ib + 1].as_mode.second = (MB_PREDICTION_MODE)(DC_PRED - 1); |
- m->bmi[ib + 4].as_mode.second = (MB_PREDICTION_MODE)(DC_PRED - 1); |
- m->bmi[ib + 5].as_mode.second = (MB_PREDICTION_MODE)(DC_PRED - 1); |
-#endif |
} |
} else |
m->mbmi.uv_mode = (MB_PREDICTION_MODE)read_uv_mode(bc, |
pbi->common.kf_uv_mode_prob[m->mbmi.mode]); |
-#if CONFIG_COMP_INTRA_PRED |
- m->mbmi.second_uv_mode = (MB_PREDICTION_MODE)(DC_PRED - 1); |
-#endif |
if (cm->txfm_mode == TX_MODE_SELECT && m->mbmi.mb_skip_coeff == 0 && |
m->mbmi.mode <= I8X8_PRED) { |
// FIXME(rbultje) code ternary symbol once all experiments are merged |
m->mbmi.txfm_size = vp9_read(bc, cm->prob_tx[0]); |
- if (m->mbmi.txfm_size != TX_4X4 && m->mbmi.mode != I8X8_PRED) |
+ if (m->mbmi.txfm_size != TX_4X4 && m->mbmi.mode != I8X8_PRED) { |
m->mbmi.txfm_size += vp9_read(bc, cm->prob_tx[1]); |
+ if (m->mbmi.txfm_size != TX_8X8 && m->mbmi.sb_type) |
+ m->mbmi.txfm_size += vp9_read(bc, cm->prob_tx[2]); |
+ } |
+ } else if (cm->txfm_mode >= ALLOW_32X32 && m->mbmi.sb_type) { |
+ m->mbmi.txfm_size = TX_32X32; |
} else if (cm->txfm_mode >= ALLOW_16X16 && m->mbmi.mode <= TM_PRED) { |
m->mbmi.txfm_size = TX_16X16; |
} else if (cm->txfm_mode >= ALLOW_8X8 && m->mbmi.mode != B_PRED) { |
@@ -478,11 +470,9 @@ |
return (MV_REFERENCE_FRAME)ref_frame; |
} |
-#if CONFIG_SUPERBLOCKS |
static MB_PREDICTION_MODE read_sb_mv_ref(vp9_reader *bc, const vp9_prob *p) { |
return (MB_PREDICTION_MODE) treed_read(bc, vp9_sb_mv_ref_tree, p); |
} |
-#endif |
static MB_PREDICTION_MODE read_mv_ref(vp9_reader *bc, const vp9_prob *p) { |
return (MB_PREDICTION_MODE) treed_read(bc, vp9_mv_ref_tree, p); |
@@ -532,12 +522,6 @@ |
if (!cm->kf_ymode_probs_update) |
cm->kf_ymode_probs_index = vp9_read_literal(bc, 3); |
} else { |
-#if CONFIG_PRED_FILTER |
- cm->pred_filter_mode = (vp9_prob)vp9_read_literal(bc, 2); |
- |
- if (cm->pred_filter_mode == 2) |
- cm->prob_pred_filter_off = (vp9_prob)vp9_read_literal(bc, 8); |
-#endif |
if (cm->mcomp_filter_type == SWITCHABLE) |
read_switchable_interp_probs(pbi, bc); |
#if CONFIG_COMP_INTERINTRA_PRED |
@@ -572,7 +556,6 @@ |
} while (++i < VP9_YMODES - 1); |
} |
-#if CONFIG_SUPERBLOCKS |
if (vp9_read_bit(bc)) { |
int i = 0; |
@@ -580,13 +563,7 @@ |
cm->fc.sb_ymode_prob[i] = (vp9_prob) vp9_read_literal(bc, 8); |
} while (++i < VP9_I32X32_MODES - 1); |
} |
-#endif |
-#if CONFIG_NEW_MVREF |
- // Temp defaults probabilities for ecnoding the MV ref id signal |
- vpx_memset(xd->mb_mv_ref_id_probs, 192, sizeof(xd->mb_mv_ref_id_probs)); |
-#endif |
- |
read_nmvprobs(bc, nmvc, xd->allow_high_precision_mv); |
} |
} |
@@ -633,38 +610,38 @@ |
else { |
read_mb_segid(bc, mbmi, xd); |
} |
-#if CONFIG_SUPERBLOCKS |
- if (mbmi->encoded_as_sb) { |
- cm->last_frame_seg_map[index] = mbmi->segment_id; |
- if (mb_col + 1 < cm->mb_cols) |
- cm->last_frame_seg_map[index + 1] = mbmi->segment_id; |
- if (mb_row + 1 < cm->mb_rows) { |
- cm->last_frame_seg_map[index + cm->mb_cols] = mbmi->segment_id; |
- if (mb_col + 1 < cm->mb_cols) |
- cm->last_frame_seg_map[index + cm->mb_cols + 1] = mbmi->segment_id; |
+ if (mbmi->sb_type) { |
+ const int nmbs = 1 << mbmi->sb_type; |
+ const int ymbs = MIN(cm->mb_rows - mb_row, nmbs); |
+ const int xmbs = MIN(cm->mb_cols - mb_col, nmbs); |
+ int x, y; |
+ |
+ for (y = 0; y < ymbs; y++) { |
+ for (x = 0; x < xmbs; x++) { |
+ cm->last_frame_seg_map[index + x + y * cm->mb_cols] = |
+ mbmi->segment_id; |
+ } |
} |
- } else |
-#endif |
- { |
+ } else { |
cm->last_frame_seg_map[index] = mbmi->segment_id; |
} |
} else { |
-#if CONFIG_SUPERBLOCKS |
- if (mbmi->encoded_as_sb) { |
- mbmi->segment_id = cm->last_frame_seg_map[index]; |
- if (mb_col < cm->mb_cols - 1) |
- mbmi->segment_id = mbmi->segment_id && |
- cm->last_frame_seg_map[index + 1]; |
- if (mb_row < cm->mb_rows - 1) { |
- mbmi->segment_id = mbmi->segment_id && |
- cm->last_frame_seg_map[index + cm->mb_cols]; |
- if (mb_col < cm->mb_cols - 1) |
- mbmi->segment_id = mbmi->segment_id && |
- cm->last_frame_seg_map[index + cm->mb_cols + 1]; |
+ if (mbmi->sb_type) { |
+ const int nmbs = 1 << mbmi->sb_type; |
+ const int ymbs = MIN(cm->mb_rows - mb_row, nmbs); |
+ const int xmbs = MIN(cm->mb_cols - mb_col, nmbs); |
+ unsigned segment_id = -1; |
+ int x, y; |
+ |
+ for (y = 0; y < ymbs; y++) { |
+ for (x = 0; x < xmbs; x++) { |
+ segment_id = MIN(segment_id, |
+ cm->last_frame_seg_map[index + x + |
+ y * cm->mb_cols]); |
+ } |
} |
- } else |
-#endif |
- { |
+ mbmi->segment_id = segment_id; |
+ } else { |
mbmi->segment_id = cm->last_frame_seg_map[index]; |
} |
} |
@@ -689,6 +666,7 @@ |
int mb_to_right_edge; |
int mb_to_top_edge; |
int mb_to_bottom_edge; |
+ const int mb_size = 1 << mi->mbmi.sb_type; |
mb_to_top_edge = xd->mb_to_top_edge; |
mb_to_bottom_edge = xd->mb_to_bottom_edge; |
@@ -703,18 +681,8 @@ |
xd->mb_to_left_edge = |
mb_to_left_edge = -((mb_col * 16) << 3); |
mb_to_left_edge -= LEFT_TOP_MARGIN; |
- |
-#if CONFIG_SUPERBLOCKS |
- if (mi->mbmi.encoded_as_sb) { |
- xd->mb_to_right_edge = |
- mb_to_right_edge = ((pbi->common.mb_cols - 2 - mb_col) * 16) << 3; |
- } else { |
-#endif |
- xd->mb_to_right_edge = |
- mb_to_right_edge = ((pbi->common.mb_cols - 1 - mb_col) * 16) << 3; |
-#if CONFIG_SUPERBLOCKS |
- } |
-#endif |
+ xd->mb_to_right_edge = |
+ mb_to_right_edge = ((pbi->common.mb_cols - mb_size - mb_col) * 16) << 3; |
mb_to_right_edge += RIGHT_BOTTOM_MARGIN; |
// Make sure the MACROBLOCKD mode info pointer is pointed at the |
@@ -756,10 +724,10 @@ |
int recon_y_stride, recon_yoffset; |
int recon_uv_stride, recon_uvoffset; |
+ MV_REFERENCE_FRAME ref_frame = mbmi->ref_frame; |
{ |
int ref_fb_idx; |
- MV_REFERENCE_FRAME ref_frame = mbmi->ref_frame; |
/* Select the appropriate reference frame for this MB */ |
if (ref_frame == LAST_FRAME) |
@@ -788,14 +756,33 @@ |
ref_frame, mbmi->ref_mvs[ref_frame], |
cm->ref_frame_sign_bias); |
- vp9_find_best_ref_mvs(xd, |
- xd->pre.y_buffer, |
- recon_y_stride, |
- mbmi->ref_mvs[ref_frame], |
- &best_mv, &nearest, &nearby); |
- |
vp9_mv_ref_probs(&pbi->common, mv_ref_p, |
mbmi->mb_mode_context[ref_frame]); |
+ |
+ // Is the segment level mode feature enabled for this segment |
+ if (vp9_segfeature_active(xd, mbmi->segment_id, SEG_LVL_MODE)) { |
+ mbmi->mode = |
+ vp9_get_segdata(xd, mbmi->segment_id, SEG_LVL_MODE); |
+ } else { |
+ if (mbmi->sb_type) |
+ mbmi->mode = read_sb_mv_ref(bc, mv_ref_p); |
+ else |
+ mbmi->mode = read_mv_ref(bc, mv_ref_p); |
+ |
+ vp9_accum_mv_refs(&pbi->common, mbmi->mode, |
+ mbmi->mb_mode_context[ref_frame]); |
+ } |
+ |
+ if (mbmi->mode != ZEROMV) { |
+ vp9_find_best_ref_mvs(xd, |
+ xd->pre.y_buffer, |
+ recon_y_stride, |
+ mbmi->ref_mvs[ref_frame], |
+ &nearest, &nearby); |
+ |
+ best_mv.as_int = (mbmi->ref_mvs[ref_frame][0]).as_int; |
+ } |
+ |
#ifdef DEC_DEBUG |
if (dec_debug) |
printf("[D %d %d] %d %d %d %d\n", ref_frame, |
@@ -804,32 +791,6 @@ |
#endif |
} |
- // Is the segment level mode feature enabled for this segment |
- if (vp9_segfeature_active(xd, mbmi->segment_id, SEG_LVL_MODE)) { |
- mbmi->mode = |
- vp9_get_segdata(xd, mbmi->segment_id, SEG_LVL_MODE); |
- } else { |
-#if CONFIG_SUPERBLOCKS |
- if (mbmi->encoded_as_sb) { |
- mbmi->mode = read_sb_mv_ref(bc, mv_ref_p); |
- } else |
-#endif |
- mbmi->mode = read_mv_ref(bc, mv_ref_p); |
- |
- vp9_accum_mv_refs(&pbi->common, mbmi->mode, |
- mbmi->mb_mode_context[mbmi->ref_frame]); |
- } |
- |
-#if CONFIG_PRED_FILTER |
- if (mbmi->mode >= NEARESTMV && mbmi->mode < SPLITMV) { |
- // Is the prediction filter enabled |
- if (cm->pred_filter_mode == 2) |
- mbmi->pred_filter_enabled = |
- vp9_read(bc, cm->prob_pred_filter_off); |
- else |
- mbmi->pred_filter_enabled = cm->pred_filter_mode; |
- } |
-#endif |
if (mbmi->mode >= NEARESTMV && mbmi->mode <= SPLITMV) |
{ |
if (cm->mcomp_filter_type == SWITCHABLE) { |
@@ -877,13 +838,15 @@ |
mbmi->ref_mvs[mbmi->second_ref_frame], |
cm->ref_frame_sign_bias); |
- vp9_find_best_ref_mvs(xd, |
- xd->second_pre.y_buffer, |
- recon_y_stride, |
- mbmi->ref_mvs[mbmi->second_ref_frame], |
- &best_mv_second, |
- &nearest_second, |
- &nearby_second); |
+ if (mbmi->mode != ZEROMV) { |
+ vp9_find_best_ref_mvs(xd, |
+ xd->second_pre.y_buffer, |
+ recon_y_stride, |
+ mbmi->ref_mvs[mbmi->second_ref_frame], |
+ &nearest_second, |
+ &nearby_second); |
+ best_mv_second = mbmi->ref_mvs[mbmi->second_ref_frame][0]; |
+ } |
} |
} else { |
@@ -916,6 +879,29 @@ |
#endif |
} |
+#if CONFIG_NEW_MVREF |
+ // if ((mbmi->mode == NEWMV) || (mbmi->mode == SPLITMV)) |
+ if (mbmi->mode == NEWMV) { |
+ int best_index; |
+ MV_REFERENCE_FRAME ref_frame = mbmi->ref_frame; |
+ |
+ // Encode the index of the choice. |
+ best_index = |
+ vp9_read_mv_ref_id(bc, xd->mb_mv_ref_probs[ref_frame]); |
+ |
+ best_mv.as_int = mbmi->ref_mvs[ref_frame][best_index].as_int; |
+ |
+ if (mbmi->second_ref_frame > 0) { |
+ ref_frame = mbmi->second_ref_frame; |
+ |
+ // Encode the index of the choice. |
+ best_index = |
+ vp9_read_mv_ref_id(bc, xd->mb_mv_ref_probs[ref_frame]); |
+ best_mv_second.as_int = mbmi->ref_mvs[ref_frame][best_index].as_int; |
+ } |
+ } |
+#endif |
+ |
mbmi->uv_mode = DC_PRED; |
switch (mbmi->mode) { |
case SPLITMV: { |
@@ -1072,19 +1058,6 @@ |
case NEWMV: |
-#if CONFIG_NEW_MVREF |
- { |
- int best_index; |
- MV_REFERENCE_FRAME ref_frame = mbmi->ref_frame; |
- |
- // Encode the index of the choice. |
- best_index = |
- vp9_read_mv_ref_id(bc, xd->mb_mv_ref_id_probs[ref_frame]); |
- |
- best_mv.as_int = mbmi->ref_mvs[ref_frame][best_index].as_int; |
- } |
-#endif |
- |
read_nmv(bc, &mv->as_mv, &best_mv.as_mv, nmvc); |
read_nmv_fp(bc, &mv->as_mv, &best_mv.as_mv, nmvc, |
xd->allow_high_precision_mv); |
@@ -1106,18 +1079,6 @@ |
mb_to_bottom_edge); |
if (mbmi->second_ref_frame > 0) { |
-#if CONFIG_NEW_MVREF |
- { |
- int best_index; |
- MV_REFERENCE_FRAME ref_frame = mbmi->second_ref_frame; |
- |
- // Encode the index of the choice. |
- best_index = |
- vp9_read_mv_ref_id(bc, xd->mb_mv_ref_id_probs[ref_frame]); |
- best_mv_second.as_int = mbmi->ref_mvs[ref_frame][best_index].as_int; |
- } |
-#endif |
- |
read_nmv(bc, &mbmi->mv[1].as_mv, &best_mv_second.as_mv, nmvc); |
read_nmv_fp(bc, &mbmi->mv[1].as_mv, &best_mv_second.as_mv, nmvc, |
xd->allow_high_precision_mv); |
@@ -1144,27 +1105,19 @@ |
if (vp9_segfeature_active(xd, mbmi->segment_id, SEG_LVL_MODE)) { |
mbmi->mode = (MB_PREDICTION_MODE) |
vp9_get_segdata(xd, mbmi->segment_id, SEG_LVL_MODE); |
-#if CONFIG_SUPERBLOCKS |
- } else if (mbmi->encoded_as_sb) { |
+ } else if (mbmi->sb_type) { |
mbmi->mode = (MB_PREDICTION_MODE) |
read_sb_ymode(bc, pbi->common.fc.sb_ymode_prob); |
pbi->common.fc.sb_ymode_counts[mbmi->mode]++; |
-#endif |
} else { |
mbmi->mode = (MB_PREDICTION_MODE) |
read_ymode(bc, pbi->common.fc.ymode_prob); |
pbi->common.fc.ymode_counts[mbmi->mode]++; |
} |
-#if CONFIG_COMP_INTRA_PRED |
- mbmi->second_mode = (MB_PREDICTION_MODE)(DC_PRED - 1); |
-#endif |
// If MB mode is BPRED read the block modes |
if (mbmi->mode == B_PRED) { |
int j = 0; |
-#if CONFIG_COMP_INTRA_PRED |
- int use_comp_pred = vp9_read(bc, DEFAULT_COMP_INTRA_PROB); |
-#endif |
do { |
int m; |
m = mi->bmi[j].as_mode.first = (B_PREDICTION_MODE) |
@@ -1173,13 +1126,6 @@ |
if (m == B_CONTEXT_PRED) m -= CONTEXT_PRED_REPLACEMENTS; |
#endif |
pbi->common.fc.bmode_counts[m]++; |
-#if CONFIG_COMP_INTRA_PRED |
- if (use_comp_pred) { |
- mi->bmi[j].as_mode.second = (B_PREDICTION_MODE)read_bmode(bc, pbi->common.fc.bmode_prob); |
- } else { |
- mi->bmi[j].as_mode.second = (B_PREDICTION_MODE)(B_DC_PRED - 1); |
- } |
-#endif |
} while (++j < 16); |
} |
@@ -1194,22 +1140,12 @@ |
mi->bmi[ib + 4].as_mode.first = mode8x8; |
mi->bmi[ib + 5].as_mode.first = mode8x8; |
pbi->common.fc.i8x8_mode_counts[mode8x8]++; |
-#if CONFIG_COMP_INTRA_PRED |
- mi->bmi[ib + 0].as_mode.second = (MB_PREDICTION_MODE)(DC_PRED - 1); |
- mi->bmi[ib + 1].as_mode.second = (MB_PREDICTION_MODE)(DC_PRED - 1); |
- mi->bmi[ib + 4].as_mode.second = (MB_PREDICTION_MODE)(DC_PRED - 1); |
- mi->bmi[ib + 5].as_mode.second = (MB_PREDICTION_MODE)(DC_PRED - 1); |
-#endif |
} |
} else { |
mbmi->uv_mode = (MB_PREDICTION_MODE)read_uv_mode( |
bc, pbi->common.fc.uv_mode_prob[mbmi->mode]); |
pbi->common.fc.uv_mode_counts[mbmi->mode][mbmi->uv_mode]++; |
} |
- |
-#if CONFIG_COMP_INTRA_PRED |
- mbmi->second_uv_mode = (MB_PREDICTION_MODE)(DC_PRED - 1); |
-#endif |
} |
if (cm->txfm_mode == TX_MODE_SELECT && mbmi->mb_skip_coeff == 0 && |
@@ -1219,8 +1155,13 @@ |
// FIXME(rbultje) code ternary symbol once all experiments are merged |
mbmi->txfm_size = vp9_read(bc, cm->prob_tx[0]); |
if (mbmi->txfm_size != TX_4X4 && mbmi->mode != I8X8_PRED && |
- mbmi->mode != SPLITMV) |
+ mbmi->mode != SPLITMV) { |
mbmi->txfm_size += vp9_read(bc, cm->prob_tx[1]); |
+ if (mbmi->sb_type && mbmi->txfm_size != TX_8X8) |
+ mbmi->txfm_size += vp9_read(bc, cm->prob_tx[2]); |
+ } |
+ } else if (mbmi->sb_type && cm->txfm_mode >= ALLOW_32X32) { |
+ mbmi->txfm_size = TX_32X32; |
} else if (cm->txfm_mode >= ALLOW_16X16 && |
((mbmi->ref_frame == INTRA_FRAME && mbmi->mode <= TM_PRED) || |
(mbmi->ref_frame != INTRA_FRAME && mbmi->mode != SPLITMV))) { |