diff options
author | Yaowu Xu <yaowu@google.com> | 2013-06-25 18:15:42 -0700 |
---|---|---|
committer | Yaowu Xu <yaowu@google.com> | 2013-06-26 14:10:43 -0700 |
commit | 25fe05fd9230d3c08031431ded34f6a8ac9a62ef (patch) | |
tree | 47e6126149f34bec4e5af4dfffaf068522c058af /vp9/common/vp9_blockd.h | |
parent | 0441e0a2fc6d8de954b4147dd2d065323d1b325c (diff) | |
download | libvpx-25fe05fd9230d3c08031431ded34f6a8ac9a62ef.tar libvpx-25fe05fd9230d3c08031431ded34f6a8ac9a62ef.tar.gz libvpx-25fe05fd9230d3c08031431ded34f6a8ac9a62ef.tar.bz2 libvpx-25fe05fd9230d3c08031431ded34f6a8ac9a62ef.zip |
Change to use LUT for mode-to-txfm conversion
Change-Id: Ieb989830f49e6708ee7728eddebf7a2144c37c6f
Diffstat (limited to 'vp9/common/vp9_blockd.h')
-rw-r--r-- | vp9/common/vp9_blockd.h | 45 |
1 files changed, 9 insertions, 36 deletions
diff --git a/vp9/common/vp9_blockd.h b/vp9/common/vp9_blockd.h index a09f33ed9..e3f4cbdc6 100644 --- a/vp9/common/vp9_blockd.h +++ b/vp9/common/vp9_blockd.h @@ -338,6 +338,7 @@ typedef struct macroblockd { signed char last_ref_lf_deltas[MAX_REF_LF_DELTAS]; /* 0 = Intra, Last, GF, ARF */ signed char ref_lf_deltas[MAX_REF_LF_DELTAS]; + /* 0 = ZERO_MV, MV */ signed char last_mode_lf_deltas[MAX_MODE_LF_DELTAS]; /* 0 = ZERO_MV, MV */ @@ -504,53 +505,25 @@ static BLOCK_SIZE_TYPE get_subsize(BLOCK_SIZE_TYPE bsize, return subsize; } -// transform mapping -static TX_TYPE txfm_map(MB_PREDICTION_MODE bmode) { - switch (bmode) { - case TM_PRED : - case D135_PRED : - return ADST_ADST; - - case V_PRED : - case D117_PRED : - case D63_PRED: - return ADST_DCT; - - case H_PRED : - case D153_PRED : - case D27_PRED : - return DCT_ADST; +extern const TX_TYPE mode2txfm_map[MB_MODE_COUNT]; - default: - return DCT_DCT; - } -} - -static TX_TYPE get_tx_type_4x4(const MACROBLOCKD *xd, int ib) { +static INLINE TX_TYPE get_tx_type_4x4(const MACROBLOCKD *xd, int ib) { MODE_INFO *const mi = xd->mode_info_context; MB_MODE_INFO *const mbmi = &mi->mbmi; if (xd->lossless || mbmi->ref_frame[0] != INTRA_FRAME) return DCT_DCT; - if (mbmi->sb_type < BLOCK_SIZE_SB8X8) { - return txfm_map(mi->bmi[ib].as_mode.first); - } else { - assert(mbmi->mode <= TM_PRED); - return txfm_map(mbmi->mode); - } + return mode2txfm_map[mbmi->sb_type < BLOCK_SIZE_SB8X8 ? + mi->bmi[ib].as_mode.first : mbmi->mode]; } -static TX_TYPE get_tx_type_8x8(const MACROBLOCKD *xd) { - return xd->mode_info_context->mbmi.mode <= TM_PRED - ? txfm_map(xd->mode_info_context->mbmi.mode) - : DCT_DCT; +static INLINE TX_TYPE get_tx_type_8x8(const MACROBLOCKD *xd) { + return mode2txfm_map[xd->mode_info_context->mbmi.mode]; } -static TX_TYPE get_tx_type_16x16(const MACROBLOCKD *xd) { - return xd->mode_info_context->mbmi.mode <= TM_PRED - ? txfm_map(xd->mode_info_context->mbmi.mode) - : DCT_DCT; +static INLINE TX_TYPE get_tx_type_16x16(const MACROBLOCKD *xd) { + return mode2txfm_map[xd->mode_info_context->mbmi.mode]; } void vp9_setup_block_dptrs(MACROBLOCKD *xd, |