diff options
Diffstat (limited to 'third_party/aom/av1/common/mvref_common.h')
-rw-r--r-- | third_party/aom/av1/common/mvref_common.h | 190 |
1 files changed, 12 insertions, 178 deletions
diff --git a/third_party/aom/av1/common/mvref_common.h b/third_party/aom/av1/common/mvref_common.h index 01f74b77a..ec5edeeab 100644 --- a/third_party/aom/av1/common/mvref_common.h +++ b/third_party/aom/av1/common/mvref_common.h @@ -18,11 +18,7 @@ extern "C" { #endif -#if CONFIG_REF_MV #define MVREF_NEIGHBOURS 9 -#else -#define MVREF_NEIGHBOURS 8 -#endif typedef struct position { int row; @@ -45,7 +41,7 @@ typedef enum { // adding 9 for each intra block, 3 for each zero mv and 1 for each new // motion vector. This single number is then converted into a context // with a single lookup ( counter_to_context ). -static const int mode_2_counter[MB_MODE_COUNT] = { +static const int mode_2_counter[] = { 9, // DC_PRED 9, // V_PRED 9, // H_PRED @@ -56,7 +52,11 @@ static const int mode_2_counter[MB_MODE_COUNT] = { 9, // D207_PRED 9, // D63_PRED #if CONFIG_ALT_INTRA - 9, // SMOOTH_PRED + 9, // SMOOTH_PRED +#if CONFIG_SMOOTH_HV + 9, // SMOOTH_V_PRED + 9, // SMOOTH_H_PRED +#endif // CONFIG_SMOOTH_HV #endif // CONFIG_ALT_INTRA 9, // TM_PRED 0, // NEARESTMV @@ -72,8 +72,6 @@ static const int mode_2_counter[MB_MODE_COUNT] = { 1, // SR_NEW_NEWMV #endif // CONFIG_COMPOUND_SINGLEREF 0, // NEAREST_NEARESTMV - 0, // NEAREST_NEARMV - 0, // NEAR_NEARESTMV 0, // NEAR_NEARMV 1, // NEAREST_NEWMV 1, // NEW_NEARESTMV @@ -109,158 +107,6 @@ static const int counter_to_context[19] = { BOTH_INTRA // 18 }; -#if !CONFIG_REF_MV -static const POSITION mv_ref_blocks[BLOCK_SIZES][MVREF_NEIGHBOURS] = { - // 4X4 - { { -1, 0 }, - { 0, -1 }, - { -1, -1 }, - { -2, 0 }, - { 0, -2 }, - { -2, -1 }, - { -1, -2 }, - { -2, -2 } }, - // 4X8 - { { -1, 0 }, - { 0, -1 }, - { -1, -1 }, - { -2, 0 }, - { 0, -2 }, - { -2, -1 }, - { -1, -2 }, - { -2, -2 } }, - // 8X4 - { { -1, 0 }, - { 0, -1 }, - { -1, -1 }, - { -2, 0 }, - { 0, -2 }, - { -2, -1 }, - { -1, -2 }, - { -2, -2 } }, - // 8X8 - { { -1, 0 }, - { 0, -1 }, - { -1, -1 }, - { -2, 0 }, - { 0, -2 }, - { -2, -1 }, - { -1, -2 }, - { -2, -2 } }, - // 8X16 - { { 0, -1 }, - { -1, 0 }, - { 1, -1 }, - { -1, -1 }, - { 0, -2 }, - { -2, 0 }, - { -2, -1 }, - { -1, -2 } }, - // 16X8 - { { -1, 0 }, - { 0, -1 }, - { -1, 1 }, - { -1, -1 }, - { -2, 0 }, - { 0, -2 }, - { -1, -2 }, - { -2, -1 } }, - // 16X16 - { { -1, 0 }, - { 0, -1 }, - { -1, 1 }, - { 1, -1 }, - { -1, -1 }, - { -3, 0 }, - { 0, -3 }, - { -3, -3 } }, - // 16X32 - { { 0, -1 }, - { -1, 0 }, - { 2, -1 }, - { -1, -1 }, - { -1, 1 }, - { 0, -3 }, - { -3, 0 }, - { -3, -3 } }, - // 32X16 - { { -1, 0 }, - { 0, -1 }, - { -1, 2 }, - { -1, -1 }, - { 1, -1 }, - { -3, 0 }, - { 0, -3 }, - { -3, -3 } }, - // 32X32 - { { -1, 1 }, - { 1, -1 }, - { -1, 2 }, - { 2, -1 }, - { -1, -1 }, - { -3, 0 }, - { 0, -3 }, - { -3, -3 } }, - // 32X64 - { { 0, -1 }, - { -1, 0 }, - { 4, -1 }, - { -1, 2 }, - { -1, -1 }, - { 0, -3 }, - { -3, 0 }, - { 2, -1 } }, - // 64X32 - { { -1, 0 }, - { 0, -1 }, - { -1, 4 }, - { 2, -1 }, - { -1, -1 }, - { -3, 0 }, - { 0, -3 }, - { -1, 2 } }, - // 64X64 - { { -1, 3 }, - { 3, -1 }, - { -1, 4 }, - { 4, -1 }, - { -1, -1 }, - { -1, 0 }, - { 0, -1 }, - { -1, 6 } }, -#if CONFIG_EXT_PARTITION - // TODO(debargha/jingning) Making them twice the 32x64, .. ones above - // 64x128 - { { 0, -2 }, - { -2, 0 }, - { 8, -2 }, - { -2, 4 }, - { -2, -2 }, - { 0, -6 }, - { -6, 0 }, - { 4, -2 } }, - // 128x64 - { { -2, 0 }, - { 0, -2 }, - { -2, 8 }, - { 4, -2 }, - { -2, -2 }, - { -6, 0 }, - { 0, -6 }, - { -2, 4 } }, - // 128x128 - { { -2, 6 }, - { 6, -2 }, - { -2, 8 }, - { 8, -2 }, - { -2, -2 }, - { -2, 0 }, - { 0, -2 }, - { -2, 12 } }, -#endif // CONFIG_EXT_PARTITION -}; -#endif - static const int idx_n_column_to_subblock[4][2] = { { 1, 2 }, { 1, 3 }, { 3, 2 }, { 3, 3 } }; @@ -283,20 +129,11 @@ static INLINE void clamp_mv_ref(MV *mv, int bw, int bh, const MACROBLOCKD *xd) { // on whether the block_size < 8x8 and we have check_sub_blocks set. static INLINE int_mv get_sub_block_mv(const MODE_INFO *candidate, int which_mv, int search_col, int block_idx) { -#if CONFIG_REF_MV (void)search_col; (void)block_idx; return candidate->mbmi.mv[which_mv]; -#else - return block_idx >= 0 && candidate->mbmi.sb_type < BLOCK_8X8 - ? candidate - ->bmi[idx_n_column_to_subblock[block_idx][search_col == 0]] - .as_mv[which_mv] - : candidate->mbmi.mv[which_mv]; -#endif } -#if CONFIG_REF_MV static INLINE int_mv get_sub_block_pred_mv(const MODE_INFO *candidate, int which_mv, int search_col, int block_idx) { @@ -304,7 +141,6 @@ static INLINE int_mv get_sub_block_pred_mv(const MODE_INFO *candidate, (void)block_idx; return candidate->mbmi.mv[which_mv]; } -#endif // Performs mv sign inversion if indicated by the reference frame combination. static INLINE int_mv scale_mv(const MB_MODE_INFO *mbmi, int ref, @@ -384,7 +220,6 @@ static INLINE void lower_mv_precision(MV *mv, int allow_hp) { } } -#if CONFIG_REF_MV static INLINE uint8_t av1_get_pred_diff_ctx(const int_mv pred_mv, const int_mv this_mv) { if (abs(this_mv.as_mv.row - pred_mv.as_mv.row) <= 4 && @@ -434,8 +269,12 @@ static INLINE void av1_set_ref_frame(MV_REFERENCE_FRAME *rf, } else { rf[0] = ref_frame_type; rf[1] = NONE_FRAME; - assert(ref_frame_type > INTRA_FRAME && - ref_frame_type < TOTAL_REFS_PER_FRAME); +#if CONFIG_INTRABC + assert(ref_frame_type > NONE_FRAME); +#else + assert(ref_frame_type > INTRA_FRAME); +#endif + assert(ref_frame_type < TOTAL_REFS_PER_FRAME); } } @@ -477,17 +316,14 @@ static INLINE uint8_t av1_drl_ctx(const CANDIDATE_MV *ref_mv_stack, return 0; } -#endif typedef void (*find_mv_refs_sync)(void *const data, int mi_row); void av1_find_mv_refs(const AV1_COMMON *cm, const MACROBLOCKD *xd, MODE_INFO *mi, MV_REFERENCE_FRAME ref_frame, -#if CONFIG_REF_MV uint8_t *ref_mv_count, CANDIDATE_MV *ref_mv_stack, #if CONFIG_EXT_INTER int16_t *compound_mode_context, #endif // CONFIG_EXT_INTER -#endif int_mv *mv_ref_list, int mi_row, int mi_col, find_mv_refs_sync sync, void *const data, int16_t *mode_context); @@ -500,10 +336,8 @@ void av1_find_best_ref_mvs(int allow_hp, int_mv *mvlist, int_mv *nearest_mv, void av1_append_sub8x8_mvs_for_idx(const AV1_COMMON *cm, MACROBLOCKD *xd, int block, int ref, int mi_row, int mi_col, -#if CONFIG_REF_MV CANDIDATE_MV *ref_mv_stack, uint8_t *ref_mv_count, -#endif #if CONFIG_EXT_INTER int_mv *mv_list, #endif // CONFIG_EXT_INTER |