]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/mips/blockdsp_init_mips.c
avcodec/siren: Factorize category 5 and 6 noise computation
[ffmpeg] / libavcodec / mips / blockdsp_init_mips.c
index 55ac1c3e994972badb7d877ca919bd92eddf0708..c6964fa74e0e2cb787987e487e5506ea99a06964 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include "libavutil/mips/cpu.h"
 #include "blockdsp_mips.h"
 
-#if HAVE_MSA
-static av_cold void blockdsp_init_msa(BlockDSPContext *c)
+void ff_blockdsp_init_mips(BlockDSPContext *c)
 {
-    c->clear_block = ff_clear_block_msa;
-    c->clear_blocks = ff_clear_blocks_msa;
+    int cpu_flags = av_get_cpu_flags();
 
-    c->fill_block_tab[0] = ff_fill_block16_msa;
-    c->fill_block_tab[1] = ff_fill_block8_msa;
-}
-#endif  // #if HAVE_MSA
+    if (have_mmi(cpu_flags)) {
+        c->clear_block = ff_clear_block_mmi;
+        c->clear_blocks = ff_clear_blocks_mmi;
 
-#if HAVE_MMI
-static av_cold void blockdsp_init_mmi(BlockDSPContext *c)
-{
-    c->clear_block = ff_clear_block_mmi;
-    c->clear_blocks = ff_clear_blocks_mmi;
+        c->fill_block_tab[0] = ff_fill_block16_mmi;
+        c->fill_block_tab[1] = ff_fill_block8_mmi;
+    }
 
-    c->fill_block_tab[0] = ff_fill_block16_mmi;
-    c->fill_block_tab[1] = ff_fill_block8_mmi;
-}
-#endif /* HAVE_MMI */
+    if (have_msa(cpu_flags)) {
+        c->clear_block = ff_clear_block_msa;
+        c->clear_blocks = ff_clear_blocks_msa;
 
-void ff_blockdsp_init_mips(BlockDSPContext *c)
-{
-#if HAVE_MMI
-    blockdsp_init_mmi(c);
-#endif /* HAVE_MMI */
-#if HAVE_MSA
-    blockdsp_init_msa(c);
-#endif  // #if HAVE_MSA
+        c->fill_block_tab[0] = ff_fill_block16_msa;
+        c->fill_block_tab[1] = ff_fill_block8_msa;
+    }
 }