Merge "vp10: reimplement d45/4x4 to match vp8 instead of vp9."
This commit is contained in:
Коммит
3fedf4a59b
|
@ -55,16 +55,24 @@ static intra_high_pred_fn dc_pred_high[2][2][4];
|
|||
#endif // CONFIG_VP9_HIGHBITDEPTH
|
||||
|
||||
static void vp10_init_intra_predictors_internal(void) {
|
||||
#define INIT_ALL_SIZES(p, type) \
|
||||
p[TX_4X4] = vpx_##type##_predictor_4x4; \
|
||||
#define INIT_NO_4X4(p, type) \
|
||||
p[TX_8X8] = vpx_##type##_predictor_8x8; \
|
||||
p[TX_16X16] = vpx_##type##_predictor_16x16; \
|
||||
p[TX_32X32] = vpx_##type##_predictor_32x32
|
||||
|
||||
#define INIT_ALL_SIZES(p, type) \
|
||||
p[TX_4X4] = vpx_##type##_predictor_4x4; \
|
||||
INIT_NO_4X4(p, type)
|
||||
|
||||
INIT_ALL_SIZES(pred[V_PRED], v);
|
||||
INIT_ALL_SIZES(pred[H_PRED], h);
|
||||
INIT_ALL_SIZES(pred[D207_PRED], d207);
|
||||
#if CONFIG_MISC_FIXES
|
||||
pred[D45_PRED][TX_4X4] = vpx_d45e_predictor_4x4;
|
||||
INIT_NO_4X4(pred[D45_PRED], d45);
|
||||
#else
|
||||
INIT_ALL_SIZES(pred[D45_PRED], d45);
|
||||
#endif
|
||||
INIT_ALL_SIZES(pred[D63_PRED], d63);
|
||||
INIT_ALL_SIZES(pred[D117_PRED], d117);
|
||||
INIT_ALL_SIZES(pred[D135_PRED], d135);
|
||||
|
@ -80,7 +88,12 @@ static void vp10_init_intra_predictors_internal(void) {
|
|||
INIT_ALL_SIZES(pred_high[V_PRED], highbd_v);
|
||||
INIT_ALL_SIZES(pred_high[H_PRED], highbd_h);
|
||||
INIT_ALL_SIZES(pred_high[D207_PRED], highbd_d207);
|
||||
#if CONFIG_MISC_FIXES
|
||||
pred_high[D45_PRED][TX_4X4] = vpx_highbd_d45e_predictor_4x4;
|
||||
INIT_NO_4X4(pred_high[D45_PRED], highbd_d45);
|
||||
#else
|
||||
INIT_ALL_SIZES(pred_high[D45_PRED], highbd_d45);
|
||||
#endif
|
||||
INIT_ALL_SIZES(pred_high[D63_PRED], highbd_d63);
|
||||
INIT_ALL_SIZES(pred_high[D117_PRED], highbd_d117);
|
||||
INIT_ALL_SIZES(pred_high[D135_PRED], highbd_d135);
|
||||
|
|
|
@ -518,6 +518,21 @@ static INLINE void highbd_d45_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
|
|||
}
|
||||
}
|
||||
|
||||
static INLINE void highbd_d45e_predictor(uint16_t *dst, ptrdiff_t stride,
|
||||
int bs, const uint16_t *above,
|
||||
const uint16_t *left, int bd) {
|
||||
int r, c;
|
||||
(void) left;
|
||||
(void) bd;
|
||||
for (r = 0; r < bs; ++r) {
|
||||
for (c = 0; c < bs; ++c) {
|
||||
dst[c] = AVG3(above[r + c], above[r + c + 1],
|
||||
above[r + c + 1 + (r + c + 2 < 8)]);
|
||||
}
|
||||
dst += stride;
|
||||
}
|
||||
}
|
||||
|
||||
static INLINE void highbd_d117_predictor(uint16_t *dst, ptrdiff_t stride,
|
||||
int bs, const uint16_t *above,
|
||||
const uint16_t *left, int bd) {
|
||||
|
@ -766,4 +781,7 @@ intra_pred_allsizes(dc_128)
|
|||
intra_pred_allsizes(dc_left)
|
||||
intra_pred_allsizes(dc_top)
|
||||
intra_pred_allsizes(dc)
|
||||
#if CONFIG_VP9_HIGHBITDEPTH && CONFIG_MISC_FIXES
|
||||
intra_pred_highbd_sized(d45e, 4)
|
||||
#endif
|
||||
#undef intra_pred_allsizes
|
||||
|
|
|
@ -230,6 +230,9 @@ if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
|
|||
add_proto qw/void vpx_highbd_d45_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
|
||||
specialize qw/vpx_highbd_d45_predictor_4x4/;
|
||||
|
||||
add_proto qw/void vpx_highbd_d45e_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
|
||||
specialize qw/vpx_highbd_d45e_predictor_4x4/;
|
||||
|
||||
add_proto qw/void vpx_highbd_d63_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
|
||||
specialize qw/vpx_highbd_d63_predictor_4x4/;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче