diff options
author | Deb Mukherjee <debargha@google.com> | 2012-10-21 15:35:24 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2012-10-21 15:35:24 -0700 |
commit | 788d7f10d4e03b58b02c14b961200ccb3134c4f0 (patch) | |
tree | c24362b1a4b5c38b9b9e6684c8a5db2ed6ccf8ed /vp8/common | |
parent | 91dc8ce70d8071b114c907bf760d65bad83fe072 (diff) | |
parent | 57679badf2970455117fb95e766d2ed202eb31bf (diff) | |
download | libvpx-788d7f10d4e03b58b02c14b961200ccb3134c4f0.tar libvpx-788d7f10d4e03b58b02c14b961200ccb3134c4f0.tar.gz libvpx-788d7f10d4e03b58b02c14b961200ccb3134c4f0.tar.bz2 libvpx-788d7f10d4e03b58b02c14b961200ccb3134c4f0.zip |
Merge "Allow B_VL_PRED & B_LD_PRED modes with Superblocks" into experimental
Diffstat (limited to 'vp8/common')
-rw-r--r-- | vp8/common/blockd.h | 2 | ||||
-rw-r--r-- | vp8/common/findnearmv.h | 49 | ||||
-rw-r--r-- | vp8/common/reconintra4x4.c | 13 |
3 files changed, 26 insertions, 38 deletions
diff --git a/vp8/common/blockd.h b/vp8/common/blockd.h index 511fe9e2a..3ab4cc3a9 100644 --- a/vp8/common/blockd.h +++ b/vp8/common/blockd.h @@ -400,7 +400,6 @@ typedef struct MacroBlockD { #define ACTIVE_HT16 300 #endif -#if CONFIG_HYBRIDTRANSFORM8X8 || CONFIG_HYBRIDTRANSFORM16X16 // convert MB_PREDICTION_MODE to B_PREDICTION_MODE static B_PREDICTION_MODE pred_mode_conv(MB_PREDICTION_MODE mode) { B_PREDICTION_MODE b_mode; @@ -442,7 +441,6 @@ static B_PREDICTION_MODE pred_mode_conv(MB_PREDICTION_MODE mode) { } return b_mode; } -#endif #if CONFIG_HYBRIDTRANSFORM || CONFIG_HYBRIDTRANSFORM8X8 || CONFIG_HYBRIDTRANSFORM16X16 // transform mapping 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; } } diff --git a/vp8/common/reconintra4x4.c b/vp8/common/reconintra4x4.c index 0ba0a2cff..dfbaf137b 100644 --- a/vp8/common/reconintra4x4.c +++ b/vp8/common/reconintra4x4.c @@ -298,18 +298,19 @@ void vp8_comp_intra4x4_predict_c(BLOCKD *x, void vp8_intra_prediction_down_copy(MACROBLOCKD *xd) { unsigned char *above_right = *(xd->block[0].base_dst) + xd->block[0].dst - xd->block[0].dst_stride + 16; + unsigned int *src_ptr = (unsigned int *) + (above_right - (xd->mb_index == 3 ? 16 * xd->block[0].dst_stride : 0)); - unsigned int *src_ptr = (unsigned int *)above_right; - unsigned int *dst_ptr0 = - (unsigned int *)(above_right + 4 * xd->block[0].dst_stride); + unsigned int *dst_ptr0 = (unsigned int *)above_right; unsigned int *dst_ptr1 = - (unsigned int *)(above_right + 8 * xd->block[0].dst_stride); + (unsigned int *)(above_right + 4 * xd->block[0].dst_stride); unsigned int *dst_ptr2 = + (unsigned int *)(above_right + 8 * xd->block[0].dst_stride); + unsigned int *dst_ptr3 = (unsigned int *)(above_right + 12 * xd->block[0].dst_stride); *dst_ptr0 = *src_ptr; *dst_ptr1 = *src_ptr; *dst_ptr2 = *src_ptr; + *dst_ptr3 = *src_ptr; } - - |