]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/mips/vp3dsp_init_mips.c
lavu: move LOCAL_ALIGNED from internal.h to mem_internal.h
[ffmpeg] / libavcodec / mips / vp3dsp_init_mips.c
index e183db35b675729fb12f8def11711dc95d96edc6..4252ff790ea5adc7b7484f5c4ad2eb403fa1eddf 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include "libavutil/mips/cpu.h"
 #include "config.h"
 #include "libavutil/attributes.h"
 #include "libavcodec/avcodec.h"
 #include "libavcodec/vp3dsp.h"
 #include "vp3dsp_mips.h"
 
-#if HAVE_MSA
-static av_cold void vp3dsp_init_msa(VP3DSPContext *c, int flags)
+av_cold void ff_vp3dsp_init_mips(VP3DSPContext *c, int flags)
 {
-    c->put_no_rnd_pixels_l2 = ff_put_no_rnd_pixels_l2_msa;
+    int cpu_flags = av_get_cpu_flags();
 
-    c->idct_add      = ff_vp3_idct_add_msa;
-    c->idct_put      = ff_vp3_idct_put_msa;
-    c->idct_dc_add   = ff_vp3_idct_dc_add_msa;
-    c->v_loop_filter = ff_vp3_v_loop_filter_msa;
-    c->h_loop_filter = ff_vp3_h_loop_filter_msa;
-}
-#endif /* HAVE_MSA */
+    if (have_mmi(cpu_flags)) {
+        c->put_no_rnd_pixels_l2 = ff_put_no_rnd_pixels_l2_mmi;
 
-#if HAVE_MMI
-static av_cold void vp3dsp_init_mmi(VP3DSPContext *c, int flags)
-{
-    c->put_no_rnd_pixels_l2 = ff_put_no_rnd_pixels_l2_mmi;
+        c->idct_add      = ff_vp3_idct_add_mmi;
+        c->idct_put      = ff_vp3_idct_put_mmi;
+        c->idct_dc_add   = ff_vp3_idct_dc_add_mmi;
+    }
 
-    c->idct_add      = ff_vp3_idct_add_mmi;
-    c->idct_put      = ff_vp3_idct_put_mmi;
-    c->idct_dc_add   = ff_vp3_idct_dc_add_mmi;
-}
-#endif /* HAVE_MMI */
+    if (have_msa(cpu_flags)) {
+        c->put_no_rnd_pixels_l2 = ff_put_no_rnd_pixels_l2_msa;
 
-av_cold void ff_vp3dsp_init_mips(VP3DSPContext *c, int flags)
-{
-#if HAVE_MMI
-    vp3dsp_init_mmi(c, flags);
-#endif /* HAVE_MMI */
-#if HAVE_MSA
-    vp3dsp_init_msa(c, flags);
-#endif /* HAVE_MSA */
+        c->idct_add      = ff_vp3_idct_add_msa;
+        c->idct_put      = ff_vp3_idct_put_msa;
+        c->idct_dc_add   = ff_vp3_idct_dc_add_msa;
+        c->v_loop_filter = ff_vp3_v_loop_filter_msa;
+        c->h_loop_filter = ff_vp3_h_loop_filter_msa;
+    }
 }