diff options
Diffstat (limited to 'vp8/common/findnearmv.h')
-rw-r--r-- | vp8/common/findnearmv.h | 49 |
1 files changed, 19 insertions, 30 deletions
diff --git a/vp8/common/findnearmv.h b/vp8/common/findnearmv.h index cd7b87adf..345a7c1c0 100644 --- a/vp8/common/findnearmv.h +++ b/vp8/common/findnearmv.h @@ -159,45 +159,34 @@ static B_PREDICTION_MODE left_block_mode(const MODE_INFO *cur_mb, int b) { if (!(b & 3)) { /* On L edge, get from MB to left of us */ --cur_mb; - switch (cur_mb->mbmi.mode) { - case DC_PRED: - return B_DC_PRED; - case V_PRED: - return B_VE_PRED; - case H_PRED: - return B_HE_PRED; - case TM_PRED: - return B_TM_PRED; - case I8X8_PRED: - case B_PRED: - return (cur_mb->bmi + b + 3)->as_mode.first; - default: - return B_DC_PRED; + + if (cur_mb->mbmi.mode < I8X8_PRED) { + return pred_mode_conv(cur_mb->mbmi.mode); + } else if (cur_mb->mbmi.mode == I8X8_PRED) { + return pred_mode_conv((cur_mb->bmi + 3 + b)->as_mode.first); + } else if (cur_mb->mbmi.mode == B_PRED) { + return ((cur_mb->bmi + 3 + b)->as_mode.first); + } else { + return B_DC_PRED; } } return (cur_mb->bmi + b - 1)->as_mode.first; } -static B_PREDICTION_MODE above_block_mode(const MODE_INFO - *cur_mb, int b, int mi_stride) { +static B_PREDICTION_MODE above_block_mode(const MODE_INFO *cur_mb, + int b, int mi_stride) { if (!(b >> 2)) { /* On top edge, get from MB above us */ cur_mb -= mi_stride; - switch (cur_mb->mbmi.mode) { - case DC_PRED: - return B_DC_PRED; - case V_PRED: - return B_VE_PRED; - case H_PRED: - return B_HE_PRED; - case TM_PRED: - return B_TM_PRED; - case I8X8_PRED: - case B_PRED: - return (cur_mb->bmi + b + 12)->as_mode.first; - default: - return B_DC_PRED; + if (cur_mb->mbmi.mode < I8X8_PRED) { + return pred_mode_conv(cur_mb->mbmi.mode); + } else if (cur_mb->mbmi.mode == I8X8_PRED) { + return pred_mode_conv((cur_mb->bmi + 12 + b)->as_mode.first); + } else if (cur_mb->mbmi.mode == B_PRED) { + return ((cur_mb->bmi + 12 + b)->as_mode.first); + } else { + return B_DC_PRED; } } |