summaryrefslogtreecommitdiff
path: root/libavcodec/mips/idctdsp_init_mips.c
diff options
context:
space:
mode:
author周晓勇 <zhouxiaoyong@loongson.cn>2015-07-16 15:07:14 +0800
committerMichael Niedermayer <michael@niedermayer.cc>2015-07-16 14:27:53 +0200
commit0bfa176c64c228435e832d4e5ebee974c23d8256 (patch)
tree3943db3e1bbfe7885c260ede4ef39a1b57d49e27 /libavcodec/mips/idctdsp_init_mips.c
parentdcd14db80670866377a880cb3e03c372c5b2ebd5 (diff)
avcodec: loongson optimized idctdsp with mmi
Signed-off-by: ZhouXiaoyong <zhouxiaoyong@loongson.cn> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/mips/idctdsp_init_mips.c')
-rw-r--r--libavcodec/mips/idctdsp_init_mips.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/libavcodec/mips/idctdsp_init_mips.c b/libavcodec/mips/idctdsp_init_mips.c
index c964340869..3d2192e273 100644
--- a/libavcodec/mips/idctdsp_init_mips.c
+++ b/libavcodec/mips/idctdsp_init_mips.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015 Manojkumar Bhosale (Manojkumar.Bhosale@imgtec.com)
+ * Zhou Xiaoyong <zhouxiaoyong@loongson.cn>
*
* This file is part of FFmpeg.
*
@@ -40,10 +41,33 @@ static av_cold void idctdsp_init_msa(IDCTDSPContext *c, AVCodecContext *avctx,
}
#endif // #if HAVE_MSA
+#if HAVE_MMI
+static av_cold void idctdsp_init_mmi(IDCTDSPContext *c, AVCodecContext *avctx,
+ unsigned high_bit_depth)
+{
+ if ((avctx->lowres != 1) && (avctx->lowres != 2) && (avctx->lowres != 3) &&
+ (avctx->bits_per_raw_sample != 10) &&
+ (avctx->bits_per_raw_sample != 12) &&
+ (avctx->idct_algo == FF_IDCT_AUTO)) {
+ c->idct_put = ff_simple_idct_put_mmi;
+ c->idct_add = ff_simple_idct_add_mmi;
+ c->idct = ff_simple_idct_mmi;
+ c->perm_type = FF_IDCT_PERM_NONE;
+ }
+
+ c->put_pixels_clamped = ff_put_pixels_clamped_mmi;
+ c->add_pixels_clamped = ff_add_pixels_clamped_mmi;
+ c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_mmi;
+}
+#endif /* HAVE_MMI */
+
void ff_idctdsp_init_mips(IDCTDSPContext *c, AVCodecContext *avctx,
unsigned high_bit_depth)
{
#if HAVE_MSA
idctdsp_init_msa(c, avctx, high_bit_depth);
#endif // #if HAVE_MSA
+#if HAVE_MMI
+ idctdsp_init_mmi(c, avctx, high_bit_depth);
+#endif /* HAVE_MMI */
}