IWMMXT configure support + runtime selection patch by (Gildas Bazin, gbazin : altern...
[ffmpeg.git] / libavcodec / armv4l / dsputil_iwmmxt.c
index 6e2465d..99a55e7 100644 (file)
@@ -126,8 +126,26 @@ static void nop(uint8_t *block, const uint8_t *pixels, int line_size, int h)
     return;
 }
 
+int mm_flags; /* multimedia extension flags */
+
+int mm_support(void)
+{
+    return 0; /* TODO, implement proper detection */
+}
+
 void dsputil_init_iwmmxt(DSPContext* c, AVCodecContext *avctx)
 {
+    mm_flags = mm_support();
+
+    if (avctx->dsp_mask) {
+       if (avctx->dsp_mask & FF_MM_FORCE)
+           mm_flags |= (avctx->dsp_mask & 0xffff);
+       else
+           mm_flags &= ~(avctx->dsp_mask & 0xffff);
+    }
+
+    if (!(mm_flags & MM_IWMMXT)) return;
+
     c->add_pixels_clamped = add_pixels_clamped_iwmmxt;
 
     c->put_pixels_tab[0][0] = put_pixels16_iwmmxt;