diff armv4l/dsputil_arm.c @ 1347:cca26199ab17 libavcodec

Optimized simple idct for arm by Frederic 'dilb' Boulay <dilb@handhelds.org>. Currently licensed under the GPLv2, but the author allowed to license it under the LGPL, feel free to change
author al3x
date Mon, 07 Jul 2003 11:19:18 +0000
parents 7d328fd9d8a5
children aeea63c97878
line wrap: on
line diff
--- a/armv4l/dsputil_arm.c	Sun Jul 06 21:24:04 2003 +0000
+++ b/armv4l/dsputil_arm.c	Mon Jul 07 11:19:18 2003 +0000
@@ -20,6 +20,7 @@
 #include "../dsputil.h"
 
 extern void j_rev_dct_ARM(DCTELEM *data);
+extern void simple_idct_ARM(DCTELEM *data);
 
 /* XXX: local hack */
 static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
@@ -27,16 +28,26 @@
 
 /* XXX: those functions should be suppressed ASAP when all IDCTs are
    converted */
-static void arm_idct_put(uint8_t *dest, int line_size, DCTELEM *block)
+static void j_rev_dct_ARM_put(uint8_t *dest, int line_size, DCTELEM *block)
 {
     j_rev_dct_ARM (block);
     ff_put_pixels_clamped(block, dest, line_size);
 }
-static void arm_idct_add(uint8_t *dest, int line_size, DCTELEM *block)
+static void j_rev_dct_ARM_add(uint8_t *dest, int line_size, DCTELEM *block)
 {
     j_rev_dct_ARM (block);
     ff_add_pixels_clamped(block, dest, line_size);
 }
+static void simple_idct_ARM_put(uint8_t *dest, int line_size, DCTELEM *block)
+{
+    simple_idct_ARM (block);
+    ff_put_pixels_clamped(block, dest, line_size);
+}
+static void simple_idct_ARM_add(uint8_t *dest, int line_size, DCTELEM *block)
+{
+    simple_idct_ARM (block);
+    ff_add_pixels_clamped(block, dest, line_size);
+}
 
 void dsputil_init_armv4l(DSPContext* c, AVCodecContext *avctx)
 {
@@ -46,9 +57,14 @@
     ff_add_pixels_clamped = c->add_pixels_clamped;
 
     if(idct_algo==FF_IDCT_AUTO || idct_algo==FF_IDCT_ARM){
-        c->idct_put= arm_idct_put;
-        c->idct_add= arm_idct_add;
-        c->idct    = j_rev_dct_ARM;
+        c->idct_put= j_rev_dct_ARM_put;
+        c->idct_add= j_rev_dct_ARM_add;
+	c->idct    = j_rev_dct_ARM;
         c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;/* FF_NO_IDCT_PERM */
+    } else if (idct_algo==FF_IDCT_SIMPLEARM){
+	c->idct_put= simple_idct_ARM_put;
+	c->idct_add= simple_idct_ARM_add;
+	c->idct    = simple_idct_ARM;
+	c->idct_permutation_type= FF_NO_IDCT_PERM;
     }
 }