]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/mips/xvididct_init_mips.c
avcodec/avcodec: Move decoder channel count check to ff_decode_preinit
[ffmpeg] / libavcodec / mips / xvididct_init_mips.c
index c1d82cc30c77b6fd255f3cc2fd8f09c84ad3055f..ed545cfe173fef123d5fdc0b66d539276751005a 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include "libavutil/mips/cpu.h"
 #include "xvididct_mips.h"
 
-#if HAVE_MMI
-static av_cold void xvid_idct_init_mmi(IDCTDSPContext *c, AVCodecContext *avctx,
+av_cold void ff_xvid_idct_init_mips(IDCTDSPContext *c, AVCodecContext *avctx,
         unsigned high_bit_depth)
 {
-    if (!high_bit_depth) {
-        if (avctx->idct_algo == FF_IDCT_AUTO ||
-                avctx->idct_algo == FF_IDCT_XVID) {
-            c->idct_put = ff_xvid_idct_put_mmi;
-            c->idct_add = ff_xvid_idct_add_mmi;
-            c->idct = ff_xvid_idct_mmi;
-            c->perm_type = FF_IDCT_PERM_NONE;
+    int cpu_flags = av_get_cpu_flags();
+
+    if (have_mmi(cpu_flags)) {
+        if (!high_bit_depth) {
+            if (avctx->idct_algo == FF_IDCT_AUTO ||
+                    avctx->idct_algo == FF_IDCT_XVID) {
+                c->idct_put = ff_xvid_idct_put_mmi;
+                c->idct_add = ff_xvid_idct_add_mmi;
+                c->idct = ff_xvid_idct_mmi;
+                c->perm_type = FF_IDCT_PERM_NONE;
+            }
         }
     }
 }
-#endif /* HAVE_MMI */
-
-av_cold void ff_xvid_idct_init_mips(IDCTDSPContext *c, AVCodecContext *avctx,
-        unsigned high_bit_depth)
-{
-#if HAVE_MMI
-    xvid_idct_init_mmi(c, avctx, high_bit_depth);
-#endif /* HAVE_MMI */
-}