summaryrefslogtreecommitdiff
path: root/libavcodec/mips/vp9dsp_init_mips.c
diff options
context:
space:
mode:
authorShivraj Patil <shivraj.patil@imgtec.com>2015-07-23 18:25:07 +0530
committerMichael Niedermayer <michael@niedermayer.cc>2015-07-24 22:51:34 +0200
commite21b090bfb7b6b723ff1c28cc5bb16e7498addb2 (patch)
treed93a09a6a03a1eff79fe3a3f2e70679825d7cad9 /libavcodec/mips/vp9dsp_init_mips.c
parent0c0cd34f9c7df033ca4cc31e118e68ceaeb3e2bb (diff)
avcodec/mips: MSA (MIPS-SIMD-Arch) optimizations for VP9 intra functions
Signed-off-by: Shivraj Patil <shivraj.patil@imgtec.com> Reviewed-by: "Ronald S. Bultje" <rsbultje@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/mips/vp9dsp_init_mips.c')
-rw-r--r--libavcodec/mips/vp9dsp_init_mips.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/libavcodec/mips/vp9dsp_init_mips.c b/libavcodec/mips/vp9dsp_init_mips.c
index 79cafb812c..c13af1aaf5 100644
--- a/libavcodec/mips/vp9dsp_init_mips.c
+++ b/libavcodec/mips/vp9dsp_init_mips.c
@@ -24,6 +24,36 @@
#include "vp9dsp_mips.h"
#if HAVE_MSA
+static av_cold void vp9dsp_intrapred_init_msa(VP9DSPContext *dsp, int bpp)
+{
+ if (bpp == 8) {
+#define init_intra_pred_msa(tx, sz) \
+ dsp->intra_pred[tx][VERT_PRED] = ff_vert_##sz##_msa; \
+ dsp->intra_pred[tx][HOR_PRED] = ff_hor_##sz##_msa; \
+ dsp->intra_pred[tx][DC_PRED] = ff_dc_##sz##_msa; \
+ dsp->intra_pred[tx][LEFT_DC_PRED] = ff_dc_left_##sz##_msa; \
+ dsp->intra_pred[tx][TOP_DC_PRED] = ff_dc_top_##sz##_msa; \
+ dsp->intra_pred[tx][DC_128_PRED] = ff_dc_128_##sz##_msa; \
+ dsp->intra_pred[tx][DC_127_PRED] = ff_dc_127_##sz##_msa; \
+ dsp->intra_pred[tx][DC_129_PRED] = ff_dc_129_##sz##_msa; \
+ dsp->intra_pred[tx][TM_VP8_PRED] = ff_tm_##sz##_msa; \
+
+ init_intra_pred_msa(TX_16X16, 16x16);
+ init_intra_pred_msa(TX_32X32, 32x32);
+#undef init_intra_pred_msa
+
+#define init_intra_pred_msa(tx, sz) \
+ dsp->intra_pred[tx][DC_PRED] = ff_dc_##sz##_msa; \
+ dsp->intra_pred[tx][LEFT_DC_PRED] = ff_dc_left_##sz##_msa; \
+ dsp->intra_pred[tx][TOP_DC_PRED] = ff_dc_top_##sz##_msa; \
+ dsp->intra_pred[tx][TM_VP8_PRED] = ff_tm_##sz##_msa; \
+
+ init_intra_pred_msa(TX_4X4, 4x4);
+ init_intra_pred_msa(TX_8X8, 8x8);
+#undef init_intra_pred_msa
+ }
+}
+
static av_cold void vp9dsp_itxfm_init_msa(VP9DSPContext *dsp, int bpp)
{
if (bpp == 8) {
@@ -129,6 +159,7 @@ static av_cold void vp9dsp_loopfilter_init_msa(VP9DSPContext *dsp, int bpp)
static av_cold void vp9dsp_init_msa(VP9DSPContext *dsp, int bpp)
{
+ vp9dsp_intrapred_init_msa(dsp, bpp);
vp9dsp_itxfm_init_msa(dsp, bpp);
vp9dsp_mc_init_msa(dsp, bpp);
vp9dsp_loopfilter_init_msa(dsp, bpp);