changeset 2699:1b4a3c083f9d libavcodec

some optimizations gcc should have done (10% faster loop filter)
author michael
date Tue, 17 May 2005 20:50:47 +0000
parents fae7fce1a202
children 485571c9182f
files vp3.c
diffstat 1 files changed, 11 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/vp3.c	Tue May 17 20:30:22 2005 +0000
+++ b/vp3.c	Tue May 17 20:50:47 2005 +0000
@@ -2248,15 +2248,13 @@
 static void horizontal_filter(unsigned char *first_pixel, int stride,
     int *bounding_values)
 {
-    int i;
+    unsigned char *end;
     int filter_value;
 
-    for (i = 0; i < 8; i++, first_pixel += stride) {
+    for (end= first_pixel + 8*stride; first_pixel < end; first_pixel += stride) {
         filter_value = 
-            (first_pixel[-2] * 1) - 
-            (first_pixel[-1] * 3) +
-            (first_pixel[ 0] * 3) -
-            (first_pixel[ 1] * 1);
+            (first_pixel[-2] - first_pixel[ 1])
+         +3*(first_pixel[ 0] - first_pixel[-1]);
         filter_value = bounding_values[(filter_value + 4) >> 3];
         first_pixel[-1] = clip_uint8(first_pixel[-1] + filter_value);
         first_pixel[ 0] = clip_uint8(first_pixel[ 0] - filter_value);
@@ -2266,17 +2264,16 @@
 static void vertical_filter(unsigned char *first_pixel, int stride,
     int *bounding_values)
 {
-    int i;
+    unsigned char *end;
     int filter_value;
-
-    for (i = 0; i < 8; i++, first_pixel++) {
+    const int nstride= -stride;
+
+    for (end= first_pixel + 8; first_pixel < end; first_pixel++) {
         filter_value = 
-            (first_pixel[-(2 * stride)] * 1) - 
-            (first_pixel[-(1 * stride)] * 3) +
-            (first_pixel[ (0         )] * 3) -
-            (first_pixel[ (1 * stride)] * 1);
+            (first_pixel[2 * nstride] - first_pixel[ stride])
+         +3*(first_pixel[0          ] - first_pixel[nstride]);
         filter_value = bounding_values[(filter_value + 4) >> 3];
-        first_pixel[-(1 * stride)] = clip_uint8(first_pixel[-(1 * stride)] + filter_value);
+        first_pixel[nstride] = clip_uint8(first_pixel[nstride] + filter_value);
         first_pixel[0] = clip_uint8(first_pixel[0] - filter_value);
     }
 }