diff dsputil.c @ 8760:31138c296ac6 libavcodec

ff_add_hfyu_median_prediction_mmx2 overall ffvhuff decoding speedup: 28% on core2, 25% on k8.
author lorenm
date Sun, 08 Feb 2009 17:45:30 +0000
parents 2dbf614093ea
children bee83b3f9a6b
line wrap: on
line diff
--- a/dsputil.c	Sun Feb 08 17:44:04 2009 +0000
+++ b/dsputil.c	Sun Feb 08 17:45:30 2009 +0000
@@ -3542,6 +3542,23 @@
         dst[i+0] = src1[i+0]-src2[i+0];
 }
 
+static void add_hfyu_median_prediction_c(uint8_t *dst, uint8_t *src1, uint8_t *diff, int w, int *left, int *left_top){
+    int i;
+    uint8_t l, lt;
+
+    l= *left;
+    lt= *left_top;
+
+    for(i=0; i<w; i++){
+        l= mid_pred(l, src1[i], (l + src1[i] - lt)&0xFF) + diff[i];
+        lt= src1[i];
+        dst[i]= l;
+    }
+
+    *left= l;
+    *left_top= lt;
+}
+
 static void sub_hfyu_median_prediction_c(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w, int *left, int *left_top){
     int i;
     uint8_t l, lt;
@@ -4554,6 +4571,7 @@
     c->add_bytes= add_bytes_c;
     c->add_bytes_l2= add_bytes_l2_c;
     c->diff_bytes= diff_bytes_c;
+    c->add_hfyu_median_prediction= add_hfyu_median_prediction_c;
     c->sub_hfyu_median_prediction= sub_hfyu_median_prediction_c;
     c->bswap_buf= bswap_buf;
 #if CONFIG_PNG_DECODER