]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/mips/me_cmp_init_mips.c
avcodec/ituh263enc: Make static initializations thread-safe
[ffmpeg] / libavcodec / mips / me_cmp_init_mips.c
index 219a0dc00ccd8c6aaf7a625107ae84e746128bec..90b8b912564216916425e8fd3ad97c169f7852fa 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include "libavutil/attributes.h"
+#include "libavutil/mips/cpu.h"
 #include "me_cmp_mips.h"
 
-#if HAVE_MSA
-static av_cold void me_cmp_msa(MECmpContext *c, AVCodecContext *avctx)
+av_cold void ff_me_cmp_init_mips(MECmpContext *c, AVCodecContext *avctx)
 {
+    int cpu_flags = av_get_cpu_flags();
+
+    if (have_msa(cpu_flags)) {
 #if BIT_DEPTH == 8
-    c->pix_abs[0][0] = ff_pix_abs16_msa;
-    c->pix_abs[0][1] = ff_pix_abs16_x2_msa;
-    c->pix_abs[0][2] = ff_pix_abs16_y2_msa;
-    c->pix_abs[0][3] = ff_pix_abs16_xy2_msa;
-    c->pix_abs[1][0] = ff_pix_abs8_msa;
-    c->pix_abs[1][1] = ff_pix_abs8_x2_msa;
-    c->pix_abs[1][2] = ff_pix_abs8_y2_msa;
-    c->pix_abs[1][3] = ff_pix_abs8_xy2_msa;
+        c->pix_abs[0][0] = ff_pix_abs16_msa;
+        c->pix_abs[0][1] = ff_pix_abs16_x2_msa;
+        c->pix_abs[0][2] = ff_pix_abs16_y2_msa;
+        c->pix_abs[0][3] = ff_pix_abs16_xy2_msa;
+        c->pix_abs[1][0] = ff_pix_abs8_msa;
+        c->pix_abs[1][1] = ff_pix_abs8_x2_msa;
+        c->pix_abs[1][2] = ff_pix_abs8_y2_msa;
+        c->pix_abs[1][3] = ff_pix_abs8_xy2_msa;
 
-    c->hadamard8_diff[0] = ff_hadamard8_diff16_msa;
-    c->hadamard8_diff[1] = ff_hadamard8_diff8x8_msa;
+        c->hadamard8_diff[0] = ff_hadamard8_diff16_msa;
+        c->hadamard8_diff[1] = ff_hadamard8_diff8x8_msa;
 
-    c->hadamard8_diff[4] = ff_hadamard8_intra16_msa;
-    c->hadamard8_diff[5] = ff_hadamard8_intra8x8_msa;
+        c->hadamard8_diff[4] = ff_hadamard8_intra16_msa;
+        c->hadamard8_diff[5] = ff_hadamard8_intra8x8_msa;
 
-    c->sad[0] = ff_pix_abs16_msa;
-    c->sad[1] = ff_pix_abs8_msa;
-    c->sse[0] = ff_sse16_msa;
-    c->sse[1] = ff_sse8_msa;
-    c->sse[2] = ff_sse4_msa;
+        c->sad[0] = ff_pix_abs16_msa;
+        c->sad[1] = ff_pix_abs8_msa;
+        c->sse[0] = ff_sse16_msa;
+        c->sse[1] = ff_sse8_msa;
+        c->sse[2] = ff_sse4_msa;
 #endif
-}
-#endif  // #if HAVE_MSA
-
-av_cold void ff_me_cmp_init_mips(MECmpContext *c, AVCodecContext *avctx)
-{
-#if HAVE_MSA
-    me_cmp_msa(c, avctx);
-#endif  // #if HAVE_MSA
+    }
 }