From 688417399c69aadd4c287bdb0dec82ef8799011c Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Fri, 24 Jul 2015 18:56:54 +0200 Subject: hevcdsp: split the pred functions by width This should allow for more efficient SIMD. --- libavcodec/hevcdsp.h | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) (limited to 'libavcodec/hevcdsp.h') diff --git a/libavcodec/hevcdsp.h b/libavcodec/hevcdsp.h index e906c5e4aa..59dd9b25ec 100644 --- a/libavcodec/hevcdsp.h +++ b/libavcodec/hevcdsp.h @@ -65,18 +65,30 @@ typedef struct HEVCDSPContext { ptrdiff_t srcstride, int height, int mx, int my, int16_t *mcbuffer); - void (*put_unweighted_pred)(uint8_t *dst, ptrdiff_t dststride, int16_t *src, - ptrdiff_t srcstride, int width, int height); - void (*put_unweighted_pred_avg)(uint8_t *dst, ptrdiff_t dststride, - int16_t *src1, int16_t *src2, - ptrdiff_t srcstride, int width, int height); - void (*weighted_pred)(uint8_t denom, int16_t wlxFlag, int16_t olxFlag, - uint8_t *dst, ptrdiff_t dststride, int16_t *src, - ptrdiff_t srcstride, int width, int height); - void (*weighted_pred_avg)(uint8_t denom, int16_t wl0Flag, int16_t wl1Flag, - int16_t ol0Flag, int16_t ol1Flag, uint8_t *dst, - ptrdiff_t dststride, int16_t *src1, int16_t *src2, - ptrdiff_t srcstride, int width, int height); + void (*put_unweighted_pred[8])(uint8_t *dst, ptrdiff_t dststride, int16_t *src, + ptrdiff_t srcstride, int height); + void (*put_unweighted_pred_chroma[8])(uint8_t *dst, ptrdiff_t dststride, int16_t *src, + ptrdiff_t srcstride, int height); + void (*put_unweighted_pred_avg[8])(uint8_t *dst, ptrdiff_t dststride, + int16_t *src1, int16_t *src2, + ptrdiff_t srcstride, int height); + void (*put_unweighted_pred_avg_chroma[8])(uint8_t *dst, ptrdiff_t dststride, + int16_t *src1, int16_t *src2, + ptrdiff_t srcstride, int height); + void (*weighted_pred[8])(uint8_t denom, int16_t wlxFlag, int16_t olxFlag, + uint8_t *dst, ptrdiff_t dststride, int16_t *src, + ptrdiff_t srcstride, int height); + void (*weighted_pred_chroma[8])(uint8_t denom, int16_t wlxFlag, int16_t olxFlag, + uint8_t *dst, ptrdiff_t dststride, int16_t *src, + ptrdiff_t srcstride, int height); + void (*weighted_pred_avg[8])(uint8_t denom, int16_t wl0Flag, int16_t wl1Flag, + int16_t ol0Flag, int16_t ol1Flag, uint8_t *dst, + ptrdiff_t dststride, int16_t *src1, int16_t *src2, + ptrdiff_t srcstride, int height); + void (*weighted_pred_avg_chroma[8])(uint8_t denom, int16_t wl0Flag, int16_t wl1Flag, + int16_t ol0Flag, int16_t ol1Flag, uint8_t *dst, + ptrdiff_t dststride, int16_t *src1, int16_t *src2, + ptrdiff_t srcstride, int height); void (*hevc_h_loop_filter_luma)(uint8_t *pix, ptrdiff_t stride, int beta, int *tc, -- cgit v1.2.3