Commit dd1acdfc authored by Luc Trudeau's avatar Luc Trudeau Committed by Debargha Mukherjee

Intra Prediction for 4x16 and 16x4

Change-Id: Ia190c8b70173b48c91ae0dbb12d007c2a3f5d9b9
parent d2cfbefb
......@@ -64,6 +64,7 @@ foreach $w (@tx_dims) {
push @tx_sizes, [$w, $w];
foreach $h (@tx_dims) {
push @tx_sizes, [$w, $h] if ($w >=4 && $h >=4 && ($w == 2*$h || $h == 2*$w));
push @tx_sizes, [$w, $h] if ($w >=4 && $h >=4 && ($w == 4*$h || $h == 4*$w));
}
}
......
......@@ -949,6 +949,8 @@ static INLINE void highbd_dc_predictor(uint16_t *dst, ptrdiff_t stride, int bw,
intra_pred_sized(type, 32, 16) \
intra_pred_sized(type, 32, 64) \
intra_pred_sized(type, 64, 32) \
intra_pred_sized(type, 4, 16) \
intra_pred_sized(type, 16, 4) \
intra_pred_highbd_sized(type, 4, 8) \
intra_pred_highbd_sized(type, 8, 4) \
intra_pred_highbd_sized(type, 8, 16) \
......@@ -956,7 +958,9 @@ static INLINE void highbd_dc_predictor(uint16_t *dst, ptrdiff_t stride, int bw,
intra_pred_highbd_sized(type, 16, 32) \
intra_pred_highbd_sized(type, 32, 16) \
intra_pred_highbd_sized(type, 32, 64) \
intra_pred_highbd_sized(type, 64, 32)
intra_pred_highbd_sized(type, 64, 32) \
intra_pred_highbd_sized(type, 4, 16) \
intra_pred_highbd_sized(type, 16, 4)
#define intra_pred_above_4x4(type) \
intra_pred_sized(type, 8, 8) \
intra_pred_sized(type, 16, 16) \
......@@ -981,12 +985,16 @@ static INLINE void highbd_dc_predictor(uint16_t *dst, ptrdiff_t stride, int bw,
intra_pred_sized(type, 16, 8) \
intra_pred_sized(type, 16, 32) \
intra_pred_sized(type, 32, 16) \
intra_pred_sized(type, 4, 16) \
intra_pred_sized(type, 16, 4) \
intra_pred_highbd_sized(type, 4, 8) \
intra_pred_highbd_sized(type, 8, 4) \
intra_pred_highbd_sized(type, 8, 16) \
intra_pred_highbd_sized(type, 16, 8) \
intra_pred_highbd_sized(type, 16, 32) \
intra_pred_highbd_sized(type, 32, 16)
intra_pred_highbd_sized(type, 32, 16) \
intra_pred_highbd_sized(type, 4, 16) \
intra_pred_highbd_sized(type, 16, 4)
#define intra_pred_above_4x4(type) \
intra_pred_sized(type, 8, 8) \
intra_pred_sized(type, 16, 16) \
......@@ -1014,7 +1022,9 @@ static INLINE void highbd_dc_predictor(uint16_t *dst, ptrdiff_t stride, int bw,
intra_pred_sized(type, 16, 32) \
intra_pred_sized(type, 32, 16) \
intra_pred_sized(type, 32, 64) \
intra_pred_sized(type, 64, 32)
intra_pred_sized(type, 64, 32) \
intra_pred_sized(type, 4, 16) \
intra_pred_sized(type, 16, 4)
#define intra_pred_above_4x4(type) \
intra_pred_sized(type, 8, 8) \
intra_pred_sized(type, 16, 16) \
......@@ -1032,7 +1042,9 @@ static INLINE void highbd_dc_predictor(uint16_t *dst, ptrdiff_t stride, int bw,
intra_pred_sized(type, 8, 16) \
intra_pred_sized(type, 16, 8) \
intra_pred_sized(type, 16, 32) \
intra_pred_sized(type, 32, 16)
intra_pred_sized(type, 32, 16) \
intra_pred_sized(type, 4, 16) \
intra_pred_sized(type, 16, 4)
#define intra_pred_above_4x4(type) \
intra_pred_sized(type, 8, 8) \
intra_pred_sized(type, 16, 16) \
......
......@@ -677,10 +677,17 @@ static const TX_SIZE max_txsize_rect_intra_lookup[BLOCK_SIZES_ALL] = {
TX_32X32, TX_32X32, TX_32X32,
#endif // CONFIG_EXT_PARTITION
#endif // CONFIG_TX64X64
// 4x16, 16x4, 8x32
TX_4X8, TX_8X4, TX_8X16,
// 32x8 16x64, 64x16
TX_16X8, TX_16X32, TX_32X16,
#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT_INTRA
// 4x16, 16x4,
TX_4X16, TX_16X4,
#else
// 4x16, 16x4,
TX_4X8, TX_8X4,
#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT_INTRA
// 8x32, 32x8
TX_8X16, TX_16X8,
// 16x64, 64x16
TX_16X32, TX_32X16,
#if CONFIG_EXT_PARTITION
#if CONFIG_TX64X64
// 32x128 128x32
......
......@@ -671,7 +671,9 @@ static void av1_init_intra_predictors_internal(void) {
p[TX_16X32] = aom_##type##_predictor_16x32; \
p[TX_32X16] = aom_##type##_predictor_32x16; \
p[TX_32X64] = aom_##type##_predictor_32x64; \
p[TX_64X32] = aom_##type##_predictor_64x32;
p[TX_64X32] = aom_##type##_predictor_64x32; \
p[TX_4X16] = aom_##type##_predictor_4x16; \
p[TX_16X4] = aom_##type##_predictor_16x4;
#else
#define INIT_RECTANGULAR(p, type) \
p[TX_4X8] = aom_##type##_predictor_4x8; \
......@@ -679,7 +681,9 @@ static void av1_init_intra_predictors_internal(void) {
p[TX_8X16] = aom_##type##_predictor_8x16; \
p[TX_16X8] = aom_##type##_predictor_16x8; \
p[TX_16X32] = aom_##type##_predictor_16x32; \
p[TX_32X16] = aom_##type##_predictor_32x16;
p[TX_32X16] = aom_##type##_predictor_32x16; \
p[TX_4X16] = aom_##type##_predictor_4x16; \
p[TX_16X4] = aom_##type##_predictor_16x4;
#endif // CONFIG_TX64X64
#if CONFIG_TX64X64
......@@ -2638,6 +2642,7 @@ static void predict_intra_block_helper(const AV1_COMMON *cm,
return;
}
#endif
build_intra_predictors(xd, ref, ref_stride, dst, dst_stride, mode, tx_size,
have_top ? AOMMIN(txwpx, xr + txwpx) : 0,
have_top_right ? AOMMIN(txwpx, xr) : 0,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment