summaryrefslogtreecommitdiff
path: root/libavcodec/mips/idctdsp_init_mips.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec/mips/idctdsp_init_mips.c')
-rw-r--r--libavcodec/mips/idctdsp_init_mips.c74
1 files changed, 31 insertions, 43 deletions
diff --git a/libavcodec/mips/idctdsp_init_mips.c b/libavcodec/mips/idctdsp_init_mips.c
index 85b76ca478..23efd9ed58 100644
--- a/libavcodec/mips/idctdsp_init_mips.c
+++ b/libavcodec/mips/idctdsp_init_mips.c
@@ -19,56 +19,44 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include "libavutil/mips/cpu.h"
#include "idctdsp_mips.h"
#include "xvididct_mips.h"
-#if HAVE_MSA
-static av_cold void idctdsp_init_msa(IDCTDSPContext *c, AVCodecContext *avctx,
- unsigned high_bit_depth)
+av_cold void ff_idctdsp_init_mips(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_msa;
- c->idct_add = ff_simple_idct_add_msa;
- c->idct = ff_simple_idct_msa;
- c->perm_type = FF_IDCT_PERM_NONE;
- }
+ int cpu_flags = av_get_cpu_flags();
- c->put_pixels_clamped = ff_put_pixels_clamped_msa;
- c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_msa;
- c->add_pixels_clamped = ff_add_pixels_clamped_msa;
-}
-#endif // #if HAVE_MSA
+ if (have_mmi(cpu_flags)) {
+ 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) || (avctx->idct_algo == FF_IDCT_SIMPLE))) {
+ c->idct_put = ff_simple_idct_put_8_mmi;
+ c->idct_add = ff_simple_idct_add_8_mmi;
+ c->idct = ff_simple_idct_8_mmi;
+ c->perm_type = FF_IDCT_PERM_NONE;
+ }
-#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) || (avctx->idct_algo == FF_IDCT_SIMPLE))) {
- c->idct_put = ff_simple_idct_put_8_mmi;
- c->idct_add = ff_simple_idct_add_8_mmi;
- c->idct = ff_simple_idct_8_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;
}
- 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 */
+ if (have_msa(cpu_flags)) {
+ 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_msa;
+ c->idct_add = ff_simple_idct_add_msa;
+ c->idct = ff_simple_idct_msa;
+ c->perm_type = FF_IDCT_PERM_NONE;
+ }
-av_cold void ff_idctdsp_init_mips(IDCTDSPContext *c, AVCodecContext *avctx,
- unsigned high_bit_depth)
-{
-#if HAVE_MMI
- idctdsp_init_mmi(c, avctx, high_bit_depth);
-#endif /* HAVE_MMI */
-#if HAVE_MSA
- idctdsp_init_msa(c, avctx, high_bit_depth);
-#endif // #if HAVE_MSA
+ c->put_pixels_clamped = ff_put_pixels_clamped_msa;
+ c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_msa;
+ c->add_pixels_clamped = ff_add_pixels_clamped_msa;
+ }
}